def __init__(self, application, saved_state):
self.application = application
self.saved_state = saved_state
Gtk.ApplicationWindow.__init__(self,
application=application,
icon_name="revolt",
role="main-window",
default_width=saved_state.get_uint("width"),
default_height=saved_state.get_uint("height"))
if self.saved_state.get_boolean("maximized"):
self.maximize()
self.saved_state.bind("maximized", self, "is-maximized", Gio.SettingsBindFlags.SET)
if application.settings.get_boolean("use-header-bar"):
self.set_titlebar(self.__make_headerbar())
self.set_title(u"Revolt")
application.add_window(self)
self._webview = WebKit2.WebView(user_content_manager=self._user_content_manager,
web_context=self._web_context)
self._webview.connect("decide-policy", self.__on_decide_policy)
application.settings.bind("zoom-factor", self._webview, "zoom-level",
Gio.SettingsBindFlags.GET)
if hasattr(self._webview, "set_maintains_back_forward_list"):
self._webview.set_maintains_back_forward_list(False)
websettings = self._webview.get_settings()
application.settings.bind("enable-developer-tools", websettings,
"enable-developer-extras",
Gio.SettingsBindFlags.GET)
application.settings.bind("enable-developer-tools", websettings,
"enable-write-console-messages-to-stdout",
Gio.SettingsBindFlags.GET)
self.add_accel_group(accelerators.window_keys)
websettings.set_allow_file_access_from_file_urls(True)
websettings.set_allow_modal_dialogs(False) # TODO
websettings.set_enable_fullscreen(False)
websettings.set_enable_java(False)
websettings.set_enable_media_stream(True)
websettings.set_enable_page_cache(False) # Single-page app
websettings.set_enable_plugins(False)
websettings.set_enable_smooth_scrolling(True)
websettings.set_enable_webaudio(True)
websettings.set_javascript_can_access_clipboard(True)
websettings.set_minimum_font_size(12) # TODO: Make it a setting
websettings.set_property("enable-mediasource", True)
# This makes Revolt lighter, and makes things work for people using
# binary drivers (i.e. NVidia) with Flatpak build. See issue #29.
if hasattr(websettings, "set_hardware_acceleration_policy"):
websettings.set_hardware_acceleration_policy(WebKit2.HardwareAccelerationPolicy.NEVER)
self._webview.show_all()
self.add(self._webview)
self.__connect_widgets()
self.__notification_ids = set()
评论列表
文章目录