# HG changeset patch # User Tim Ringenbach # Date 1128564819 0 # Node ID de413ae71cba6f148311fea7a2acfdbe7aa1e40a # Parent 82c9c0f5e74261b236bad55ebc8a2ae24524a018 [gaim-migrate @ 13893] This makes left and right tabs behave more like what we discussed. Then I went mad and added two new tab placement options. We may decide they completely suck and remove them, but they're kind of neat so I thought i'd at least try. I Broke some of the instant apply stuff. You WILL have to drag the tabs into a new window to see them fully correctly. Basicly some stuff will instant apply and some what. I need to fix this. Or you can submit a patch :) committer: Tailor Script diff -r 82c9c0f5e742 -r de413ae71cba src/gtkconv.c --- a/src/gtkconv.c Wed Oct 05 02:57:36 2005 +0000 +++ b/src/gtkconv.c Thu Oct 06 02:13:39 2005 +0000 @@ -5311,7 +5311,7 @@ for (l = gaim_gtk_conv_windows_get_list(); l != NULL; l = l->next) { win = l->data; - gtk_notebook_set_tab_pos(GTK_NOTEBOOK(win->notebook), pos); + gtk_notebook_set_tab_pos(GTK_NOTEBOOK(win->notebook), pos&~8); } } @@ -6266,6 +6266,8 @@ const char *name; const gchar *tmp_lab; gint close_button_width, close_button_height, focus_width, focus_pad; + gboolean tabs_side = FALSE; + gint angle = 0; name = gaim_conversation_get_name(conv); conv_type = gaim_conversation_get_type(conv); @@ -6274,7 +6276,18 @@ win->gtkconvs = g_list_append(win->gtkconvs, gtkconv); gtkconv->win = win; - gtkconv->tabby = tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); + if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == GTK_POS_LEFT || + gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == GTK_POS_RIGHT) + tabs_side = TRUE; + else if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == (GTK_POS_LEFT|8)) + angle = 90; + else if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == (GTK_POS_RIGHT|8)) + angle = 270; + + if (angle) + gtkconv->tabby = tabby = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); + else + gtkconv->tabby = tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); /* Close button. */ @@ -6316,9 +6329,16 @@ /* Tab label. */ gtkconv->tab_label = gtk_label_new(tmp_lab = gaim_conversation_get_title(conv)); + #if GTK_CHECK_VERSION(2,6,0) - g_object_set(G_OBJECT(gtkconv->tab_label), "ellipsize", PANGO_ELLIPSIZE_END, NULL); + if (!angle) + g_object_set(G_OBJECT(gtkconv->tab_label), "ellipsize", PANGO_ELLIPSIZE_END, NULL); gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), 6); + if (tabs_side) { + gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), MIN(g_utf8_strlen(tmp_lab, -1), 18)); + } + if (angle) + gtk_label_set_angle(GTK_LABEL(gtkconv->tab_label), angle); #endif gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); #if 0 @@ -6327,7 +6347,10 @@ #endif /* Pack it all together. */ - gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); + if (angle == 90) + gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0); + else + gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, FALSE, FALSE, 0); @@ -6340,7 +6363,10 @@ gtk_widget_show(gtkconv->menu_label); gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0); - gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0); + if (angle == 90) + gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); + else + gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0); if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) gtk_widget_show(gtkconv->close); @@ -6352,7 +6378,7 @@ /* Add this pane to the conversation's notebook. */ gtk_notebook_append_page_menu(GTK_NOTEBOOK(win->notebook), tab_cont, tabby, menu_tabby); - gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), tab_cont, TRUE, TRUE, GTK_PACK_START); + gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), tab_cont, !tabs_side && !angle, TRUE, GTK_PACK_START); gtk_widget_show(tab_cont); diff -r 82c9c0f5e742 -r de413ae71cba src/gtkprefs.c --- a/src/gtkprefs.c Wed Oct 05 02:57:36 2005 +0000 +++ b/src/gtkprefs.c Thu Oct 06 02:13:39 2005 +0000 @@ -1016,6 +1016,10 @@ _("Bottom"), GTK_POS_BOTTOM, _("Left"), GTK_POS_LEFT, _("Right"), GTK_POS_RIGHT, +#if GTK_CHECK_VERSION(2,6,0) + _("Left Vertical"), GTK_POS_LEFT|8, + _("Right Vertical"), GTK_POS_RIGHT|8, +#endif NULL); names = gaim_gtkconv_placement_get_options();