Daniel Brötzmann pushed to branch master at gajim / gajim


Commits:
bf697b81 by wurstsalat at 2021-06-06T11:27:43+02:00
Themes: Apply change of dark/light theme instantly

Fixes #10441

- - - - -
b35bd9c0 by wurstsalat at 2021-06-06T11:28:52+02:00
Themes: Apply user themes instantly

- - - - -


4 changed files:

- gajim/data/gui/themes_window.ui
- gajim/gtk/css_config.py
- gajim/gtk/preferences.py
- gajim/gtk/themes.py


Changes:

=====================================
gajim/data/gui/themes_window.ui
=====================================
@@ -40,9 +40,10 @@
       <object class="GtkLabel">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="wrap">True</property>
+        <property name="wrap_mode">word</property>
         <property name="label" translatable="yes">Add a setting you would like 
to change</property>
         <style>
-          <class name="bold"/>
           <class name="dim-label"/>
         </style>
       </object>


=====================================
gajim/gtk/css_config.py
=====================================
@@ -121,8 +121,7 @@ def prefer_dark(self):
             return settings.get_property('gtk-application-prefer-dark-theme')
         return setting == Theme.DARK
 
-    @staticmethod
-    def set_dark_theme(value=None):
+    def set_dark_theme(self, value=None):
         if value is None:
             value = app.settings.get('dark_theme')
         else:
@@ -134,6 +133,7 @@ def set_dark_theme(value=None):
             settings.reset_property('gtk-application-prefer-dark-theme')
             return
         settings.set_property('gtk-application-prefer-dark-theme', bool(value))
+        self._load_css()
 
     def _load_css(self):
         self._load_css_from_file('gajim.css', CSSPriority.APPLICATION)
@@ -156,14 +156,16 @@ def _load_css_from_file(self, filename, priority):
             return
         self._activate_css(css, priority)
 
-    @staticmethod
-    def _activate_css(css, priority):
+    def _activate_css(self, css, priority):
         try:
             provider = Gtk.CssProvider()
             provider.load_from_data(bytes(css.encode('utf-8')))
             Gtk.StyleContext.add_provider_for_screen(Gdk.Screen.get_default(),
                                                      provider,
                                                      priority)
+            self._load_selected()
+            self._activate_theme()
+
         except Exception:
             log.exception('Error loading application css')
 


=====================================
gajim/gtk/preferences.py
=====================================
@@ -719,12 +719,14 @@ def _on_edit_themes(self, *args):
     def _on_theme_changed(value, *args):
         app.css_config.change_theme(value)
         app.nec.push_incoming_event(NetworkEvent('theme-update'))
+        app.nec.push_incoming_event(NetworkEvent('style-changed'))
         app.interface.roster.repaint_themed_widgets()
         app.interface.roster.change_roster_style(None)
 
     @staticmethod
     def _on_dark_theme(value, *args):
         app.css_config.set_dark_theme(int(value))
+        app.nec.push_incoming_event(NetworkEvent('style-changed'))
 
 
 class Emoji(PreferenceBox):


=====================================
gajim/gtk/themes.py
=====================================
@@ -206,12 +206,16 @@ def __init__(self, transient):
 
         self._fill_choose_listbox()
 
-    def _on_key_press(self, widget, event):
+    def _on_key_press(self, _widget, event):
         if event.keyval == Gdk.KEY_Escape:
             self.destroy()
 
     def _get_themes(self):
+        current_theme = app.settings.get('roster_theme')
         for theme in app.css_config.themes:
+            if theme == current_theme:
+                self._ui.theme_store.prepend([theme])
+                continue
             self._ui.theme_store.append([theme])
 
     def _on_theme_name_edit(self, _renderer, path, new_name):
@@ -255,6 +259,8 @@ def _on_theme_selected(self, tree_selection):
 
         self._ui.remove_theme_button.set_sensitive(True)
         self._load_options()
+        self._apply_theme(theme)
+        app.nec.push_incoming_event(NetworkEvent('style-changed'))
 
     def _load_options(self):
         self._ui.option_listbox.foreach(self._remove_option)
@@ -321,7 +327,8 @@ def _apply_theme(theme):
         app.interface.roster.repaint_themed_widgets()
         app.interface.roster.change_roster_style(None)
 
-    def _update_preferences_window(self):
+    @staticmethod
+    def _update_preferences_window():
         window = get_app_window('Preferences')
         if window is not None:
             window.update_theme_list()
@@ -343,6 +350,7 @@ def _on_remove_theme(self, *args):
         def _remove_theme():
             if theme == app.settings.get('roster_theme'):
                 self._apply_theme('default')
+                app.nec.push_incoming_event(NetworkEvent('style-changed'))
 
             app.css_config.remove_theme(theme)
             self._update_preferences_window()



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/17b5488cebdf6740e4f4195273b05606fbc53c1c...b35bd9c07f8cc5551f040ddf4cb6327593840fb7

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/compare/17b5488cebdf6740e4f4195273b05606fbc53c1c...b35bd9c07f8cc5551f040ddf4cb6327593840fb7
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits

Reply via email to