diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-08 22:58:58 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-03-08 22:58:58 +0800 |
commit | 3faf8e3117364f6b09e73d003830128bb47cf4f5 (patch) | |
tree | fe2abb7861cf490769c812d846b312a06daa946f | |
parent | 9aa597c767c72cd1f32b7b493ef4e434d27ee63e (diff) | |
download | gsoc2013-empathy-3faf8e3117364f6b09e73d003830128bb47cf4f5.tar gsoc2013-empathy-3faf8e3117364f6b09e73d003830128bb47cf4f5.tar.gz gsoc2013-empathy-3faf8e3117364f6b09e73d003830128bb47cf4f5.tar.bz2 gsoc2013-empathy-3faf8e3117364f6b09e73d003830128bb47cf4f5.tar.lz gsoc2013-empathy-3faf8e3117364f6b09e73d003830128bb47cf4f5.tar.xz gsoc2013-empathy-3faf8e3117364f6b09e73d003830128bb47cf4f5.tar.zst gsoc2013-empathy-3faf8e3117364f6b09e73d003830128bb47cf4f5.zip |
Remember correctly the window position and size when using tabs in the chat window. Fixes bug #479534 (Marco Barisione).
svn path=/trunk/; revision=705
-rw-r--r-- | libempathy-gtk/empathy-chat-window.c | 38 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat.c | 20 |
2 files changed, 33 insertions, 25 deletions
diff --git a/libempathy-gtk/empathy-chat-window.c b/libempathy-gtk/empathy-chat-window.c index 64311f698..5e5a854c5 100644 --- a/libempathy-gtk/empathy-chat-window.c +++ b/libempathy-gtk/empathy-chat-window.c @@ -934,11 +934,6 @@ chat_window_configure_event_cb (GtkWidget *widget, priv = GET_PRIV (window); - /* Only save geometry information if there is ONE chat visible. */ - if (g_list_length (priv->chats) > 1) { - return FALSE; - } - if (priv->save_geometry_id != 0) { g_source_remove (priv->save_geometry_id); } @@ -1731,8 +1726,9 @@ empathy_chat_window_add_chat (EmpathyChatWindow *window, EmpathyChat *chat) { EmpathyChatWindowPriv *priv; - GtkWidget *label; - GtkWidget *child; + GtkWidget *label; + GtkWidget *child; + gint x, y, w, h; g_return_if_fail (window != NULL); g_return_if_fail (EMPATHY_IS_CHAT (chat)); @@ -1745,24 +1741,20 @@ empathy_chat_window_add_chat (EmpathyChatWindow *window, /* Set the chat window */ empathy_chat_set_window (chat, window); - if (g_list_length (priv->chats) == 0) { - gint x, y, w, h; + empathy_chat_load_geometry (chat, &x, &y, &w, &h); - empathy_chat_load_geometry (chat, &x, &y, &w, &h); - - if (x >= 0 && y >= 0) { - /* Let the window manager position it if we don't have - * good x, y coordinates. - */ - gtk_window_move (GTK_WINDOW (priv->dialog), x, y); - } + if (x >= 0 && y >= 0) { + /* Let the window manager position it if we don't have + * good x, y coordinates. + */ + gtk_window_move (GTK_WINDOW (priv->dialog), x, y); + } - if (w > 0 && h > 0) { - /* Use the defaults from the glade file if we don't have - * good w, h geometry. - */ - gtk_window_resize (GTK_WINDOW (priv->dialog), w, h); - } + if (w > 0 && h > 0) { + /* Use the defaults from the glade file if we don't have + * good w, h geometry. + */ + gtk_window_resize (GTK_WINDOW (priv->dialog), w, h); } child = empathy_chat_get_widget (chat); diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index 550bd94b2..93aa4514c 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -1443,6 +1443,22 @@ empathy_chat_is_connected (EmpathyChat *chat) return (priv->tp_chat != NULL); } +static const gchar * +chat_get_window_id_for_geometry (EmpathyChat *chat) +{ + gboolean separate_windows; + + empathy_conf_get_bool (empathy_conf_get (), + EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS, + &separate_windows); + + if (separate_windows) { + return empathy_chat_get_id (chat); + } else { + return "chat-window"; + } +} + void empathy_chat_save_geometry (EmpathyChat *chat, gint x, @@ -1450,7 +1466,7 @@ empathy_chat_save_geometry (EmpathyChat *chat, gint w, gint h) { - empathy_geometry_save (empathy_chat_get_id (chat), x, y, w, h); + empathy_geometry_save (chat_get_window_id_for_geometry (chat), x, y, w, h); } void @@ -1460,7 +1476,7 @@ empathy_chat_load_geometry (EmpathyChat *chat, gint *w, gint *h) { - empathy_geometry_load (empathy_chat_get_id (chat), x, y, w, h); + empathy_geometry_load (chat_get_window_id_for_geometry (chat), x, y, w, h); } static gboolean |