aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-01-11 06:36:56 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2007-01-11 06:36:56 +0000
commit8f4ff8e73cafc662954824690f4fc75c1863c037 (patch)
tree7e282a846bd7ce5a32f4f8f558af6537e79aebce /src
parent0c621798e192f350b1b3f6c97b9d9f8b92dfb7fb (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.c14
-rw-r--r--src/trayicon.c18
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);
}