diff options
author | Xavier Claessens <xclaesse@src.gnome.org> | 2008-04-21 03:57:09 +0800 |
---|---|---|
committer | Xavier Claessens <xclaesse@src.gnome.org> | 2008-04-21 03:57:09 +0800 |
commit | 406314273a951f81fa8b23cb703fe9ec9c5e5b8a (patch) | |
tree | 9f5cc7e0e72375bddfd1c36017b70cc77ae1e7aa /libempathy-gtk | |
parent | 9bb81d2d976d8bf388db0a91d87202928c4453f4 (diff) | |
download | gsoc2013-empathy-406314273a951f81fa8b23cb703fe9ec9c5e5b8a.tar gsoc2013-empathy-406314273a951f81fa8b23cb703fe9ec9c5e5b8a.tar.gz gsoc2013-empathy-406314273a951f81fa8b23cb703fe9ec9c5e5b8a.tar.bz2 gsoc2013-empathy-406314273a951f81fa8b23cb703fe9ec9c5e5b8a.tar.lz gsoc2013-empathy-406314273a951f81fa8b23cb703fe9ec9c5e5b8a.tar.xz gsoc2013-empathy-406314273a951f81fa8b23cb703fe9ec9c5e5b8a.tar.zst gsoc2013-empathy-406314273a951f81fa8b23cb703fe9ec9c5e5b8a.zip |
Rework the way chat window is resized when the contact list appear/disappear. Fixes bug #528229.
svn path=/trunk/; revision=1013
Diffstat (limited to 'libempathy-gtk')
-rw-r--r-- | libempathy-gtk/empathy-chat.c | 27 | ||||
-rw-r--r-- | libempathy-gtk/empathy-chat.glade | 4 |
2 files changed, 23 insertions, 8 deletions
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index c40548b19..6bb983a5f 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -1264,6 +1264,14 @@ chat_members_changed_cb (EmpathyTpChat *tp_chat, } } +static gboolean +chat_reset_size_request (gpointer widget) +{ + gtk_widget_set_size_request (widget, -1, -1); + + return FALSE; +} + static void chat_set_show_contacts (EmpathyChat *chat, gboolean show) { @@ -1275,9 +1283,19 @@ chat_set_show_contacts (EmpathyChat *chat, gboolean show) } if (show) { + if (priv->contacts_width <= 0) { + /* It's the first time we show the contact list, make + * sure the chat view don't get resized. Relax the + * size request once it's done. */ + gtk_widget_set_size_request (priv->vbox_left, + priv->vbox_left->allocation.width, + -1); + g_idle_add (chat_reset_size_request, priv->vbox_left); + } else { + gtk_paned_set_position (GTK_PANED (priv->hpaned), + priv->contacts_width); + } gtk_widget_show (priv->scrolled_window_contacts); - gtk_paned_set_position (GTK_PANED (priv->hpaned), - priv->contacts_width); } else { priv->contacts_width = gtk_paned_get_position (GTK_PANED (priv->hpaned)); gtk_widget_hide (priv->scrolled_window_contacts); @@ -1383,13 +1401,11 @@ chat_create_ui (EmpathyChat *chat) gtk_container_add (GTK_CONTAINER (priv->scrolled_window_contacts), GTK_WIDGET (priv->view)); gtk_widget_show (GTK_WIDGET (priv->view)); + chat_set_show_contacts (chat, priv->remote_contact == NULL); /* Initialy hide the topic, will be shown if not empty */ gtk_widget_hide (priv->hbox_topic); - /* Show/Hide contact list */ - chat_set_show_contacts (chat, priv->remote_contact == NULL); - /* Set widget focus order */ list = g_list_append (NULL, priv->scrolled_window_input); gtk_container_set_focus_chain (GTK_CONTAINER (priv->vbox_left), list); @@ -1605,6 +1621,7 @@ empathy_chat_init (EmpathyChat *chat) priv->is_first_char = TRUE; priv->log_manager = empathy_log_manager_new (); priv->default_window_height = -1; + priv->contacts_width = -1; priv->vscroll_visible = FALSE; priv->sent_messages = NULL; priv->sent_messages_index = -1; diff --git a/libempathy-gtk/empathy-chat.glade b/libempathy-gtk/empathy-chat.glade index 9428474b5..f313c2f55 100644 --- a/libempathy-gtk/empathy-chat.glade +++ b/libempathy-gtk/empathy-chat.glade @@ -57,8 +57,6 @@ <property name="can_focus">True</property> <child> <widget class="GtkVBox" id="vbox_left"> - <property name="width_request">600</property> - <property name="height_request">500</property> <property name="visible">True</property> <property name="spacing">6</property> <child> @@ -107,7 +105,7 @@ </child> </widget> <packing> - <property name="resize">True</property> + <property name="resize">False</property> <property name="shrink">True</property> </packing> </child> |