File geary-webkitgtk-2.1.patch of Package geary

Index: geary-0.3.1/bindings/metadata/WebKit-3.0.metadata
===================================================================
--- geary-0.3.1.orig/bindings/metadata/WebKit-3.0.metadata
+++ geary-0.3.1/bindings/metadata/WebKit-3.0.metadata
@@ -1,6 +1,8 @@
 DOM* parent="WebKit.DOM" name="DOM(.+)"
 
 DOMEventTarget.add_event_listener skip=false
+DOMEventTarget.add_event_listener.handler closure=-1
+DOMEventTarget.add_event_listener.user_data closure=-1
 DOMEventTarget.remove_event_listener skip=false
 
 WebView.entering_fullscreen#signal name="entering_fullscreen_signal"
Index: geary-0.3.1/src/CMakeLists.txt
===================================================================
--- geary-0.3.1.orig/src/CMakeLists.txt
+++ geary-0.3.1/src/CMakeLists.txt
@@ -245,7 +245,6 @@ client/folder-list/folder-list-special-g
 
 client/models/conversation-list-store.vala
 
-client/notification/libindicate.vala
 client/notification/libmessagingmenu.vala
 client/notification/new-messages-indicator.vala
 client/notification/new-messages-monitor.vala
@@ -301,27 +300,6 @@ ensure_vala_version("0.17.4" MINIMUM)
 include(ValaPrecompile)
 
 # Packages
-if (LIBINDICATE_FOUND)
-    message(STATUS "Unity indicate support: ON")
-    set(EXTRA_CLIENT_PKG_CONFIG
-        ${EXTRA_CLIENT_PKG_CONFIG}
-        indicate-0.7
-    )
-    
-    set(EXTRA_CLIENT_PACKAGES
-        ${EXTRA_CLIENT_PACKAGES}
-        Dbusmenu-0.4
-        Indicate-0.7
-    )
-    
-    set(EXTRA_VALA_OPTIONS
-        ${EXTRA_VALA_OPTIONS}
-        -D HAVE_LIBINDICATE
-    )
-else ()
-    message(STATUS "Unity indicate support: OFF")
-endif ()
-
 if (LIBMESSAGINGMENU_FOUND)
     message(STATUS "Unity messaging menu support: ON")
     set(EXTRA_CLIENT_PKG_CONFIG
@@ -434,7 +412,6 @@ add_definitions(${CFLAGS})
 set(VALAC_OPTIONS
     --vapidir=${CMAKE_SOURCE_DIR}/bindings/vapi
     --metadatadir=${CMAKE_SOURCE_DIR}/bindings/metadata
-    --girdir=${CMAKE_SOURCE_DIR}/bindings/gir
     --target-glib=${TARGET_GLIB}
     --thread
     --enable-checking
Index: geary-0.3.1/src/client/composer/composer-window.vala
===================================================================
--- geary-0.3.1.orig/src/client/composer/composer-window.vala
+++ geary-0.3.1/src/client/composer/composer-window.vala
@@ -329,7 +329,7 @@ public class ComposerWindow : Gtk.Window
         editor.editable = true;
         editor.load_finished.connect(on_load_finished);
         editor.hovering_over_link.connect(on_hovering_over_link);
-        editor.button_press_event.connect(on_button_press_event);
+        editor.context_menu.connect(on_context_menu);
         editor.move_focus.connect(update_actions);
         editor.copy_clipboard.connect(update_actions);
         editor.cut_clipboard.connect(update_actions);
@@ -385,7 +385,6 @@ public class ComposerWindow : Gtk.Window
         s.enable_scripts = false;
         s.enable_java_applet = false;
         s.enable_plugins = false;
-        s.enable_default_context_menu = false; // Deprecated, still needed for Precise
         editor.settings = s;
         
         scroll.add(editor);
@@ -1093,10 +1092,8 @@ public class ComposerWindow : Gtk.Window
         return base.key_press_event(event);
     }
     
-    private bool on_button_press_event(Gdk.EventButton event) {
-        if (event.button != 3)
-            return false;
-
+    private bool on_context_menu(Gtk.Widget default_menu, WebKit.HitTestResult hit_test_result,
+        bool keyboard_triggered) {
         context_menu = new Gtk.Menu();
         
         // Undo
@@ -1151,11 +1148,11 @@ public class ComposerWindow : Gtk.Window
         context_menu.append(html_item);
         
         context_menu.show_all();
-        context_menu.popup(null, null, null, event.button, event.time);
+        context_menu.popup(null, null, null, 0, Gtk.get_current_event_time());
         
         update_actions();
         
-        return true;
+        return true; // Suppress default context menu.
     }
     
     private void update_actions() {
Index: geary-0.3.1/src/client/composer/webview-edit-fixer.vala
===================================================================
--- geary-0.3.1.orig/src/client/composer/webview-edit-fixer.vala
+++ geary-0.3.1/src/client/composer/webview-edit-fixer.vala
@@ -271,7 +271,7 @@ public class WebViewEditFixer {
     private bool move_first_child(WebKit.DOM.Node source, WebKit.DOM.Node destination) {
         try {
             WebKit.DOM.Node temp = source.child_nodes.item(0);
-            if (is_editing_delete_container(temp)) {
+            if (is_editing_delete_container((WebKit.DOM.Element) temp)) {
                 source.remove_child(temp);
             } else {
                 // This will remove temp from source
@@ -287,7 +287,7 @@ public class WebViewEditFixer {
     
     // There is a special node that webkit attaches to the BLOCKQUOTE in focus. We want to ignore
     // this node, as it is transient.
-    private bool is_editing_delete_container(WebKit.DOM.Node node) {
+    private bool is_editing_delete_container(WebKit.DOM.Element node) {
         if (!node.has_attributes())
             return false;
         
Index: geary-0.3.1/src/client/notification/libindicate.vala
===================================================================
--- geary-0.3.1.orig/src/client/notification/libindicate.vala
+++ /dev/null
@@ -1,105 +0,0 @@
-/* Copyright 2011-2012 Yorba Foundation
- *
- * This software is licensed under the GNU Lesser General Public License
- * (version 2.1 or later).  See the COPYING file in this distribution.
- */
-
-public class Libindicate : NewMessagesIndicator {
-#if HAVE_LIBINDICATE
-    private Indicate.Server? indicator = null;
-    private Indicate.Indicator? compose = null;
-    private Gee.HashMap<Geary.Folder, Indicate.Indicator> folder_indicators
-        = new Gee.HashMap<Geary.Folder, Indicate.Indicator>();
-    
-    public Libindicate(NewMessagesMonitor monitor) {
-        base (monitor);
-        
-        // Find the desktop file this app instance is using (running from build dir vs. install dir)
-        File? desktop_file = GearyApplication.instance.get_desktop_file();
-        if (desktop_file == null) {
-            debug("Unable to setup libindicate support: no desktop file found");
-            
-            return;
-        }
-        
-        debug("Using libindicate for messaging menu support w/ .desktop file %s", desktop_file.get_path());
-        
-        indicator = Indicate.Server.ref_default();
-        indicator.set_type("message.email");
-        indicator.set_desktop_file(desktop_file.get_path());
-        indicator.server_display.connect(on_display_server);
-        
-        // Create "Compose Message" option and always display it
-        compose = new Indicate.Indicator.with_server(indicator);
-        compose.set_property_variant("name", _("Compose Message"));
-        compose.user_display.connect(on_activate_composer);
-        compose.show();
-        
-        monitor.folder_added.connect(on_folder_added);
-        monitor.folder_removed.connect(on_folder_removed);
-        monitor.new_messages_arrived.connect(on_new_messages_changed);
-        monitor.new_messages_retired.connect(on_new_messages_changed);
-        
-        indicator.show();
-    }
-    
-    ~Libindicate() {
-        if (indicator != null) {
-            monitor.folder_added.disconnect(on_folder_added);
-            monitor.folder_removed.disconnect(on_folder_removed);
-            monitor.new_messages_arrived.disconnect(on_new_messages_changed);
-            monitor.new_messages_retired.disconnect(on_new_messages_changed);
-        }
-    }
-    
-    private void on_folder_added(Geary.Folder folder) {
-        // Create "New Messages" option which is only displayed if new messages are available
-        Indicate.Indicator folder_indicator  = new Indicate.Indicator.with_server(indicator);
-        folder_indicator.set_property_variant("name",
-            _("%s - New Messages").printf(folder.account.information.nickname));
-        
-        // Use a lambda here (as opposed to an on_activate_inbox method) so we
-        // can still get to the folder ref to pass to the signal.
-        folder_indicator.user_display.connect(
-            (timestamp) => { inbox_activated(folder, timestamp); });
-        
-        folder_indicators.set(folder, folder_indicator);
-    }
-    
-    private void on_folder_removed(Geary.Folder folder) {
-        Indicate.Indicator folder_indicator;
-        folder_indicators.unset(folder, out folder_indicator);
-        folder_indicator.hide();
-    }
-    
-    private void on_new_messages_changed(Geary.Folder folder, int count) {
-        Indicate.Indicator folder_indicator = folder_indicators.get(folder);
-        
-        if (count > 0) {
-            if (!monitor.should_notify_new_messages(folder))
-                return;
-            
-            // count is in fact a string property
-            folder_indicator.set_property_variant("count", count.to_string());
-            folder_indicator.set_property_bool("draw-attention", true);
-            
-            folder_indicator.show();
-        } else {
-            folder_indicator.hide();
-        }
-    }
-    
-    private void on_display_server(uint timestamp) {
-        application_activated(timestamp);
-    }
-    
-    private void on_activate_composer(uint timestamp) {
-        composer_activated(timestamp);
-    }
-#else
-    public Libindicate(NewMessagesMonitor monitor) {
-        base (monitor);
-    }
-#endif
-}
-
Index: geary-0.3.1/src/client/notification/new-messages-indicator.vala
===================================================================
--- geary-0.3.1.orig/src/client/notification/new-messages-indicator.vala
+++ geary-0.3.1/src/client/notification/new-messages-indicator.vala
@@ -4,7 +4,7 @@
  * (version 2.1 or later).  See the COPYING file in this distribution. 
  */
 
-// This is coded this way to allow for libindicate and libmessagingmenu to coexist in code (if not
+// This is coded this way to allow for multiple indicators to coexist in code (if not
 // compiled at same time) and minimize the exposure of differences to the rest of the application.
 
 public abstract class NewMessagesIndicator : Geary.BaseObject {
@@ -23,19 +23,14 @@ public abstract class NewMessagesIndicat
     public static NewMessagesIndicator create(NewMessagesMonitor monitor) {
         NewMessagesIndicator? indicator = null;
         
-        // these are ordered in order of preference, as it's possible for libindicate and
-        // libmessagingmenu to coexist (although only libmessagingmenu will work)
+        // Indicators are ordered from most to least prefered.  If more than one is available,
+        // use the first.
         
 #if HAVE_LIBMESSAGINGMENU
         if (indicator == null)
             indicator = new Libmessagingmenu(monitor);
 #endif
         
-#if HAVE_LIBINDICATE
-        if (indicator == null)
-            indicator = new Libindicate(monitor);
-#endif
-        
         if (indicator == null)
             indicator = new NullIndicator(monitor);
         
Index: geary-0.3.1/src/client/notification/new-messages-monitor.vala
===================================================================
--- geary-0.3.1.orig/src/client/notification/new-messages-monitor.vala
+++ geary-0.3.1/src/client/notification/new-messages-monitor.vala
@@ -5,7 +5,7 @@
  */
 
 // NewMessagesMonitor is a central data store for new message information that the various
-// notification methods (libnotify, libindicate, libunity, etc.) can monitor to do their thing.
+// notification methods (libnotify, libunity, etc.) can monitor to do their thing.
 // Subclasses should trap the "notify::count" signal and use that to perform whatever magic
 // they need for their implementation, or trap "new-messages" to receive notifications of the emails
 // themselves as they're added.  In the latter case, subscribers should add required Email.Field
Index: geary-0.3.1/src/client/util/util-webkit.vala
===================================================================
--- geary-0.3.1.orig/src/client/util/util-webkit.vala
+++ geary-0.3.1/src/client/util/util-webkit.vala
@@ -51,6 +51,7 @@ public void bind_event(WebKit.WebView vi
         for (int i = 0; i < node_list.length; ++i) {
             WebKit.DOM.EventTarget node = node_list.item(i) as WebKit.DOM.EventTarget;
             node.remove_event_listener(event, callback, false);
+
             node.add_event_listener(event, callback, false, extra);
         }
     } catch (Error error) {
Index: geary-0.3.1/src/client/views/conversation-viewer.vala
===================================================================
--- geary-0.3.1.orig/src/client/views/conversation-viewer.vala
+++ geary-0.3.1/src/client/views/conversation-viewer.vala
@@ -86,6 +86,7 @@ public class ConversationViewer : Gtk.Bo
         web_view = new ConversationWebView();
         
         web_view.hovering_over_link.connect(on_hovering_over_link);
+        web_view.context_menu.connect(() => { return true; }); // Suppress default context menu.
         web_view.realize.connect( () => { web_view.get_vadjustment().value_changed.connect(mark_read); });
         web_view.size_allocate.connect(mark_read);
 
Index: geary-0.3.1/src/client/views/conversation-web-view.vala
===================================================================
--- geary-0.3.1.orig/src/client/views/conversation-web-view.vala
+++ geary-0.3.1/src/client/views/conversation-web-view.vala
@@ -33,7 +33,6 @@ public class ConversationWebView : WebKi
         config.enable_scripts = false;
         config.enable_java_applet = false;
         config.enable_plugins = false;
-        config.enable_default_context_menu = false; // Deprecated, still needed for Precise
         config.enable_developer_extras = Args.inspector;
         settings = config;
         
openSUSE Build Service is sponsored by