+2005-10-17 [wwp] 1.9.15cvs67
+
+ * src/account.c
+ * src/prefs_account.c
+ * src/prefs_common.c
+ * src/prefs_common.h
+ * src/prefs_folder_item.c
+ * src/prefs_gtk.c
+ * src/gtk/logwindow.c
+ * src/gtk/pluginwindow.c
+ * src/gtk/prefswindow.c
+ * src/gtk/prefswindow.h
+ Remember yet more window sizes (log, prefs, folder prefs, accounts)
+
2005-10-17 [paul] 1.9.15cvs66
* configure.ac
( cvs diff -u -r 1.1.2.26 -r 1.1.2.27 commitHelper; cvs diff -u -r 1.60.2.16 -r 1.60.2.17 po/es.po; ) > 1.9.15cvs64.patchset
( cvs diff -u -r 1.395.2.139 -r 1.395.2.140 src/summaryview.c; ) > 1.9.15cvs65.patchset
( cvs diff -u -r 1.654.2.945 -r 1.654.2.946 configure.ac; cvs diff -u -r 1.12.2.5 -r 1.12.2.6 po/en_GB.po; cvs diff -u -r 1.23.2.14 -r 1.23.2.15 src/crash.c; cvs diff -u -r 1.11.2.1 -r 1.11.2.2 src/manual.c; cvs diff -u -r 1.3.2.30 -r 1.3.2.31 src/prefs_themes.c; cvs diff -u -r 1.1.2.20 -r 1.1.2.21 src/wizard.c; cvs diff -u -r 1.9.2.17 -r 1.9.2.18 src/common/defs.h; cvs diff -u -r 1.5.2.17 -r 1.5.2.18 src/gtk/menu.c; ) > 1.9.15cvs66.patchset
+( cvs diff -u -r 1.61.2.38 -r 1.61.2.39 src/account.c; cvs diff -u -r 1.105.2.39 -r 1.105.2.40 src/prefs_account.c; cvs diff -u -r 1.204.2.65 -r 1.204.2.66 src/prefs_common.c; cvs diff -u -r 1.103.2.33 -r 1.103.2.34 src/prefs_common.h; cvs diff -u -r 1.52.2.14 -r 1.52.2.15 src/prefs_folder_item.c; cvs diff -u -r 1.10.2.14 -r 1.10.2.15 src/prefs_gtk.c; cvs diff -u -r 1.1.4.12 -r 1.1.4.13 src/gtk/logwindow.c; cvs diff -u -r 1.5.2.19 -r 1.5.2.20 src/gtk/pluginwindow.c; cvs diff -u -r 1.12.2.22 -r 1.12.2.23 src/gtk/prefswindow.c; cvs diff -u -r 1.7.2.4 -r 1.7.2.5 src/gtk/prefswindow.h; ) > 1.9.15cvs67.patchset
MICRO_VERSION=15
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=66
+EXTRA_VERSION=67
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
static gint account_delete_event (GtkWidget *widget,
GdkEventAny *event,
gpointer data);
+static void account_size_allocate_cb(GtkWidget *widget,
+ GtkAllocation *allocation);
static gboolean account_key_pressed (GtkWidget *widget,
GdkEventKey *event,
gpointer data);
}
}
+/*!
+ *\brief Save Gtk object size to prefs dataset
+ */
+static void account_size_allocate_cb(GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ g_return_if_fail(allocation != NULL);
+
+ prefs_common.accountswin_width = allocation->width;
+ prefs_common.accountswin_height = allocation->height;
+}
static void account_edit_create(void)
{
GtkWidget *hbbox;
GtkWidget *close_btn;
+ static GdkGeometry geometry;
+
debug_print("Creating account edit window...\n");
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_size_request (window, 500, 350);
gtk_container_set_border_width (GTK_CONTAINER (window), 8);
gtk_window_set_title (GTK_WINDOW (window), _("Edit accounts"));
gtk_window_set_modal (GTK_WINDOW (window), TRUE);
account_create_list_view_images(list_view);
+ g_signal_connect(G_OBJECT(window), "size_allocate",
+ G_CALLBACK(account_size_allocate_cb), NULL);
+
+ if (!geometry.min_height) {
+ geometry.min_width = 500;
+ geometry.min_height = 350;
+ }
+
+ gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL, &geometry,
+ GDK_HINT_MIN_SIZE);
+ gtk_widget_set_size_request(window, prefs_common.accountswin_width,
+ prefs_common.accountswin_height);
+
edit_account.window = window;
edit_account.list_view = list_view;
edit_account.close_btn = close_btn;
#include "gtkutils.h"
#include "log.h"
#include "hooks.h"
+#include "prefs_common.h"
static void hide_cb (GtkWidget *widget,
LogWindow *logwin);
static gboolean key_pressed (GtkWidget *widget,
GdkEventKey *event,
LogWindow *logwin);
+static void size_allocate_cb (GtkWidget *widget,
+ GtkAllocation *allocation);
static gboolean log_window_append (gpointer source,
gpointer data);
static void log_window_clip (GtkWidget *text,
GtkMenu *menu,
LogWindow *logwin);
+/*!
+ *\brief Save Gtk object size to prefs dataset
+ */
+static void size_allocate_cb(GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ g_return_if_fail(allocation != NULL);
+
+ prefs_common.logwin_width = allocation->width;
+ prefs_common.logwin_height = allocation->height;
+}
+
LogWindow *log_window_create(void)
{
LogWindow *logwin;
GtkWidget *text;
GtkTextBuffer *buffer;
GtkTextIter iter;
+ static GdkGeometry geometry;
debug_print("Creating log window...\n");
+
logwin = g_new0(LogWindow, 1);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), _("Protocol log"));
gtk_window_set_resizable(GTK_WINDOW(window), TRUE);
- gtk_widget_set_size_request(window, 520, 400);
g_signal_connect(G_OBJECT(window), "delete_event",
G_CALLBACK(gtk_widget_hide_on_delete), NULL);
g_signal_connect(G_OBJECT(window), "key_press_event",
gtk_container_add(GTK_CONTAINER(scrolledwin), text);
gtk_widget_show(text);
+ g_signal_connect(G_OBJECT(window), "size_allocate",
+ G_CALLBACK(size_allocate_cb), NULL);
+
+ if (!geometry.min_height) {
+ geometry.min_width = 520;
+ geometry.min_height = 400;
+ }
+
+ gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL, &geometry,
+ GDK_HINT_MIN_SIZE);
+ gtk_widget_set_size_request(window, prefs_common.logwin_width,
+ prefs_common.logwin_height);
+
logwin->window = window;
logwin->scrolledwin = scrolledwin;
logwin->text = text;
return FALSE;
}
+/*!
+ *\brief Save Gtk object size to prefs dataset
+ */
+static void pluginwindow_size_allocate_cb(GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ g_return_if_fail(allocation != NULL);
+
+ prefs_common.pluginswin_width = allocation->width;
+ prefs_common.pluginswin_height = allocation->height;
+}
+
+
void pluginwindow_create()
{
PluginWindow *pluginwindow;
GtkWidget *load_btn;
GtkWidget *unload_btn;
GtkWidget *close_btn;
+ static GdkGeometry geometry;
+ debug_print("Creating plugins window...\n");
+
pluginwindow = g_new0(PluginWindow, 1);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_container_set_border_width(GTK_CONTAINER(window), 8);
- gtk_window_set_default_size(GTK_WINDOW(window), 480, 300);
gtk_window_set_title(GTK_WINDOW(window), _("Plugins"));
gtk_window_set_modal(GTK_WINDOW(window), TRUE);
G_CALLBACK(unload_cb), pluginwindow);
g_signal_connect(G_OBJECT(close_btn), "released",
G_CALLBACK(close_cb), pluginwindow);
+ g_signal_connect(G_OBJECT(window), "size_allocate",
+ G_CALLBACK(pluginwindow_size_allocate_cb), NULL);
g_signal_connect(G_OBJECT(window), "key_press_event",
G_CALLBACK(pluginwindow_key_pressed), pluginwindow);
set_plugin_list(pluginwindow);
inc_lock();
+
+ if (!geometry.min_height) {
+ geometry.min_width = 480;
+ geometry.min_height = 300;
+ }
+
+ gtk_window_set_geometry_hints(GTK_WINDOW(window), NULL, &geometry,
+ GDK_HINT_MIN_SIZE);
+ gtk_widget_set_size_request(window, prefs_common.pluginswin_width,
+ prefs_common.pluginswin_height);
+
gtk_widget_show(window);
}
GtkWidget *ok_btn;
GtkWidget *cancel_btn;
GtkWidget *apply_btn;
+ gint *save_width;
+ gint *save_height;
GtkWidget *empty_page;
gfloat treeweight; /* GTK2: not used */
};
+static void prefs_size_allocate_cb(GtkWidget *widget,
+ GtkAllocation *allocation, gpointer *user_data);
static GtkTreeStore *prefswindow_create_data_store (void);
static GtkWidget *prefswindow_tree_view_create (PrefsWindow* prefswindow);
static void prefs_filtering_create_tree_view_columns (GtkWidget *tree_view);
gtk_tree_selection_select_iter(selection, &iter);
}
-void prefswindow_open_full(const gchar *title, GSList *prefs_pages, gpointer data, GtkDestroyNotify func)
+void prefswindow_open_full(const gchar *title, GSList *prefs_pages, gpointer data, GtkDestroyNotify func,
+ gint *save_width, gint *save_height)
{
PrefsWindow *prefswindow;
gint x = gdk_screen_width();
gint y = gdk_screen_height();
+ static GdkGeometry geometry;
prefswindow = g_new0(PrefsWindow, 1);
prefswindow->data = data;
prefswindow->func = func;
prefswindow->prefs_pages = g_slist_copy(prefs_pages);
+ prefswindow->save_width = save_width;
+ prefswindow->save_height = save_height;
prefswindow->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(prefswindow->window), title);
- if (x < 800 && y < 600)
- gtk_window_set_default_size(GTK_WINDOW(prefswindow->window), 600, 440);
- else
- gtk_window_set_default_size(GTK_WINDOW(prefswindow->window), 700, 550);
-
gtk_window_set_position (GTK_WINDOW(prefswindow->window), GTK_WIN_POS_CENTER);
gtk_window_set_modal (GTK_WINDOW (prefswindow->window), TRUE);
gtk_window_set_resizable (GTK_WINDOW(prefswindow->window), TRUE);
G_CALLBACK(window_closed), prefswindow);
g_signal_connect(G_OBJECT(prefswindow->window), "key_press_event",
G_CALLBACK(prefswindow_key_pressed), &(prefswindow->window));
+ /* connect to callback only if we hhave non-NULL pointers to store size to */
+ if (prefswindow->save_width && prefswindow->save_height) {
+ g_signal_connect(G_OBJECT(prefswindow->window), "size_allocate",
+ G_CALLBACK(prefs_size_allocate_cb), prefswindow);
+ }
+
+ if (!geometry.min_height) {
+
+ if (x < 800 && y < 600) {
+ geometry.min_width = 600;
+ geometry.min_height = 440;
+ } else {
+ geometry.min_width = 700;
+ geometry.min_height = 550;
+ }
+ }
+
+ gtk_window_set_geometry_hints(GTK_WINDOW(prefswindow->window), NULL, &geometry,
+ GDK_HINT_MIN_SIZE);
+ if (prefswindow->save_width && prefswindow->save_height) {
+ gtk_widget_set_size_request(prefswindow->window, *(prefswindow->save_width),
+ *(prefswindow->save_height));
+ }
gtk_widget_show(prefswindow->window);
}
-void prefswindow_open(const gchar *title, GSList *prefs_pages, gpointer data)
+void prefswindow_open(const gchar *title, GSList *prefs_pages, gpointer data,
+ gint *save_width, gint *save_height)
{
- prefswindow_open_full(title, prefs_pages, data, NULL);
+ prefswindow_open_full(title, prefs_pages, data, NULL, save_width, save_height);
+}
+
+/*!
+ *\brief Save Gtk object size to prefs dataset
+ */
+static void prefs_size_allocate_cb(GtkWidget *widget,
+ GtkAllocation *allocation, gpointer *user_data)
+{
+ PrefsWindow *prefswindow = (PrefsWindow *) user_data;
+
+ g_return_if_fail(allocation != NULL);
+
+ /* don't try to save size to NULL pointers */
+ if (prefswindow && prefswindow->save_width && prefswindow->save_height) {
+ *(prefswindow->save_width) = allocation->width;
+ *(prefswindow->save_height) = allocation->height;
+ }
}
static GtkTreeStore *prefswindow_create_data_store(void)
void prefswindow_open_full (const gchar *title,
GSList *prefs_pages,
gpointer data,
- GtkDestroyNotify func);
+ GtkDestroyNotify func,
+ gint *save_width, gint *save_height);
void prefswindow_open (const gchar *title,
GSList *prefs_pages,
- gpointer data);
+ gpointer data,
+ gint *save_width, gint *save_height);
#endif
#include "main.h"
#include "prefs_gtk.h"
#include "prefs_account.h"
+#include "prefs_common.h"
#include "prefs_customheader.h"
#include "account.h"
#include "mainwindow.h"
title = g_strdup_printf (_("%s - Account preferences"),
ac_prefs->account_name);
- prefswindow_open_full(title, prefs_pages, ac_prefs, destroy_dialog);
+ prefswindow_open_full(title, prefs_pages, ac_prefs, destroy_dialog,
+ &prefs_common.editaccountwin_width, &prefs_common.editaccountwin_height);
g_free(title);
gtk_main();
{"addressbookeditpersonwin_height", "-1", &prefs_common.addressbookeditpersonwin_height, P_INT,
NULL, NULL, NULL},
+ {"pluginswin_width", "480", &prefs_common.pluginswin_width, P_INT,
+ NULL, NULL, NULL},
+ {"pluginswin_height", "-1", &prefs_common.pluginswin_height, P_INT,
+ NULL, NULL, NULL},
+
+ {"prefswin_width", "600", &prefs_common.prefswin_width, P_INT,
+ NULL, NULL, NULL},
+ {"prefswin_height", "-1", &prefs_common.prefswin_height, P_INT,
+ NULL, NULL, NULL},
+
+ {"folderitemwin_width", "500", &prefs_common.folderitemwin_width, P_INT,
+ NULL, NULL, NULL},
+ {"folderitemwin_height", "-1", &prefs_common.folderitemwin_height, P_INT,
+ NULL, NULL, NULL},
+
+ {"editaccountwin_width", "500", &prefs_common.editaccountwin_width, P_INT,
+ NULL, NULL, NULL},
+ {"editaccountwin_height", "-1", &prefs_common.editaccountwin_height, P_INT,
+ NULL, NULL, NULL},
+
+ {"accountswin_width", "500", &prefs_common.accountswin_width, P_INT,
+ NULL, NULL, NULL},
+ {"accountswin_height", "-1", &prefs_common.accountswin_height, P_INT,
+ NULL, NULL, NULL},
+
+ {"logwin_width", "520", &prefs_common.logwin_width, P_INT,
+ NULL, NULL, NULL},
+ {"logwin_height", "-1", &prefs_common.logwin_height, P_INT,
+ NULL, NULL, NULL},
+
/* Hidden */
{"warn_dnd", "1", &prefs_common.warn_dnd, P_INT,
NULL, NULL, NULL},
gulong color_new;
GList *summary_quicksearch_history;
-
+
gint filteringwin_width;
gint filteringwin_height;
gint filteringactionwin_width;
gint addressbookwin_height;
gint addressbookeditpersonwin_width;
gint addressbookeditpersonwin_height;
+ gint pluginswin_width;
+ gint pluginswin_height;
+ gint prefswin_width;
+ gint prefswin_height;
+ gint folderitemwin_width;
+ gint folderitemwin_height;
+ gint editaccountwin_width;
+ gint editaccountwin_height;
+ gint accountswin_width;
+ gint accountswin_height;
+ gint logwin_width;
+ gint logwin_height;
+
gint warn_dnd;
gint broken_are_utf8;
};
id = folder_item_get_identifier (item);
title = g_strdup_printf (_("Properties for folder %s"), id);
g_free (id);
- prefswindow_open(title, prefs_pages, item);
+ prefswindow_open(title, prefs_pages, item,
+ &prefs_common.folderitemwin_width, &prefs_common.folderitemwin_height);
g_free (title);
}
#include "main.h"
#include "prefs.h"
#include "prefs_gtk.h"
+#include "prefs_common.h"
#include "utils.h"
#include "gtkutils.h"
#include "passcrypt.h"
void prefs_gtk_open(void)
{
- prefswindow_open(_("Preferences"), prefs_pages, NULL);
+ prefswindow_open(_("Preferences"), prefs_pages, NULL,
+ &prefs_common.prefswin_width, &prefs_common.prefswin_height);
}
void prefs_gtk_register_page(PrefsPage *page)