aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2010-07-14 05:18:17 +0000
committerhiro <hiro@ee746299-78ed-0310-b773-934348b2243d>2010-07-14 05:18:17 +0000
commitd74b2239157d36b8b8795c5eda4bc0315a6ec76e (patch)
treefd933753ec828c76168a7ba59b4ff3e6146468e0 /src
parentd1d309683cf429d32fb5b206b042a1fe9d2490a6 (diff)
always display fixed-positioned windows on screen.
git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@2615 ee746299-78ed-0310-b773-934348b2243d
Diffstat (limited to 'src')
-rw-r--r--src/addressbook.c4
-rw-r--r--src/compose.c6
-rw-r--r--src/gtkutils.c17
-rw-r--r--src/gtkutils.h4
-rw-r--r--src/mainwindow.c15
5 files changed, 33 insertions, 13 deletions
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);