Skip to content

Commit 579320a

Browse files
committed
Refactor
1 parent d45a674 commit 579320a

1 file changed

Lines changed: 38 additions & 58 deletions

File tree

src/nemo-window.c

Lines changed: 38 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1669,6 +1669,41 @@ any_other_slot_wants_preview_pane (NemoWindow *window,
16691669
return FALSE;
16701670
}
16711671

1672+
/* Synchronize the preview pane state based on a slot's directory metadata.
1673+
* This checks the slot's current directory's saved preference and applies it,
1674+
* taking into account whether other slots in the window want the preview pane.
1675+
*/
1676+
static void
1677+
sync_preview_pane_from_slot_metadata (NemoWindow *window,
1678+
NemoWindowSlot *slot)
1679+
{
1680+
NemoFile *directory_file;
1681+
gboolean show_preview;
1682+
1683+
if (slot == NULL || slot->content_view == NULL) {
1684+
return;
1685+
}
1686+
1687+
directory_file = nemo_view_get_directory_as_file (slot->content_view);
1688+
if (directory_file == NULL) {
1689+
return;
1690+
}
1691+
1692+
show_preview = nemo_file_get_boolean_metadata (directory_file,
1693+
NEMO_METADATA_KEY_WINDOW_SHOW_PREVIEW_PANE,
1694+
FALSE);
1695+
1696+
/* Apply the saved state */
1697+
if (show_preview && !window->details->show_preview_pane) {
1698+
nemo_window_preview_pane_on (window);
1699+
} else if (!show_preview && window->details->show_preview_pane) {
1700+
/* Only close preview pane if no other slot wants it */
1701+
if (!any_other_slot_wants_preview_pane (window, slot)) {
1702+
nemo_window_preview_pane_off (window);
1703+
}
1704+
}
1705+
}
1706+
16721707

16731708
/* These are called
16741709
* A) when switching the view within the active slot
@@ -1680,8 +1715,6 @@ nemo_window_connect_content_view (NemoWindow *window,
16801715
NemoView *view)
16811716
{
16821717
NemoWindowSlot *slot;
1683-
NemoFile *directory_file;
1684-
gboolean show_preview;
16851718

16861719
g_assert (NEMO_IS_WINDOW (window));
16871720
g_assert (NEMO_IS_VIEW (view));
@@ -1697,22 +1730,7 @@ nemo_window_connect_content_view (NemoWindow *window,
16971730
window);
16981731

16991732
/* Check if this directory has a saved preview pane state */
1700-
directory_file = nemo_view_get_directory_as_file (view);
1701-
if (directory_file != NULL) {
1702-
show_preview = nemo_file_get_boolean_metadata (directory_file,
1703-
NEMO_METADATA_KEY_WINDOW_SHOW_PREVIEW_PANE,
1704-
FALSE);
1705-
1706-
/* Apply the saved state */
1707-
if (show_preview && !window->details->show_preview_pane) {
1708-
nemo_window_preview_pane_on (window);
1709-
} else if (!show_preview && window->details->show_preview_pane) {
1710-
/* Only close preview pane if no other slot wants it */
1711-
if (!any_other_slot_wants_preview_pane (window, slot)) {
1712-
nemo_window_preview_pane_off (window);
1713-
}
1714-
}
1715-
}
1733+
sync_preview_pane_from_slot_metadata (window, slot);
17161734

17171735
/* Connect preview pane selection updates if preview is showing */
17181736
if (window->details->preview_pane) {
@@ -2352,28 +2370,9 @@ slot_location_changed_callback (NemoWindowSlot *slot,
23522370
{
23532371
GList *selection;
23542372
NemoFile *file = NULL;
2355-
NemoFile *directory_file;
2356-
gboolean show_preview;
23572373

23582374
/* Check if this directory has a saved preview pane state */
2359-
if (slot->content_view != NULL) {
2360-
directory_file = nemo_view_get_directory_as_file (slot->content_view);
2361-
if (directory_file != NULL) {
2362-
show_preview = nemo_file_get_boolean_metadata (directory_file,
2363-
NEMO_METADATA_KEY_WINDOW_SHOW_PREVIEW_PANE,
2364-
FALSE);
2365-
2366-
/* Apply the saved state */
2367-
if (show_preview && !window->details->show_preview_pane) {
2368-
nemo_window_preview_pane_on (window);
2369-
} else if (!show_preview && window->details->show_preview_pane) {
2370-
/* Only close preview pane if no other slot wants it */
2371-
if (!any_other_slot_wants_preview_pane (window, slot)) {
2372-
nemo_window_preview_pane_off (window);
2373-
}
2374-
}
2375-
}
2376-
}
2375+
sync_preview_pane_from_slot_metadata (window, slot);
23772376

23782377
/* Update preview pane content when location changes */
23792378
if (window->details->preview_pane != NULL) {
@@ -2536,26 +2535,7 @@ nemo_window_split_view_off (NemoWindow *window)
25362535

25372536
/* After closing split view, check if the remaining active slot
25382537
* wants the preview pane based on its directory metadata */
2539-
if (active_pane->active_slot != NULL && active_pane->active_slot->content_view != NULL) {
2540-
NemoFile *directory_file;
2541-
gboolean show_preview;
2542-
2543-
directory_file = nemo_view_get_directory_as_file (active_pane->active_slot->content_view);
2544-
if (directory_file != NULL) {
2545-
show_preview = nemo_file_get_boolean_metadata (directory_file,
2546-
NEMO_METADATA_KEY_WINDOW_SHOW_PREVIEW_PANE,
2547-
FALSE);
2548-
2549-
if (show_preview && !window->details->show_preview_pane) {
2550-
nemo_window_preview_pane_on (window);
2551-
} else if (!show_preview && window->details->show_preview_pane) {
2552-
/* Only close preview pane if no other slot wants it */
2553-
if (!any_other_slot_wants_preview_pane (window, active_pane->active_slot)) {
2554-
nemo_window_preview_pane_off (window);
2555-
}
2556-
}
2557-
}
2558-
}
2538+
sync_preview_pane_from_slot_metadata (window, active_pane->active_slot);
25592539

25602540
g_object_notify_by_pspec (G_OBJECT (window), properties[PROP_SHOW_SPLIT_VIEW]);
25612541
}

0 commit comments

Comments
 (0)