Skip to content

Commit 575bd81

Browse files
committed
use mutation observer to toggle save button visibility
1 parent 38411f4 commit 575bd81

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

devdocs_desktop.py

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,6 @@ def toggle_theme_variation(self):
153153
if dark_site != dark_theme:
154154
self.globals.set_property('gtk-application-prefer-dark-theme', dark_site)
155155

156-
def toggle_save_button(self, visible):
157-
self.header_save.set_visible(visible)
158-
self.header_sbox.set_visible(not visible)
159-
160156
def set_zoom_level(self):
161157
self.webview.set_zoom_level(self.prefs.get('zoom', 1.0))
162158

@@ -269,6 +265,9 @@ def on_script_message(self, manager, data):
269265
callback = getattr(self, attr)
270266
callback(data.get('value'))
271267

268+
def on_apply_button_changed(self, visible):
269+
self.header_save.set_visible(visible)
270+
272271
def on_cookies_changed(self, _manager):
273272
self.retrieve_cookies_values()
274273

@@ -384,16 +383,8 @@ def on_menu_main_link_clicked(self, widget):
384383
self.run_javascript('navigate', link)
385384

386385
def on_header_button_save_clicked(self, _widget):
387-
self.toggle_save_button(False)
388-
self.run_javascript('isVisible', 'saveButton', 'on_apply_button_visibility')
389-
390-
def on_apply_button_visibility(self, visible):
391-
if visible:
392-
self.header_title.set_label('Downloading...')
393-
self.run_javascript('click', 'saveButton')
394-
else:
395-
self.header_title.set_label('Saving...')
396-
self.run_javascript('navigate', 'home')
386+
self.header_title.set_label('Saving...')
387+
self.run_javascript('click', 'saveButton')
397388

398389
def on_finder_search_entry_map(self, _widget):
399390
self.finder_search.grab_focus()
@@ -441,9 +432,8 @@ def on_webview_title_changed(self, _widget, _title):
441432
self.window.set_title(title)
442433

443434
def on_webview_uri_changed(self, _widget, _uri):
444-
save = self.webview.get_uri().endswith('settings')
445-
self.toggle_save_button(save)
446-
self.sync_header_search()
435+
settings = self.webview.get_uri().endswith('settings')
436+
self.header_sbox.set_visible(not settings)
447437

448438
def on_history_changed(self, _list, _added, _removed):
449439
back = self.webview.can_go_back()

scripts/webview.js

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
class DevDocsDesktop {
22
constructor(refs) {
33
this.refs = refs
4+
5+
this.observe('settings', this.syncSettings, { attributes: true }, true)
46
}
57

68
query(selector) {
@@ -34,6 +36,23 @@ class DevDocsDesktop {
3436
})
3537
}
3638

39+
observe(ref, cb, options, immediate) {
40+
const callback = cb.bind(this)
41+
const observer = new MutationObserver(callback)
42+
43+
if (immediate) {
44+
callback.call(this)
45+
}
46+
47+
this.onElement(ref, (element) => {
48+
observer.observe(element, options)
49+
})
50+
}
51+
52+
syncSettings() {
53+
this.isVisible('saveButton', 'on_apply_button_changed')
54+
}
55+
3756
isVisible(ref, callback) {
3857
this.onElement(ref, (element) => {
3958
const style = getComputedStyle(element)
@@ -93,5 +112,6 @@ window.desktop = new DevDocsDesktop({
93112
search: '._search',
94113
searchTag: '._search-tag',
95114
searchInput: '._search-input',
96-
saveButton: '._settings-btn-save'
115+
saveButton: '._settings-btn-save',
116+
settings: '#settings'
97117
})

0 commit comments

Comments
 (0)