summarylogtreecommitdiffstats
path: root/0004-fixes-175-Live-Preview-Mode-Executes-JavaScript.patch
blob: 6b0524dc247cee435184d5be295dd41cfafb321f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
From 2cce6ea49696927300d324637255d3c2cd377e8b Mon Sep 17 00:00:00 2001
From: Harald Weiner <timeraider@gmx.at>
Date: Fri, 28 Jul 2017 07:07:57 +0200
Subject: [PATCH 4/4] fixes #175 (Live Preview Mode Executes JavaScript)

---
 data/ui/RemarkableWindow.ui    |  9 +++++++++
 remarkable/RemarkableWindow.py | 26 ++++++++++++++++++++++----
 2 files changed, 31 insertions(+), 4 deletions(-)

diff --git a/data/ui/RemarkableWindow.ui b/data/ui/RemarkableWindow.ui
index ab0007c..ca2396e 100644
--- a/data/ui/RemarkableWindow.ui
+++ b/data/ui/RemarkableWindow.ui
@@ -405,6 +405,15 @@
                         <property name="active">True</property>
                       </object>
                     </child>
+                    <child>
+                      <object class="GtkCheckMenuItem" id="menuitem_js">
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Enable Java-Script</property>
+                        <property name="use_underline">True</property>
+                        <property name="active">True</property>
+                      </object>
+                    </child>
                     <child>
                       <object class="GtkCheckMenuItem" id="menuitem_vertical_layout">
                         <property name="visible">True</property>
diff --git a/remarkable/RemarkableWindow.py b/remarkable/RemarkableWindow.py
index ea00be9..c15886a 100644
--- a/remarkable/RemarkableWindow.py
+++ b/remarkable/RemarkableWindow.py
@@ -114,8 +114,8 @@ class RemarkableWindow(Window):
         self.text_view.set_buffer(self.text_buffer)
         self.text_view.set_wrap_mode(Gtk.WrapMode.WORD)
         
-        my_settings = self.create_webkit_settings()
-        self.live_preview = WebKit2.WebView.new_with_settings(my_settings)
+        self.webkit_settings = self.create_webkit_settings()
+        self.live_preview = WebKit2.WebView.new_with_settings(self.webkit_settings)
         self.zoom_out(self.live_preview)
 
         self.scrolledwindow_text_view = Gtk.ScrolledWindow()
@@ -199,7 +199,8 @@ class RemarkableWindow(Window):
         if not os.path.isfile(self.settings_path):
             self.remarkable_settings = {}
             self.remarkable_settings['css'] = '' 
-            self.remarkable_settings['font'] = "Sans 10"  
+            self.remarkable_settings['font'] = "Sans 10"
+            self.remarkable_settings['js'] = True
             self.remarkable_settings['line-numbers'] = True
             self.remarkable_settings['live-preview'] = True
             self.remarkable_settings['nightmode'] = False       
@@ -234,6 +235,12 @@ class RemarkableWindow(Window):
             # Disable word wrap on startup
             self.builder.get_object("menuitem_word_wrap").set_active(False)
             self.on_menuitem_word_wrap_activate(self)
+        
+        if not 'js' in self.remarkable_settings:
+           self.remarkable_settings['js'] = True
+        if self.remarkable_settings['js'] == False:
+            # Disable Live Preview on startup
+            self.builder.get_object("menuitem_js").set_active(False)
 
         if self.remarkable_settings['live-preview'] == False:
             # Disable Live Preview on startup
@@ -812,7 +819,16 @@ class RemarkableWindow(Window):
             self.builder.get_object("toolbar1").set_visible(True)
             self.update_live_preview(self)
         self.write_settings()
-
+    
+    def on_menuitem_js_activate(self, widget):
+        self.toggle_js(self)
+    
+    def toggle_js(self, widget):
+        state = self.webkit_settings.get_enable_javascript()
+        state = not state
+        self.remarkable_settings['js'] = state
+        self.webkit_settings.set_enable_javascript(state)
+        self.write_settings()
 
     def on_menuitem_swap_activate(self, widget):
         if self.live_preview.get_visible():
@@ -1456,6 +1472,8 @@ class RemarkableWindow(Window):
     def create_webkit_settings(self):
         result = WebKit2.Settings()
         result.set_enable_write_console_messages_to_stdout(False) # Suppress .js output
+        #js = self.remarkable_settings['js']
+        result.set_enable_javascript(True) # JS-Kill-Switch for issue #175
         return result
 
     """
-- 
2.16.2