Merge lp:~sachinr/xpad/xpad-tray-config into lp:xpad

Proposed by Sachin Raut
Status: Merged
Merged at revision: 660
Proposed branch: lp:~sachinr/xpad/xpad-tray-config
Merge into: lp:xpad
Diff against target: 388 lines (+174/-16) (has conflicts)
3 files modified
src/xpad-preferences.c (+44/-2)
src/xpad-settings.c (+34/-2)
src/xpad-tray.c (+96/-12)
Text conflict in src/xpad-tray.c
To merge this branch: bzr merge lp:~sachinr/xpad/xpad-tray-config
Reviewer Review Type Date Requested Status
Arthur Borsboom Approve
Review via email: mp+191013@code.launchpad.net

Description of the change

fixed Bug #304331: controlling right/left click on tray icon.
fixed Bug #345278: toggle on left mouse click.

To post a comment you must log in.
Revision history for this message
Arthur Borsboom (arthurborsboom) wrote :
Download full text (17.9 KiB)

Hi Sachin,

Thanks for proposing your code for merging. I would like to finish my
current work first (garbage collection with the two bugs). Once the
"garbage counter" is at 0, and the application is still working, I will
upload my code and start merging yours in the main branch, ok?

Some introduction from my side:

I'm Dutch (= The Netherlands), 34 years old, male (duhh), and currently
travelling through South-America by bike. Well, travelling, I am staying in
a nice appartment in Lima, right now. :)

How's life coping for you? You are Indian, am I right?

On 14 October 2013 12:37, Sachin Raut <email address hidden> wrote:

> Sachin Raut has proposed merging lp:~sachinr/xpad/xpad-tray-config into
> lp:xpad.
>
> Requested reviews:
> Xpad Administrators (xpad-team)
> Related bugs:
> Bug #304331 in Xpad: "controlling right/left click on tray icon"
> https://bugs.launchpad.net/xpad/+bug/304331
> Bug #345278 in Xpad: "toggle on left mouse click"
> https://bugs.launchpad.net/xpad/+bug/345278
>
> For more details, see:
> https://code.launchpad.net/~sachinr/xpad/xpad-tray-config/+merge/191013
>
> fixed Bug #304331: controlling right/left click on tray icon.
> fixed Bug #345278: toggle on left mouse click.
> --
> https://code.launchpad.net/~sachinr/xpad/xpad-tray-config/+merge/191013
> You are subscribed to branch lp:xpad.
>
> === modified file 'src/xpad-preferences.c'
> --- src/xpad-preferences.c 2008-09-21 00:03:40 +0000
> +++ src/xpad-preferences.c 2013-10-14 17:36:30 +0000
> @@ -39,6 +39,7 @@
> GtkWidget *editcheck;
> GtkWidget *stickycheck;
> GtkWidget *confirmcheck;
> + GtkWidget *trayconfigbox;
>
> GtkWidget *textbutton;
> GtkWidget *backbutton;
> @@ -50,6 +51,7 @@
> guint notify_font_handler;
> guint notify_back_handler;
> guint notify_text_handler;
> + guint notify_tray_handler;
> guint font_handler;
> guint back_handler;
> guint text_handler;
> @@ -58,6 +60,7 @@
> guint editcheck_handler;
> guint stickycheck_handler;
> guint confirmcheck_handler;
> + guint trayclick_handler;
> };
>
> static void change_edit_check (GtkToggleButton *button, XpadPreferences
> *pref);
> @@ -68,12 +71,14 @@
> static void change_text_color (GtkColorButton *button, XpadPreferences
> *pref);
> static void change_back_color (GtkColorButton *button, XpadPreferences
> *pref);
> static void change_font_face (GtkFontButton *button, XpadPreferences
> *pref);
> +static void change_tray_click_configuration(GtkComboBox *box,
> XpadPreferences *pref);
> static void notify_edit (XpadPreferences *pref);
> static void notify_sticky (XpadPreferences *pref);
> static void notify_confirm (XpadPreferences *pref);
> static void notify_fontname (XpadPreferences *pref);
> static void notify_text_color (XpadPreferences *pref);
> static void notify_back_color (XpadPreferences *pref);
> +static void notify_tray_click (XpadPreferences *pref);
> static void xpad_preferences_finalize (GObject *object);
> static void xpad_preferences_response (GtkDialog *dialog, gint response);
>
> @@ -112,7 +117,7 @@
> const gchar *fo...

Revision history for this message
Arthur Borsboom (arthurborsboom) wrote :

I have merged the changes in my development environment and fixed the conflicts.
Tested the four new options for the left-click behaviour and it seems to work nicely!

Good job.

I will merge this in the main branch.

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/xpad-preferences.c'
--- src/xpad-preferences.c 2008-09-21 00:03:40 +0000
+++ src/xpad-preferences.c 2013-10-14 17:36:30 +0000
@@ -39,6 +39,7 @@
39 GtkWidget *editcheck;39 GtkWidget *editcheck;
40 GtkWidget *stickycheck;40 GtkWidget *stickycheck;
41 GtkWidget *confirmcheck;41 GtkWidget *confirmcheck;
42 GtkWidget *trayconfigbox;
42 43
43 GtkWidget *textbutton;44 GtkWidget *textbutton;
44 GtkWidget *backbutton;45 GtkWidget *backbutton;
@@ -50,6 +51,7 @@
50 guint notify_font_handler;51 guint notify_font_handler;
51 guint notify_back_handler;52 guint notify_back_handler;
52 guint notify_text_handler;53 guint notify_text_handler;
54 guint notify_tray_handler;
53 guint font_handler;55 guint font_handler;
54 guint back_handler;56 guint back_handler;
55 guint text_handler;57 guint text_handler;
@@ -58,6 +60,7 @@
58 guint editcheck_handler;60 guint editcheck_handler;
59 guint stickycheck_handler;61 guint stickycheck_handler;
60 guint confirmcheck_handler;62 guint confirmcheck_handler;
63 guint trayclick_handler;
61};64};
6265
63static void change_edit_check (GtkToggleButton *button, XpadPreferences *pref);66static void change_edit_check (GtkToggleButton *button, XpadPreferences *pref);
@@ -68,12 +71,14 @@
68static void change_text_color (GtkColorButton *button, XpadPreferences *pref);71static void change_text_color (GtkColorButton *button, XpadPreferences *pref);
69static void change_back_color (GtkColorButton *button, XpadPreferences *pref);72static void change_back_color (GtkColorButton *button, XpadPreferences *pref);
70static void change_font_face (GtkFontButton *button, XpadPreferences *pref);73static void change_font_face (GtkFontButton *button, XpadPreferences *pref);
74static void change_tray_click_configuration(GtkComboBox *box, XpadPreferences *pref);
71static void notify_edit (XpadPreferences *pref);75static void notify_edit (XpadPreferences *pref);
72static void notify_sticky (XpadPreferences *pref);76static void notify_sticky (XpadPreferences *pref);
73static void notify_confirm (XpadPreferences *pref);77static void notify_confirm (XpadPreferences *pref);
74static void notify_fontname (XpadPreferences *pref);78static void notify_fontname (XpadPreferences *pref);
75static void notify_text_color (XpadPreferences *pref);79static void notify_text_color (XpadPreferences *pref);
76static void notify_back_color (XpadPreferences *pref);80static void notify_back_color (XpadPreferences *pref);
81static void notify_tray_click (XpadPreferences *pref);
77static void xpad_preferences_finalize (GObject *object);82static void xpad_preferences_finalize (GObject *object);
78static void xpad_preferences_response (GtkDialog *dialog, gint response);83static void xpad_preferences_response (GtkDialog *dialog, gint response);
7984
@@ -112,7 +117,7 @@
112 const gchar *fontname;117 const gchar *fontname;
113 GtkStyle *style;118 GtkStyle *style;
114 GtkWidget *label, *appearance_frame, *alignment, *appearance_vbox;119 GtkWidget *label, *appearance_frame, *alignment, *appearance_vbox;
115 GtkWidget *options_frame, *options_vbox, *global_vbox;120 GtkWidget *options_frame, *options_vbox, *global_vbox, *tray_config_vbox;
116 gchar *text;121 gchar *text;
117 GtkSizeGroup *size_group_labels = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);122 GtkSizeGroup *size_group_labels = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
118 GtkRequisition req;123 GtkRequisition req;
@@ -272,10 +277,28 @@
272 "child", alignment,277 "child", alignment,
273 NULL));278 NULL));
274 279
275 280 tray_config_vbox = GTK_WIDGET (g_object_new (GTK_TYPE_VBOX,
281 "homogeneous", FALSE,
282 "spacing", 6,
283 NULL));
284
285 pref->priv->trayconfigbox = gtk_combo_box_new_text();
286 gtk_combo_box_append_text( GTK_COMBO_BOX( pref->priv->trayconfigbox ), "Do Nothing" );
287 gtk_combo_box_append_text( GTK_COMBO_BOX( pref->priv->trayconfigbox ), "Toggle Show All" );
288 gtk_combo_box_append_text( GTK_COMBO_BOX( pref->priv->trayconfigbox ), "List of Pads" );
289 gtk_combo_box_append_text( GTK_COMBO_BOX( pref->priv->trayconfigbox ), "New Pad" );
290 gtk_combo_box_set_active( GTK_COMBO_BOX( pref->priv->trayconfigbox ), xpad_settings_get_tray_click_handler(xpad_settings()));
291
292 hbox = gtk_hbox_new(FALSE, 12);
293 label = gtk_label_new_with_mnemonic(_("Tray click behaviour"));
294 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
295 gtk_box_pack_start(GTK_BOX(hbox), pref->priv->trayconfigbox, TRUE, TRUE, 0);
296 gtk_box_pack_start(GTK_BOX(tray_config_vbox), hbox, TRUE, TRUE, 0);
297
276 gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->editcheck, FALSE, FALSE, 0);298 gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->editcheck, FALSE, FALSE, 0);
277 gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->stickycheck, FALSE, FALSE, 0);299 gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->stickycheck, FALSE, FALSE, 0);
278 gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->confirmcheck, FALSE, FALSE, 0); 300 gtk_box_pack_start (GTK_BOX (options_vbox), pref->priv->confirmcheck, FALSE, FALSE, 0);
301 g_object_set (GTK_WIDGET(options_vbox), "child", tray_config_vbox, NULL);
279 302
280 global_vbox = g_object_new (GTK_TYPE_VBOX,303 global_vbox = g_object_new (GTK_TYPE_VBOX,
281 "border-width", 6,304 "border-width", 6,
@@ -295,12 +318,14 @@
295 pref->priv->text_handler = g_signal_connect (pref->priv->textbutton, "color-set", G_CALLBACK (change_text_color), pref);318 pref->priv->text_handler = g_signal_connect (pref->priv->textbutton, "color-set", G_CALLBACK (change_text_color), pref);
296 pref->priv->back_handler = g_signal_connect (pref->priv->backbutton, "color-set", G_CALLBACK (change_back_color), pref);319 pref->priv->back_handler = g_signal_connect (pref->priv->backbutton, "color-set", G_CALLBACK (change_back_color), pref);
297 pref->priv->font_handler = g_signal_connect (pref->priv->fontbutton, "font-set", G_CALLBACK (change_font_face), pref);320 pref->priv->font_handler = g_signal_connect (pref->priv->fontbutton, "font-set", G_CALLBACK (change_font_face), pref);
321 pref->priv->trayclick_handler = g_signal_connect(pref->priv->trayconfigbox, "changed", G_CALLBACK(change_tray_click_configuration), pref);
298 pref->priv->notify_font_handler = g_signal_connect_swapped (xpad_settings (), "notify::fontname", G_CALLBACK (notify_fontname), pref);322 pref->priv->notify_font_handler = g_signal_connect_swapped (xpad_settings (), "notify::fontname", G_CALLBACK (notify_fontname), pref);
299 pref->priv->notify_text_handler = g_signal_connect_swapped (xpad_settings (), "notify::text-color", G_CALLBACK (notify_text_color), pref);323 pref->priv->notify_text_handler = g_signal_connect_swapped (xpad_settings (), "notify::text-color", G_CALLBACK (notify_text_color), pref);
300 pref->priv->notify_back_handler = g_signal_connect_swapped (xpad_settings (), "notify::back-color", G_CALLBACK (notify_back_color), pref);324 pref->priv->notify_back_handler = g_signal_connect_swapped (xpad_settings (), "notify::back-color", G_CALLBACK (notify_back_color), pref);
301 pref->priv->notify_sticky_handler = g_signal_connect_swapped (xpad_settings (), "notify::sticky", G_CALLBACK (notify_sticky), pref);325 pref->priv->notify_sticky_handler = g_signal_connect_swapped (xpad_settings (), "notify::sticky", G_CALLBACK (notify_sticky), pref);
302 pref->priv->notify_edit_handler = g_signal_connect_swapped (xpad_settings (), "notify::edit-lock", G_CALLBACK (notify_edit), pref);326 pref->priv->notify_edit_handler = g_signal_connect_swapped (xpad_settings (), "notify::edit-lock", G_CALLBACK (notify_edit), pref);
303 pref->priv->notify_confirm_handler = g_signal_connect_swapped (xpad_settings (), "notify::confirm-destroy", G_CALLBACK (notify_confirm), pref);327 pref->priv->notify_confirm_handler = g_signal_connect_swapped (xpad_settings (), "notify::confirm-destroy", G_CALLBACK (notify_confirm), pref);
328 pref->priv->notify_tray_handler = g_signal_connect_swapped (xpad_settings (), "notify::tray_click_configuration", G_CALLBACK(notify_tray_click), pref);
304 329
305 g_object_unref (size_group_labels);330 g_object_unref (size_group_labels);
306 331
@@ -394,6 +419,14 @@
394}419}
395420
396static void421static void
422change_tray_click_configuration(GtkComboBox *box, XpadPreferences *pref)
423{
424 g_signal_handler_block(xpad_settings(), pref->priv->notify_tray_handler);
425 xpad_settings_set_tray_click_handler(xpad_settings(), gtk_combo_box_get_active(box));
426 g_signal_handler_unblock(xpad_settings(), pref->priv->notify_tray_handler);
427}
428
429static void
397change_text_color (GtkColorButton *button, XpadPreferences *pref)430change_text_color (GtkColorButton *button, XpadPreferences *pref)
398{431{
399 GdkColor color;432 GdkColor color;
@@ -516,3 +549,12 @@
516 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->confirmcheck), xpad_settings_get_confirm_destroy (xpad_settings ()));549 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (pref->priv->confirmcheck), xpad_settings_get_confirm_destroy (xpad_settings ()));
517 g_signal_handler_unblock (pref->priv->confirmcheck, pref->priv->confirmcheck_handler);550 g_signal_handler_unblock (pref->priv->confirmcheck, pref->priv->confirmcheck_handler);
518}551}
552
553static void
554notify_tray_click(XpadPreferences *pref)
555{
556 g_signal_handler_block(pref->priv->trayconfigbox, pref->priv->trayclick_handler);
557 gtk_combo_box_set_active(GTK_COMBO_BOX(pref->priv->trayconfigbox), xpad_settings_get_tray_click_handler(xpad_settings()));
558 g_signal_handler_unblock(pref->priv->trayconfigbox, pref->priv->trayclick_handler);
559}
560
519561
=== modified file 'src/xpad-settings.c'
--- src/xpad-settings.c 2013-10-07 20:07:46 +0000
+++ src/xpad-settings.c 2013-10-14 17:36:30 +0000
@@ -35,6 +35,7 @@
35 gboolean confirm_destroy;35 gboolean confirm_destroy;
36 gboolean edit_lock;36 gboolean edit_lock;
37 gboolean sticky;37 gboolean sticky;
38 guint tray_click_configuration;
38 gboolean has_toolbar;39 gboolean has_toolbar;
39 gboolean autohide_toolbar;40 gboolean autohide_toolbar;
40 gboolean has_scrollbar;41 gboolean has_scrollbar;
@@ -59,6 +60,7 @@
59 PROP_CONFIRM_DESTROY,60 PROP_CONFIRM_DESTROY,
60 PROP_STICKY,61 PROP_STICKY,
61 PROP_EDIT_LOCK,62 PROP_EDIT_LOCK,
63 PROP_TRAY_CLICK_CONFIGURATION,
62 PROP_HAS_TOOLBAR,64 PROP_HAS_TOOLBAR,
63 PROP_AUTOHIDE_TOOLBAR,65 PROP_AUTOHIDE_TOOLBAR,
64 PROP_HAS_SCROLLBAR,66 PROP_HAS_SCROLLBAR,
@@ -149,7 +151,15 @@
149 "Whether edit lock mode is enabled",151 "Whether edit lock mode is enabled",
150 FALSE,152 FALSE,
151 G_PARAM_READWRITE));153 G_PARAM_READWRITE));
152 154 g_object_class_install_property (gobject_class,
155 PROP_TRAY_CLICK_CONFIGURATION,
156 g_param_spec_uint ("tray_click_configuration",
157 "Tray Click Configuration",
158 "What configuration is selected on tray click",
159 0,
160 G_MAXUINT,
161 2,
162 G_PARAM_READWRITE));
153 g_object_class_install_property (gobject_class,163 g_object_class_install_property (gobject_class,
154 PROP_HAS_TOOLBAR,164 PROP_HAS_TOOLBAR,
155 g_param_spec_boolean ("has_toolbar",165 g_param_spec_boolean ("has_toolbar",
@@ -239,6 +249,7 @@
239 settings->priv->confirm_destroy = TRUE;249 settings->priv->confirm_destroy = TRUE;
240 settings->priv->sticky = FALSE;250 settings->priv->sticky = FALSE;
241 settings->priv->edit_lock = FALSE;251 settings->priv->edit_lock = FALSE;
252 settings->priv->tray_click_configuration = 0;
242 settings->priv->fontname = NULL;253 settings->priv->fontname = NULL;
243 settings->priv->has_toolbar = TRUE;254 settings->priv->has_toolbar = TRUE;
244 settings->priv->autohide_toolbar = TRUE;255 settings->priv->autohide_toolbar = TRUE;
@@ -350,6 +361,21 @@
350 return settings->priv->edit_lock;361 return settings->priv->edit_lock;
351}362}
352363
364void xpad_settings_set_tray_click_handler (XpadSettings *settings, guint conf)
365{
366 if (settings->priv->tray_click_configuration == conf)
367 return;
368
369 settings->priv->tray_click_configuration = conf;
370 save_to_file(settings, DEFAULTS_FILENAME);
371 g_object_notify (G_OBJECT (settings), "tray_click_configuration");
372}
373
374guint xpad_settings_get_tray_click_handler(XpadSettings *settings)
375{
376 return settings->priv->tray_click_configuration;
377}
378
353void xpad_settings_set_has_toolbar (XpadSettings *settings, gboolean toolbar)379void xpad_settings_set_has_toolbar (XpadSettings *settings, gboolean toolbar)
354{380{
355 if (settings->priv->has_toolbar == toolbar)381 if (settings->priv->has_toolbar == toolbar)
@@ -607,7 +633,11 @@
607 case PROP_EDIT_LOCK:633 case PROP_EDIT_LOCK:
608 xpad_settings_set_edit_lock (settings, g_value_get_boolean (value));634 xpad_settings_set_edit_lock (settings, g_value_get_boolean (value));
609 break;635 break;
610 636
637 case PROP_TRAY_CLICK_CONFIGURATION:
638 xpad_settings_set_tray_click_handler(settings, g_value_get_uint(value));
639 break;
640
611 case PROP_HAS_TOOLBAR:641 case PROP_HAS_TOOLBAR:
612 xpad_settings_set_has_toolbar (settings, g_value_get_boolean (value));642 xpad_settings_set_has_toolbar (settings, g_value_get_boolean (value));
613 break;643 break;
@@ -727,6 +757,7 @@
727 "b|confirm_destroy", &settings->priv->confirm_destroy,757 "b|confirm_destroy", &settings->priv->confirm_destroy,
728 "b|edit_lock", &settings->priv->edit_lock,758 "b|edit_lock", &settings->priv->edit_lock,
729 "b|sticky_on_start", &settings->priv->sticky,759 "b|sticky_on_start", &settings->priv->sticky,
760 "u|tray_click_configuration", &settings->priv->tray_click_configuration,
730 "h|back_red", &back.red,761 "h|back_red", &back.red,
731 "h|back_green", &back.green,762 "h|back_green", &back.green,
732 "h|back_blue", &back.blue,763 "h|back_blue", &back.blue,
@@ -818,6 +849,7 @@
818 "b|confirm_destroy", settings->priv->confirm_destroy,849 "b|confirm_destroy", settings->priv->confirm_destroy,
819 "b|edit_lock", settings->priv->edit_lock,850 "b|edit_lock", settings->priv->edit_lock,
820 "b|sticky_on_start", settings->priv->sticky,851 "b|sticky_on_start", settings->priv->sticky,
852 "u|tray_click_configuration", settings->priv->tray_click_configuration,
821 "h|back_red", settings->priv->back ? settings->priv->back->red : 0,853 "h|back_red", settings->priv->back ? settings->priv->back->red : 0,
822 "h|back_green", settings->priv->back ? settings->priv->back->green : 0,854 "h|back_green", settings->priv->back ? settings->priv->back->green : 0,
823 "h|back_blue", settings->priv->back ? settings->priv->back->blue : 0,855 "h|back_blue", settings->priv->back ? settings->priv->back->blue : 0,
824856
=== modified file 'src/xpad-tray.c'
--- src/xpad-tray.c 2013-10-09 14:46:10 +0000
+++ src/xpad-tray.c 2013-10-14 17:36:30 +0000
@@ -29,8 +29,23 @@
29#include "xpad-preferences.h"29#include "xpad-preferences.h"
30#include "xpad-tray.h"30#include "xpad-tray.h"
3131
32enum
33{
34 DO_NOTHING,
35 TOGGLE_SHOW_ALL,
36 LIST_OF_PADS,
37 NEW_PAD
38};
39// tray icon left click handler
32static void xpad_tray_activate_cb (GtkStatusIcon *icon);40static void xpad_tray_activate_cb (GtkStatusIcon *icon);
41// tray icon right click handler
33static void xpad_tray_popup_menu_cb (GtkStatusIcon *icon, guint button, guint time);42static void xpad_tray_popup_menu_cb (GtkStatusIcon *icon, guint button, guint time);
43// "toggle show all" menu item handler
44static void xpad_tray_show_hide_all (void);
45// "show pads" menu item handler
46static void xpad_tray_show_windows_list (GtkStatusIcon *icon);
47// helper function to append pad window title as item to menu
48static void xpad_tray_append_pad_window_titles_to_menu (GtkWidget *menu);
3449
35static GtkStatusIcon *docklet = NULL;50static GtkStatusIcon *docklet = NULL;
3651
@@ -101,6 +116,25 @@
101 g_slist_free (pads);116 g_slist_free (pads);
102}117}
103118
119static void
120xpad_tray_show_hide_all (void)
121{
122 GSList *pads = xpad_pad_group_get_pads (xpad_app_get_pad_group ());
123 // find if any pad is visible
124 gboolean open = FALSE;
125 GSList *i;
126 for(i = pads; i != NULL; i = i->next)
127 {
128 if (gtk_widget_get_visible(GTK_WIDGET(i->data)))
129 {
130 open = TRUE;
131 break;
132 }
133 }
134 g_slist_foreach(pads, (GFunc) (open ? gtk_widget_hide : gtk_widget_show), NULL);
135 g_slist_free (pads);
136}
137
104static void138static void
105menu_spawn (XpadPadGroup *group)139menu_spawn (XpadPadGroup *group)
106{140{
@@ -112,11 +146,13 @@
112xpad_tray_popup_menu_cb (GtkStatusIcon *icon, guint button, guint time)146xpad_tray_popup_menu_cb (GtkStatusIcon *icon, guint button, guint time)
113{147{
114 GtkWidget *menu, *item;148 GtkWidget *menu, *item;
115 GSList *pads, *l;149 GSList *pads;
116 gint n;150 gboolean no_any_pad = FALSE;
117
118 menu = gtk_menu_new ();151 menu = gtk_menu_new ();
119 pads = xpad_pad_group_get_pads (xpad_app_get_pad_group ());152 pads = xpad_pad_group_get_pads (xpad_app_get_pad_group ());
153 if (!pads)
154 no_any_pad = TRUE;
155 g_slist_free (pads);
120 156
121 item = gtk_image_menu_item_new_from_stock (GTK_STOCK_NEW, NULL);157 item = gtk_image_menu_item_new_from_stock (GTK_STOCK_NEW, NULL);
122 g_signal_connect_swapped (item, "activate", G_CALLBACK (menu_spawn), xpad_app_get_pad_group ());158 g_signal_connect_swapped (item, "activate", G_CALLBACK (menu_spawn), xpad_app_get_pad_group ());
@@ -131,28 +167,72 @@
131 g_signal_connect_swapped (item, "activate", G_CALLBACK (menu_show_all), xpad_app_get_pad_group ());167 g_signal_connect_swapped (item, "activate", G_CALLBACK (menu_show_all), xpad_app_get_pad_group ());
132 gtk_container_add (GTK_CONTAINER (menu), item);168 gtk_container_add (GTK_CONTAINER (menu), item);
133 gtk_widget_show (item);169 gtk_widget_show (item);
134 if (!pads)170 if (no_any_pad)
135 gtk_widget_set_sensitive (item, FALSE);171 gtk_widget_set_sensitive (item, FALSE);
136 172
137 item = gtk_image_menu_item_new_with_mnemonic (_("_Close All"));173 item = gtk_image_menu_item_new_with_mnemonic (_("_Close All"));
138 g_signal_connect_swapped (item, "activate", G_CALLBACK (xpad_pad_group_close_all), xpad_app_get_pad_group ());174 g_signal_connect_swapped (item, "activate", G_CALLBACK (xpad_pad_group_close_all), xpad_app_get_pad_group ());
139 gtk_container_add (GTK_CONTAINER (menu), item);175 gtk_container_add (GTK_CONTAINER (menu), item);
140 gtk_widget_show (item);176 gtk_widget_show (item);
141 if (!pads)177 if (no_any_pad)
142 gtk_widget_set_sensitive (item, FALSE);178 gtk_widget_set_sensitive (item, FALSE);
143 179
144 item = gtk_separator_menu_item_new ();180 item = gtk_separator_menu_item_new ();
145 gtk_container_add (GTK_CONTAINER (menu), item);181 gtk_container_add (GTK_CONTAINER (menu), item);
146 gtk_widget_show (item);182 gtk_widget_show (item);
147 183
148 /**184 // append window titles
149 * Order pads according to title.185 xpad_tray_append_pad_window_titles_to_menu (menu);
150 */186
187 item = gtk_image_menu_item_new_from_stock (GTK_STOCK_PREFERENCES, NULL);
188 g_signal_connect (item, "activate", G_CALLBACK (xpad_preferences_open), NULL);
189 gtk_container_add (GTK_CONTAINER (menu), item);
190 gtk_widget_show (item);
191
192 item = gtk_image_menu_item_new_from_stock (GTK_STOCK_QUIT, NULL);
193 g_signal_connect (item, "activate", G_CALLBACK (gtk_main_quit), NULL);
194 gtk_container_add (GTK_CONTAINER (menu), item);
195 gtk_widget_show (item);
196
197 gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_status_icon_position_menu, icon, button, time);
198}
199
200static void
201xpad_tray_activate_cb (GtkStatusIcon *icon)
202{
203 switch (xpad_settings_get_tray_click_handler(xpad_settings()))
204 {
205 case TOGGLE_SHOW_ALL:
206 xpad_tray_show_hide_all();
207 break;
208 case LIST_OF_PADS:
209 xpad_tray_show_windows_list(icon);
210 break;
211 case NEW_PAD:
212 menu_spawn(xpad_app_get_pad_group());
213 break;
214 }
215}
216
217static void
218xpad_tray_show_windows_list (GtkStatusIcon *icon)
219{
220 GtkWidget* menu = gtk_menu_new ();
221 xpad_tray_append_pad_window_titles_to_menu (menu);
222 gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_status_icon_position_menu, icon, 0, gtk_get_current_event_time());
223}
224
225static void
226xpad_tray_append_pad_window_titles_to_menu (GtkWidget *menu)
227{
228 GSList *pads, *l;
229 GtkWidget *item;
230 gint n;
231
232 pads = xpad_pad_group_get_pads (xpad_app_get_pad_group ());
233 // Order pads according to title.
151 pads = g_slist_sort (pads, (GCompareFunc) menu_title_compare);234 pads = g_slist_sort (pads, (GCompareFunc) menu_title_compare);
152 235 // Populate list of windows.
153 /**
154 * Populate list of windows.
155 */
156 for (l = pads, n = 1; l; l = l->next, n++)236 for (l = pads, n = 1; l; l = l->next, n++)
157 {237 {
158 gchar *title;238 gchar *title;
@@ -174,6 +254,7 @@
174 g_free (title);254 g_free (title);
175 }255 }
176 g_slist_free (pads);256 g_slist_free (pads);
257<<<<<<< TREE
177 258
178 if (pads)259 if (pads)
179 {260 {
@@ -203,3 +284,6 @@
203 g_slist_free (pads);284 g_slist_free (pads);
204}285}
205286
287=======
288}
289>>>>>>> MERGE-SOURCE

Subscribers

People subscribed via source and target branches