| 92 smiley_themeize(imhtml); |
93 smiley_themeize(imhtml); |
| 93 |
94 |
| 94 gtk_imhtml_set_funcs(GTK_IMHTML(imhtml), >kimhtml_cbs); |
95 gtk_imhtml_set_funcs(GTK_IMHTML(imhtml), >kimhtml_cbs); |
| 95 } |
96 } |
| 96 |
97 |
| |
98 GtkWidget * |
| |
99 gaim_gtk_create_imhtml(gboolean editable, GtkWidget **imhtml_ret, GtkWidget **toolbar_ret) |
| |
100 { |
| |
101 GtkWidget *frame; |
| |
102 GtkWidget *imhtml; |
| |
103 GtkWidget *sep; |
| |
104 GtkWidget *sw; |
| |
105 GtkWidget *toolbar; |
| |
106 GtkWidget *vbox; |
| |
107 |
| |
108 frame = gtk_frame_new(NULL); |
| |
109 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); |
| |
110 gtk_widget_show(frame); |
| |
111 |
| |
112 vbox = gtk_vbox_new(FALSE, 0); |
| |
113 gtk_container_add(GTK_CONTAINER(frame), vbox); |
| |
114 gtk_widget_show(vbox); |
| |
115 |
| |
116 if (editable) { |
| |
117 toolbar = gtk_imhtmltoolbar_new(); |
| |
118 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0); |
| |
119 gtk_widget_show(toolbar); |
| |
120 |
| |
121 sep = gtk_hseparator_new(); |
| |
122 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); |
| |
123 gtk_widget_show(sep); |
| |
124 } |
| |
125 |
| |
126 /* |
| |
127 * We never show the horizontal scrollbar in editable imhtmls becuase |
| |
128 * it was causing weird lockups when typing text just as you type the |
| |
129 * character that would cause both scrollbars to appear. Definitely |
| |
130 * seems like a gtk bug to me. |
| |
131 */ |
| |
132 sw = gtk_scrolled_window_new(NULL, NULL); |
| |
133 if (editable) |
| |
134 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
| |
135 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
| |
136 else |
| |
137 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
| |
138 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); |
| |
139 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
| |
140 gtk_widget_show(sw); |
| |
141 |
| |
142 imhtml = gtk_imhtml_new(NULL, NULL); |
| |
143 gtk_imhtml_set_editable(GTK_IMHTML(imhtml), editable); |
| |
144 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_IMAGE); |
| |
145 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD_CHAR); |
| |
146 if (editable && gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
| |
147 gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(imhtml)); |
| |
148 gtk_widget_show(imhtml); |
| |
149 |
| |
150 if (editable) { |
| |
151 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), imhtml); |
| |
152 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(toolbar), "default"); |
| |
153 } |
| |
154 gaim_setup_imhtml(imhtml); |
| |
155 |
| |
156 gtk_container_add(GTK_CONTAINER(sw), imhtml); |
| |
157 |
| |
158 if (imhtml_ret != NULL) |
| |
159 *imhtml_ret = imhtml; |
| |
160 |
| |
161 if (toolbar_ret != NULL) |
| |
162 *toolbar_ret = toolbar; |
| |
163 |
| |
164 return frame; |
| |
165 } |
| |
166 |
| 97 void |
167 void |
| 98 toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle) |
168 toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle) |
| 99 { |
169 { |
| 100 gboolean sensitivity = GTK_WIDGET_IS_SENSITIVE(to_toggle); |
170 gboolean sensitivity = GTK_WIDGET_IS_SENSITIVE(to_toggle); |
| 101 |
171 |