Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Oct 20th, 2012  |  syntax: Diff  |  size: 15.39 KB  |  hits: 81  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Description: Combine user + edit context menu into one context menu
  2.  In Gnome 2 the context menu for applets contained the applets context menu
  3.  as well as the "Edit" items, i.e. Remove/Move.
  4.  This was removed and forced into a new menu accessible only on ALT+Rightclick.
  5.  This patch puts the menus back into one context menu accessible with the
  6.  right mouse button, restoring traditional gnome behaviour
  7.  .
  8.  gnome-panel (3.4.2.1-3solusos1) two; urgency=low
  9.  .
  10.    * Combined context menu + better panel layout
  11. Author: Ikey Doherty <ikey@solusos.com>
  12.  
  13. ---
  14. Reviewed-By: Ikey Doherty <ikey@solusos.com>
  15. Last-Update: <2012-06-03>
  16.  
  17. --- gnome-panel-3.4.2.1.orig/gnome-panel/panel-applet-frame.h
  18. +++ gnome-panel-3.4.2.1/gnome-panel/panel-applet-frame.h
  19. @@ -57,10 +57,6 @@ struct _PanelAppletFrameClass {
  20.                                            guint                button,
  21.                                            guint32              timestamp);
  22.  
  23. -       void     (*popup_edit_menu)       (PanelAppletFrame    *frame,
  24. -                                          guint                button,
  25. -                                          guint32              timestamp);
  26. -
  27.         void     (*change_orientation)    (PanelAppletFrame    *frame,
  28.                                            PanelOrientation     orientation);
  29.  
  30. --- gnome-panel-3.4.2.1.orig/gnome-panel/panel-applet-frame.c
  31. +++ gnome-panel-3.4.2.1/gnome-panel/panel-applet-frame.c
  32. @@ -410,14 +410,11 @@ panel_applet_frame_button_changed (GtkWi
  33.                         pointer = gdk_device_manager_get_client_pointer (device_manager);
  34.                         gdk_device_ungrab (pointer, GDK_CURRENT_TIME);
  35.  
  36. -                       if (modifiers == panel_bindings_get_mouse_button_modifier_keymask ())
  37. -                               PANEL_APPLET_FRAME_GET_CLASS (frame)->popup_edit_menu (frame,
  38. -                                                                                      event->button,
  39. -                                                                                      event->time);
  40. -                       else
  41. -                               PANEL_APPLET_FRAME_GET_CLASS (frame)->popup_menu (frame,
  42. -                                                                                 event->button,
  43. -                                                                                 event->time);
  44. +
  45. +                       // Just use one menu now not two
  46. +                       PANEL_APPLET_FRAME_GET_CLASS (frame)->popup_menu (frame,
  47. +                                                                       event->button,
  48. +                                                                       event->time);
  49.  
  50.                         handled = TRUE;
  51.                 } else if (event->type == GDK_BUTTON_RELEASE)
  52. --- gnome-panel-3.4.2.1.orig/gnome-panel/applet.c
  53. +++ gnome-panel-3.4.2.1/gnome-panel/applet.c
  54. @@ -417,11 +417,30 @@ panel_applet_get_menu (AppletInfo *info)
  55.         GList       *l;
  56.         gboolean     added_anything = FALSE;
  57.  
  58. +       /**
  59. +        * Variables for the edit menu
  60. +        */
  61. +       GtkWidget   *menuitem;
  62. +       GtkWidget   *image;
  63. +       gboolean     movable;
  64. +       gboolean     removable;
  65. +
  66.         if (info->menu)
  67.                 return info->menu;
  68.  
  69.         menu = panel_applet_create_bare_menu (info);
  70.  
  71. +       /**
  72. +        * Moved the panel_applet_get_edit_menu code to here
  73. +        * to recombine the menu as seen in the traditional
  74. +        * Gnome 2 setup
  75. +        */
  76. +       movable = panel_applet_can_freely_move (info);
  77. +       removable = panel_layout_is_writable ();
  78. +
  79. +       // Hack. We always added something now :P
  80. +       added_anything = TRUE;
  81. +
  82.         for (l = info->user_menu; l; l = l->next) {
  83.                 AppletUserMenu *user_menu = l->data;
  84.  
  85. @@ -434,67 +453,6 @@ panel_applet_get_menu (AppletInfo *info)
  86.                 added_anything = TRUE;
  87.         }
  88.  
  89. -       if ( ! added_anything) {
  90. -                g_signal_handlers_disconnect_by_func (menu,
  91. -                                                     G_CALLBACK (applet_menu_show), info);
  92. -                g_signal_handlers_disconnect_by_func (menu,
  93. -                                                     G_CALLBACK (applet_menu_deactivate), info);
  94. -
  95. -               g_object_unref (menu);
  96. -               return NULL;
  97. -       }
  98. -
  99. -       info->menu = menu;
  100. -
  101. -       panel_lockdown_on_notify (panel_lockdown_get (),
  102. -                                 NULL,
  103. -                                 G_OBJECT (info->menu),
  104. -                                 panel_applet_menu_lockdown_changed,
  105. -                                 info);
  106. -
  107. -       return info->menu;
  108. -}
  109. -
  110. -static void
  111. -panel_applet_edit_menu_lockdown_changed (PanelLockdown *lockdown,
  112. -                                        gpointer       user_data)
  113. -{
  114. -       AppletInfo *info = user_data;
  115. -
  116. -       if (!panel_lockdown_get_panels_locked_down (lockdown))
  117. -               return;
  118. -
  119. -       if (info->edit_menu) {
  120. -               if (gtk_widget_get_visible (info->edit_menu))
  121. -                       gtk_menu_shell_deactivate (GTK_MENU_SHELL (info->edit_menu));
  122. -
  123. -                g_signal_handlers_disconnect_by_func (info->edit_menu,
  124. -                                                     G_CALLBACK (applet_menu_deactivate), info);
  125. -               gtk_widget_destroy (info->edit_menu);
  126. -               info->edit_menu = NULL;
  127. -       }
  128. -}
  129. -
  130. -static GtkWidget *
  131. -panel_applet_get_edit_menu (AppletInfo *info)
  132. -{
  133. -       GtkWidget   *menu;
  134. -       GtkWidget   *menuitem;
  135. -       GtkWidget   *image;
  136. -       gboolean     movable;
  137. -       gboolean     removable;
  138. -
  139. -       if (info->edit_menu)
  140. -               return info->edit_menu;
  141. -
  142. -       if (panel_lockdown_get_panels_locked_down_s ())
  143. -               return NULL;
  144. -
  145. -       menu = panel_applet_create_bare_menu (info);
  146. -
  147. -       movable = panel_applet_can_freely_move (info);
  148. -       removable = panel_layout_is_writable ();
  149. -
  150.         menuitem = gtk_menu_item_new_with_mnemonic (_("_Move"));
  151.         g_signal_connect (menuitem, "activate",
  152.                           G_CALLBACK (move_applet_callback), info);
  153. @@ -513,15 +471,25 @@ panel_applet_get_edit_menu (AppletInfo *
  154.         gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
  155.         gtk_widget_set_sensitive (menuitem, removable);
  156.  
  157. -       info->edit_menu = menu;
  158. +       if ( ! added_anything) {
  159. +                g_signal_handlers_disconnect_by_func (menu,
  160. +                                                     G_CALLBACK (applet_menu_show), info);
  161. +                g_signal_handlers_disconnect_by_func (menu,
  162. +                                                     G_CALLBACK (applet_menu_deactivate), info);
  163. +
  164. +               g_object_unref (menu);
  165. +               return NULL;
  166. +       }
  167. +
  168. +       info->menu = menu;
  169.  
  170.         panel_lockdown_on_notify (panel_lockdown_get (),
  171. -                                 "panels-locked-down",
  172. -                                 G_OBJECT (info->edit_menu),
  173. -                                 panel_applet_edit_menu_lockdown_changed,
  174. +                                 NULL,
  175. +                                 G_OBJECT (info->menu),
  176. +                                 panel_applet_menu_lockdown_changed,
  177.                                   info);
  178.  
  179. -       return info->edit_menu;
  180. +       return info->menu;
  181.  }
  182.  
  183.  
  184. @@ -671,7 +639,6 @@ applet_button_press (GtkWidget      *wid
  185.                      GdkEventButton *event,
  186.                      AppletInfo     *info)
  187.  {
  188. -       guint modifiers;
  189.  
  190.         if (event->button != 3)
  191.                 return FALSE;
  192. @@ -679,12 +646,8 @@ applet_button_press (GtkWidget      *wid
  193.         if (applet_must_skip_menu (info))
  194.                 return FALSE;
  195.  
  196. -       modifiers = event->state & gtk_accelerator_get_default_mod_mask ();
  197. -
  198. -       if (modifiers == panel_bindings_get_mouse_button_modifier_keymask ())
  199. -               applet_show_menu (info, panel_applet_get_edit_menu (info), FALSE, event);
  200. -       else
  201. -               applet_show_menu (info, panel_applet_get_menu (info), TRUE, event);
  202. +       // Show combined menu
  203. +       applet_show_menu (info, panel_applet_get_menu (info), TRUE, event);
  204.  
  205.         return TRUE;
  206.  }
  207. @@ -704,17 +667,11 @@ applet_key_press (GtkWidget   *widget,
  208.         eventbutton.button = 3;
  209.         eventbutton.time = event->time;
  210.  
  211. -       /* We're not connecting to the popup-menu signal since we want to be
  212. -        * able to deal with two cases:
  213. -        *  - exact keybinding of popup-menu => we open the context menu
  214. -        *  - keybinding of popup-menu + modifier from metacity => we open menu
  215. -        *    to "edit"
  216. -        */
  217. +
  218.         panel_util_key_event_is_popup (event, &is_popup, &is_edit_popup);
  219.  
  220. -       if (is_edit_popup)
  221. -               applet_show_menu (info, panel_applet_get_edit_menu (info), FALSE, &eventbutton);
  222. -       else if (is_popup)
  223. +       // Hacked out the old code and show the popup always
  224. +       if (is_edit_popup || is_popup )
  225.                 applet_show_menu (info, panel_applet_get_menu (info), TRUE, &eventbutton);
  226.  
  227.         return (is_popup || is_edit_popup);
  228. @@ -747,17 +704,6 @@ panel_applet_destroy (GtkWidget  *widget
  229.          }
  230.         info->menu = NULL;
  231.  
  232. -       if (info->edit_menu) {
  233. -               if (gtk_widget_get_visible (info->edit_menu))
  234. -                       gtk_menu_shell_deactivate (GTK_MENU_SHELL (info->edit_menu));
  235. -
  236. -                g_signal_handlers_disconnect_by_func (info->edit_menu,
  237. -                                                     G_CALLBACK (applet_menu_show), info);
  238. -                g_signal_handlers_disconnect_by_func (info->edit_menu,
  239. -                                                     G_CALLBACK (applet_menu_deactivate), info);
  240. -               g_object_unref (info->edit_menu);
  241. -        }
  242. -       info->edit_menu = NULL;
  243.  
  244.         if (info->data_destroy)
  245.                 info->data_destroy (info->data);
  246. @@ -956,7 +902,6 @@ panel_applet_register (GtkWidget       *
  247.         info->widget       = applet;
  248.         info->settings     = g_object_ref (settings);
  249.         info->menu         = NULL;
  250. -       info->edit_menu    = NULL;
  251.         info->data         = data;
  252.         info->data_destroy = data_destroy;
  253.         info->user_menu    = NULL;
  254. --- gnome-panel-3.4.2.1.orig/gnome-panel/applet.h
  255. +++ gnome-panel-3.4.2.1/gnome-panel/applet.h
  256. @@ -20,7 +20,6 @@ typedef struct {
  257.         GSettings       *settings;
  258.  
  259.         GtkWidget       *menu;
  260. -       GtkWidget       *edit_menu;
  261.         GList           *user_menu;
  262.  
  263.         gpointer         data;
  264. --- gnome-panel-3.4.2.1.orig/gnome-panel/libpanel-applet-private/panel-applet-frame-dbus.c
  265. +++ gnome-panel-3.4.2.1/gnome-panel/libpanel-applet-private/panel-applet-frame-dbus.c
  266. @@ -180,18 +180,6 @@ panel_applet_frame_dbus_popup_menu (Pane
  267.  }
  268.  
  269.  static void
  270. -panel_applet_frame_dbus_popup_edit_menu (PanelAppletFrame *frame,
  271. -                                        guint             button,
  272. -                                        guint32           timestamp)
  273. -{
  274. -       PanelAppletFrameDBus *dbus_frame = PANEL_APPLET_FRAME_DBUS (frame);
  275. -
  276. -       panel_applet_container_child_popup_edit_menu (dbus_frame->priv->container,
  277. -                                                     button, timestamp,
  278. -                                                     NULL, NULL, NULL);
  279. -}
  280. -
  281. -static void
  282.  change_orientation_cb (PanelAppletContainer *container,
  283.                        GAsyncResult         *res,
  284.                        PanelAppletFrame     *frame)
  285. @@ -376,7 +364,6 @@ panel_applet_frame_dbus_class_init (Pane
  286.         frame_class->init_properties = panel_applet_frame_dbus_init_properties;
  287.         frame_class->sync_menu_state = panel_applet_frame_dbus_sync_menu_state;
  288.         frame_class->popup_menu = panel_applet_frame_dbus_popup_menu;
  289. -       frame_class->popup_edit_menu = panel_applet_frame_dbus_popup_edit_menu;
  290.         frame_class->change_orientation = panel_applet_frame_dbus_change_orientation;
  291.         frame_class->change_size = panel_applet_frame_dbus_change_size;
  292.         frame_class->change_background = panel_applet_frame_dbus_change_background;
  293. --- gnome-panel-3.4.2.1.orig/gnome-panel/libpanel-applet-private/panel-applet-container.c
  294. +++ gnome-panel-3.4.2.1/gnome-panel/libpanel-applet-private/panel-applet-container.c
  295. @@ -789,46 +789,3 @@ panel_applet_container_child_popup_menu_
  296.         return !g_simple_async_result_propagate_error (simple, error);
  297.  }
  298.  
  299. -void
  300. -panel_applet_container_child_popup_edit_menu (PanelAppletContainer *container,
  301. -                                             guint                 button,
  302. -                                             guint32               timestamp,
  303. -                                             GCancellable         *cancellable,
  304. -                                             GAsyncReadyCallback   callback,
  305. -                                             gpointer              user_data)
  306. -{
  307. -       GSimpleAsyncResult *result;
  308. -       GDBusProxy         *proxy = container->priv->applet_proxy;
  309. -
  310. -       if (!proxy)
  311. -               return;
  312. -
  313. -       result = g_simple_async_result_new (G_OBJECT (container),
  314. -                                           callback,
  315. -                                           user_data,
  316. -                                           panel_applet_container_child_popup_edit_menu);
  317. -
  318. -       g_dbus_connection_call (g_dbus_proxy_get_connection (proxy),
  319. -                               g_dbus_proxy_get_name (proxy),
  320. -                               g_dbus_proxy_get_object_path (proxy),
  321. -                               PANEL_APPLET_INTERFACE,
  322. -                               "PopupEditMenu",
  323. -                               g_variant_new ("(uu)", button, timestamp),
  324. -                               NULL,
  325. -                               G_DBUS_CALL_FLAGS_NO_AUTO_START,
  326. -                               -1, cancellable,
  327. -                               child_popup_menu_cb,
  328. -                               result);
  329. -}
  330. -
  331. -gboolean
  332. -panel_applet_container_child_popup_edit_menu_finish (PanelAppletContainer *container,
  333. -                                                    GAsyncResult         *result,
  334. -                                                    GError              **error)
  335. -{
  336. -       GSimpleAsyncResult *simple = G_SIMPLE_ASYNC_RESULT (result);
  337. -
  338. -       g_warn_if_fail (g_simple_async_result_get_source_tag (simple) == panel_applet_container_child_popup_edit_menu);
  339. -
  340. -       return !g_simple_async_result_propagate_error (simple, error);
  341. -}
  342. --- gnome-panel-3.4.2.1.orig/gnome-panel/libpanel-applet-private/panel-applet-container.h
  343. +++ gnome-panel-3.4.2.1/gnome-panel/libpanel-applet-private/panel-applet-container.h
  344. @@ -89,15 +89,6 @@ void       panel_applet_container_child_
  345.  gboolean   panel_applet_container_child_popup_menu_finish (PanelAppletContainer *container,
  346.                                                            GAsyncResult         *result,
  347.                                                            GError              **error);
  348. -void       panel_applet_container_child_popup_edit_menu   (PanelAppletContainer *container,
  349. -                                                          guint                 button,
  350. -                                                          guint32               timestamp,
  351. -                                                          GCancellable         *cancellable,
  352. -                                                          GAsyncReadyCallback   callback,
  353. -                                                          gpointer              user_data);
  354. -gboolean   panel_applet_container_child_popup_edit_menu_finish (PanelAppletContainer *container,
  355. -                                                               GAsyncResult         *result,
  356. -                                                               GError              **error);
  357.  
  358.  void       panel_applet_container_child_set               (PanelAppletContainer *container,
  359.                                                            const gchar          *property_name,
  360. --- gnome-panel-3.4.2.1.orig/libpanel-applet/panel-applet.c
  361. +++ gnome-panel-3.4.2.1/libpanel-applet/panel-applet.c
  362. @@ -152,8 +152,6 @@ static const gchar panel_menu_ui[] =
  363.         "<ui>\n"
  364.         "  <popup name=\"PanelAppletPopup\" action=\"PopupAction\">\n"
  365.         "    <placeholder name=\"AppletItems\"/>\n"
  366. -       "  </popup>\n"
  367. -       "  <popup name=\"PanelAppletEditPopup\" action=\"PopupEditAction\">\n"
  368.         "    <menuitem name=\"MoveItem\" action=\"Move\"/>\n"
  369.         "    <menuitem name=\"RemoveItem\" action=\"Remove\"/>\n"
  370.         "  </popup>\n"
  371. @@ -1221,25 +1219,6 @@ panel_applet_menu_popup (PanelApplet *ap
  372.                         button, time);
  373.  }
  374.  
  375. -static void
  376. -panel_applet_edit_menu_popup (PanelApplet *applet,
  377. -                             guint        button,
  378. -                             guint32      time)
  379. -{
  380. -       GtkWidget *menu;
  381. -
  382. -       if (applet->priv->locked_down)
  383. -               return;
  384. -
  385. -       menu = gtk_ui_manager_get_widget (applet->priv->ui_manager,
  386. -                                         "/PanelAppletEditPopup");
  387. -       gtk_menu_popup (GTK_MENU (menu),
  388. -                       NULL, NULL,
  389. -                       NULL,
  390. -                       applet,
  391. -                       button, time);
  392. -}
  393. -
  394.  static gboolean
  395.  panel_applet_can_focus (GtkWidget *widget)
  396.  {
  397. @@ -1325,14 +1304,8 @@ panel_applet_button_press (GtkWidget
  398.         }
  399.  
  400.         if (event->button == 3) {
  401. -               guint modifiers;
  402. -
  403. -               modifiers = event->state & gtk_accelerator_get_default_mod_mask ();
  404. -
  405. -               if (modifiers == panel_applet_bindings_get_mouse_button_modifier_keymask ())
  406. -                       panel_applet_edit_menu_popup (applet, event->button, event->time);
  407. -               else
  408. -                       panel_applet_menu_popup (applet, event->button, event->time);
  409. +               // Show one menu not two
  410. +               panel_applet_menu_popup (applet, event->button, event->time);
  411.  
  412.                 return TRUE;
  413.         }
  414. @@ -1358,9 +1331,8 @@ panel_applet_key_press_event (GtkWidget
  415.  
  416.         panel_applet_bindings_key_event_is_popup (event, &is_popup, &is_edit_popup);
  417.  
  418. -       if (is_edit_popup)
  419. -               panel_applet_edit_menu_popup (PANEL_APPLET (widget), 3, event->time);
  420. -       else if (is_popup)
  421. +       // One combined edit menu
  422. +       if (is_edit_popup || is_popup)
  423.                 panel_applet_menu_popup (PANEL_APPLET (widget), 3, event->time);
  424.  
  425.         return (is_popup || is_edit_popup);
  426. @@ -2378,15 +2350,8 @@ method_call_cb (GDBusConnection       *c
  427.                 panel_applet_menu_popup (applet, button, time);
  428.  
  429.                 g_dbus_method_invocation_return_value (invocation, NULL);
  430. -       } else if (g_strcmp0 (method_name, "PopupEditMenu") == 0) {
  431. -               guint button;
  432. -               guint time;
  433. -
  434. -               g_variant_get (parameters, "(uu)", &button, &time);
  435. -               panel_applet_edit_menu_popup (applet, button, time);
  436. -
  437. -               g_dbus_method_invocation_return_value (invocation, NULL);
  438.         }
  439. +       // Removed old code for the edit menu
  440.  }
  441.  
  442.  static GVariant *
  443. @@ -2477,10 +2442,6 @@ static const gchar introspection_xml[] =
  444.               "<arg name='button' type='u' direction='in'/>"
  445.               "<arg name='time' type='u' direction='in'/>"
  446.             "</method>"
  447. -           "<method name='PopupEditMenu'>"
  448. -             "<arg name='button' type='u' direction='in'/>"
  449. -             "<arg name='time' type='u' direction='in'/>"
  450. -           "</method>"
  451.             "<property name='SettingsPath' type='s' access='readwrite'/>"
  452.             "<property name='PrefsKey' type='s' access='readwrite'/>"
  453.             "<property name='Orient' type='u' access='readwrite' />"