Skip to content

Commit 5d1ec90

Browse files
committed
fixes
1 parent 2ca0218 commit 5d1ec90

4 files changed

Lines changed: 83 additions & 24 deletions

File tree

libnemo-private/nemo-preview-details.c

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -201,18 +201,36 @@ nemo_preview_details_set_file (NemoPreviewDetails *widget,
201201
gtk_label_set_text (GTK_LABEL (priv->permissions_value_label), "—");
202202
}
203203

204-
/* Location */
205-
location = nemo_file_get_location (file);
206-
parent = g_file_get_parent (location);
207-
if (parent != NULL) {
208-
parent_path = g_file_get_parse_name (parent);
209-
gtk_label_set_text (GTK_LABEL (priv->location_value_label), parent_path);
210-
g_free (parent_path);
211-
g_object_unref (parent);
204+
/* Location - use activation URI to get real location for virtual folders */
205+
str = nemo_file_get_activation_uri (file);
206+
if (str != NULL) {
207+
location = g_file_new_for_uri (str);
208+
g_free (str);
209+
210+
parent = g_file_get_parent (location);
211+
if (parent != NULL) {
212+
parent_path = g_file_get_parse_name (parent);
213+
gtk_label_set_text (GTK_LABEL (priv->location_value_label), parent_path);
214+
g_free (parent_path);
215+
g_object_unref (parent);
216+
} else {
217+
gtk_label_set_text (GTK_LABEL (priv->location_value_label), "—");
218+
}
219+
g_object_unref (location);
212220
} else {
213-
gtk_label_set_text (GTK_LABEL (priv->location_value_label), "—");
221+
/* Fallback to regular location if no activation URI */
222+
location = nemo_file_get_location (file);
223+
parent = g_file_get_parent (location);
224+
if (parent != NULL) {
225+
parent_path = g_file_get_parse_name (parent);
226+
gtk_label_set_text (GTK_LABEL (priv->location_value_label), parent_path);
227+
g_free (parent_path);
228+
g_object_unref (parent);
229+
} else {
230+
gtk_label_set_text (GTK_LABEL (priv->location_value_label), "—");
231+
}
232+
g_object_unref (location);
214233
}
215-
g_object_unref (location);
216234
}
217235
}
218236

libnemo-private/nemo-preview-image.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ nemo_preview_image_init (NemoPreviewImage *preview)
110110

111111
/* Create frame to hold drawing area */
112112
priv->frame = gtk_frame_new (NULL);
113-
gtk_frame_set_shadow_type (GTK_FRAME (priv->frame), GTK_SHADOW_IN);
113+
gtk_frame_set_shadow_type (GTK_FRAME (priv->frame), GTK_SHADOW_NONE);
114114
gtk_widget_set_halign (priv->frame, GTK_ALIGN_FILL);
115115
gtk_widget_set_valign (priv->frame, GTK_ALIGN_FILL);
116116
gtk_widget_set_hexpand (priv->frame, TRUE);

src/nemo-window-private.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ struct NemoWindowDetails
102102
/* preview pane */
103103
GtkWidget *preview_pane; // NemoPreviewPane instance
104104
gboolean show_preview_pane; // State flag
105+
gboolean preview_pane_width_set; // Initial width has been set from settings
105106

106107
gboolean disable_chrome;
107108

src/nemo-window.c

Lines changed: 53 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2241,11 +2241,49 @@ preview_pane_selection_changed_callback (NemoView *view, NemoWindow *window)
22412241
nemo_file_list_free (selection);
22422242
}
22432243

2244+
static void
2245+
set_preview_pane_width_from_settings (NemoWindow *window)
2246+
{
2247+
gint saved_width, position, total_width;
2248+
2249+
/* Only set initial position once */
2250+
if (window->details->preview_pane_width_set) {
2251+
return;
2252+
}
2253+
2254+
window->details->preview_pane_width_set = TRUE;
2255+
2256+
/* Set position based on saved preview pane width */
2257+
saved_width = g_settings_get_int (nemo_preview_pane_preferences, "pane-width");
2258+
total_width = gtk_widget_get_allocated_width (window->details->split_view_hpane);
2259+
2260+
if (saved_width > 100 && total_width > saved_width) {
2261+
/* Position is from left, so subtract preview width from total */
2262+
position = total_width - saved_width;
2263+
gtk_paned_set_position (GTK_PANED (window->details->split_view_hpane), position);
2264+
} else {
2265+
/* Fallback: 60/40 split */
2266+
gtk_paned_set_position (GTK_PANED (window->details->split_view_hpane), total_width * 0.6);
2267+
}
2268+
}
2269+
2270+
static void
2271+
preview_pane_realize_callback (GtkWidget *widget, gpointer user_data)
2272+
{
2273+
NemoWindow *window = NEMO_WINDOW (user_data);
2274+
set_preview_pane_width_from_settings (window);
2275+
}
2276+
22442277
static void
22452278
preview_pane_position_changed_callback (GObject *paned, GParamSpec *pspec, NemoWindow *window)
22462279
{
22472280
gint position, total_width, preview_width;
22482281

2282+
/* Don't save position until initial width has been set */
2283+
if (!window->details->preview_pane_width_set) {
2284+
return;
2285+
}
2286+
22492287
position = gtk_paned_get_position (GTK_PANED (paned));
22502288
total_width = gtk_widget_get_allocated_width (GTK_WIDGET (paned));
22512289

@@ -2344,6 +2382,9 @@ nemo_window_preview_pane_on (NemoWindow *window)
23442382
nemo_window_split_view_off (window);
23452383
}
23462384

2385+
/* Reset flag so position can be set */
2386+
window->details->preview_pane_width_set = FALSE;
2387+
23472388
/* Create preview pane */
23482389
window->details->preview_pane = nemo_preview_pane_new (window);
23492390

@@ -2354,19 +2395,15 @@ nemo_window_preview_pane_on (NemoWindow *window)
23542395

23552396
gtk_widget_show (window->details->preview_pane);
23562397

2357-
/* Set position from saved settings */
2358-
gint saved_width = g_settings_get_int (nemo_preview_pane_preferences, "pane-width");
2359-
gint total_width = gtk_widget_get_allocated_width (window->details->split_view_hpane);
2360-
gint position;
2361-
2362-
if (saved_width > 100 && total_width > saved_width) {
2363-
/* Position is measured from left, so subtract preview width from total */
2364-
position = total_width - saved_width;
2365-
gtk_paned_set_position (GTK_PANED (window->details->split_view_hpane), position);
2398+
/* Set position from settings - check if paned is already realized */
2399+
if (gtk_widget_get_realized (window->details->split_view_hpane)) {
2400+
/* Already realized, set position immediately */
2401+
set_preview_pane_width_from_settings (window);
23662402
} else {
2367-
/* Fallback to 60/40 split if no saved value */
2368-
gtk_paned_set_position (GTK_PANED (window->details->split_view_hpane),
2369-
total_width * 0.6);
2403+
/* Not realized yet, wait for realize signal */
2404+
g_signal_connect (window->details->split_view_hpane, "realize",
2405+
G_CALLBACK (preview_pane_realize_callback),
2406+
window);
23702407
}
23712408

23722409
/* Connect signal to save position on resize */
@@ -2418,7 +2455,10 @@ nemo_window_preview_pane_off (NemoWindow *window)
24182455
return;
24192456
}
24202457

2421-
/* Disconnect position signal */
2458+
/* Disconnect signals */
2459+
g_signal_handlers_disconnect_by_func (window->details->split_view_hpane,
2460+
G_CALLBACK (preview_pane_realize_callback),
2461+
window);
24222462
g_signal_handlers_disconnect_by_func (window->details->split_view_hpane,
24232463
G_CALLBACK (preview_pane_position_changed_callback),
24242464
window);

0 commit comments

Comments
 (0)