dupe_window_update_progress(dw, NULL, 0.0, FALSE);
}
+static void dupe_window_get_geometry(DupeWindow *dw)
+{
+ GdkWindow *window;
+ LayoutWindow *lw = NULL;
+
+ layout_valid(&lw);
+
+ if (!dw || !lw) return;
+
+ window = gtk_widget_get_window(dw->window);
+ gdk_window_get_position(window, &lw->options.dupe_window.x, &lw->options.dupe_window.y);
+ lw->options.dupe_window.w = gdk_window_get_width(window);
+ lw->options.dupe_window.h = gdk_window_get_height(window);
+}
+
void dupe_window_close(DupeWindow *dw)
{
dupe_check_stop(dw);
+ dupe_window_get_geometry(dw);
+
dupe_window_list = g_list_remove(dupe_window_list, dw);
gtk_widget_destroy(dw->window);
GtkListStore *store;
GtkTreeSelection *selection;
GdkGeometry geometry;
+ LayoutWindow *lw = NULL;
+
+ layout_valid(&lw);
dw = g_new0(DupeWindow, 1);
gtk_window_set_geometry_hints(GTK_WINDOW(dw->window), NULL, &geometry,
GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE);
- gtk_window_set_default_size(GTK_WINDOW(dw->window), DUPE_DEF_WIDTH, DUPE_DEF_HEIGHT);
+ if (lw && options->save_window_positions)
+ {
+ gtk_window_set_default_size(GTK_WINDOW(dw->window), lw->options.dupe_window.w, lw->options.dupe_window.h);
+ gtk_window_move(GTK_WINDOW(dw->window), lw->options.dupe_window.x, lw->options.dupe_window.y);
+ }
+ else
+ {
+ gtk_window_set_default_size(GTK_WINDOW(dw->window), DUPE_DEF_WIDTH, DUPE_DEF_HEIGHT);
+ }
gtk_window_set_resizable(GTK_WINDOW(dw->window), TRUE);
gtk_container_set_border_width(GTK_CONTAINER(dw->window), 0);
WRITE_NL(); WRITE_INT(*layout, log_window.y);
WRITE_NL(); WRITE_INT(*layout, log_window.w);
WRITE_NL(); WRITE_INT(*layout, log_window.h);
+
+ WRITE_NL(); WRITE_INT(*layout, search_window.x);
+ WRITE_NL(); WRITE_INT(*layout, search_window.y);
+ WRITE_NL(); WRITE_INT(*layout, search_window.w);
+ WRITE_NL(); WRITE_INT(*layout, search_window.h);
+
+ WRITE_NL(); WRITE_INT(*layout, dupe_window.x);
+ 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_SEPARATOR();
WRITE_NL(); WRITE_BOOL(*layout, animate);
if (READ_INT(*layout, log_window.w)) continue;
if (READ_INT(*layout, log_window.h)) continue;
+ if (READ_INT(*layout, search_window.x)) continue;
+ if (READ_INT(*layout, search_window.y)) continue;
+ if (READ_INT(*layout, search_window.w)) continue;
+ if (READ_INT(*layout, search_window.h)) continue;
+
+ if (READ_INT(*layout, dupe_window.x)) continue;
+ if (READ_INT(*layout, dupe_window.y)) continue;
+ if (READ_INT(*layout, dupe_window.w)) continue;
+ if (READ_INT(*layout, dupe_window.h)) continue;
+
if (READ_BOOL(*layout, animate)) continue;
log_printf("unknown attribute %s = %s\n", option, value);
options->main_window.w = 720;
options->main_window.x = 0;
options->main_window.y = 0;
+ options->dupe_window.w = 800;
+ options->dupe_window.h = 400;
+ options->dupe_window.x = 100;
+ options->dupe_window.y = 100;
+ options->search_window.w = 700;
+ options->search_window.h = 650;
+ options->search_window.x = 100;
+ options->search_window.y = 100;
options->folder_window.vdivider_pos = 100;
options->order = g_strdup("123");
options->show_directory_date = FALSE;
return hbox;
}
+static void search_window_get_geometry(SearchData *sd)
+{
+ GdkWindow *window;
+ LayoutWindow *lw = NULL;
+
+ layout_valid(&lw);
+
+ if (!sd || !lw) return;
+
+ window = gtk_widget_get_window(sd->window);
+ gdk_window_get_position(window, &lw->options.search_window.x, &lw->options.search_window.y);
+ lw->options.search_window.w = gdk_window_get_width(window);
+ lw->options.search_window.h = gdk_window_get_height(window);
+}
+
static void search_window_close(SearchData *sd)
{
+
+ search_window_get_geometry(sd);
+
gtk_widget_destroy(sd->window);
}
GdkGeometry geometry;
gint i;
gchar *marks_string;
+ LayoutWindow *lw = NULL;
+
+ layout_valid(&lw);
sd = g_new0(SearchData, 1);
gtk_window_set_geometry_hints(GTK_WINDOW(sd->window), NULL, &geometry,
GDK_HINT_MIN_SIZE | GDK_HINT_BASE_SIZE);
- gtk_window_set_default_size(GTK_WINDOW(sd->window), DEF_SEARCH_WIDTH, DEF_SEARCH_HEIGHT);
+ if (lw && options->save_window_positions)
+ {
+ gtk_window_set_default_size(GTK_WINDOW(sd->window), lw->options.search_window.w, lw->options.search_window.h);
+ gtk_window_move(GTK_WINDOW(sd->window), lw->options.search_window.x, lw->options.search_window.y);
+ }
+ else
+ {
+ gtk_window_set_default_size(GTK_WINDOW(sd->window), DEF_SEARCH_WIDTH, DEF_SEARCH_HEIGHT);
+ }
g_signal_connect(G_OBJECT(sd->window), "delete_event",
G_CALLBACK(search_window_delete_cb), sd);
gint y;
} log_window;
+ struct {
+ gint w;
+ gint h;
+ gint x;
+ gint y;
+ } search_window;
+
+ struct {
+ gint w;
+ gint h;
+ gint x;
+ gint y;
+ } dupe_window;
+
gboolean tools_float;
gboolean tools_hidden;
gboolean toolbar_hidden;