Mercurial > pidgin
comparison src/gtkimhtml.c @ 4944:5fe846b7603f
[gaim-migrate @ 5278]
Fixes by Rob "Robot101" McQueen:
Buddies who sign off within 10 seconds of signing on won't get stuck "online"
forever
Idle times refresh every minute
Show icons/text on the buddy list buttons works now
URL tooltips in gtkimhtml won't linger around for no good reason.
Thanks, Rob.
And Rob Flynn is a spoil sport ;)
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Tue, 01 Apr 2003 07:57:13 +0000 |
parents | 20c737bc03d7 |
children | 24c9a23df63b |
comparison
equal
deleted
inserted
replaced
4943:f0c7d092948d | 4944:5fe846b7603f |
---|---|
52 #include <pango/pango-font.h> | 52 #include <pango/pango-font.h> |
53 | 53 |
54 #define TOOLTIP_TIMEOUT 500 | 54 #define TOOLTIP_TIMEOUT 500 |
55 | 55 |
56 static gboolean gtk_motion_event_notify(GtkWidget *imhtml, GdkEventMotion *event, gpointer user_data); | 56 static gboolean gtk_motion_event_notify(GtkWidget *imhtml, GdkEventMotion *event, gpointer user_data); |
57 static gboolean gtk_leave_event_notify(GtkWidget *imhtml, GdkEventCrossing *event, gpointer user_data); | |
57 | 58 |
58 static gboolean gtk_size_allocate_cb(GtkWidget *widget, GtkAllocation *alloc, gpointer user_data); | 59 static gboolean gtk_size_allocate_cb(GtkWidget *widget, GtkAllocation *alloc, gpointer user_data); |
59 static gint gtk_imhtml_tip (gpointer data); | 60 static gint gtk_imhtml_tip (gpointer data); |
60 | 61 |
61 | 62 |
228 | 229 |
229 imhtml->smiley_data = g_hash_table_new_full(g_str_hash, g_str_equal, | 230 imhtml->smiley_data = g_hash_table_new_full(g_str_hash, g_str_equal, |
230 g_free, (GDestroyNotify)gtk_smiley_tree_destroy); | 231 g_free, (GDestroyNotify)gtk_smiley_tree_destroy); |
231 imhtml->default_smilies = gtk_smiley_tree_new(); | 232 imhtml->default_smilies = gtk_smiley_tree_new(); |
232 | 233 |
234 g_signal_connect(G_OBJECT(imhtml), "size-allocate", G_CALLBACK(gtk_size_allocate_cb), NULL); | |
233 g_signal_connect(G_OBJECT(imhtml), "motion-notify-event", G_CALLBACK(gtk_motion_event_notify), NULL); | 235 g_signal_connect(G_OBJECT(imhtml), "motion-notify-event", G_CALLBACK(gtk_motion_event_notify), NULL); |
234 g_signal_connect(G_OBJECT(imhtml), "size-allocate", G_CALLBACK(gtk_size_allocate_cb), NULL); | 236 g_signal_connect(G_OBJECT(imhtml), "leave-notify-event", G_CALLBACK(gtk_leave_event_notify), NULL); |
237 gtk_widget_add_events(GTK_WIDGET(imhtml), GDK_LEAVE_NOTIFY_MASK); | |
235 | 238 |
236 imhtml->tip = NULL; | 239 imhtml->tip = NULL; |
237 imhtml->tip_timer = 0; | 240 imhtml->tip_timer = 0; |
238 imhtml->tip_window = NULL; | 241 imhtml->tip_window = NULL; |
239 | 242 |
388 gtk_imhtml_tip, imhtml); | 391 gtk_imhtml_tip, imhtml); |
389 } | 392 } |
390 | 393 |
391 GTK_IMHTML(imhtml)->tip = tip; | 394 GTK_IMHTML(imhtml)->tip = tip; |
392 g_slist_free(tags); | 395 g_slist_free(tags); |
396 return FALSE; | |
397 } | |
398 | |
399 gboolean gtk_leave_event_notify(GtkWidget *imhtml, GdkEventCrossing *event, gpointer data) | |
400 { | |
401 /* when leaving the widget, clear any current & pending tooltips and restore the cursor */ | |
402 if (GTK_IMHTML(imhtml)->tip_window) { | |
403 gtk_widget_destroy(GTK_IMHTML(imhtml)->tip_window); | |
404 GTK_IMHTML(imhtml)->tip_window = NULL; | |
405 } | |
406 if (GTK_IMHTML(imhtml)->tip_timer) { | |
407 g_source_remove(GTK_IMHTML(imhtml)->tip_timer); | |
408 GTK_IMHTML(imhtml)->tip_timer = 0; | |
409 } | |
410 gdk_window_set_cursor(event->window, GTK_IMHTML(imhtml)->arrow_cursor); | |
411 | |
412 /* propogate the event normally */ | |
393 return FALSE; | 413 return FALSE; |
394 } | 414 } |
395 | 415 |
396 /* this isn't used yet | 416 /* this isn't used yet |
397 static void | 417 static void |