From 132daeb447889627109a8cbe47804b7cbf14b17d Mon Sep 17 00:00:00 2001 From: Chris Jones Date: Thu, 19 Nov 2009 23:16:20 -0600 Subject: [PATCH] Fix up some handling of unzooming and closing terminals while zoomed --- terminatorlib/container.py | 31 +++++++++++++++++-------------- terminatorlib/paned.py | 4 ++-- terminatorlib/window.py | 8 ++++---- 3 files changed, 23 insertions(+), 20 deletions(-) diff --git a/terminatorlib/container.py b/terminatorlib/container.py index db95b353..9eef6cdf 100755 --- a/terminatorlib/container.py +++ b/terminatorlib/container.py @@ -16,12 +16,6 @@ class Container(object): immutable = None children = None config = None - state_zoomed = None - - states_zoom = { 'none' : 0, - 'zoomed' : 1, - 'maximised' : 2 } - signals = None cnxids = None @@ -31,7 +25,6 @@ class Container(object): self.signals = [] self.cnxids = {} self.config = Config() - self.state_zoomed = self.states_zoom['none'] def register_signals(self, widget): """Register gobject signals in a way that avoids multiple inheritance""" @@ -109,9 +102,15 @@ class Container(object): def closeterm(self, widget): """Handle the closure of a terminal""" - if self.state_zoomed != self.states_zoom['none']: - dbg('closeterm: current zoomed state is: %s' % self.state_zoomed) - self.unzoom(widget) + try: + if self.get_property('term_zoomed'): + # We're zoomed, so unzoom and then start closing again + dbg('Container::closeterm: terminal zoomed, unzooming') + self.unzoom(widget) + widget.close() + return(True) + except TypeError: + pass if not self.remove(widget): return(False) @@ -126,10 +125,14 @@ class Container(object): def toggle_zoom(self, widget, fontscale = False): """Toggle the existing zoom state""" - if self.state_zoomed != self.states_zoom['none']: - self.unzoom(widget) - else: - self.zoom(widget, fontscale) + try: + if self.get_property('term_zoomed'): + self.unzoom(widget) + else: + self.zoom(widget, fontscale) + except TypeError: + err('Container::toggle_zoom: %s is unable to handle zooming, for \ + %s' % (self, widget)) def zoom(self, widget, fontscale = False): """Zoom a terminal""" diff --git a/terminatorlib/paned.py b/terminatorlib/paned.py index 2571284d..c4850a8a 100755 --- a/terminatorlib/paned.py +++ b/terminatorlib/paned.py @@ -85,12 +85,12 @@ class Paned(Container): 'split-horiz': self.split_horiz, 'split-vert': self.split_vert, 'resize-term': self.resizeterm, - 'zoom': top_window.terminal_zoom} + 'zoom': top_window.zoom} for signal in signals: self.connect_child(widget, signal, signals[signal]) - self.connect_child(widget, 'maximise', top_window.terminal_zoom, + self.connect_child(widget, 'maximise', top_window.zoom, False) widget.grab_focus() diff --git a/terminatorlib/window.py b/terminatorlib/window.py index d00bb23b..cb72a252 100755 --- a/terminatorlib/window.py +++ b/terminatorlib/window.py @@ -173,7 +173,7 @@ class Window(Container, gtk.Window): 'title-change': self.title.set_title, 'split-horiz': self.split_horiz, 'split-vert': self.split_vert, - 'unzoom': self.terminal_unzoom} + 'unzoom': self.unzoom} for signal in signals: self.connect_child(widget, signal, signals[signal]) @@ -208,7 +208,7 @@ class Window(Container, gtk.Window): sibling.spawn_child() - def terminal_zoom(self, widget, font_scale=True): + def zoom(self, widget, font_scale=True): """Zoom a terminal widget""" children = self.get_children() @@ -233,11 +233,11 @@ class Window(Container, gtk.Window): widget.grab_focus() - def terminal_unzoom(self, widget): + def unzoom(self, widget): """Restore normal terminal layout""" if not self.get_property('term_zoomed'): # We're not zoomed anyway - dbg('Window::terminal_unzoom: not zoomed, no-op') + dbg('Window::unzoom: not zoomed, no-op') return widget = self.zoom_data['widget']