OSDN Git Service

prevent view pos jump on resizing Thread Window.
authorAiwota Programmer <aiwotaprog@tetteke.tk>
Wed, 12 Dec 2007 14:13:26 +0000 (23:13 +0900)
committerAiwota Programmer <aiwotaprog@tetteke.tk>
Wed, 12 Dec 2007 14:13:26 +0000 (23:13 +0900)
src/FukuiNoNamari/thread_view.py

index 57c1b1b..a098e76 100644 (file)
@@ -210,8 +210,21 @@ class ThreadView(gtk.HBox):
 
     def on_drawingarea_configure_event(self, widget, event, data=None):
         if event.width != self.drawingarea_prev_width:
+
+            # before relayout, find top layout on gdkwindow
+            top_layout = None
+            for lay in self.pangolayout:
+                if lay.posY > self.adjustment.value:
+                    break
+                top_layout = lay
+
             self.relayout()
             self.drawingarea_prev_width = event.width
+
+            # after relayout, set vscrollbar.value to top layout's posY
+            if top_layout is not None:
+                self.vscrollbar.set_value(top_layout.posY)
+
         self.adjustment.page_size = self.drawingarea.allocation.height
         self.vscrollbar.set_increments(20, self.drawingarea.allocation.height)