aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-chat-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/empathy-chat-window.c')
-rw-r--r--src/empathy-chat-window.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/empathy-chat-window.c b/src/empathy-chat-window.c
index 1912b1b9a..248a408a3 100644
--- a/src/empathy-chat-window.c
+++ b/src/empathy-chat-window.c
@@ -161,15 +161,32 @@ chat_window_close_clicked_cb (GtkAction *action,
}
static void
-chat_window_close_button_style_set_cb (GtkWidget *button,
+chat_tab_style_set_cb (GtkWidget *hbox,
GtkStyle *previous_style,
gpointer user_data)
{
- gint h, w;
+ GtkWidget *button;
+ int char_width, h, w;
+ PangoContext *context;
+ PangoFontMetrics *metrics;
+
+ button = g_object_get_data (G_OBJECT (user_data),
+ "chat-window-tab-close-button");
+ context = gtk_widget_get_pango_context (hbox);
+
+ metrics = pango_context_get_metrics (context, hbox->style->font_desc,
+ pango_context_get_language (context));
+ char_width = pango_font_metrics_get_approximate_char_width (metrics);
+ pango_font_metrics_unref (metrics);
gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (button),
GTK_ICON_SIZE_MENU, &w, &h);
+ /* Request at least about 12 chars width plus at least space for the status
+ * image and the close button */
+ gtk_widget_set_size_request (hbox,
+ 12 * PANGO_PIXELS (char_width) + 2 * w, -1);
+
gtk_widget_set_size_request (button, w, h);
}
@@ -243,12 +260,10 @@ chat_window_create_label (EmpathyChatWindow *window,
gtk_box_pack_start (GTK_BOX (hbox), event_box, TRUE, TRUE, 0);
gtk_box_pack_end (GTK_BOX (hbox), close_button, FALSE, FALSE, 0);
- /* React to theme changes and also used to setup the initial size
- * correctly.
- */
- g_signal_connect (close_button,
+ /* React to theme changes and also setup the size correctly. */
+ g_signal_connect (hbox,
"style-set",
- G_CALLBACK (chat_window_close_button_style_set_cb),
+ G_CALLBACK (chat_tab_style_set_cb),
chat);
g_signal_connect (close_button,
@@ -1353,7 +1368,8 @@ empathy_chat_window_init (EmpathyChatWindow *window)
priv->chatroom_manager = empathy_chatroom_manager_dup_singleton (NULL);
priv->notebook = gtk_notebook_new ();
- gtk_notebook_set_group (GTK_NOTEBOOK (priv->notebook), "EmpathyChatWindow");
+ gtk_notebook_set_group (GTK_NOTEBOOK (priv->notebook), "EmpathyChatWindow");
+ gtk_notebook_set_scrollable (GTK_NOTEBOOK (priv->notebook), TRUE);
gtk_box_pack_start (GTK_BOX (chat_vbox), priv->notebook, TRUE, TRUE, 0);
gtk_widget_show (priv->notebook);