33
33
#include <libnemo-private/nemo-action.h>
34
34
#include <libnemo-private/nemo-file.h>
35
35
#include <libnemo-private/nemo-file-utilities.h>
36
+ #include <libnemo-private/nemo-global-preferences.h>
36
37
37
38
#include <eel/eel-gtk-extensions.h>
38
39
@@ -79,7 +80,7 @@ action_activated_callback (GtkMenuItem *item, NemoAction *action)
79
80
}
80
81
81
82
static void
82
- actions_changed_cb (NemoBlankDesktopWindow * window )
83
+ reset_popup_menu (NemoBlankDesktopWindow * window )
83
84
{
84
85
g_clear_pointer (& window -> details -> popup_menu , gtk_widget_destroy );
85
86
}
@@ -91,18 +92,20 @@ build_menu (NemoBlankDesktopWindow *window)
91
92
return ;
92
93
}
93
94
95
+ gboolean show_customize ;
94
96
NemoActionManager * desktop_action_manager = nemo_desktop_manager_get_action_manager ();
95
97
96
98
if (window -> details -> actions_changed_id == 0 ) {
97
99
window -> details -> actions_changed_id = g_signal_connect_swapped (desktop_action_manager ,
98
100
"changed" ,
99
- G_CALLBACK (actions_changed_cb ),
101
+ G_CALLBACK (reset_popup_menu ),
100
102
window );
101
103
}
102
104
105
+ show_customize = g_settings_get_boolean (nemo_menu_config_preferences , "desktop-menu-customize" );
103
106
GList * action_list = nemo_action_manager_list_actions (desktop_action_manager );
104
107
105
- if (g_list_length (action_list ) == 0 )
108
+ if (g_list_length (action_list ) == 0 && ! show_customize )
106
109
return ;
107
110
108
111
window -> details -> popup_menu = gtk_menu_new ();
@@ -144,6 +147,10 @@ build_menu (NemoBlankDesktopWindow *window)
144
147
}
145
148
}
146
149
150
+ if (!show_customize ) {
151
+ return ;
152
+ }
153
+
147
154
item = gtk_menu_item_new_with_label (_ ("Customize" ));
148
155
149
156
gtk_widget_set_visible (item , TRUE);
@@ -155,6 +162,11 @@ static void
155
162
do_popup_menu (NemoBlankDesktopWindow * window , GdkEventButton * event )
156
163
{
157
164
build_menu (window );
165
+
166
+ if (window -> details -> popup_menu == NULL ) {
167
+ return ;
168
+ }
169
+
158
170
eel_pop_up_context_menu (GTK_MENU (window -> details -> popup_menu ),
159
171
event );
160
172
}
@@ -192,6 +204,8 @@ nemo_blank_desktop_window_dispose (GObject *obj)
192
204
window -> details -> actions_changed_id = 0 ;
193
205
}
194
206
207
+ g_signal_handlers_disconnect_by_func (nemo_menu_config_preferences , reset_popup_menu , window );
208
+
195
209
G_OBJECT_CLASS (nemo_blank_desktop_window_parent_class )-> dispose (obj );
196
210
}
197
211
@@ -233,6 +247,11 @@ nemo_blank_desktop_window_constructed (GObject *obj)
233
247
234
248
g_signal_connect (GTK_WIDGET (window ), "button-press-event" , G_CALLBACK (on_button_press ), window );
235
249
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 );
236
255
}
237
256
238
257
static void
0 commit comments