|
@@ -1,15 +1,15 @@
|
|
-use chan;
|
|
|
|
use ui;
|
|
use ui;
|
|
use ui::widget;
|
|
use ui::widget;
|
|
use ui::x11;
|
|
use ui::x11;
|
|
use xcb;
|
|
use xcb;
|
|
|
|
|
|
use std::sync::Arc;
|
|
use std::sync::Arc;
|
|
|
|
+use std::sync::mpsc;
|
|
|
|
|
|
const CLIENT_MESSAGE: u8 = xcb::CLIENT_MESSAGE | 0x80; // 0x80 flag for client messages
|
|
const CLIENT_MESSAGE: u8 = xcb::CLIENT_MESSAGE | 0x80; // 0x80 flag for client messages
|
|
|
|
|
|
pub struct Tray {
|
|
pub struct Tray {
|
|
- tx: chan::Sender<widget::WidgetMessage>,
|
|
|
|
|
|
+ tx: mpsc::Sender<widget::WidgetMessage>,
|
|
conn: Arc<x11::Connection>,
|
|
conn: Arc<x11::Connection>,
|
|
window: xcb::Window,
|
|
window: xcb::Window,
|
|
children: Vec<xcb::Window>,
|
|
children: Vec<xcb::Window>,
|
|
@@ -17,7 +17,7 @@ pub struct Tray {
|
|
}
|
|
}
|
|
|
|
|
|
impl Tray {
|
|
impl Tray {
|
|
- pub fn new(tx: chan::Sender<widget::WidgetMessage>, conn: Arc<x11::Connection>, window: xcb::Window) -> Tray {
|
|
|
|
|
|
+ pub fn new(tx: mpsc::Sender<widget::WidgetMessage>, conn: Arc<x11::Connection>, window: xcb::Window) -> Tray {
|
|
Tray {
|
|
Tray {
|
|
conn: conn,
|
|
conn: conn,
|
|
tx: tx,
|
|
tx: tx,
|
|
@@ -58,12 +58,16 @@ impl Tray {
|
|
self.force_size(window, None);
|
|
self.force_size(window, None);
|
|
conn.flush();
|
|
conn.flush();
|
|
self.children.push(window);
|
|
self.children.push(window);
|
|
- self.tx.send(widget::WidgetMessage::Relayout);
|
|
|
|
|
|
+ self.relayout();
|
|
}
|
|
}
|
|
|
|
|
|
pub fn forget(&mut self, window: xcb::Window) {
|
|
pub fn forget(&mut self, window: xcb::Window) {
|
|
self.children.retain(|child| *child != window);
|
|
self.children.retain(|child| *child != window);
|
|
- self.tx.send(widget::WidgetMessage::Relayout);
|
|
|
|
|
|
+ self.relayout();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ fn relayout(&self) {
|
|
|
|
+ self.tx.send(widget::WidgetMessage::Relayout).expect("Failed to send relayout");
|
|
}
|
|
}
|
|
|
|
|
|
pub fn force_size(&self, window: xcb::Window, dimensions: Option<(u16, u16)>) {
|
|
pub fn force_size(&self, window: xcb::Window, dimensions: Option<(u16, u16)>) {
|