summarylogtreecommitdiffstats
path: root/0003-fixes-184-port-to-WebKit2Gtk.patch
diff options
context:
space:
mode:
Diffstat (limited to '0003-fixes-184-port-to-WebKit2Gtk.patch')
-rw-r--r--0003-fixes-184-port-to-WebKit2Gtk.patch133
1 files changed, 133 insertions, 0 deletions
diff --git a/0003-fixes-184-port-to-WebKit2Gtk.patch b/0003-fixes-184-port-to-WebKit2Gtk.patch
new file mode 100644
index 000000000000..55b4a3c08b54
--- /dev/null
+++ b/0003-fixes-184-port-to-WebKit2Gtk.patch
@@ -0,0 +1,133 @@
+From fafd97f41b5fdc68357f54a6e0a2557a7809c36a Mon Sep 17 00:00:00 2001
+From: Harald Weiner <timeraider@gmx.at>
+Date: Sun, 23 Jul 2017 02:14:23 +0200
+Subject: [PATCH 3/4] fixes #184 (port to WebKit2Gtk)
+
+---
+ remarkable/RemarkableWindow.py | 63 +++++++++++++++++++++++++++++++-----------
+ 1 file changed, 47 insertions(+), 16 deletions(-)
+
+diff --git a/remarkable/RemarkableWindow.py b/remarkable/RemarkableWindow.py
+index 12802f3..ea00be9 100644
+--- a/remarkable/RemarkableWindow.py
++++ b/remarkable/RemarkableWindow.py
+@@ -24,10 +24,10 @@
+ import gi
+ gi.require_version('Gtk', '3.0')
+ gi.require_version('GtkSource', '3.0')
+-gi.require_version('WebKit', '3.0')
++gi.require_version('WebKit2', '4.0')
+
+ from bs4 import BeautifulSoup
+-from gi.repository import Gdk, Gtk, GtkSource, Pango, WebKit
++from gi.repository import Gdk, Gtk, GtkSource, Pango, WebKit2
+ from locale import gettext as _
+ from urllib.request import urlopen
+ import markdown
+@@ -113,10 +113,10 @@ class RemarkableWindow(Window):
+ self.text_buffer.connect("changed", self.on_text_view_changed)
+ self.text_view.set_buffer(self.text_buffer)
+ self.text_view.set_wrap_mode(Gtk.WrapMode.WORD)
+-
+- self.live_preview = WebKit.WebView()
+- self.live_preview.connect("console-message", self._javascript_console_message) # Suppress .js output
+- self.live_preview.zoom_out()
++
++ my_settings = self.create_webkit_settings()
++ self.live_preview = WebKit2.WebView.new_with_settings(my_settings)
++ self.zoom_out(self.live_preview)
+
+ self.scrolledwindow_text_view = Gtk.ScrolledWindow()
+ self.scrolledwindow_text_view.add(self.text_view)
+@@ -626,11 +626,11 @@ class RemarkableWindow(Window):
+ self.redo(self)
+
+ def on_toolbutton_zoom_in_clicked(self, widget):
+- self.live_preview.zoom_in()
++ self.zoom_in(self.live_preview)
+ self.scrollPreviewToFix(self)
+
+ def on_toolbutton_zoom_out_clicked(self, widget):
+- self.live_preview.zoom_out()
++ self.zoom_out(self.live_preview)
+ self.scrollPreviewToFix(self)
+
+ def redo(self, widget):
+@@ -1253,7 +1253,7 @@ class RemarkableWindow(Window):
+ styles.css = styles.handwriting_css
+ self.update_style(self)
+ self.update_live_preview(self)
+- self.live_preview.zoom_in()
++ self.zoom_in(self.live_preview)
+ self.remarkable_settings['style'] = "handwriting_css"
+ self.write_settings()
+
+@@ -1351,12 +1351,12 @@ class RemarkableWindow(Window):
+ window_feedback.set_title("Feedback Form")
+ window_feedback.set_default_size(640, 640)
+ window_feedback.set_position(Gtk.WindowPosition.CENTER)
+- feedback_browser = WebKit.WebView()
+- feedback_browser.connect("console-message", self._javascript_console_message) # Suppress .js output
++ my_settings = self.create_webkit_settings()
++ feedback_browser = WebKit2.WebView.new_with_settings(my_settings)
+ feedback_scroller = Gtk.ScrolledWindow()
+ feedback_scroller.add(feedback_browser)
+ window_feedback.add(feedback_scroller)
+- feedback_browser.open("https://jamiemcgowan.typeform.com/to/ng5Lhc")
++ feedback_browser.load_uri("https://jamiemcgowan.typeform.com/to/ng5Lhc")
+ window_feedback.show_all()
+
+ def on_menuitem_about_activate(self, widget):
+@@ -1447,14 +1447,45 @@ class RemarkableWindow(Window):
+ html = self.default_html_start + html_middle + self.default_html_end
+
+ # Update the display, supporting relative paths to local images
+- self.live_preview.load_string(html, "text/html", "utf-8", "file://{}".format(os.path.abspath(self.name)))
++ self.live_preview.load_html(html, "file://{}".format(os.path.abspath(self.name)))
+
+ """
+- This function suppresses the messages from the WebKit (live preview) console
++ This function returns WebKit settings instance to suppress
++ the messages from the WebKit (live preview) console
+ """
+- def _javascript_console_message(self, view, message, line, sourceid):
+- return True
++ def create_webkit_settings(self):
++ result = WebKit2.Settings()
++ result.set_enable_write_console_messages_to_stdout(False) # Suppress .js output
++ return result
+
++ """
++ This function implements zoom_in for WebKit2.WebView
++ """
++ def zoom_in(self, webView):
++ zoom_level = webView.get_zoom_level()
++ zoom_level = zoom_level + self.get_zoom_step()
++ webView.set_zoom_level(zoom_level)
++
++ """
++ This function implements zoom_out for WebKit2.WebView
++ """
++ def zoom_out(self, webView):
++ zoom_level = webView.get_zoom_level()
++ zoom_level = zoom_level - self.get_zoom_step()
++ webView.set_zoom_level(zoom_level)
++
++ """
++ This function returns the same magic number as in previous WebKit API:
++ https://lazka.github.io/pgi-docs/WebKit-3.0/classes/WebSettings.html#WebKit.WebSettings.props.zoom_step
++ """
++ def get_zoom_step(self):
++ return 0.10000000149011612
++
++ """
++ This function resets the zoom_level to the default value
++ """
++ def reset_zoom_level(self, webView):
++ webView.set_zoom_level(1.0)
+
+ """
+ This function deletes any temporary files that were created during execution
+--
+2.16.2
+