diff options
-rw-r--r-- | ChangeLog | 37 | ||||
-rw-r--r-- | data/ui/nautilus-epiphany-view.xml.in | 2 | ||||
-rw-r--r-- | embed/Makefile.am | 2 | ||||
-rw-r--r-- | embed/ephy-embed-event.c | 7 | ||||
-rw-r--r-- | embed/ephy-embed-event.h | 14 | ||||
-rw-r--r-- | embed/ephy-embed-popup-bw.c | 198 | ||||
-rw-r--r-- | embed/ephy-embed-popup-bw.h | 58 | ||||
-rw-r--r-- | embed/ephy-embed-popup-control.c | 7 | ||||
-rw-r--r-- | embed/ephy-embed.c | 11 | ||||
-rw-r--r-- | embed/ephy-embed.h | 2 | ||||
-rw-r--r-- | embed/mozilla/EventContext.cpp | 19 | ||||
-rw-r--r-- | embed/mozilla/mozilla-embed.cpp | 67 | ||||
-rw-r--r-- | src/ephy-nautilus-view.c | 52 | ||||
-rw-r--r-- | src/ephy-tab.c | 16 |
14 files changed, 149 insertions, 343 deletions
@@ -1,3 +1,40 @@ +2003-06-16 Marco Pesenti Gritti <marco@it.gnome.org> + + * data/ui/nautilus-epiphany-view.xml.in: + + Remove some obsolete entries. + + * embed/Makefile.am: + * embed/ephy-embed-event.c: (ephy_embed_event_init), + (ephy_embed_event_get_event_type): + * embed/ephy-embed-event.h: + + Make more generic and allow to make distinction + between mouse and key events. + + * embed/ephy-embed-popup-bw.c: + * embed/ephy-embed-popup-bw.h: + + Remove, unused. + + * embed/ephy-embed.c: (ephy_embed_base_init): + * embed/ephy-embed.h: + * embed/mozilla/mozilla-embed.cpp: + + Emit context signals only when necessary, + get rid of unused mouse_down signal. + + * embed/ephy-embed-popup-control.c: + (ephy_embed_popup_control_show_impl): + * embed/mozilla/EventContext.cpp: + * src/ephy-nautilus-view.c: (ephy_nautilus_view_instance_init), + (gnv_embed_dom_mouse_click_cb), (gnv_embed_context_menu_cb): + * src/ephy-tab.c: (ephy_tab_dom_mouse_click_cb), + (ephy_tab_context_menu_cb): + + Use new event api. + + 2003-06-15 Marco Pesenti Gritti <marco@it.gnome.org> * embed/ephy-embed-event.c: (ephy_embed_event_init): diff --git a/data/ui/nautilus-epiphany-view.xml.in b/data/ui/nautilus-epiphany-view.xml.in index 325c7782f..3d9a5ffd1 100644 --- a/data/ui/nautilus-epiphany-view.xml.in +++ b/data/ui/nautilus-epiphany-view.xml.in @@ -94,7 +94,6 @@ <menuitem name="DPSavePageAs" verb=""/> <menuitem name="DPSaveBackgroundAs" verb=""/> <menuitem name="DPCopyLocation" verb=""/> - <submenu name="DPOpenWith" _label="Open With"/> <placeholder name="FrameItems"> <separator/> <menuitem name="DPOpenFrame" verb=""/> @@ -118,7 +117,6 @@ </placeholder> <placeholder name="ImageItems"> <menuitem name="EPOpenImage" verb=""/> - <submenu name="EPOpenImageWith" _label="Open Image With"/> <menuitem name="EPOpenImageInNewWindow" verb=""/> <menuitem name="EPSaveImageAs" verb=""/> <menuitem name="EPSetImageAsBackground" verb=""/> diff --git a/embed/Makefile.am b/embed/Makefile.am index 96d440d4f..6355dbac2 100644 --- a/embed/Makefile.am +++ b/embed/Makefile.am @@ -29,8 +29,6 @@ libephyembed_la_SOURCES = \ ephy-embed-persist.h \ ephy-embed-popup.c \ ephy-embed-popup.h \ - ephy-embed-popup-bw.c \ - ephy-embed-popup-bw.h \ ephy-embed-popup-control.c \ ephy-embed-popup-control.h \ ephy-embed-prefs.h \ diff --git a/embed/ephy-embed-event.c b/embed/ephy-embed-event.c index 3df03f3dc..396410453 100644 --- a/embed/ephy-embed-event.c +++ b/embed/ephy-embed-event.c @@ -87,7 +87,6 @@ ephy_embed_event_init (EphyEmbedEvent *event) event->priv->props = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, free_g_value); - event->mouse_button = -1; } static void @@ -129,10 +128,10 @@ ephy_embed_event_get_modifier (EphyEmbedEvent *event) } gresult -ephy_embed_event_get_mouse_button (EphyEmbedEvent *event, - guint *mouse_button) +ephy_embed_event_get_event_type (EphyEmbedEvent *event, + EphyEmbedEventType *type) { - *mouse_button = event->mouse_button; + *type = event->type; return G_OK; } diff --git a/embed/ephy-embed-event.h b/embed/ephy-embed-event.h index 44448cce6..40eb15c55 100644 --- a/embed/ephy-embed-event.h +++ b/embed/ephy-embed-event.h @@ -50,6 +50,14 @@ typedef enum EMBED_CONTEXT_EMAIL_LINK = 1 << 8 } EmbedEventContext; +typedef enum +{ + EPHY_EMBED_EVENT_MOUSE_BUTTON1, + EPHY_EMBED_EVENT_MOUSE_BUTTON2, + EPHY_EMBED_EVENT_MOUSE_BUTTON3, + EPHY_EMBED_EVENT_KEY +} EphyEmbedEventType; + struct EphyEmbedEvent { GObject parent; @@ -57,7 +65,7 @@ struct EphyEmbedEvent /* Public to the embed implementations */ guint modifier; - guint mouse_button; + EphyEmbedEventType type; guint context; guint x, y; guint keycode; @@ -74,8 +82,8 @@ EphyEmbedEvent *ephy_embed_event_new (void); guint ephy_embed_event_get_modifier (EphyEmbedEvent *event); -gresult ephy_embed_event_get_mouse_button (EphyEmbedEvent *event, - guint *mouse_button); +gresult ephy_embed_event_get_event_type (EphyEmbedEvent *event, + EphyEmbedEventType *type); gresult ephy_embed_event_get_coords (EphyEmbedEvent *event, guint *x, guint *y); diff --git a/embed/ephy-embed-popup-bw.c b/embed/ephy-embed-popup-bw.c deleted file mode 100644 index f72e44e6e..000000000 --- a/embed/ephy-embed-popup-bw.c +++ /dev/null @@ -1,198 +0,0 @@ -/* - * Copyright (C) 2000, 2001, 2002 Marco Pesenti Gritti - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#include "ephy-embed-popup-bw.h" -#include "ephy-gobject-misc.h" - -#include <gtk/gtkmain.h> - -enum -{ - PROP_0, - PROP_BONOBO_WINDOW -}; - -struct EphyEmbedPopupBWPrivate -{ - BonoboWindow *window; - GtkWidget *menu; -}; - -static void -ephy_embed_popup_bw_class_init (EphyEmbedPopupBWClass *klass); -static void -ephy_embed_popup_bw_init (EphyEmbedPopupBW *gep); -static void -ephy_embed_popup_bw_finalize (GObject *object); -static void -ephy_embed_popup_bw_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec); -static void -ephy_embed_popup_bw_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec); -static void -ephy_embed_popup_bw_set_window (EphyEmbedPopupBW *p, - BonoboWindow *window); -static void -ephy_embed_popup_bw_show_impl (EphyEmbedPopup *p, - EphyEmbed *embed); - -static EphyEmbedPopupClass *parent_class = NULL; - -MAKE_GET_TYPE (ephy_embed_popup_bw, "EphyEmbedPopupBW", EphyEmbedPopupBW, - ephy_embed_popup_bw_class_init, ephy_embed_popup_bw_init, EPHY_EMBED_POPUP_TYPE); - -static void -ephy_embed_popup_bw_class_init (EphyEmbedPopupBWClass *klass) -{ - GObjectClass *object_class = G_OBJECT_CLASS (klass); - - parent_class = EPHY_EMBED_POPUP_CLASS (g_type_class_peek_parent (klass)); - - object_class->finalize = ephy_embed_popup_bw_finalize; - object_class->set_property = ephy_embed_popup_bw_set_property; - object_class->get_property = ephy_embed_popup_bw_get_property; - - g_object_class_install_property (object_class, - PROP_BONOBO_WINDOW, - g_param_spec_object ("BonoboWindow", - "BonoboWindow", - "Bonobo window", - BONOBO_TYPE_WINDOW, - G_PARAM_READWRITE)); - - EPHY_EMBED_POPUP_CLASS (klass)->show = ephy_embed_popup_bw_show_impl; -} - -static void -ephy_embed_popup_bw_init (EphyEmbedPopupBW *gep) -{ - gep->priv = g_new0 (EphyEmbedPopupBWPrivate, 1); - gep->priv->window = NULL; - gep->priv->menu = NULL; -} - -static void -ephy_embed_popup_bw_finalize (GObject *object) -{ - EphyEmbedPopupBW *gep; - - g_return_if_fail (object != NULL); - g_return_if_fail (IS_EPHY_EMBED_POPUP_BW (object)); - - gep = EPHY_EMBED_POPUP_BW (object); - - g_return_if_fail (gep->priv != NULL); - - g_free (gep->priv); - - G_OBJECT_CLASS (parent_class)->finalize (object); -} - -static void -ephy_embed_popup_bw_set_property (GObject *object, - guint prop_id, - const GValue *value, - GParamSpec *pspec) -{ - EphyEmbedPopupBW *p = EPHY_EMBED_POPUP_BW (object); - - switch (prop_id) - { - case PROP_BONOBO_WINDOW: - ephy_embed_popup_bw_set_window (p, g_value_get_object (value)); - break; - } -} - -static void -ephy_embed_popup_bw_get_property (GObject *object, - guint prop_id, - GValue *value, - GParamSpec *pspec) -{ - EphyEmbedPopupBW *p = EPHY_EMBED_POPUP_BW (object); - - switch (prop_id) - { - case PROP_BONOBO_WINDOW: - g_value_set_object (value, p->priv->window); - break; - } -} - -static void -ephy_embed_popup_bw_set_window (EphyEmbedPopupBW *p, - BonoboWindow *window) -{ - p->priv->window = window; -} - -EphyEmbedPopupBW * -ephy_embed_popup_bw_new (BonoboWindow *window) -{ - EphyEmbedPopupBW *p; - - p = EPHY_EMBED_POPUP_BW (g_object_new (EPHY_EMBED_POPUP_BW_TYPE, - "BonoboWindow", window, - NULL)); - - g_return_val_if_fail (p->priv != NULL, NULL); - - return p; -} - -static void -popup_menu_at_coords (GtkMenu *menu, gint *x, gint *y, gboolean *push_in, - gpointer user_data) -{ - EphyEmbedEvent *event = user_data; - - *x = event->x; - *y = event->y; - *push_in = FALSE; -} - -static void -ephy_embed_popup_bw_show_impl (EphyEmbedPopup *pp, - EphyEmbed *embed) -{ - EphyEmbedPopupBW *p = EPHY_EMBED_POPUP_BW (pp); - EphyEmbedEvent *event = ephy_embed_popup_get_event (pp); - guint button; - - ephy_embed_popup_set_embed (pp, embed); - - ephy_embed_event_get_mouse_button (event, &button); - - p->priv->menu = gtk_menu_new (); - gtk_widget_show (p->priv->menu); - - bonobo_window_add_popup (p->priv->window, - GTK_MENU (p->priv->menu), - ephy_embed_popup_get_popup_path (EPHY_EMBED_POPUP (p))); - - gtk_menu_popup (GTK_MENU (p->priv->menu), - NULL, NULL, button == 2 ? popup_menu_at_coords : NULL, event, - button, gtk_get_current_event_time ()); -} - diff --git a/embed/ephy-embed-popup-bw.h b/embed/ephy-embed-popup-bw.h deleted file mode 100644 index 49f8fecd5..000000000 --- a/embed/ephy-embed-popup-bw.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright (C) 2000, 2001, 2002 Marco Pesenti Gritti - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -#ifndef EPHY_EMBED_POPUP_BW_H -#define EPHY_EMBED_POPUP_BW_H - -#include "ephy-embed-popup.h" -#include <bonobo/bonobo-window.h> - -G_BEGIN_DECLS - -typedef struct EphyEmbedPopupBWClass EphyEmbedPopupBWClass; - -#define EPHY_EMBED_POPUP_BW_TYPE (ephy_embed_popup_bw_get_type ()) -#define EPHY_EMBED_POPUP_BW(obj) (GTK_CHECK_CAST ((obj), EPHY_EMBED_POPUP_BW_TYPE, \ - EphyEmbedPopupBW)) -#define EPHY_EMBED_POPUP_BW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), EPHY_EMBED_POPUP_BW_TYPE,\ - EphyEmbedPopupBWClass)) -#define IS_EPHY_EMBED_POPUP_BW(obj) (GTK_CHECK_TYPE ((obj), EPHY_EMBED_POPUP_BW_TYPE)) -#define IS_EPHY_EMBED_POPUP_BW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), EPHY_EMBED_POPUP_BW)) -#define EPHY_EMBED_POPUP_BW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), \ - EPHY_EMBED_POPUP_BW_TYPE, EphyEmbedPopupBWClass)) - -typedef struct EphyEmbedPopupBW EphyEmbedPopupBW; -typedef struct EphyEmbedPopupBWPrivate EphyEmbedPopupBWPrivate; - -struct EphyEmbedPopupBW -{ - EphyEmbedPopup parent; - EphyEmbedPopupBWPrivate *priv; -}; - -struct EphyEmbedPopupBWClass -{ - EphyEmbedPopupClass parent_class; -}; - -GType ephy_embed_popup_bw_get_type (void); -EphyEmbedPopupBW * ephy_embed_popup_bw_new (BonoboWindow *window); - -G_END_DECLS - -#endif diff --git a/embed/ephy-embed-popup-control.c b/embed/ephy-embed-popup-control.c index a74249cc8..866c6789f 100644 --- a/embed/ephy-embed-popup-control.c +++ b/embed/ephy-embed-popup-control.c @@ -166,21 +166,18 @@ ephy_embed_popup_control_show_impl (EphyEmbedPopup *pp, EphyEmbed *embed) { EphyEmbedPopupControl *p = EPHY_EMBED_POPUP_CONTROL (pp); - EphyEmbedEvent *event = ephy_embed_popup_get_event (pp); BonoboUIComponent *uic = bonobo_control_get_popup_ui_component (p->priv->control); const char *path; char *path_dst; - guint button; - ephy_embed_event_get_mouse_button (event, &button); ephy_embed_popup_set_embed (pp, embed); path = ephy_embed_popup_get_popup_path (pp); - path_dst = g_strdup_printf ("/popups/button%d", button); + path_dst = g_strdup_printf ("/popups/button%d", 2); /* this is a hack because bonobo apis for showing popups are broken */ ephy_bonobo_replace_path (uic, path, path_dst); - bonobo_control_do_popup (p->priv->control, button, + bonobo_control_do_popup (p->priv->control, 2, gtk_get_current_event_time ()); g_free (path_dst); diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index ebc33b833..f8e9cadc1 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -42,7 +42,6 @@ enum OPEN_URI, SIZE_TO, DOM_MOUSE_CLICK, - DOM_MOUSE_DOWN, SECURITY_CHANGE, ZOOM_CHANGE, LAST_SIGNAL @@ -220,16 +219,6 @@ ephy_embed_base_init (gpointer g_class) 2, G_TYPE_INT, G_TYPE_INT); - ephy_embed_signals[DOM_MOUSE_DOWN] = - g_signal_new ("ge_dom_mouse_down", - EPHY_EMBED_TYPE, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (EphyEmbedClass, dom_mouse_down), - NULL, NULL, - ephy_marshal_INT__OBJECT, - G_TYPE_INT, - 1, - G_TYPE_POINTER); ephy_embed_signals[DOM_MOUSE_CLICK] = g_signal_new ("ge_dom_mouse_click", EPHY_EMBED_TYPE, diff --git a/embed/ephy-embed.h b/embed/ephy-embed.h index 6371dea98..1564d0b35 100644 --- a/embed/ephy-embed.h +++ b/embed/ephy-embed.h @@ -194,8 +194,6 @@ struct EphyEmbedClass gint height); gint (* dom_mouse_click) (EphyEmbed *embed, EphyEmbedEvent *event); - gint (* dom_mouse_down) (EphyEmbed *embed, - EphyEmbedEvent *event); void (* security_change) (EphyEmbed *embed, EmbedSecurityLevel level); void (* zoom_change) (EphyEmbed *embed, diff --git a/embed/mozilla/EventContext.cpp b/embed/mozilla/EventContext.cpp index 229f8d3be..5d8e30075 100644 --- a/embed/mozilla/EventContext.cpp +++ b/embed/mozilla/EventContext.cpp @@ -525,7 +525,22 @@ nsresult EventContext::GetMouseEventInfo (nsIDOMMouseEvent *aMouseEvent, EphyEmb /* casting 32-bit guint* to PRUint16* below will break on big-endian */ PRUint16 btn; aMouseEvent->GetButton (&btn); - info->mouse_button = (guint)btn; + + switch (btn) + { + case 0: + info->type = EPHY_EMBED_EVENT_MOUSE_BUTTON1; + break; + case 1: + info->type = EPHY_EMBED_EVENT_MOUSE_BUTTON2; + break; + case 2: + info->type = EPHY_EMBED_EVENT_MOUSE_BUTTON3; + break; + + default: + g_warning ("Unknown mouse button"); + } /* OTOH, casting only between (un)signedness is safe */ aMouseEvent->GetScreenX ((PRInt32*)&info->x); @@ -590,6 +605,8 @@ nsresult EventContext::GetKeyEventInfo (nsIDOMKeyEvent *aKeyEvent, EphyEmbedEven { nsresult rv; + info->type = EPHY_EMBED_EVENT_KEY; + PRUint32 keyCode; rv = aKeyEvent->GetKeyCode(&keyCode); if (NS_FAILED(rv)) return rv; diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp index 95dd0190e..0e69d58fb 100644 --- a/embed/mozilla/mozilla-embed.cpp +++ b/embed/mozilla/mozilla-embed.cpp @@ -1334,12 +1334,6 @@ mozilla_embed_dom_key_down_cb (GtkMozEmbed *embed, gpointer dom_event, gboolean ret = FALSE; - // Just check for Shift-F10 so that we know to popup the context menu. - // - // The DOM_VK_* keycodes are not compatible with the keycodes defined - // in GDK, so making a generic dom_key_down signal is probably not - // worth the trouble. - nsresult rv; EventContext ctx; ctx.Init (wrapper); @@ -1348,8 +1342,8 @@ mozilla_embed_dom_key_down_cb (GtkMozEmbed *embed, gpointer dom_event, (info->keycode == nsIDOMKeyEvent::DOM_VK_F10 && info->modifier == GDK_SHIFT_MASK)) { - // Translate relative coordinates to absolute values, and try - // to avoid covering links by adding a little offset. + /* Translate relative coordinates to absolute values, and try + to avoid covering links by adding a little offset. */ int x, y; gdk_window_get_origin (GTK_WIDGET(membed)->window, &x, &y); @@ -1381,9 +1375,8 @@ mozilla_embed_destroy_brsr_cb (GtkMozEmbed *embed, } static gint -mozilla_embed_emit_mouse_signal (MozillaEmbed *membed, - gpointer dom_event, - const char *signal_name) +mozilla_embed_dom_mouse_click_cb (GtkMozEmbed *embed, gpointer dom_event, + MozillaEmbed *membed) { EphyEmbedEvent *info; EventContext event_context; @@ -1398,6 +1391,7 @@ mozilla_embed_emit_mouse_signal (MozillaEmbed *membed, event_context.Init (wrapper); result = event_context.GetMouseEventInfo (static_cast<nsIDOMMouseEvent*>(dom_event), info); + if (NS_SUCCEEDED(result)) { nsCOMPtr<nsIDOMDocument> domDoc; @@ -1407,7 +1401,7 @@ mozilla_embed_emit_mouse_signal (MozillaEmbed *membed, result = wrapper->PushTargetDocument (domDoc); if (NS_SUCCEEDED(result)) { - g_signal_emit_by_name (membed, signal_name, + g_signal_emit_by_name (membed, "ge_dom_mouse_click", info, &return_value); wrapper->PopTargetDocument (); } @@ -1416,34 +1410,51 @@ mozilla_embed_emit_mouse_signal (MozillaEmbed *membed, } g_object_unref (info); - - return return_value; -} -static gint -mozilla_embed_dom_mouse_click_cb (GtkMozEmbed *embed, gpointer dom_event, - MozillaEmbed *membed) -{ - return mozilla_embed_emit_mouse_signal - (membed, dom_event, "ge_dom_mouse_click"); + return return_value; } static gint mozilla_embed_dom_mouse_down_cb (GtkMozEmbed *embed, gpointer dom_event, MozillaEmbed *membed) { - int ret; + EphyEmbedEvent *info; + EventContext event_context; + gint return_value = 0; + EphyWrapper *wrapper; + nsresult result; + EphyEmbedEventType type; - ret = mozilla_embed_emit_mouse_signal - (membed, dom_event, "ge_dom_mouse_down"); + info = ephy_embed_event_new (); + + wrapper = MOZILLA_EMBED(membed)->priv->wrapper; + g_return_val_if_fail (wrapper != NULL, G_FAILED); + + event_context.Init (wrapper); + result = event_context.GetMouseEventInfo (static_cast<nsIDOMMouseEvent*>(dom_event), info); - if (!ret) + ephy_embed_event_get_event_type (info, &type); + + if (NS_SUCCEEDED(result) && (type == EPHY_EMBED_EVENT_MOUSE_BUTTON3)) { - ret = mozilla_embed_emit_mouse_signal - (membed, dom_event, "ge_context_menu"); + nsCOMPtr<nsIDOMDocument> domDoc; + result = event_context.GetTargetDocument (getter_AddRefs(domDoc)); + if (NS_SUCCEEDED(result)) + { + result = wrapper->PushTargetDocument (domDoc); + if (NS_SUCCEEDED(result)) + { + g_signal_emit_by_name (membed, "ge_context_menu", + info, &return_value); + wrapper->PopTargetDocument (); + } + } + } - return ret; + g_object_unref (info); + + return return_value; } static void diff --git a/src/ephy-nautilus-view.c b/src/ephy-nautilus-view.c index cec56630e..897d67af3 100644 --- a/src/ephy-nautilus-view.c +++ b/src/ephy-nautilus-view.c @@ -44,7 +44,10 @@ static void gnv_embed_new_window_cb (EphyEmbed *embed, static void gnv_embed_link_message_cb (EphyEmbed *embed, const char *message, EphyNautilusView *view); -static gint gnv_embed_dom_mouse_down_cb (EphyEmbed *embed, +static gint gnv_embed_dom_mouse_click_cb (EphyEmbed *embed, + EphyEmbedEvent *event, + EphyNautilusView *view); +static void gnv_embed_context_menu_cb (EphyEmbed *embed, EphyEmbedEvent *event, EphyNautilusView *view); static void gnv_embed_zoom_change_cb (EphyNautilusView *embed, @@ -195,9 +198,13 @@ ephy_nautilus_view_instance_init (EphyNautilusView *view) GTK_SIGNAL_FUNC (gnv_embed_dom_mouse_click_cb), view); */ - g_signal_connect (view->priv->embed, "ge_dom_mouse_down", - GTK_SIGNAL_FUNC (gnv_embed_dom_mouse_down_cb), + g_signal_connect (view->priv->embed, "ge_dom_mouse_click", + GTK_SIGNAL_FUNC (gnv_embed_dom_mouse_click_cb), view); + g_signal_connect (view->priv->embed, "ge_context_menu", + GTK_SIGNAL_FUNC (gnv_embed_context_menu_cb), + view); + /* g_signal_connect (view->priv->embed, "ge_security_change", GTK_SIGNAL_FUNC (gnv_embed_security_change_cb), @@ -314,29 +321,19 @@ ephy_nautilus_view_class_init (EphyNautilusViewClass *class) G_OBJECT_CLASS (class)->finalize = ephy_nautilus_view_finalize; } - - static gint -gnv_embed_dom_mouse_down_cb (EphyEmbed *embed, - EphyEmbedEvent *event, - EphyNautilusView *view) +gnv_embed_dom_mouse_click_cb (EphyEmbed *embed, + EphyEmbedEvent *event, + EphyNautilusView *view) { - EphyNautilusViewPrivate *p = view->priv; - int button; + EphyEmbedEventType type; EmbedEventContext context; - ephy_embed_event_get_mouse_button (event, &button); - ephy_embed_event_get_context (event, &context); + ephy_embed_event_get_event_type (event, &type); + ephy_embed_event_get_context (event, &context); - if (button == 2) - { - ephy_embed_popup_set_event (EPHY_EMBED_POPUP (p->popup), event); - ephy_embed_popup_show (EPHY_EMBED_POPUP (p->popup), embed); - return TRUE; - - } - else if (button == 1 - && (context & EMBED_CONTEXT_LINK)) + if (type == EPHY_EMBED_EVENT_MOUSE_BUTTON2 + && (context & EMBED_CONTEXT_LINK)) { const GValue *value; const gchar *url; @@ -353,6 +350,19 @@ gnv_embed_dom_mouse_down_cb (EphyEmbed *embed, } static void +gnv_embed_context_menu_cb (EphyEmbed *embed, + EphyEmbedEvent *event, + EphyNautilusView *view) +{ + EphyNautilusViewPrivate *p = view->priv; + EmbedEventContext context; + + ephy_embed_event_get_context (event, &context); + ephy_embed_popup_set_event (EPHY_EMBED_POPUP (p->popup), event); + ephy_embed_popup_show (EPHY_EMBED_POPUP (p->popup), embed); +} + +static void gnv_embed_link_message_cb (EphyEmbed *embed, const char *message, EphyNautilusView *view) { g_return_if_fail (EPHY_IS_NAUTILUS_VIEW (view)); diff --git a/src/ephy-tab.c b/src/ephy-tab.c index 106c79566..35a50e712 100644 --- a/src/ephy-tab.c +++ b/src/ephy-tab.c @@ -956,7 +956,7 @@ ephy_tab_dom_mouse_click_cb (EphyEmbed *embed, EphyTab *tab) { EphyWindow *window; - int button; + EphyEmbedEventType type; EmbedEventContext context; g_assert (IS_EPHY_EMBED_EVENT(event)); @@ -964,10 +964,10 @@ ephy_tab_dom_mouse_click_cb (EphyEmbed *embed, window = ephy_tab_get_window (tab); g_return_val_if_fail (window != NULL, FALSE); - ephy_embed_event_get_mouse_button (event, &button); + ephy_embed_event_get_event_type (event, &type); ephy_embed_event_get_context (event, &context); - if (button == 1 + if (type == EPHY_EMBED_EVENT_MOUSE_BUTTON2 && (context & EMBED_CONTEXT_LINK)) { const GValue *value; @@ -977,7 +977,7 @@ ephy_tab_dom_mouse_click_cb (EphyEmbed *embed, g_value_get_string (value), EPHY_NEW_TAB_OPEN_PAGE); } - else if (button == 1 && + else if (type == EPHY_EMBED_EVENT_MOUSE_BUTTON2 && eel_gconf_get_boolean (CONF_INTERFACE_MIDDLE_CLICK_OPEN_URL) && !(context & EMBED_CONTEXT_LINK || context & EMBED_CONTEXT_EMAIL_LINK @@ -999,20 +999,20 @@ ephy_tab_context_menu_cb (EphyEmbed *embed, EphyTab *tab) { EphyWindow *window; - int button; + EphyEmbedEventType type; g_assert (IS_EPHY_EMBED_EVENT(event)); window = ephy_tab_get_window (tab); g_return_val_if_fail (window != NULL, FALSE); - ephy_embed_event_get_mouse_button (event, &button); + ephy_embed_event_get_event_type (event, &type); - if (button == 2) + if (type == EPHY_EMBED_EVENT_MOUSE_BUTTON3) { ephy_tab_show_embed_popup (tab, event); } - else if (button == -1) + else { int x, y; |