Browse Source

Simplify widget xcb event handling

Thomas Dy 7 năm trước cách đây
mục cha
commit
3374abcf71
4 tập tin đã thay đổi với 7 bổ sung8 xóa
  1. 4 2
      src/ui/panel.rs
  2. 1 1
      src/ui/title.rs
  3. 1 4
      src/ui/tray.rs
  4. 1 1
      src/ui/widget.rs

+ 4 - 2
src/ui/panel.rs

@@ -111,8 +111,10 @@ impl Panel {
     pub fn handle_event(&mut self, event: xcb::GenericEvent) -> bool {
         let finishing = self.finishing;
         let mut should_exit = false;
-        for widget in self.widgets_iter() {
-            should_exit |= widget.handle_event(&event, finishing);
+        if !finishing {
+            for widget in self.widgets_iter() {
+                should_exit |= widget.handle_event(&event);
+            }
         }
         if event.response_type() == xcb::EXPOSE {
             self.relayout();

+ 1 - 1
src/ui/title.rs

@@ -53,7 +53,7 @@ impl Widget for Title {
         0
     }
 
-    fn handle_event(&mut self, event: &xcb::GenericEvent, _is_finishing: bool) -> bool {
+    fn handle_event(&mut self, event: &xcb::GenericEvent) -> bool {
         if event.response_type() == xcb::PROPERTY_NOTIFY {
             let event: &xcb::PropertyNotifyEvent = unsafe { xcb::cast_event(&event) };
             if event.atom() == self.conn.atom(x11::_NET_ACTIVE_WINDOW) {

+ 1 - 4
src/ui/tray.rs

@@ -97,10 +97,7 @@ impl widget::Widget for Tray {
         }
     }
 
-    fn handle_event(&mut self, event: &xcb::GenericEvent, is_finishing: bool) -> bool {
-        if is_finishing {
-            return false
-        }
+    fn handle_event(&mut self, event: &xcb::GenericEvent) -> bool {
         match event.response_type() {
             xcb::PROPERTY_NOTIFY if self.timestamp == 0 => {
                 let event: &xcb::PropertyNotifyEvent = unsafe { xcb::cast_event(&event) };

+ 1 - 1
src/ui/widget.rs

@@ -8,7 +8,7 @@ pub trait Widget {
     fn init(&mut self) {}
     fn render(&mut self, x: u16);
     fn width(&mut self) -> u16;
-    fn handle_event(&mut self, _event: &xcb::GenericEvent, _is_finishing: bool) -> bool {
+    fn handle_event(&mut self, _event: &xcb::GenericEvent) -> bool {
         false
     }
     fn update(&mut self) {}