3333#include <libnemo-private/nemo-action.h>
3434#include <libnemo-private/nemo-file.h>
3535#include <libnemo-private/nemo-file-utilities.h>
36+ #include <libnemo-private/nemo-global-preferences.h>
3637
3738#include <eel/eel-gtk-extensions.h>
3839
@@ -79,7 +80,7 @@ action_activated_callback (GtkMenuItem *item, NemoAction *action)
7980}
8081
8182static void
82- actions_changed_cb (NemoBlankDesktopWindow * window )
83+ reset_popup_menu (NemoBlankDesktopWindow * window )
8384{
8485 g_clear_pointer (& window -> details -> popup_menu , gtk_widget_destroy );
8586}
@@ -91,18 +92,20 @@ build_menu (NemoBlankDesktopWindow *window)
9192 return ;
9293 }
9394
95+ gboolean show_customize ;
9496 NemoActionManager * desktop_action_manager = nemo_desktop_manager_get_action_manager ();
9597
9698 if (window -> details -> actions_changed_id == 0 ) {
9799 window -> details -> actions_changed_id = g_signal_connect_swapped (desktop_action_manager ,
98100 "changed" ,
99- G_CALLBACK (actions_changed_cb ),
101+ G_CALLBACK (reset_popup_menu ),
100102 window );
101103 }
102104
105+ show_customize = g_settings_get_boolean (nemo_menu_config_preferences , "desktop-menu-customize" );
103106 GList * action_list = nemo_action_manager_list_actions (desktop_action_manager );
104107
105- if (g_list_length (action_list ) == 0 )
108+ if (g_list_length (action_list ) == 0 && ! show_customize )
106109 return ;
107110
108111 window -> details -> popup_menu = gtk_menu_new ();
@@ -144,6 +147,10 @@ build_menu (NemoBlankDesktopWindow *window)
144147 }
145148 }
146149
150+ if (!show_customize ) {
151+ return ;
152+ }
153+
147154 item = gtk_menu_item_new_with_label (_ ("Customize" ));
148155
149156 gtk_widget_set_visible (item , TRUE);
@@ -155,6 +162,11 @@ static void
155162do_popup_menu (NemoBlankDesktopWindow * window , GdkEventButton * event )
156163{
157164 build_menu (window );
165+
166+ if (window -> details -> popup_menu == NULL ) {
167+ return ;
168+ }
169+
158170 eel_pop_up_context_menu (GTK_MENU (window -> details -> popup_menu ),
159171 event );
160172}
@@ -192,6 +204,8 @@ nemo_blank_desktop_window_dispose (GObject *obj)
192204 window -> details -> actions_changed_id = 0 ;
193205 }
194206
207+ g_signal_handlers_disconnect_by_func (nemo_menu_config_preferences , reset_popup_menu , window );
208+
195209 G_OBJECT_CLASS (nemo_blank_desktop_window_parent_class )-> dispose (obj );
196210}
197211
@@ -233,6 +247,11 @@ nemo_blank_desktop_window_constructed (GObject *obj)
233247
234248 g_signal_connect (GTK_WIDGET (window ), "button-press-event" , G_CALLBACK (on_button_press ), window );
235249 g_signal_connect (GTK_WIDGET (window ), "popup-menu" , G_CALLBACK (on_popup_menu ), window );
250+
251+ g_signal_connect_swapped (nemo_menu_config_preferences ,
252+ "changed::desktop-menu-customize" ,
253+ G_CALLBACK (reset_popup_menu ),
254+ window );
236255}
237256
238257static void
0 commit comments