diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2007-01-11 06:36:56 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2007-01-11 06:36:56 +0000 |
commit | 8f4ff8e73cafc662954824690f4fc75c1863c037 (patch) | |
tree | 7e282a846bd7ce5a32f4f8f558af6537e79aebce /src | |
parent | 0c621798e192f350b1b3f6c97b9d9f8b92dfb7fb (diff) |
added the option to toggle window on trayicon click.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1466 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r-- | src/prefs_common_dialog.c | 14 | ||||
-rw-r--r-- | src/trayicon.c | 18 |
2 files changed, 25 insertions, 7 deletions
diff --git a/src/prefs_common_dialog.c b/src/prefs_common_dialog.c index b8c27d32..f2ce4f59 100644 --- a/src/prefs_common_dialog.c +++ b/src/prefs_common_dialog.c @@ -194,6 +194,7 @@ static struct Interface { #endif GtkWidget *checkbtn_show_trayicon; GtkWidget *checkbtn_minimize_to_tray; + GtkWidget *checkbtn_tray_toggle_window; } interface; static struct Other { @@ -475,6 +476,9 @@ static PrefsUIData ui_data[] = { prefs_set_data_from_toggle, prefs_set_toggle}, {"minimize_to_tray", &interface.checkbtn_minimize_to_tray, prefs_set_data_from_toggle, prefs_set_toggle}, + {"toggle_window_on_trayicon_click", + &interface.checkbtn_tray_toggle_window, + prefs_set_data_from_toggle, prefs_set_toggle}, /* Other */ {"receive_dialog_mode", &other.optmenu_recvdialog, @@ -2079,6 +2083,7 @@ static void prefs_details_create(void) #endif GtkWidget *checkbtn_show_trayicon; GtkWidget *checkbtn_minimize_to_tray; + GtkWidget *checkbtn_tray_toggle_window; GtkWidget *button_keybind; @@ -2159,8 +2164,12 @@ static void prefs_details_create(void) _("Display tray icon")); PACK_CHECK_BUTTON (vbox2, checkbtn_minimize_to_tray, _("Minimize to tray icon")); + PACK_CHECK_BUTTON (vbox2, checkbtn_tray_toggle_window, + _("Toggle window on trayicon click")); SET_TOGGLE_SENSITIVITY (checkbtn_show_trayicon, checkbtn_minimize_to_tray); + SET_TOGGLE_SENSITIVITY (checkbtn_show_trayicon, + checkbtn_tray_toggle_window); hbox1 = gtk_hbox_new (FALSE, 8); gtk_widget_show (hbox1); @@ -2196,8 +2205,9 @@ static void prefs_details_create(void) #ifndef G_OS_WIN32 interface.checkbtn_comply_gnome_hig = checkbtn_comply_gnome_hig; #endif - interface.checkbtn_show_trayicon = checkbtn_show_trayicon; - interface.checkbtn_minimize_to_tray = checkbtn_minimize_to_tray; + interface.checkbtn_show_trayicon = checkbtn_show_trayicon; + interface.checkbtn_minimize_to_tray = checkbtn_minimize_to_tray; + interface.checkbtn_tray_toggle_window = checkbtn_tray_toggle_window; } static GtkWidget *prefs_other_create(void) diff --git a/src/trayicon.c b/src/trayicon.c index 51d9f47c..fc1f1f15 100644 --- a/src/trayicon.c +++ b/src/trayicon.c @@ -41,7 +41,7 @@ #include "main.h" #include "inc.h" #include "compose.h" -#include "gtkutils.h" +#include "prefs_common.h" #if GTK_CHECK_VERSION(2, 10, 0) || defined(GDK_WINDOWING_X11) @@ -241,7 +241,11 @@ static void trayicon_activated(GtkStatusIcon *status_icon, gpointer data) { MainWindow *mainwin = (MainWindow *)data; - main_window_popup(mainwin); + if (prefs_common.toggle_window_on_trayicon_click && + gtk_window_is_active(GTK_WINDOW(mainwin->window))) + gtk_window_iconify(GTK_WINDOW(mainwin->window)); + else + main_window_popup(mainwin); } static void trayicon_popup_menu_cb(GtkStatusIcon *status_icon, guint button, @@ -317,9 +321,13 @@ static void trayicon_button_pressed(GtkWidget *widget, GdkEventButton *event, if (!event) return; - if (event->button == 1) - main_window_popup(mainwin); - else if (event->button == 3) { + if (event->button == 1) { + if (prefs_common.toggle_window_on_trayicon_click && + gtk_window_is_active(GTK_WINDOW(mainwin->window))) + gtk_window_iconify(GTK_WINDOW(mainwin->window)); + else + main_window_popup(mainwin); + } else if (event->button == 3) { gtk_menu_popup(GTK_MENU(trayicon_menu), NULL, NULL, NULL, NULL, event->button, event->time); } |