Mercurial > pidgin.yaz
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) { |