Philipp Hörist pushed to branch master at gajim / gajim
Commits: a9efde13 by Philipp Hörist at 2019-03-25T21:20:19Z Refactor saving roster position
- Dont save roster position on Wayland
- - - - - 7a5d791b by Philipp Hörist at 2019-03-25T21:20:19Z Refactor restoring roster position
- - - - -
4 changed files:
- gajim/common/helpers.py - gajim/gtk/statusicon.py - gajim/gtk/util.py - gajim/roster_window.py
Changes:
===================================== gajim/common/helpers.py ===================================== @@ -51,12 +51,14 @@ import nbxmpp from nbxmpp.stringprepare import nameprep import precis_i18n.codec # pylint: disable=unused-import
+from gajim.common import app from gajim.common import caps_cache from gajim.common import configpaths from gajim.common.i18n import Q_ from gajim.common.i18n import _ from gajim.common.i18n import ngettext from gajim.common.const import ShowConstant +from gajim.common.const import Display
log = logging.getLogger('gajim.c.helpers')
@@ -1508,3 +1510,14 @@ class AdditionalDataDict(collections.UserDict): del _dict[key] except KeyError: return + + +def save_roster_position(window): + if not app.config.get('save-roster-position'): + return + if app.is_display(Display.WAYLAND): + return + x_pos, y_pos = window.get_position() + log.debug('Save roster position: %s %s', x_pos, y_pos) + app.config.set('roster_x-position', x_pos) + app.config.set('roster_y-position', y_pos)
===================================== gajim/gtk/statusicon.py ===================================== @@ -28,10 +28,11 @@ from gajim import dialogs 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 get_builder from gajim.gtk.util import get_icon_name -from gajim.gtk.util import move_window +from gajim.gtk.util import restore_roster_position from gajim.gtk.single_message import SingleMessageWindow from gajim.gtk.tooltips import NotificationAreaTooltip
@@ -375,18 +376,11 @@ class StatusIcon: # No pending events, so toggle visible/hidden for roster window if win.get_property('visible'): if win.get_property('has-toplevel-focus') or os.name == 'nt': - if app.config.get('save-roster-position'): - x, y = win.get_position() - app.config.set('roster_x-position', x) - app.config.set('roster_y-position', y) + save_roster_position(win) win.hide() # else we hide it from VD that was visible in else: - if not win.get_property('visible'): - win.show_all() - if app.config.get('save-roster-position'): - move_window(win, - app.config.get('roster_x-position'), - app.config.get('roster_y-position')) + win.show_all() + 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()) @@ -398,11 +392,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'): - 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):
===================================== gajim/gtk/util.py ===================================== @@ -40,6 +40,7 @@ from gajim.common.i18n import _ from gajim.common.const import MOODS from gajim.common.const import ACTIVITIES from gajim.common.const import LOCATION_DATA +from gajim.common.const import Display
from gajim.gtk.const import GajimIconSet
@@ -308,6 +309,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
===================================== gajim/roster_window.py ===================================== @@ -56,6 +56,7 @@ from gajim.common import helpers from gajim.common import idle from gajim.common.exceptions import GajimGeneralException from gajim.common import i18n +from gajim.common.helpers import save_roster_position from gajim.common.i18n import _ from gajim.common.const import PEPEventType, AvatarSize, StyleAttr from gajim.common.dbus import location @@ -83,7 +84,7 @@ from gajim.gtk.tooltips import RosterTooltip from gajim.gtk.adhoc_commands import CommandWindow from gajim.gtk.util import get_icon_name from gajim.gtk.util import resize_window -from gajim.gtk.util import move_window +from gajim.gtk.util import restore_roster_position from gajim.gtk.util import get_metacontact_surface from gajim.gtk.util import get_builder from gajim.gtk.util import set_urgency_hint @@ -2365,11 +2366,7 @@ class RosterWindow: if not app.config.get('quit_on_roster_x_button') and ( (app.interface.systray_enabled and app.config.get('trayicon') != \ 'on_event') or app.config.get('allow_hide_roster')): - if app.config.get('save-roster-position'): - x, y = self.window.get_position() - log.debug('Save roster position (get_position): %s %s', x, y) - app.config.set('roster_x-position', x) - app.config.set('roster_y-position', y) + save_roster_position(self.window) if os.name == 'nt' or app.config.get('hide_on_roster_x_button'): self.window.hide() else: @@ -2394,11 +2391,7 @@ class RosterWindow: # in case show_roster_on_start is False and roster is never shown # window.window is None if self.window.get_window() is not None: - if app.config.get('save-roster-position'): - x, y = self.window.get_window().get_root_origin() - log.debug('Save roster position (get_root_origin): %s %s', x, y) - app.config.set('roster_x-position', x) - app.config.set('roster_y-position', y) + save_roster_position(self.window) width, height = self.window.get_size() app.config.set('roster_width', width) app.config.set('roster_height', height) @@ -5625,10 +5618,7 @@ class RosterWindow: resize_window(self.window, app.config.get('roster_width'), app.config.get('roster_height')) - if app.config.get('save-roster-position'): - move_window(self.window, - app.config.get('roster_x-position'), - app.config.get('roster_y-position')) + restore_roster_position(self.window)
# Remove contact from roster when last event opened # { (contact, account): { backend: boolean }
View it on GitLab: https://dev.gajim.org/gajim/gajim/compare/b6e7f5c6d2ecfa6be6044e2bec58ed93fe...