comparison src/gtkconv.c @ 11619:de413ae71cba

[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 <tailor@pidgin.im>
author Tim Ringenbach <marv@pidgin.im>
date Thu, 06 Oct 2005 02:13:39 +0000
parents d09d94db1a89
children fbc4eeab2227
comparison
equal deleted inserted replaced
11618:82c9c0f5e742 11619:de413ae71cba
5309 pos = GPOINTER_TO_INT(value); 5309 pos = GPOINTER_TO_INT(value);
5310 5310
5311 for (l = gaim_gtk_conv_windows_get_list(); l != NULL; l = l->next) { 5311 for (l = gaim_gtk_conv_windows_get_list(); l != NULL; l = l->next) {
5312 win = l->data; 5312 win = l->data;
5313 5313
5314 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(win->notebook), pos); 5314 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(win->notebook), pos&~8);
5315 } 5315 }
5316 } 5316 }
5317 5317
5318 static void 5318 static void
5319 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type, 5319 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type,
6264 GtkWidget *close_image; 6264 GtkWidget *close_image;
6265 GaimConversationType conv_type; 6265 GaimConversationType conv_type;
6266 const char *name; 6266 const char *name;
6267 const gchar *tmp_lab; 6267 const gchar *tmp_lab;
6268 gint close_button_width, close_button_height, focus_width, focus_pad; 6268 gint close_button_width, close_button_height, focus_width, focus_pad;
6269 gboolean tabs_side = FALSE;
6270 gint angle = 0;
6269 6271
6270 name = gaim_conversation_get_name(conv); 6272 name = gaim_conversation_get_name(conv);
6271 conv_type = gaim_conversation_get_type(conv); 6273 conv_type = gaim_conversation_get_type(conv);
6272 6274
6273 6275
6274 win->gtkconvs = g_list_append(win->gtkconvs, gtkconv); 6276 win->gtkconvs = g_list_append(win->gtkconvs, gtkconv);
6275 gtkconv->win = win; 6277 gtkconv->win = win;
6276 6278
6277 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); 6279 if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == GTK_POS_LEFT ||
6280 gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == GTK_POS_RIGHT)
6281 tabs_side = TRUE;
6282 else if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == (GTK_POS_LEFT|8))
6283 angle = 90;
6284 else if (gaim_prefs_get_int("/gaim/gtk/conversations/tab_side") == (GTK_POS_RIGHT|8))
6285 angle = 270;
6286
6287 if (angle)
6288 gtkconv->tabby = tabby = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
6289 else
6290 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
6278 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE); 6291 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, GAIM_HIG_BOX_SPACE);
6279 6292
6280 /* Close button. */ 6293 /* Close button. */
6281 gtkconv->close = gtk_button_new(); 6294 gtkconv->close = gtk_button_new();
6282 gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &close_button_width, &close_button_height); 6295 gtk_icon_size_lookup(GTK_ICON_SIZE_MENU, &close_button_width, &close_button_height);
6314 gtkconv->menu_icon = gtk_image_new(); 6327 gtkconv->menu_icon = gtk_image_new();
6315 update_tab_icon(conv); 6328 update_tab_icon(conv);
6316 6329
6317 /* Tab label. */ 6330 /* Tab label. */
6318 gtkconv->tab_label = gtk_label_new(tmp_lab = gaim_conversation_get_title(conv)); 6331 gtkconv->tab_label = gtk_label_new(tmp_lab = gaim_conversation_get_title(conv));
6332
6319 #if GTK_CHECK_VERSION(2,6,0) 6333 #if GTK_CHECK_VERSION(2,6,0)
6320 g_object_set(G_OBJECT(gtkconv->tab_label), "ellipsize", PANGO_ELLIPSIZE_END, NULL); 6334 if (!angle)
6335 g_object_set(G_OBJECT(gtkconv->tab_label), "ellipsize", PANGO_ELLIPSIZE_END, NULL);
6321 gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), 6); 6336 gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), 6);
6337 if (tabs_side) {
6338 gtk_label_set_width_chars(GTK_LABEL(gtkconv->tab_label), MIN(g_utf8_strlen(tmp_lab, -1), 18));
6339 }
6340 if (angle)
6341 gtk_label_set_angle(GTK_LABEL(gtkconv->tab_label), angle);
6322 #endif 6342 #endif
6323 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv)); 6343 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv));
6324 #if 0 6344 #if 0
6325 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); 6345 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5);
6326 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); 6346 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0);
6327 #endif 6347 #endif
6328 6348
6329 /* Pack it all together. */ 6349 /* Pack it all together. */
6330 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); 6350 if (angle == 90)
6351 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0);
6352 else
6353 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0);
6331 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, 6354 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon,
6332 FALSE, FALSE, 0); 6355 FALSE, FALSE, 0);
6333 6356
6334 gtk_widget_show_all(gtkconv->icon); 6357 gtk_widget_show_all(gtkconv->icon);
6335 gtk_widget_show_all(gtkconv->menu_icon); 6358 gtk_widget_show_all(gtkconv->menu_icon);
6338 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); 6361 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0);
6339 gtk_widget_show(gtkconv->tab_label); 6362 gtk_widget_show(gtkconv->tab_label);
6340 gtk_widget_show(gtkconv->menu_label); 6363 gtk_widget_show(gtkconv->menu_label);
6341 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0); 6364 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0);
6342 6365
6343 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0); 6366 if (angle == 90)
6367 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0);
6368 else
6369 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0);
6344 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) 6370 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs"))
6345 gtk_widget_show(gtkconv->close); 6371 gtk_widget_show(gtkconv->close);
6346 6372
6347 gtk_widget_show(tabby); 6373 gtk_widget_show(tabby);
6348 gtk_widget_show(menu_tabby); 6374 gtk_widget_show(menu_tabby);
6350 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM) 6376 if (gaim_conversation_get_type(conv) == GAIM_CONV_TYPE_IM)
6351 gaim_gtkconv_update_buddy_icon(conv); 6377 gaim_gtkconv_update_buddy_icon(conv);
6352 6378
6353 /* Add this pane to the conversation's notebook. */ 6379 /* Add this pane to the conversation's notebook. */
6354 gtk_notebook_append_page_menu(GTK_NOTEBOOK(win->notebook), tab_cont, tabby, menu_tabby); 6380 gtk_notebook_append_page_menu(GTK_NOTEBOOK(win->notebook), tab_cont, tabby, menu_tabby);
6355 gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), tab_cont, TRUE, TRUE, GTK_PACK_START); 6381 gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), tab_cont, !tabs_side && !angle, TRUE, GTK_PACK_START);
6356 6382
6357 6383
6358 gtk_widget_show(tab_cont); 6384 gtk_widget_show(tab_cont);
6359 6385
6360 if (gaim_gtk_conv_window_get_gtkconv_count(win) == 1) { 6386 if (gaim_gtk_conv_window_get_gtkconv_count(win) == 1) {