Skip to content

Commit 4094099

Browse files
committed
Setup view connection better, have it change when the view does.
1 parent dbbf100 commit 4094099

2 files changed

Lines changed: 20 additions & 4 deletions

File tree

src/nemo-preview-pane.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,9 +247,9 @@ nemo_preview_pane_set_file (NemoPreviewPane *pane,
247247

248248
/* Monitor file for changes */
249249
priv->file_changed_id =
250-
g_signal_connect_object (file, "changed",
251-
G_CALLBACK (file_changed_callback),
252-
pane, 0);
250+
g_signal_connect (file, "changed",
251+
G_CALLBACK (file_changed_callback),
252+
pane);
253253

254254
/* Update child widgets */
255255
nemo_preview_image_set_file (NEMO_PREVIEW_IMAGE (priv->image_widget), file);

src/nemo-window.c

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1546,6 +1546,9 @@ nemo_window_sync_create_folder_button (NemoWindow *window)
15461546
toolbar_set_create_folder_button (allow, slot->pane);
15471547
}
15481548

1549+
/* Forward declaration for preview pane callback */
1550+
static void preview_pane_selection_changed_callback (NemoView *view, NemoWindow *window);
1551+
15491552
static void
15501553
zoom_level_changed_callback (NemoView *view,
15511554
NemoWindow *window)
@@ -1584,6 +1587,13 @@ nemo_window_connect_content_view (NemoWindow *window,
15841587
G_CALLBACK (zoom_level_changed_callback),
15851588
window);
15861589

1590+
/* Connect preview pane selection updates if preview is showing */
1591+
if (window->details->preview_pane) {
1592+
g_signal_connect_object (view, "selection-changed",
1593+
G_CALLBACK (preview_pane_selection_changed_callback),
1594+
window, 0);
1595+
}
1596+
15871597
/* Update displayed the selected view type in the toolbar and menu. */
15881598
if (slot->pending_location == NULL) {
15891599
nemo_window_sync_view_type (window);
@@ -1608,6 +1618,11 @@ nemo_window_disconnect_content_view (NemoWindow *window,
16081618
}
16091619

16101620
g_signal_handlers_disconnect_by_func (view, G_CALLBACK (zoom_level_changed_callback), window);
1621+
1622+
/* Disconnect preview pane selection updates if preview is showing */
1623+
if (window->details->preview_pane) {
1624+
g_signal_handlers_disconnect_by_func (view, G_CALLBACK (preview_pane_selection_changed_callback), window);
1625+
}
16111626
}
16121627

16131628
/**
@@ -2352,7 +2367,8 @@ nemo_window_preview_pane_on (NemoWindow *window)
23522367
nemo_preview_pane_set_file (NEMO_PREVIEW_PANE (window->details->preview_pane), file);
23532368
nemo_file_list_free (selection);
23542369

2355-
/* Connect selection-changed signal */
2370+
/* Connect selection-changed signal for the current view */
2371+
/* This will be reconnected automatically when view changes via nemo_window_connect_content_view() */
23562372
g_signal_connect_object (slot->content_view, "selection-changed",
23572373
G_CALLBACK (preview_pane_selection_changed_callback),
23582374
window, 0);

0 commit comments

Comments
 (0)