Skip to content

Commit 59496b1

Browse files
committed
toolbar: Fix updating the state of the "Up" button.
When there's no parent folder, the Up button should be disabled. The menubar item was being disabled, but the toolbar button belongs in a different action group, and wasn't being updated.
1 parent f1e87fd commit 59496b1

File tree

5 files changed

+38
-33
lines changed

5 files changed

+38
-33
lines changed

src/nemo-window-manage-views.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1490,7 +1490,7 @@ update_for_new_location (NemoWindowSlot *slot)
14901490

14911491
if (slot == nemo_window_get_active_slot (window)) {
14921492
/* Sync up and zoom action states */
1493-
nemo_window_sync_up_button (window);
1493+
nemo_window_pane_sync_up_actions (slot->pane);
14941494
nemo_window_sync_zoom_widgets (window);
14951495
nemo_window_sync_bookmark_action (window);
14961496
nemo_window_sync_view_type (window);

src/nemo-window-pane.c

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1055,6 +1055,41 @@ nemo_window_pane_set_active (NemoWindowPane *pane,
10551055
nemo_window_pane_set_active_style (pane, is_active);
10561056
}
10571057

1058+
void
1059+
nemo_window_pane_sync_up_actions (NemoWindowPane *pane)
1060+
{
1061+
NemoWindowSlot *slot;
1062+
GFile *parent;
1063+
GtkActionGroup *action_group;
1064+
GtkAction *action;
1065+
gboolean allowed;
1066+
1067+
slot = pane->active_slot;
1068+
1069+
allowed = FALSE;
1070+
if (slot->location != NULL) {
1071+
parent = g_file_get_parent (slot->location);
1072+
allowed = parent != NULL;
1073+
1074+
g_clear_object (&parent);
1075+
}
1076+
1077+
action_group = pane->toolbar_action_group;
1078+
1079+
action = gtk_action_group_get_action (action_group,
1080+
NEMO_ACTION_UP);
1081+
gtk_action_set_sensitive (action, allowed);
1082+
1083+
action_group = nemo_window_get_main_action_group (pane->window);
1084+
1085+
action = gtk_action_group_get_action (action_group,
1086+
NEMO_ACTION_UP);
1087+
gtk_action_set_sensitive (action, allowed);
1088+
action = gtk_action_group_get_action (action_group,
1089+
NEMO_ACTION_UP_ACCEL);
1090+
gtk_action_set_sensitive (action, allowed);
1091+
}
1092+
10581093
GtkActionGroup *
10591094
nemo_window_pane_get_toolbar_action_group (NemoWindowPane *pane)
10601095
{
@@ -1086,7 +1121,7 @@ nemo_window_pane_sync_location_widgets (NemoWindowPane *pane)
10861121

10871122
/* Update window global UI if this is the active pane */
10881123
if (pane == nemo_window_get_active_pane (pane->window)) {
1089-
nemo_window_sync_up_button (pane->window);
1124+
nemo_window_pane_sync_up_actions (pane);
10901125

10911126
/* Check if the back and forward buttons need enabling or disabling. */
10921127
active_slot = nemo_window_get_active_slot (pane->window);

src/nemo-window-pane.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ void nemo_window_pane_set_active (NemoWindowPane *pane, gboolean is_active);
101101
void nemo_window_pane_close_slot (NemoWindowPane *pane, NemoWindowSlot *slot);
102102
GtkActionGroup * nemo_window_pane_get_toolbar_action_group (NemoWindowPane *pane);
103103
void nemo_window_pane_grab_focus (NemoWindowPane *pane);
104-
104+
void nemo_window_pane_sync_up_actions (NemoWindowPane *pane);
105105
/* bars */
106106
void nemo_window_pane_ensure_location_bar (NemoWindowPane *pane);
107107

src/nemo-window-private.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,6 @@ void nemo_window_sync_allow_stop (NemoWindow *window,
157157
void nemo_window_sync_title (NemoWindow *window,
158158
NemoWindowSlot *slot);
159159
void nemo_window_sync_zoom_widgets (NemoWindow *window);
160-
void nemo_window_sync_up_button (NemoWindow *window);
161160
void nemo_window_sync_menu_bar (NemoWindow *window);
162161
void nemo_window_sync_bookmark_action (NemoWindow *window);
163162
void nemo_window_sync_thumbnail_action (NemoWindow *window);

src/nemo-window.c

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1361,35 +1361,6 @@ nemo_window_sync_menu_bar (NemoWindow *window)
13611361
}
13621362
}
13631363

1364-
void
1365-
nemo_window_sync_up_button (NemoWindow *window)
1366-
{
1367-
GtkAction *action;
1368-
GtkActionGroup *action_group;
1369-
NemoWindowSlot *slot;
1370-
gboolean allowed;
1371-
GFile *parent;
1372-
1373-
slot = nemo_window_get_active_slot (window);
1374-
1375-
allowed = FALSE;
1376-
if (slot->location != NULL) {
1377-
parent = g_file_get_parent (slot->location);
1378-
allowed = parent != NULL;
1379-
1380-
g_clear_object (&parent);
1381-
}
1382-
1383-
action_group = nemo_window_get_main_action_group (window);
1384-
1385-
action = gtk_action_group_get_action (action_group,
1386-
NEMO_ACTION_UP);
1387-
gtk_action_set_sensitive (action, allowed);
1388-
action = gtk_action_group_get_action (action_group,
1389-
NEMO_ACTION_UP_ACCEL);
1390-
gtk_action_set_sensitive (action, allowed);
1391-
}
1392-
13931364
void
13941365
nemo_window_sync_title (NemoWindow *window,
13951366
NemoWindowSlot *slot)

0 commit comments

Comments
 (0)