From 9d6312d198eb4f93df94061062c9f06c3efcaf40 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Sat, 17 Jan 2009 13:50:15 +0000 Subject: [PATCH] [shtein] save maximized state window. Fixes #4630 --- src/common/config.py | 1 + src/message_window.py | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/common/config.py b/src/common/config.py index 8b3d3eeac..aec84a6be 100644 --- a/src/common/config.py +++ b/src/common/config.py @@ -136,6 +136,7 @@ class Config: 'gc-hpaned-position': [opt_int, 430], 'gc_refer_to_nick_char': [opt_str, ',', _('Character to add after nickname when using nick completion (tab) in group chat.')], 'gc_proposed_nick_char': [opt_str, '_', _('Character to propose to add after desired nickname when desired nickname is used by someone else in group chat.')], + 'msgwin-max-state': [opt_bool, False], 'msgwin-x-position': [opt_int, -1], # Default is to let the window manager decide 'msgwin-y-position': [opt_int, -1], # Default is to let the window manager decide 'msgwin-width': [opt_int, 500], diff --git a/src/message_window.py b/src/message_window.py index a37f817f1..12f053b15 100644 --- a/src/message_window.py +++ b/src/message_window.py @@ -887,6 +887,7 @@ class MessageWindowMgr(gobject.GObject): # we track the lifetime of this window win.window.connect('delete-event', self._on_window_delete) win.window.connect('destroy', self._on_window_destroy) + win.window.connect('window-state-event', self._on_window_state_change) return win def _gtk_win_to_msg_win(self, gtk_win): @@ -1003,8 +1004,11 @@ class MessageWindowMgr(gobject.GObject): # Position and size window based on saved state and window mode if not self.one_window_opened(contact, acct, type_): - self._resize_window(win, acct, type_) - self._position_window(win, acct, type_) + if gajim.config.get('msgwin-max-state'): + win.window.maximize() + else: + self._resize_window(win, acct, type_) + self._position_window(win, acct, type_) self._windows[win_key] = win return win @@ -1020,6 +1024,10 @@ class MessageWindowMgr(gobject.GObject): del self._windows[old_key] win.change_key(old_jid, new_jid, acct) + def _on_window_state_change(self,widget, event, *args): + "track window state" + self.win_maximized = (event.new_window_state == gtk.gdk.WINDOW_STATE_MAXIMIZED) + def _on_window_delete(self, win, event): self.save_state(self._gtk_win_to_msg_win(win)) gajim.interface.save_config() @@ -1076,6 +1084,7 @@ May be useful some day in the future?''' def save_state(self, msg_win, width_adjust=0): # Save window size and position + max_win_key = 'msgwin-max-state' pos_x_key = 'msgwin-x-position' pos_y_key = 'msgwin-y-position' size_width_key = 'msgwin-width' @@ -1114,6 +1123,7 @@ May be useful some day in the future?''' gajim.config.set_per('accounts', acct, pos_y_key, y) else: + gajim.config.set(max_win_key , self.win_maximized ) width += width_adjust gajim.config.set(size_width_key, width) gajim.config.set(size_height_key, height)