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;