Merge a branch from Stephen J Boddy that fixes a dragging bug.

This commit is contained in:
Chris Jones 2012-07-10 20:32:37 +01:00
commit 425e2aed6a
2 changed files with 26 additions and 0 deletions

View File

@ -43,6 +43,8 @@ class Paned(Container):
container = VPaned()
else:
container = HPaned()
self.get_toplevel().set_pos_by_ratio = True
if not sibling:
sibling = self.maker.make('terminal')
@ -60,6 +62,11 @@ class Paned(Container):
container.add(terminal)
self.show_all()
while gtk.events_pending():
gtk.main_iteration_do(False)
self.get_toplevel().set_pos_by_ratio = False
def add(self, widget, metadata=None):
"""Add a widget to the container"""
@ -361,6 +368,12 @@ class Paned(Container):
container.add(child)
def new_size(self, widget, allocation):
if self.get_toplevel().set_pos_by_ratio:
self.set_position_by_ratio()
else:
self.set_position(self.get_position())
def set_position_by_ratio(self):
self.set_pos(int(self.ratio*self.get_length()))
def set_position(self, pos):

View File

@ -37,6 +37,7 @@ class Window(Container, gtk.Window):
losefocus_time = 0
position = None
ignore_startup_show = None
set_pos_by_ratio = None
zoom_data = None
@ -418,6 +419,8 @@ class Window(Container, gtk.Window):
container = maker.make('VPaned')
else:
container = maker.make('HPaned')
self.set_pos_by_ratio = True
if not sibling:
sibling = maker.make('Terminal')
@ -433,6 +436,11 @@ class Window(Container, gtk.Window):
for term in order:
container.add(term)
container.show_all()
while gtk.events_pending():
gtk.main_iteration_do(False)
self.set_pos_by_ratio = False
def zoom(self, widget, font_scale=True):
"""Zoom a terminal widget"""
@ -479,6 +487,7 @@ class Window(Container, gtk.Window):
def rotate(self, widget, clockwise):
"""Rotate children in this window"""
self.set_pos_by_ratio = True
maker = Factory()
# collect all paned children in breadth-first order
paned = []
@ -494,6 +503,10 @@ class Window(Container, gtk.Window):
p.rotate(widget, clockwise)
self.show_all()
widget.grab_focus()
while gtk.events_pending():
gtk.main_iteration_do(False)
self.set_pos_by_ratio = False
def get_visible_terminals(self):
"""Walk down the widget tree to find all of the visible terminals.