Philipp Hörist pushed to branch master at gajim / gajim
Commits:
dd3a2f3a by Philipp Hörist at 2017-02-19T18:07:06+01:00
Fix endless loop in various CellRenderers
context.get_background_color() first calls the CellRenderer to render
the cell before giving back the color.
When we call this inside a CellRenderer, this is an endless loop
- - - - -
18df7163 by Philipp Hörist at 2017-02-19T18:10:13+01:00
Merge branch 'roster' into 'master'
Fix endless loop in various CellRenderers
See merge request !59
- - - - -
2 changed files:
- src/groupchat_control.py
- src/roster_window.py
Changes:
=====================================
src/groupchat_control.py
=====================================
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -75,18 +75,6 @@ class Column(IntEnum):
empty_pixbuf = GdkPixbuf.Pixbuf.new(GdkPixbuf.Colorspace.RGB, True, 8, 1, 1)
empty_pixbuf.fill(0xffffff00)
-def set_renderer_color(treeview, renderer, set_background=True):
- """
- Set style for group row, using PRELIGHT system color
- """
- context = treeview.get_style_context()
- if set_background:
- bgcolor = context.get_background_color(Gtk.StateFlags.PRELIGHT)
- renderer.set_property('cell-background-rgba', bgcolor)
- else:
- fgcolor = context.get_color(Gtk.StateFlags.PRELIGHT)
- renderer.set_property('foreground-rgba', fgcolor)
-
def tree_cell_data_func(column, renderer, model, iter_, tv=None):
# cell data func is global, because we don't want it to keep
# reference to GroupchatControl instance (self)
@@ -123,17 +111,11 @@ def tree_cell_data_func(column, renderer, model, iter_,
tv=None):
gtkgui_helpers.get_theme_font_for_option(theme, 'contactfont'))
else: # it is root (eg. group)
bgcolor = gajim.config.get_per('themes', theme, 'groupbgcolor')
- if bgcolor:
- renderer.set_property('cell-background', bgcolor)
- else:
- set_renderer_color(tv, renderer)
+ renderer.set_property('cell-background', bgcolor or None)
if isinstance(renderer, Gtk.CellRendererText):
# foreground property is only with CellRendererText
color = gajim.config.get_per('themes', theme, 'grouptextcolor')
- if color:
- renderer.set_property('foreground', color)
- else:
- set_renderer_color(tv, renderer, False)
+ renderer.set_property('foreground', color or None)
renderer.set_property('font',
gtkgui_helpers.get_theme_font_for_option(theme, 'groupfont'))
=====================================
src/roster_window.py
=====================================
--- a/src/roster_window.py
+++ b/src/roster_window.py
@@ -4814,19 +4814,6 @@ class RosterWindow:
if ctrl:
ctrl.show_avatar()
- def set_renderer_color(self, renderer, style, set_background=True):
- """
- Set style for treeview cell, using PRELIGHT system color
- """
- if set_background:
- context = self.tree.get_style_context()
- bgcolor = context.get_background_color(style)
- renderer.set_property('cell-background-rgba', bgcolor)
- else:
- context = self.tree.get_style_context()
- fgcolor = context.get_color(style)
- renderer.set_property('foreground-rgba', fgcolor)
-
def _iconCellDataFunc(self, column, renderer, model, titer, data=None):
"""
When a row is added, set properties for icon renderer
@@ -4871,10 +4858,7 @@ class RosterWindow:
theme = gajim.config.get('roster_theme')
if type_ == 'account':
color = gajim.config.get_per('themes', theme, 'accounttextcolor')
- if color:
- renderer.set_property('foreground', color)
- else:
- self.set_renderer_color(renderer, Gtk.StateFlags.ACTIVE, False)
+ renderer.set_property('foreground', color or None)
renderer.set_property('font',
gtkgui_helpers.get_theme_font_for_option(theme, 'accountfont'))
renderer.set_property('xpad', 0)
@@ -4882,10 +4866,7 @@ class RosterWindow:
self._set_account_row_background_color(renderer)
elif type_ == 'group':
color = gajim.config.get_per('themes', theme, 'grouptextcolor')
- if color:
- renderer.set_property('foreground', color)
- else:
- self.set_renderer_color(renderer, Gtk.StateFlags.PRELIGHT,
False)
+ renderer.set_property('foreground', color or None)
renderer.set_property('font',
gtkgui_helpers.get_theme_font_for_option(theme, 'groupfont'))
parent_iter = model.iter_parent(titer)
@@ -5012,10 +4993,7 @@ class RosterWindow:
def _set_account_row_background_color(self, renderer):
theme = gajim.config.get('roster_theme')
color = gajim.config.get_per('themes', theme, 'accountbgcolor')
- if color:
- renderer.set_property('cell-background', color)
- else:
- self.set_renderer_color(renderer, Gtk.StateFlags.ACTIVE)
+ renderer.set_property('cell-background', color or None)
def _set_contact_row_background_color(self, renderer, jid, account):
theme = gajim.config.get('roster_theme')
@@ -5027,15 +5005,12 @@ class RosterWindow:
'just_disconnected_bg_color'))
else:
color = gajim.config.get_per('themes', theme, 'contactbgcolor')
- renderer.set_property('cell-background', color if color else None)
+ renderer.set_property('cell-background', color or None)
def _set_group_row_background_color(self, renderer):
theme = gajim.config.get('roster_theme')
color = gajim.config.get_per('themes', theme, 'groupbgcolor')
- if color:
- renderer.set_property('cell-background', color)
- else:
- self.set_renderer_color(renderer, Gtk.StateFlags.PRELIGHT)
+ renderer.set_property('cell-background', color or None)
################################################################################
### Everything about building menus
View it on GitLab:
https://dev.gajim.org/gajim/gajim/compare/4a7e54347cdda4fbca328d2d1bb3651288ed9488...18df7163d11c72800cb902377962d7550aa95b81
_______________________________________________
Commits mailing list
[email protected]
https://lists.gajim.org/cgi-bin/listinfo/commits