comparison src/gtkconv.c @ 6771:8eebba08b44b

[gaim-migrate @ 7308] The right-click menu for conversation tabs now shows the tab icon and status, if tab icons are enabled. Thanks Jesse Farmer. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Sun, 07 Sep 2003 03:08:50 +0000
parents e7e21e5d1d16
children 8ab95f4c9800
comparison
equal deleted inserted replaced
6770:efef00de3f09 6771:8eebba08b44b
3804 GaimGtkWindow *gtkwin; 3804 GaimGtkWindow *gtkwin;
3805 GaimGtkConversation *gtkconv, *focus_gtkconv; 3805 GaimGtkConversation *gtkconv, *focus_gtkconv;
3806 GaimConversation *focus_conv; 3806 GaimConversation *focus_conv;
3807 GtkWidget *pane = NULL; 3807 GtkWidget *pane = NULL;
3808 GtkWidget *tab_cont; 3808 GtkWidget *tab_cont;
3809 GtkWidget *tabby; 3809 GtkWidget *tabby, *menu_tabby;
3810 gboolean new_ui; 3810 gboolean new_ui;
3811 GaimConversationType conv_type; 3811 GaimConversationType conv_type;
3812 const char *name; 3812 const char *name;
3813 3813
3814 name = gaim_conversation_get_name(conv); 3814 name = gaim_conversation_get_name(conv);
3930 G_CALLBACK(gtk_widget_grab_focus), 3930 G_CALLBACK(gtk_widget_grab_focus),
3931 gtkconv->entry); 3931 gtkconv->entry);
3932 } 3932 }
3933 3933
3934 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 5); 3934 gtkconv->tabby = tabby = gtk_hbox_new(FALSE, 5);
3935 gtkconv->menu_tabby = menu_tabby = gtk_hbox_new(FALSE, 5);
3935 3936
3936 /* Close button. */ 3937 /* Close button. */
3937 gtkconv->close = gtk_button_new(); 3938 gtkconv->close = gtk_button_new();
3938 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16); 3939 gtk_widget_set_size_request(GTK_WIDGET(gtkconv->close), 16, 16);
3939 gtk_container_add(GTK_CONTAINER(gtkconv->close), 3940 gtk_container_add(GTK_CONTAINER(gtkconv->close),
3946 g_signal_connect(G_OBJECT(gtkconv->close), "clicked", 3947 g_signal_connect(G_OBJECT(gtkconv->close), "clicked",
3947 G_CALLBACK(close_conv_cb), conv); 3948 G_CALLBACK(close_conv_cb), conv);
3948 3949
3949 /* Status icon. */ 3950 /* Status icon. */
3950 gtkconv->icon = gtk_image_new(); 3951 gtkconv->icon = gtk_image_new();
3952 gtkconv->menu_icon = gtk_image_new();
3951 update_tab_icon(conv); 3953 update_tab_icon(conv);
3952 3954
3953 /* Tab label. */ 3955 /* Tab label. */
3954 gtkconv->tab_label = gtk_label_new(gaim_conversation_get_title(conv)); 3956 gtkconv->tab_label = gtk_label_new(gaim_conversation_get_title(conv));
3957 gtkconv->menu_label = gtk_label_new(gaim_conversation_get_title(conv));
3955 #if 0 3958 #if 0
3956 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5); 3959 gtk_misc_set_alignment(GTK_MISC(gtkconv->tab_label), 0.00, 0.5);
3957 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0); 3960 gtk_misc_set_padding(GTK_MISC(gtkconv->tab_label), 4, 0);
3958 #endif 3961 #endif
3959 3962
3960 3963
3961 /* Pack it all together. */ 3964 /* Pack it all together. */
3962 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0); 3965 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->icon, FALSE, FALSE, 0);
3963 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) 3966 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_icon, FALSE, FALSE, 0);
3967 if (gaim_prefs_get_bool("/gaim/gtk/conversations/icons_on_tabs")) {
3964 gtk_widget_show_all(gtkconv->icon); 3968 gtk_widget_show_all(gtkconv->icon);
3969 gtk_widget_show_all(gtkconv->menu_icon);
3970 }
3965 3971
3966 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0); 3972 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->tab_label, TRUE, TRUE, 0);
3973 gtk_box_pack_start(GTK_BOX(menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0);
3967 gtk_widget_show(gtkconv->tab_label); 3974 gtk_widget_show(gtkconv->tab_label);
3975 gtk_widget_show(gtkconv->menu_label);
3976 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0);
3968 3977
3969 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0); 3978 gtk_box_pack_start(GTK_BOX(tabby), gtkconv->close, FALSE, FALSE, 0);
3970 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs")) 3979 if (gaim_prefs_get_bool("/gaim/gtk/conversations/close_on_tabs"))
3971 gtk_widget_show_all(gtkconv->close); 3980 gtk_widget_show_all(gtkconv->close);
3972 3981
3973 gtk_widget_show(tabby); 3982 gtk_widget_show(tabby);
3983 gtk_widget_show(menu_tabby);
3974 3984
3975 3985
3976 /* Add this pane to the conversations notebook. */ 3986 /* Add this pane to the conversations notebook. */
3977 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby); 3987 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby);
3978 gtk_notebook_set_menu_label_text(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, 3988 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, menu_tabby);
3979 gaim_conversation_get_title(conv));
3980 3989
3981 gtk_widget_show(tab_cont); 3990 gtk_widget_show(tab_cont);
3982 3991
3983 if (gaim_window_get_conversation_count(win) == 1) { 3992 if (gaim_window_get_conversation_count(win) == 1) {
3984 /* Er, bug in notebooks? Switch to the page manually. */ 3993 /* Er, bug in notebooks? Switch to the page manually. */
4843 win = gaim_conversation_get_window(conv); 4852 win = gaim_conversation_get_window(conv);
4844 gtkwin = GAIM_GTK_WINDOW(win); 4853 gtkwin = GAIM_GTK_WINDOW(win);
4845 gtkconv = GAIM_GTK_CONVERSATION(conv); 4854 gtkconv = GAIM_GTK_CONVERSATION(conv);
4846 4855
4847 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); 4856 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title);
4848 4857 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title);
4858
4849 if(conv == gaim_window_get_active_conversation(win)) 4859 if(conv == gaim_window_get_active_conversation(win))
4850 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); 4860 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title);
4851 } 4861 }
4852 4862
4853 static void 4863 static void
4866 b = gaim_find_buddy(account, name); 4876 b = gaim_find_buddy(account, name);
4867 if (b != NULL) { 4877 if (b != NULL) {
4868 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), 4878 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon),
4869 gaim_gtk_blist_get_status_icon((GaimBlistNode *)b, 4879 gaim_gtk_blist_get_status_icon((GaimBlistNode *)b,
4870 GAIM_STATUS_ICON_SMALL)); 4880 GAIM_STATUS_ICON_SMALL));
4881 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon),
4882 gaim_gtk_blist_get_status_icon((GaimBlistNode *)b,
4883 GAIM_STATUS_ICON_SMALL));
4871 } else { 4884 } else {
4872 GdkPixbuf *pixbuf, *scale; 4885 GdkPixbuf *pixbuf, *scale;
4873 pixbuf = create_prpl_icon(account); 4886 pixbuf = create_prpl_icon(account);
4874 4887
4875 if (pixbuf) { 4888 if (pixbuf) {
4876 scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR); 4889 scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR);
4877 4890
4878 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), scale); 4891 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), scale);
4892 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), scale);
4879 4893
4880 g_object_unref(pixbuf); 4894 g_object_unref(pixbuf);
4881 g_object_unref(scale); 4895 g_object_unref(scale);
4882 } else { 4896 } else {
4883 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), NULL); 4897 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), NULL);
4898 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), NULL);
4884 } 4899 }
4885 } 4900 }
4886 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { 4901 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
4887 GdkPixbuf *pixbuf, *scale; 4902 GdkPixbuf *pixbuf, *scale;
4888 pixbuf = create_prpl_icon(account); 4903 pixbuf = create_prpl_icon(account);
4889 4904
4890 if (pixbuf) { 4905 if (pixbuf) {
4891 scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR); 4906 scale = gdk_pixbuf_scale_simple(pixbuf, 15, 15, GDK_INTERP_BILINEAR);
4892 4907
4893 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), scale); 4908 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), scale);
4909 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), scale);
4894 4910
4895 g_object_unref(pixbuf); 4911 g_object_unref(pixbuf);
4896 g_object_unref(scale); 4912 g_object_unref(scale);
4897 } else { 4913 } else {
4898 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), NULL); 4914 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), NULL);
4915 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), NULL);
4899 } 4916 }
4900 } 4917 }
4901 } 4918 }
4902 4919
4903 static void 4920 static void
5685 gtkconv = GAIM_GTK_CONVERSATION(conv); 5702 gtkconv = GAIM_GTK_CONVERSATION(conv);
5686 5703
5687 if (value) { 5704 if (value) {
5688 update_tab_icon(conv); 5705 update_tab_icon(conv);
5689 gtk_widget_show(gtkconv->icon); 5706 gtk_widget_show(gtkconv->icon);
5690 } 5707 gtk_widget_show(gtkconv->menu_icon);
5691 else 5708 }
5709 else {
5692 gtk_widget_hide(gtkconv->icon); 5710 gtk_widget_hide(gtkconv->icon);
5711 gtk_widget_hide(gtkconv->menu_icon);
5712 }
5693 } 5713 }
5694 } 5714 }
5695 5715
5696 static void 5716 static void
5697 close_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value, 5717 close_on_tabs_pref_cb(const char *name, GaimPrefType type, gpointer value,