diff --git a/src/common/config.py b/src/common/config.py index a5f7b3d58510ae0b743c192236c52cdc28d2d938..7f5bd2de5cd6a4becd60136a0f453b80e3dcd03d 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -147,6 +147,7 @@ class Config: 'single-msg-y-position': [opt_int, 0], 'single-msg-width': [opt_int, 400], 'single-msg-height': [opt_int, 280], + 'save-roster-position': [opt_bool, True, _('If true, Gajim will save roster position when hiding roster, and restore it when showing roster.')], 'roster_x-position': [ opt_int, 0 ], 'roster_y-position': [ opt_int, 0 ], 'roster_width': [ opt_int, 200 ], diff --git a/src/roster_window.py b/src/roster_window.py index 5f7ea5d2ec81d0d428f26301850eae0ed86131ee..b7ef6f054459eccf02b0d9ef303a974277c032fe 100644 --- a/src/roster_window.py +++ b/src/roster_window.py @@ -2337,9 +2337,10 @@ class RosterWindow: # in case show_roster_on_start is False and roster is never shown # window.window is None if self.window.window is not None: - x, y = self.window.window.get_root_origin() - gajim.config.set('roster_x-position', x) - gajim.config.set('roster_y-position', y) + if gajim.config.get('save-roster-position'): + x, y = self.window.window.get_root_origin() + gajim.config.set('roster_x-position', x) + gajim.config.set('roster_y-position', y) width, height = self.window.get_size() # For the width use the size of the vbox containing the tree and # status combo, this will cancel out any hpaned width @@ -6150,9 +6151,10 @@ class RosterWindow: gtkgui_helpers.resize_window(self.window, gajim.config.get('roster_width'), gajim.config.get('roster_height')) - gtkgui_helpers.move_window(self.window, - gajim.config.get('roster_x-position'), - gajim.config.get('roster_y-position')) + if gajim.config.get('save-roster-position'): + gtkgui_helpers.move_window(self.window, + gajim.config.get('roster_x-position'), + gajim.config.get('roster_y-position')) self.popups_notification_height = 0 self.popup_notification_windows = [] diff --git a/src/statusicon.py b/src/statusicon.py index 16369353d7413a2ac9de43eef64dc2c00718e07c..f580f423846bd8f39d1c781bb08b7f236e1398a2 100644 --- a/src/statusicon.py +++ b/src/statusicon.py @@ -396,7 +396,8 @@ class StatusIcon: # we could be in another VD right now. eg vd2 # and we want to show it in vd2 - if not gtkgui_helpers.possibly_move_window_in_current_desktop(win): + if not gtkgui_helpers.possibly_move_window_in_current_desktop( + win) and gajim.config.get('save-roster-position'): x, y = win.get_position() gajim.config.set('roster_x-position', x) gajim.config.set('roster_y-position', y) @@ -404,9 +405,10 @@ class StatusIcon: else: if not win.get_property('visible'): win.show_all() - gtkgui_helpers.move_window(win, - gajim.config.get('roster_x-position'), - gajim.config.get('roster_y-position')) + if gajim.config.get('save-roster-position'): + gtkgui_helpers.move_window(win, + gajim.config.get('roster_x-position'), + gajim.config.get('roster_y-position')) if not gajim.config.get('roster_window_skip_taskbar'): win.set_property('skip-taskbar-hint', False) win.present_with_time(gtk.get_current_event_time()) @@ -418,7 +420,8 @@ class StatusIcon: if not event: return win = gajim.interface.roster.window - if not win.get_property('visible'): + if not win.get_property('visible') and gajim.config.get( + 'save-roster-position'): gtkgui_helpers.move_window(win, gajim.config.get('roster_x-position'), gajim.config.get('roster_y-position'))