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