From 0e9422ae9b54b31aeada8c5733867845ac8f0c81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20H=C3=B6rist?= Date: Mon, 25 Mar 2019 22:14:18 +0100 Subject: [PATCH] Refactor restoring roster position --- gajim/gtk/util.py | 11 +++++++++++ gajim/roster_window.py | 8 ++++---- gajim/statusicon.py | 15 +++++---------- 3 files changed, 20 insertions(+), 14 deletions(-) diff --git a/gajim/gtk/util.py b/gajim/gtk/util.py index ca727d01b..6a9ee595b 100644 --- a/gajim/gtk/util.py +++ b/gajim/gtk/util.py @@ -30,6 +30,7 @@ from gajim.common import app from gajim.common import configpaths from gajim.common import i18n from gajim.common.i18n import _ +from gajim.common.const import Display _icon_theme = Gtk.IconTheme.get_default() _icon_theme.append_search_path(configpaths.get('ICONS')) @@ -155,6 +156,16 @@ def move_window(window: Gtk.Window, pos_x: int, pos_y: int) -> None: window.move(pos_x, pos_y) +def restore_roster_position(window): + if not app.config.get('save-roster-position'): + return + if app.is_display(Display.WAYLAND): + return + move_window(window, + app.config.get('roster_x-position'), + app.config.get('roster_y-position')) + + def get_completion_liststore(entry: Gtk.Entry) -> Gtk.ListStore: """ Create a completion model for entry widget completion list consists of diff --git a/gajim/roster_window.py b/gajim/roster_window.py index a150cac33..e2bf736e1 100644 --- a/gajim/roster_window.py +++ b/gajim/roster_window.py @@ -84,6 +84,8 @@ from gajim.gtk.service_registration import ServiceRegistration from gajim.gtk.history import HistoryWindow from gajim.gtk.accounts import AccountsWindow +from gajim.gtk.util import restore_roster_position + log = logging.getLogger('gajim.roster') @@ -5699,13 +5701,11 @@ class RosterWindow: if len(app.connections) < 2: # Do not merge accounts if only one exists self.regroup = False + gtkgui_helpers.resize_window(self.window, app.config.get('roster_width'), app.config.get('roster_height')) - if app.config.get('save-roster-position'): - gtkgui_helpers.move_window(self.window, - app.config.get('roster_x-position'), - app.config.get('roster_y-position')) + restore_roster_position(self.window) self.popups_notification_height = 0 self.popup_notification_windows = [] diff --git a/gajim/statusicon.py b/gajim/statusicon.py index 36be23063..f15e1a142 100644 --- a/gajim/statusicon.py +++ b/gajim/statusicon.py @@ -31,7 +31,7 @@ from gajim.common import app from gajim.common import helpers from gajim.common.i18n import _ from gajim.common.helpers import save_roster_position - +from gajim.gtk.util import restore_roster_position from gajim.gtk.single_message import SingleMessageWindow @@ -377,10 +377,7 @@ class StatusIcon: win.hide() # else we hide it from VD that was visible in else: win.show_all() - if app.config.get('save-roster-position'): - gtkgui_helpers.move_window(win, - app.config.get('roster_x-position'), - app.config.get('roster_y-position')) + restore_roster_position(win) if not app.config.get('roster_window_skip_taskbar'): win.set_property('skip-taskbar-hint', False) win.present_with_time(Gtk.get_current_event_time()) @@ -392,11 +389,9 @@ class StatusIcon: if not event: return win = app.interface.roster.window - if not win.get_property('visible') and app.config.get( - 'save-roster-position'): - gtkgui_helpers.move_window(win, - app.config.get('roster_x-position'), - app.config.get('roster_y-position')) + if not win.get_property('visible'): + # Needed if we are in one window mode + restore_roster_position(win) app.interface.handle_event(account, jid, event.type_) def on_middle_click(self):