comparison src/gtkconv.c @ 13280:3de53fe8345f

[gaim-migrate @ 15646] Always show a vertical scrollbar on conversations imhtmls. This will solve the shrinking conversation window bug. I chose this approach instead of saving the size of the window (as I had previous talked about), as this prevents the contents of the scrollback from rewrapping when the scrollbars appear or disappear. It also just seems to feel like the right thing to do, but maybe that's me being lazy. committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Tue, 14 Feb 2006 05:43:43 +0000
parents f09c6e8df82c
children d75c24d3ffb0
comparison
equal deleted inserted replaced
13279:0c50401679d3 13280:3de53fe8345f
3787 GaimConversation *conv = gtkconv->active_conv; 3787 GaimConversation *conv = gtkconv->active_conv;
3788 GaimGtkChatPane *gtkchat; 3788 GaimGtkChatPane *gtkchat;
3789 GaimConnection *gc; 3789 GaimConnection *gc;
3790 GtkWidget *vpaned, *hpaned; 3790 GtkWidget *vpaned, *hpaned;
3791 GtkWidget *vbox, *hbox, *frame; 3791 GtkWidget *vbox, *hbox, *frame;
3792 GtkWidget *imhtml_sw;
3793 GtkPolicyType imhtml_sw_hscroll;
3792 GtkWidget *lbox, *bbox; 3794 GtkWidget *lbox, *bbox;
3793 GtkWidget *label; 3795 GtkWidget *label;
3794 GtkWidget *list; 3796 GtkWidget *list;
3795 GtkWidget *button; 3797 GtkWidget *button;
3796 GtkWidget *sw; 3798 GtkWidget *sw;
3842 hpaned = gtk_hpaned_new(); 3844 hpaned = gtk_hpaned_new();
3843 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0); 3845 gtk_box_pack_start(GTK_BOX(vbox), hpaned, TRUE, TRUE, 0);
3844 gtk_widget_show(hpaned); 3846 gtk_widget_show(hpaned);
3845 3847
3846 /* Setup gtkihmtml. */ 3848 /* Setup gtkihmtml. */
3847 frame = gaim_gtk_create_imhtml(FALSE, &gtkconv->imhtml, NULL); 3849 frame = gaim_gtk_create_imhtml(FALSE, &gtkconv->imhtml, NULL, &imhtml_sw);
3848 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml"); 3850 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml");
3849 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), TRUE); 3851 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml), TRUE);
3850 gtk_paned_pack1(GTK_PANED(hpaned), frame, TRUE, TRUE); 3852 gtk_paned_pack1(GTK_PANED(hpaned), frame, TRUE, TRUE);
3851 gtk_widget_show(frame); 3853 gtk_widget_show(frame);
3854 gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(imhtml_sw),
3855 &imhtml_sw_hscroll, NULL);
3856 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(imhtml_sw),
3857 imhtml_sw_hscroll, GTK_POLICY_ALWAYS);
3852 3858
3853 gtk_widget_set_size_request(gtkconv->imhtml, 3859 gtk_widget_set_size_request(gtkconv->imhtml,
3854 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"), 3860 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_width"),
3855 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height")); 3861 gaim_prefs_get_int("/gaim/gtk/conversations/chat/default_height"));
3856 g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate", 3862 g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate",
3991 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); 3997 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
3992 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox, TRUE, TRUE, 0); 3998 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox, TRUE, TRUE, 0);
3993 gtk_widget_show(vbox); 3999 gtk_widget_show(vbox);
3994 4000
3995 /* Setup the toolbar, entry widget and all signals */ 4001 /* Setup the toolbar, entry widget and all signals */
3996 frame = gaim_gtk_create_imhtml(TRUE, &gtkconv->entry, &gtkconv->toolbar); 4002 frame = gaim_gtk_create_imhtml(TRUE, &gtkconv->entry, &gtkconv->toolbar, NULL);
3997 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); 4003 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
3998 gtk_widget_show(frame); 4004 gtk_widget_show(frame);
3999 4005
4000 g_signal_connect(G_OBJECT(gtkconv->entry), "populate-popup", 4006 g_signal_connect(G_OBJECT(gtkconv->entry), "populate-popup",
4001 G_CALLBACK(entry_popup_menu_cb), gtkconv); 4007 G_CALLBACK(entry_popup_menu_cb), gtkconv);
4034 static GtkWidget * 4040 static GtkWidget *
4035 setup_im_pane(GaimGtkConversation *gtkconv) 4041 setup_im_pane(GaimGtkConversation *gtkconv)
4036 { 4042 {
4037 GaimConversation *conv = gtkconv->active_conv; 4043 GaimConversation *conv = gtkconv->active_conv;
4038 GtkWidget *frame; 4044 GtkWidget *frame;
4045 GtkWidget *imhtml_sw;
4046 GtkPolicyType imhtml_sw_hscroll;
4039 GtkWidget *paned; 4047 GtkWidget *paned;
4040 GtkWidget *vbox; 4048 GtkWidget *vbox;
4041 GtkWidget *vbox2; 4049 GtkWidget *vbox2;
4042 GList *focus_chain = NULL; 4050 GList *focus_chain = NULL;
4043 4051
4049 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); 4057 vbox = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
4050 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE); 4058 gtk_paned_pack1(GTK_PANED(paned), vbox, TRUE, TRUE);
4051 gtk_widget_show(vbox); 4059 gtk_widget_show(vbox);
4052 4060
4053 /* Setup the gtkimhtml widget */ 4061 /* Setup the gtkimhtml widget */
4054 frame = gaim_gtk_create_imhtml(FALSE, &gtkconv->imhtml, NULL); 4062 frame = gaim_gtk_create_imhtml(FALSE, &gtkconv->imhtml, NULL, &imhtml_sw);
4055 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml"); 4063 gtk_widget_set_name(gtkconv->imhtml, "gaim_gtkconv_imhtml");
4056 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),TRUE); 4064 gtk_imhtml_show_comments(GTK_IMHTML(gtkconv->imhtml),TRUE);
4057 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0); 4065 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 0);
4058 gtk_widget_show(frame); 4066 gtk_widget_show(frame);
4067 gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(imhtml_sw),
4068 &imhtml_sw_hscroll, NULL);
4069 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(imhtml_sw),
4070 imhtml_sw_hscroll, GTK_POLICY_ALWAYS);
4059 4071
4060 gtk_widget_set_size_request(gtkconv->imhtml, 4072 gtk_widget_set_size_request(gtkconv->imhtml,
4061 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"), 4073 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_width"),
4062 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height")); 4074 gaim_prefs_get_int("/gaim/gtk/conversations/im/default_height"));
4063 g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate", 4075 g_signal_connect(G_OBJECT(gtkconv->imhtml), "size-allocate",
4082 vbox2 = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE); 4094 vbox2 = gtk_vbox_new(FALSE, GAIM_HIG_BOX_SPACE);
4083 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox2, TRUE, TRUE, 0); 4095 gtk_box_pack_end(GTK_BOX(gtkconv->lower_hbox), vbox2, TRUE, TRUE, 0);
4084 gtk_widget_show(vbox2); 4096 gtk_widget_show(vbox2);
4085 4097
4086 /* Setup the toolbar, entry widget and all signals */ 4098 /* Setup the toolbar, entry widget and all signals */
4087 frame = gaim_gtk_create_imhtml(TRUE, &gtkconv->entry, &gtkconv->toolbar); 4099 frame = gaim_gtk_create_imhtml(TRUE, &gtkconv->entry, &gtkconv->toolbar, NULL);
4088 gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0); 4100 gtk_box_pack_start(GTK_BOX(vbox2), frame, TRUE, TRUE, 0);
4089 gtk_widget_show(frame); 4101 gtk_widget_show(frame);
4090 4102
4091 g_signal_connect(G_OBJECT(gtkconv->entry), "populate-popup", 4103 g_signal_connect(G_OBJECT(gtkconv->entry), "populate-popup",
4092 G_CALLBACK(entry_popup_menu_cb), gtkconv); 4104 G_CALLBACK(entry_popup_menu_cb), gtkconv);