diff options
author | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2010-07-14 05:18:17 +0000 |
---|---|---|
committer | hiro <hiro@ee746299-78ed-0310-b773-934348b2243d> | 2010-07-14 05:18:17 +0000 |
commit | d74b2239157d36b8b8795c5eda4bc0315a6ec76e (patch) | |
tree | fd933753ec828c76168a7ba59b4ff3e6146468e0 | |
parent | d1d309683cf429d32fb5b206b042a1fe9d2490a6 (diff) |
always display fixed-positioned windows on screen.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2615 ee746299-78ed-0310-b773-934348b2243d
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | src/addressbook.c | 4 | ||||
-rw-r--r-- | src/compose.c | 6 | ||||
-rw-r--r-- | src/gtkutils.c | 17 | ||||
-rw-r--r-- | src/gtkutils.h | 4 | ||||
-rw-r--r-- | src/mainwindow.c | 15 |
6 files changed, 44 insertions, 13 deletions
@@ -1,3 +1,14 @@ +2010-07-14 + + * src/gtkutils.[ch] + src/addressbook.c + src/compose.c + src/mainwindow.c: always display fixed-positioned windows on screen + (prevent windows displayed outside of screen between multi and + single monitor switching). + * src/compose.c: always display compose window at the same location + even if overlapped. + 2010-07-13 * src/summaryview.c: summary_show_queued_msgs(): scroll summary view diff --git a/src/addressbook.c b/src/addressbook.c index 4875e45e..1629e5a0 100644 --- a/src/addressbook.c +++ b/src/addressbook.c @@ -540,8 +540,8 @@ static void addressbook_create(void) gtk_window_set_default_size(GTK_WINDOW(window), prefs_common.addressbook_width, prefs_common.addressbook_height); - gtk_window_move(GTK_WINDOW(window), prefs_common.addressbook_x, - prefs_common.addressbook_y); + gtkut_window_move(GTK_WINDOW(window), prefs_common.addressbook_x, + prefs_common.addressbook_y); gtk_widget_realize(window); g_signal_connect(G_OBJECT(window), "delete_event", diff --git a/src/compose.c b/src/compose.c index d1c96479..c132ff96 100644 --- a/src/compose.c +++ b/src/compose.c @@ -5119,10 +5119,8 @@ static Compose *compose_create(PrefsAccount *account, ComposeMode mode) gtk_window_set_wmclass(GTK_WINDOW(window), "compose", "Sylpheed"); gtk_window_set_policy(GTK_WINDOW(window), TRUE, TRUE, FALSE); gtk_widget_set_size_request(window, -1, prefs_common.compose_height); - if (!compose_window_exist(prefs_common.compose_x, - prefs_common.compose_y)) - gtk_window_move(GTK_WINDOW(window), prefs_common.compose_x, - prefs_common.compose_y); + gtkut_window_move(GTK_WINDOW(window), prefs_common.compose_x, + prefs_common.compose_y); #ifndef G_OS_WIN32 if (!geometry.max_width) { diff --git a/src/gtkutils.c b/src/gtkutils.c index 29ce1b7b..75d1e932 100644 --- a/src/gtkutils.c +++ b/src/gtkutils.c @@ -968,6 +968,23 @@ gboolean gtkut_window_modal_exist(void) return exist; } +/* ensure that the window is displayed on screen */ +void gtkut_window_move(GtkWindow *window, gint x, gint y) +{ + gint sx, sy; + + g_return_if_fail(window != NULL); + + if (x < 0) + x = 0; + if (y < 0) + y = 0; + x %= gdk_screen_width(); + y %= gdk_screen_height(); + + gtk_window_move(window, x, y); +} + void gtkut_widget_get_uposition(GtkWidget *widget, gint *px, gint *py) { gint x, y; diff --git a/src/gtkutils.h b/src/gtkutils.h index c287c97a..3434bd2b 100644 --- a/src/gtkutils.h +++ b/src/gtkutils.h @@ -219,6 +219,10 @@ gchar *gtkut_text_view_get_selection (GtkTextView *textview); void gtkut_window_popup (GtkWidget *window); gboolean gtkut_window_modal_exist (void); +void gtkut_window_move (GtkWindow *window, + gint x, + gint y); + void gtkut_widget_get_uposition (GtkWidget *widget, gint *px, gint *py); diff --git a/src/mainwindow.c b/src/mainwindow.c index b0608949..83c5a6b2 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -2337,8 +2337,9 @@ static void main_window_set_widgets(MainWindow *mainwin, LayoutType layout, "folder_view", "Sylpheed"); gtk_window_set_policy(GTK_WINDOW(folderwin), TRUE, TRUE, FALSE); - gtk_widget_set_uposition(folderwin, prefs_common.folderwin_x, - prefs_common.folderwin_y); + gtkut_window_move(GTK_WINDOW(folderwin), + prefs_common.folderwin_x, + prefs_common.folderwin_y); gtk_container_set_border_width(GTK_CONTAINER(folderwin), 0); g_signal_connect(G_OBJECT(folderwin), "delete_event", G_CALLBACK(folder_window_close_cb), mainwin); @@ -2356,8 +2357,9 @@ static void main_window_set_widgets(MainWindow *mainwin, LayoutType layout, "message_view", "Sylpheed"); gtk_window_set_policy(GTK_WINDOW(messagewin), TRUE, TRUE, FALSE); - gtk_widget_set_uposition(messagewin, prefs_common.main_msgwin_x, - prefs_common.main_msgwin_y); + gtkut_window_move(GTK_WINDOW(messagewin), + prefs_common.main_msgwin_x, + prefs_common.main_msgwin_y); gtk_container_set_border_width(GTK_CONTAINER(messagewin), 0); g_signal_connect(G_OBJECT(messagewin), "delete_event", G_CALLBACK(message_window_close_cb), mainwin); @@ -2486,9 +2488,8 @@ static void main_window_set_widgets(MainWindow *mainwin, LayoutType layout, use_vlayout ? GTK_ARROW_LEFT : GTK_ARROW_UP, GTK_SHADOW_OUT); - gtk_widget_set_uposition(mainwin->window, - prefs_common.mainwin_x, - prefs_common.mainwin_y); + gtkut_window_move(GTK_WINDOW(mainwin->window), + prefs_common.mainwin_x, prefs_common.mainwin_y); gtk_widget_queue_resize(vbox_body); gtk_widget_queue_resize(mainwin->vbox); |