This commit is contained in:
Ashley Wulber 2022-01-05 15:37:04 -05:00
parent 6195ab2db9
commit 9231d84dbf
5 changed files with 72 additions and 56 deletions

View file

@ -117,8 +117,8 @@ impl DockItem {
}
if let Ok(popover_value) = dock_object.property("popover") {
if let Ok(popover) = popover_value.get::<bool>() {
dbg!(popover);
dbg!(dock_object);
// dbg!(popover);
// dbg!(dock_object);
if popover {
self.add_popover(dock_object);
} else {

View file

@ -166,6 +166,7 @@ impl DockList {
let list_view = cascade! {
ListView::default();
..set_orientation(Orientation::Horizontal);
..add_css_class("docklist");
};
if imp.type_.get().unwrap() == &DockListType::Saved {
list_view.set_width_request(64);
@ -210,20 +211,20 @@ impl DockList {
let window = list_view.root().unwrap().downcast::<Window>().unwrap();
let max_x = list_view.allocated_width();
let max_y = list_view.allocated_height();
dbg!(max_y);
dbg!(y);
// dbg!(max_y);
// dbg!(y);
let n_buckets = model.n_items();
let index = (x * n_buckets as f64 / (max_x as f64 + 0.1)) as u32;
dbg!(self_.current_button());
dbg!(self_.last_event(self_.current_sequence().as_ref()));
// dbg!(self_.current_button());
// dbg!(self_.last_event(self_.current_sequence().as_ref()));
let click_modifier = if let Some(event) = self_.last_event(self_.current_sequence().as_ref()) {
dbg!(&event);
// dbg!(&event);
Some(event.modifier_state())
}
else {
None
};
dbg!(click_modifier);
// dbg!(click_modifier);
// Launch the application when an item of the list is activated
let focus_window = move |first_focused_item: &Item| {
let entity = first_focused_item.entity.clone();

View file

@ -65,33 +65,33 @@ impl DockPopover {
};
menu_handle.append(&all_windows_item_container);
let all_windows_item_header = cascade! {
Button::new();
..set_hexpand(true);
};
all_windows_item_container.append(&all_windows_item_header);
// let all_windows_item_header = cascade! {
// Button::new();
// ..set_hexpand(true);
// };
// all_windows_item_container.append(&all_windows_item_header);
let all_windows_item_header_box = cascade! {
Box::new(Orientation::Horizontal, 4);
..set_hexpand(true);
};
all_windows_item_header.set_child(Some(&all_windows_item_header_box));
// let all_windows_item_header_box = cascade! {
// Box::new(Orientation::Horizontal, 4);
// ..set_hexpand(true);
// };
// all_windows_item_header.set_child(Some(&all_windows_item_header_box));
let all_windows_item_header_title = cascade! {
Label::new(Some("All Windows"));
..add_css_class("header-5");
..set_halign(gtk4::Align::Start);
};
all_windows_item_header_box.append(&all_windows_item_header_title);
// let all_windows_item_header_title = cascade! {
// Label::new(Some("All Windows"));
// ..add_css_class("header-5");
// ..set_halign(gtk4::Align::Start);
// };
// all_windows_item_header_box.append(&all_windows_item_header_title);
let all_windows_item_header_icon = cascade! {
Image::from_icon_name(Some("go-down"));
..set_halign(gtk4::Align::End);
..set_hexpand(true);
..set_pixel_size(16);
};
all_windows_item_header_box.append(&all_windows_item_header_icon);
imp.all_windows_item_header.replace(all_windows_item_header);
// let all_windows_item_header_icon = cascade! {
// Image::from_icon_name(Some("go-down"));
// ..set_halign(gtk4::Align::End);
// ..set_hexpand(true);
// ..set_pixel_size(16);
// };
// all_windows_item_header_box.append(&all_windows_item_header_icon);
// imp.all_windows_item_header.replace(all_windows_item_header);
if let Ok(window_list) = dock_object
.property("active")
@ -101,17 +101,17 @@ impl DockPopover {
if window_list.0.len() == 0 {
all_windows_item_container.hide();
} else {
let window_list_revealer = cascade! {
Revealer::new();
..set_reveal_child(false);
..set_transition_type(gtk4::RevealerTransitionType::SlideDown);
};
all_windows_item_container.append(&window_list_revealer);
// let window_list_revealer = cascade! {
// Revealer::new();
// ..set_reveal_child(false);
// ..set_transition_type(gtk4::RevealerTransitionType::SlideDown);
// };
// all_windows_item_container.append(&window_list_revealer);
let window_listbox = cascade! {
ListBox::new();
..set_activate_on_single_click(true);
};
window_list_revealer.set_child(Some(&window_listbox));
all_windows_item_container.append(&window_listbox);
for w in window_list.0 {
let window_box = cascade! {
Box::new(Orientation::Vertical, 4);
@ -124,6 +124,8 @@ impl DockPopover {
..set_margin_end(4);
..set_margin_top(4);
..set_margin_bottom(4);
..add_css_class("title-4");
..add_css_class("window_title");
};
// TODO investigate Xembed
@ -134,7 +136,7 @@ impl DockPopover {
window_box.append(&window_image);
window_box.append(&window_title);
}
imp.all_windows_item_revealer.replace(window_list_revealer);
// imp.all_windows_item_revealer.replace(window_list_revealer);
imp.window_list.replace(window_listbox);
}
}
@ -257,13 +259,13 @@ impl DockPopover {
self_.emit_hide();
}));
all_windows_header.connect_clicked(
glib::clone!(@weak dock_object, @weak revealer => move |self_| {
dbg!(dock_object);
let revealer = revealer.borrow();
revealer.set_reveal_child(!revealer.reveals_child())
}),
);
// all_windows_header.connect_clicked(
// glib::clone!(@weak dock_object, @weak revealer => move |self_| {
// // dbg!(dock_object);
// let revealer = revealer.borrow();
// revealer.set_reveal_child(!revealer.reveals_child())
// }),
// );
let self_ = self.clone();
window_listbox.connect_row_activated(glib::clone!(@weak dock_object => move |_, item| {

View file

@ -137,6 +137,17 @@ fn main() {
.call_method(Some(DEST), PATH, Some(DEST), "WindowFocus", &((e,)))
.await
.expect("Failed to focus selected window");
// let m = zbus_conn
// .call_method(Some(DEST), PATH, Some(DEST), "WindowId", &((e,)))
// .await;
// if let Ok(m) = m {
// if let Ok(reply) = m.body::<(u32, u32)>() {
// dbg!(reply);
// } else {
// dbg!(m);
// }
// // glib::timeout_future(Duration::from_millis(100)).await;
// }
}
Event::Close(e) => {
let _activate_window = zbus_conn

View file

@ -1,16 +1,16 @@
listview {
listview.docklist {
border-radius: 12px;
background: #333333;
}
listview row:hover {
listview.docklist row:hover {
transition: 100ms;
background: #888888;
border-radius: 12px;
padding: 0px;
}
listview row {
listview.docklist row {
background: #333333;
border-radius: 12px;
padding: 0px;
@ -33,17 +33,19 @@ list {
background: #333333;
}
list row:hover {
transition: 100ms;
background: #888888;
label.window_title {
color: white;
margin: 4px;
}
popover contents {
border-radius: 12px;
padding: 0px;
}
list row {
background: #333333;
popover contents {
border-radius: 12px;
padding: 0px;
padding: 12px;
}
box.dock {