Merge lp:~khurshid-alam/indicator-appmenu/ignore-desktop into lp:indicator-appmenu

Proposed by Khurshid Alam
Status: Merged
Merged at revision: 285
Proposed branch: lp:~khurshid-alam/indicator-appmenu/ignore-desktop
Merge into: lp:indicator-appmenu
Prerequisite: lp:~khurshid-alam/indicator-appmenu/fix-build-disco
Diff against target: 125 lines (+11/-17)
5 files modified
src/gdk-get-func.c (+3/-3)
src/indicator-appmenu.c (+4/-4)
src/window-menu-dbusmenu.c (+2/-4)
src/window-menu-model.c (+2/-4)
src/window-menu.c (+0/-2)
To merge this branch: bzr merge lp:~khurshid-alam/indicator-appmenu/ignore-desktop
Reviewer Review Type Date Requested Status
Marco Trevisan (TreviƱo) Pending
Review via email: mp+366990@code.launchpad.net

Commit message

* Don't use the deprecated g_type_class_add_private

* Use X11 specific error trap functions

* Do not to track menus for desktop_windows. Fixes LP: #1827411

Description of the change

Bamf somehow not considering desktop window as valid bamf window (see https://paste.ubuntu.com/p/wz32KF7Kqx/). As a result when indicator-appmenu tries to track menu it fails. For now we are ignoring tracking desktop windows in indicator-appmenu.

To post a comment you must log in.
285. By Khurshid Alam

Do not to track menus for desktop_windows. Fixes LP:#1827411

Revision history for this message
Khurshid Alam (khurshid-alam) wrote :

I figured out what is happening. Before nautilus & nautilus-desktop was the same binary (same for nemo), bamf used to track nautilus for desktop menu. But after the split, the code was never adapted in bamf. But for now, this works.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/gdk-get-func.c'
--- src/gdk-get-func.c 2010-10-06 18:43:21 +0000
+++ src/gdk-get-func.c 2019-05-13 16:49:22 +0000
@@ -93,13 +93,13 @@
93 93
94 hints_atom = gdk_x11_get_xatom_by_name_for_display (display, _XA_MOTIF_WM_HINTS);94 hints_atom = gdk_x11_get_xatom_by_name_for_display (display, _XA_MOTIF_WM_HINTS);
9595
96 gdk_error_trap_push ();96 gdk_x11_display_error_trap_push (display);
97 XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), window,97 XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), window,
98 hints_atom, 0, sizeof (MotifWmHints)/sizeof (long),98 hints_atom, 0, sizeof (MotifWmHints)/sizeof (long),
99 False, AnyPropertyType, &type, &format, &nitems,99 False, AnyPropertyType, &type, &format, &nitems,
100 &bytes_after, &data);100 &bytes_after, &data);
101 gdk_flush ();101 gdk_display_flush (display);
102 if ((ret = gdk_error_trap_pop ()))102 if ((ret = gdk_x11_display_error_trap_pop (display)))
103 {103 {
104 g_warning ("%s: Unable to get hints for %u: Error Code: %d", G_STRFUNC, (guint32)window, ret);104 g_warning ("%s: Unable to get hints for %u: Error Code: %d", G_STRFUNC, (guint32)window, ret);
105 return NULL;105 return NULL;
106106
=== modified file 'src/indicator-appmenu.c'
--- src/indicator-appmenu.c 2015-10-28 15:34:43 +0000
+++ src/indicator-appmenu.c 2019-05-13 16:49:22 +0000
@@ -484,14 +484,14 @@
484 xev.xclient.data.l[3] = 0;484 xev.xclient.data.l[3] = 0;
485 xev.xclient.data.l[4] = 0;485 xev.xclient.data.l[4] = 0;
486486
487 gdk_error_trap_push ();487 gdk_x11_display_error_trap_push (gdk_display_get_default ());
488 XSendEvent (gdk_x11_get_default_xdisplay (),488 XSendEvent (gdk_x11_get_default_xdisplay (),
489 gdk_x11_get_default_root_xwindow (),489 gdk_x11_get_default_root_xwindow (),
490 False,490 False,
491 SubstructureRedirectMask | SubstructureNotifyMask,491 SubstructureRedirectMask | SubstructureNotifyMask,
492 &xev);492 &xev);
493 gdk_flush ();493 gdk_display_flush (gdk_display_get_default ());
494 gdk_error_trap_pop_ignored ();494 gdk_x11_display_error_trap_pop_ignored (gdk_display_get_default ());
495495
496 return;496 return;
497}497}
@@ -1067,7 +1067,7 @@
1067 if (menus == NULL) {1067 if (menus == NULL) {
1068 gchar * uniquename = bamf_window_get_utf8_prop (window, "_GTK_UNIQUE_BUS_NAME");1068 gchar * uniquename = bamf_window_get_utf8_prop (window, "_GTK_UNIQUE_BUS_NAME");
10691069
1070 if (uniquename != NULL) {1070 if (uniquename != NULL && bamf_window_get_window_type (window) != BAMF_WINDOW_DESKTOP) {
1071 BamfApplication * app = bamf_matcher_get_application_for_window(iapp->matcher, window);1071 BamfApplication * app = bamf_matcher_get_application_for_window(iapp->matcher, window);
10721072
1073 menus = WINDOW_MENU(window_menu_model_new(app, window));1073 menus = WINDOW_MENU(window_menu_model_new(app, window));
10741074
=== modified file 'src/window-menu-dbusmenu.c'
--- src/window-menu-dbusmenu.c 2019-05-13 16:49:22 +0000
+++ src/window-menu-dbusmenu.c 2019-05-13 16:49:22 +0000
@@ -57,7 +57,7 @@
57};57};
5858
59#define WINDOW_MENU_DBUSMENU_GET_PRIVATE(o) \59#define WINDOW_MENU_DBUSMENU_GET_PRIVATE(o) \
60(G_TYPE_INSTANCE_GET_PRIVATE ((o), WINDOW_MENU_DBUSMENU_TYPE, WindowMenuDbusmenuPrivate))60(window_menu_dbusmenu_get_instance_private (WINDOW_MENU_DBUSMENU(o)))
6161
62/* Prototypes */62/* Prototypes */
6363
@@ -81,7 +81,7 @@
81static void entry_restore (WindowMenu * wm, IndicatorObjectEntry * entry);81static void entry_restore (WindowMenu * wm, IndicatorObjectEntry * entry);
82static void entry_activate (WindowMenu * wm, IndicatorObjectEntry * entry, guint timestamp);82static void entry_activate (WindowMenu * wm, IndicatorObjectEntry * entry, guint timestamp);
8383
84G_DEFINE_TYPE (WindowMenuDbusmenu, window_menu_dbusmenu, WINDOW_MENU_TYPE);84G_DEFINE_TYPE_WITH_PRIVATE (WindowMenuDbusmenu, window_menu_dbusmenu, WINDOW_MENU_TYPE);
8585
86/* Build the one-time class */86/* Build the one-time class */
87static void87static void
@@ -89,8 +89,6 @@
89{89{
90 GObjectClass *object_class = G_OBJECT_CLASS (klass);90 GObjectClass *object_class = G_OBJECT_CLASS (klass);
9191
92 g_type_class_add_private (klass, sizeof (WindowMenuDbusmenuPrivate));
93
94 object_class->dispose = window_menu_dbusmenu_dispose;92 object_class->dispose = window_menu_dbusmenu_dispose;
9593
96 WindowMenuClass * menu_class = WINDOW_MENU_CLASS(klass);94 WindowMenuClass * menu_class = WINDOW_MENU_CLASS(klass);
9795
=== modified file 'src/window-menu-model.c'
--- src/window-menu-model.c 2019-05-13 16:49:22 +0000
+++ src/window-menu-model.c 2019-05-13 16:49:22 +0000
@@ -48,7 +48,7 @@
48};48};
4949
50#define WINDOW_MENU_MODEL_GET_PRIVATE(o) \50#define WINDOW_MENU_MODEL_GET_PRIVATE(o) \
51(G_TYPE_INSTANCE_GET_PRIVATE ((o), WINDOW_MENU_MODEL_TYPE, WindowMenuModelPrivate))51(window_menu_model_get_instance_private (WINDOW_MENU_MODEL(o)))
5252
53/* Base class stuff */53/* Base class stuff */
54static void window_menu_model_class_init (WindowMenuModelClass *klass);54static void window_menu_model_class_init (WindowMenuModelClass *klass);
@@ -64,7 +64,7 @@
64static guint get_xid (WindowMenu * wm);64static guint get_xid (WindowMenu * wm);
6565
66/* GLib boilerplate */66/* GLib boilerplate */
67G_DEFINE_TYPE (WindowMenuModel, window_menu_model, WINDOW_MENU_TYPE);67G_DEFINE_TYPE_WITH_PRIVATE (WindowMenuModel, window_menu_model, WINDOW_MENU_TYPE);
6868
69/* Prefixes to the action muxer */69/* Prefixes to the action muxer */
70#define ACTION_MUX_PREFIX_APP "app"70#define ACTION_MUX_PREFIX_APP "app"
@@ -79,8 +79,6 @@
79{79{
80 GObjectClass *object_class = G_OBJECT_CLASS (klass);80 GObjectClass *object_class = G_OBJECT_CLASS (klass);
8181
82 g_type_class_add_private (klass, sizeof (WindowMenuModelPrivate));
83
84 object_class->dispose = window_menu_model_dispose;82 object_class->dispose = window_menu_model_dispose;
8583
86 WindowMenuClass * wm_class = WINDOW_MENU_CLASS(klass);84 WindowMenuClass * wm_class = WINDOW_MENU_CLASS(klass);
8785
=== modified file 'src/window-menu.c'
--- src/window-menu.c 2015-06-03 23:10:07 +0000
+++ src/window-menu.c 2019-05-13 16:49:22 +0000
@@ -24,8 +24,6 @@
24#include "window-menu.h"24#include "window-menu.h"
25#include "indicator-appmenu-marshal.h"25#include "indicator-appmenu-marshal.h"
2626
27#define WINDOW_MENU_GET_PRIVATE(o) \
28(G_TYPE_INSTANCE_GET_PRIVATE ((o), WINDOW_MENU_TYPE, WindowMenuPrivate))
2927
30/* Signals */28/* Signals */
3129

Subscribers

People subscribed via source and target branches