diff options
-rw-r--r-- | mail/ChangeLog | 2 | ||||
-rw-r--r-- | mail/mail-display.c | 16 |
2 files changed, 12 insertions, 6 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog index a41ef4bf87..1679f25074 100644 --- a/mail/ChangeLog +++ b/mail/ChangeLog @@ -14,6 +14,8 @@ (html_enter_notify_event): take care of enter event (update_active): helper function, extracted from html_motion_notify_event + (update_active): move to absolute coordinates + (html_button_press_event): ditto * mail-format.c (write_address): revert back to raw HTML text, store name and email to Text objects, workaround gtkhtml tables diff --git a/mail/mail-display.c b/mail/mail-display.c index 5db433513a..12f9711826 100644 --- a/mail/mail-display.c +++ b/mail/mail-display.c @@ -1098,20 +1098,21 @@ html_button_press_event (GtkWidget *widget, GdkEventButton *event, MailDisplay * if (event->type == GDK_BUTTON_PRESS) { if (event->button == 3) { + HTMLEngine *e; HTMLPoint *point; const gchar *email; const gchar *name; const gchar *link; - point = html_engine_get_point_at (GTK_HTML (widget)->engine, event->x, event->y, FALSE); + e = GTK_HTML (widget)->engine; + point = html_engine_get_point_at (e, event->x + e->x_offset, event->y + e->y_offset, FALSE); if (point) { email = (const gchar *) html_object_get_data (point->object, "email"); if (email) { name = (const gchar *) html_object_get_data (point->object, "name"); g_print ("address: %s name: %s\n", email, name); e_popup_menu_run (address_menu, (GdkEvent *) event, 0, 0, mail_display); - } else if ((link = html_engine_get_link_at (GTK_HTML (widget)->engine, - event->x, event->y))) { + } else if ((link = html_object_get_url (point->object))) { e_popup_menu_run (link_menu, (GdkEvent *) event, 0, 0, mail_display); } html_point_destroy (point); @@ -1137,18 +1138,21 @@ set_underline (HTMLEngine *e, HTMLObject *o, gboolean underline) static void update_active (GtkWidget *widget, gint x, gint y, MailDisplay *mail_display) { + HTMLEngine *e; HTMLPoint *point; const gchar *email; - point = html_engine_get_point_at (GTK_HTML (widget)->engine, x, y, FALSE); + e = GTK_HTML (widget)->engine; + + point = html_engine_get_point_at (e, x + e->x_offset, y + e->y_offset, FALSE); if (mail_display->last_active && (!point || mail_display->last_active != point->object)) { - set_underline (GTK_HTML (widget)->engine, HTML_OBJECT (mail_display->last_active), FALSE); + set_underline (e, HTML_OBJECT (mail_display->last_active), FALSE); mail_display->last_active = NULL; } if (point) { email = (const gchar *) html_object_get_data (point->object, "email"); if (email && html_object_is_text (point->object)) { - set_underline (GTK_HTML (widget)->engine, point->object, TRUE); + set_underline (e, point->object, TRUE); mail_display->last_active = point->object; } html_point_destroy (point); |