diff -urNp easystroke-0.3.1/grabber.h easystroke-0.3.1-swap/grabber.h --- easystroke-0.3.1/grabber.h 2008-12-23 04:05:48.000000000 +0800 +++ easystroke-0.3.1-swap/grabber.h 2009-02-15 13:35:59.000000000 +0800 @@ -116,6 +116,7 @@ public: void grab_xi_devs(bool); bool is_grabbed(guint b) { return buttons.find(b) != buttons.end(); } void toggle_disabled() { disabled = !disabled; set(); } + bool get_disabled() { return disabled; } void fake_device_release(guint b); bool update_device_list(); diff -urNp easystroke-0.3.1/win.cc easystroke-0.3.1-swap/win.cc --- easystroke-0.3.1/win.cc 2008-12-23 04:05:48.000000000 +0800 +++ easystroke-0.3.1-swap/win.cc 2009-02-15 14:05:10.000000000 +0800 @@ -146,10 +146,9 @@ Win::Win() { show_hide_icon(); prefs.tray_icon.connect(new Notifier(sigc::mem_fun(*this, &Win::show_hide_icon))); - WIDGET(Gtk::CheckMenuItem, menu_disabled, "D_isabled", true); - this->menu_disabled = &menu_disabled; - menu.append(menu_disabled); - menu_disabled.signal_toggled().connect(sigc::mem_fun(*grabber, &Grabber::toggle_disabled)); + WIDGET(Gtk::ImageMenuItem, menu_pref, Gtk::Stock::PREFERENCES); + menu.append(menu_pref); + menu_pref.signal_activate().connect(sigc::mem_fun(*this, &Win::show_hide)); WIDGET(Gtk::ImageMenuItem, menu_quit, Gtk::Stock::QUIT); menu.append(menu_quit); menu_quit.signal_activate().connect(sigc::ptr_fun(&Gtk::Main::quit)); @@ -177,11 +176,6 @@ Win::~Win() { delete stats; } -void Win::toggle_disabled() { - bool disabled = menu_disabled->get_active(); - menu_disabled->set_active(!disabled); -} - void Win::show_hide_icon() { bool show = prefs.tray_icon.get(); if (show) { @@ -189,7 +183,7 @@ void Win::show_hide_icon() { return; icon = Gtk::StatusIcon::create(""); icon->signal_size_changed().connect(sigc::mem_fun(*this, &Win::on_icon_size_changed)); - icon->signal_activate().connect(sigc::mem_fun(*this, &Win::show_hide)); + icon->signal_activate().connect(sigc::mem_fun(*this, &Win::toggle_disabled)); icon->signal_popup_menu().connect(sigc::mem_fun(*this, &Win::show_popup)); } else { if (!icon) @@ -202,6 +196,14 @@ void Win::show_popup(guint button, guint icon->popup_menu_at_position(menu, button, activate_time); } +void Win::toggle_disabled() { + bool disabled; + grabber->toggle_disabled(); + disabled = grabber->get_disabled(); + icon->set(icon_pb[disabled ? 3 : 0]); + return; +} + void Win::show_hide() { if (win->is_mapped()) win->hide(); @@ -224,14 +226,18 @@ bool Win::on_icon_size_changed(int size) icon_pb[0] = Stroke::trefoil()->draw(size); icon_pb[1] = Stroke::trefoil()->draw(size); icon_pb[2] = Stroke::trefoil()->draw(size); + icon_pb[3] = Stroke::trefoil()->draw(size); composite_stock(win, icon_pb[1], "gtk-yes", 0.6); composite_stock(win, icon_pb[2], "gtk-no", 0.5); + composite_stock(win, icon_pb[3], "gtk-close", 1); icon->set(icon_pb[0]); return true; } void Win::timeout() { - icon->set(icon_pb[0]); + bool disabled; + disabled = grabber->get_disabled(); + icon->set(icon_pb[disabled ? 3 : 0]); } void Win::show_success(bool good) { diff -urNp easystroke-0.3.1/win.h easystroke-0.3.1-swap/win.h --- easystroke-0.3.1/win.h 2008-12-23 04:05:48.000000000 +0800 +++ easystroke-0.3.1-swap/win.h 2009-02-15 14:04:46.000000000 +0800 @@ -60,8 +60,8 @@ public: Actions *actions; Prefs *prefs_tab; Stats *stats; - void show_hide(); void toggle_disabled(); + void show_hide(); void show_success(bool good); private: bool on_icon_size_changed(int); @@ -73,10 +73,9 @@ private: Gtk::Window *win; Gtk::Menu menu; - Gtk::CheckMenuItem *menu_disabled; Glib::RefPtr icon; - Glib::RefPtr icon_pb[3]; + Glib::RefPtr icon_pb[4]; }; extern Win *win;