Fix #934: Request to add image bookmarking/tagging within a folder
[geeqie.git] / src / layout.c
index 25e9d7c..c411d9a 100644 (file)
@@ -324,22 +324,6 @@ static gboolean path_entry_tooltip_cb(GtkWidget *widget, gpointer data)
        return FALSE;
 }
 
-void show_menu_scrollbar_cb(GtkWidget *widget, GdkRectangle *allocation, gpointer data)
-{
-       GtkRequisition requisition;
-
-       gtk_widget_size_request(widget, &requisition);
-
-       if (allocation->width <= requisition.width)
-               {
-               gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(data), GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
-               }
-       else
-               {
-               gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(data), GTK_POLICY_NEVER, GTK_POLICY_NEVER);
-               }
-}
-
 static GtkWidget *layout_tool_setup(LayoutWindow *lw)
 {
        GtkWidget *box;
@@ -359,9 +343,8 @@ static GtkWidget *layout_tool_setup(LayoutWindow *lw)
 
                toolbar = layout_actions_toolbar(lw, TOOLBAR_MAIN);
                scroll_window = gtk_scrolled_window_new(NULL, NULL);
-               gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
+               gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll_window), GTK_POLICY_AUTOMATIC,GTK_POLICY_NEVER);
                gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scroll_window), menu_bar);
-               g_signal_connect(G_OBJECT(menu_bar), "size-allocate", G_CALLBACK(show_menu_scrollbar_cb), scroll_window);
 
                gtk_widget_show(scroll_window);
                gtk_widget_show(menu_bar);
@@ -865,6 +848,7 @@ static GtkWidget *layout_status_label(gchar *text, GtkWidget *box, gboolean star
        gtk_widget_show(frame);
 
        label = gtk_label_new(text ? text : "");
+       gtk_label_set_ellipsize(GTK_LABEL(label), PANGO_ELLIPSIZE_END);
        gtk_container_add(GTK_CONTAINER(frame), label);
        gtk_widget_show(label);
 
@@ -1200,6 +1184,7 @@ gboolean layout_set_fd(LayoutWindow *lw, FileData *fd)
 {
        gboolean have_file = FALSE;
        gboolean dir_changed = TRUE;
+       gchar *last_image;
 
        if (!layout_valid(&lw)) return FALSE;
 
@@ -1218,6 +1203,16 @@ gboolean layout_set_fd(LayoutWindow *lw, FileData *fd)
                        }
                lw->dir_fd = file_data_ref(fd);
                file_data_register_real_time_monitor(fd);
+
+               last_image = get_recent_viewed_folder_image(fd->path);
+               if (last_image)
+                       {
+                       fd = file_data_new_group(last_image);
+                       g_free(last_image);
+
+                       if (isfile(fd->path)) have_file = TRUE;
+                       }
+
                }
        else
                {
@@ -2838,6 +2833,11 @@ void layout_write_attributes(LayoutOptions *layout, GString *outstr, gint indent
        WRITE_NL(); WRITE_INT(*layout, dupe_window.y);
        WRITE_NL(); WRITE_INT(*layout, dupe_window.w);
        WRITE_NL(); WRITE_INT(*layout, dupe_window.h);
+
+       WRITE_NL(); WRITE_INT(*layout, advanced_exif_window.x);
+       WRITE_NL(); WRITE_INT(*layout, advanced_exif_window.y);
+       WRITE_NL(); WRITE_INT(*layout, advanced_exif_window.w);
+       WRITE_NL(); WRITE_INT(*layout, advanced_exif_window.h);
        WRITE_SEPARATOR();
 
        WRITE_NL(); WRITE_BOOL(*layout, animate);
@@ -2948,6 +2948,11 @@ void layout_load_attributes(LayoutOptions *layout, const gchar **attribute_names
                if (READ_INT(*layout, dupe_window.w)) continue;
                if (READ_INT(*layout, dupe_window.h)) continue;
 
+               if (READ_INT(*layout, advanced_exif_window.x)) continue;
+               if (READ_INT(*layout, advanced_exif_window.y)) continue;
+               if (READ_INT(*layout, advanced_exif_window.w)) continue;
+               if (READ_INT(*layout, advanced_exif_window.h)) continue;
+
                if (READ_BOOL(*layout, animate)) continue;
                if (READ_INT(*layout, workspace)) continue;
 
@@ -2983,6 +2988,8 @@ static void layout_config_startup_path(LayoutOptions *lop, gchar **path)
 
 static void layout_config_commandline(LayoutOptions *lop, gchar **path)
 {
+       gchar *last_image;
+
        if (command_line->startup_blank)
                {
                *path = NULL;
@@ -2997,6 +3004,16 @@ static void layout_config_commandline(LayoutOptions *lop, gchar **path)
                }
        else layout_config_startup_path(lop, path);
 
+       if (isdir(*path))
+               {
+               last_image = get_recent_viewed_folder_image(*path);
+               if (last_image)
+                       {
+                       g_free(*path);
+                       *path = last_image;
+                       }
+               }
+
        if (command_line->tools_show)
                {
                lop->tools_float = FALSE;
@@ -3079,7 +3096,7 @@ LayoutWindow *layout_new_from_default()
                }
        else
                {
-               layout_new_from_config(NULL, NULL, TRUE);
+               lw = layout_new_from_config(NULL, NULL, TRUE);
                }
        return lw;
 }