Skip to content

Commit 4c5a7e2

Browse files
committed
nemo-blank-desktop-window.c: Don't try to open a nonexistent menu.
The menu constructor would return early if no actions were enabled, and when you right-click the desktop, it would warn that there's no menu. Check for the 'customize' item visiblity now also to help determine whether or not to build a menu.
1 parent 05e0f0d commit 4c5a7e2

File tree

1 file changed

+22
-3
lines changed

1 file changed

+22
-3
lines changed

src/nemo-blank-desktop-window.c

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
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

8182
static 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
155162
do_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

238257
static void

0 commit comments

Comments
 (0)