# HG changeset patch
# User Yuki KODAMA <endflow....@gmail.com>
# Date 1254225272 -32400
# Node ID 8e34dc69eebf0e3454104ed5d0717476b8dd1255
# Parent  c65da5ef30cb4216c74ec4c2c21c8f289575e801
history, synch: fix focus issues

The workaround by 'set_transient_for(None)' was introduced for
old PyGTK (< 2.12.0).  Now we are shipping the installer with
PyGTK 2.12.1, so it should be applied for only old PyGTK.

diff --git a/tortoisehg/hgtk/history.py b/tortoisehg/hgtk/history.py
--- a/tortoisehg/hgtk/history.py
+++ b/tortoisehg/hgtk/history.py
@@ -1098,6 +1098,15 @@
         self.changeview._buffer.set_text('')
         self.changeview._filelist.clear()

+    def show_dialog(self, dlg):
+        dlg.set_transient_for(self)
+        dlg.show_all()
+        dlg.present()
+        if gtk.pygtk_version < (2, 12, 0):
+            # Workaround for old PyGTK (< 2.12.0) issue.
+            # See background of this: f668034aeda3
+            dlg.set_transient_for(None)
+
     def backout_rev(self, menuitem):
         oldlen = len(self.repo)
         hash = str(self.repo[self.currevid])
@@ -1123,11 +1132,8 @@
                 dlg.display()

         dlg = backout.BackoutDialog(hash)
-        dlg.set_transient_for(self)
         dlg.connect('destroy', refresh)
-        dlg.show_all()
-        dlg.present()
-        dlg.set_transient_for(None)
+        self.show_dialog(dlg)

     def revert(self, menuitem):
         rev = self.currevid
@@ -1170,10 +1176,7 @@
         revrange.sort()
         opts = ['--rev', str(revrange[0]) + ':' + str(revrange[1])]
         dlg = hgemail.EmailDialog(self.repo.root, opts)
-        dlg.set_transient_for(self)
-        dlg.show_all()
-        dlg.present()
-        dlg.set_transient_for(None)
+        self.show_dialog(dlg)

     def export_revs(self, menuitem):
         result = gtklib.NativeFolderSelectDialog(title=_('Save patches to'),
@@ -1280,11 +1283,8 @@
                     self.refresh_model()

         dialog = tagadd.TagAddDialog(self.repo, rev=str(rev))
-        dialog.set_transient_for(self)
         dialog.connect('destroy', refresh)
-        dialog.show_all()
-        dialog.present()
-        dialog.set_transient_for(None)
+        self.show_dialog(dialog)

     def show_status(self, menuitem):
         rev = self.currevid
@@ -1361,20 +1361,14 @@
     def email_patch(self, menuitem):
         rev = self.currevid
         dlg = hgemail.EmailDialog(self.repo.root, ['--rev', str(rev)])
-        dlg.set_transient_for(self)
-        dlg.show_all()
-        dlg.present()
-        dlg.set_transient_for(None)
+        self.show_dialog(dlg)

     def checkout(self, menuitem):
         rev = self.currevid
         parents = [x.node() for x in self.repo.parents()]
         dialog = update.UpdateDialog(rev)
-        dialog.set_transient_for(self)
-        dialog.show_all()
         dialog.set_notify_func(self.checkout_completed, parents)
-        dialog.present()
-        dialog.set_transient_for(None)
+        self.show_dialog(dialog)

     def checkout_completed(self, oldparents):
         self.repo.invalidate()
@@ -1389,11 +1383,8 @@
         if rev == self.repo.parents()[0].rev():
             rev = self.revrange[1]
         dialog = merge.MergeDialog(rev)
-        dialog.set_transient_for(self)
-        dialog.show_all()
         dialog.set_notify_func(self.merge_completed, parents, len(self.repo))
-        dialog.present()
-        dialog.set_transient_for(None)
+        self.show_dialog(dlg)

     def merge_completed(self, args):
         self.repo.invalidate()
@@ -1409,10 +1400,7 @@
         rev = self.currevid
         parents = [x.node() for x in self.repo.parents()]
         dialog = archive.ArchiveDialog(rev)
-        dialog.set_transient_for(self)
-        dialog.show_all()
-        dialog.present()
-        dialog.set_transient_for(None)
+        self.show_dialog(dlg)

     def transplant_rev(self, menuitem):
         """Transplant selection on top of current revision."""
diff --git a/tortoisehg/hgtk/synch.py b/tortoisehg/hgtk/synch.py
--- a/tortoisehg/hgtk/synch.py
+++ b/tortoisehg/hgtk/synch.py
@@ -301,6 +301,16 @@
                     in enumerate(self.ppulldata) if name == 'none'][0]
         self.ppullcombo.set_active(pos)

+    def show_dialog(self, dlg):
+        # copy from history.py
+        dlg.set_transient_for(self)
+        dlg.show_all()
+        dlg.present()
+        if gtk.pygtk_version < (2, 12, 0):
+            # Workaround for old PyGTK (< 2.12.0) issue.
+            # See background of this: f668034aeda3
+            dlg.set_transient_for(None)
+
     def fill_path_combo(self):
         self.pathlist.clear()
         for alias, path in self.paths:
@@ -365,10 +375,7 @@
         wc = self.repo[None]
         dialog = update.UpdateDialog(wc.branch())
         dialog.set_notify_func(update_notify, None)
-        dialog.set_transient_for(self)
-        dialog.show_all()
-        dialog.present()
-        dialog.set_transient_for(None)
+        self.show_dialog(dialog)

     def get_paths(self, sort="value"):
         """ retrieve symbolic paths """
@@ -517,10 +524,7 @@
         if rev:
             opts.extend(rev)
         dlg = hgemail.EmailDialog(self.root, opts)
-        dlg.set_transient_for(self)
-        dlg.show_all()
-        dlg.present()
-        dlg.set_transient_for(None)
+        self.show_dialog(dlg)

     def shelve_clicked(self, toolbutton, data=None):
         dlg = thgshelve.run(self.ui)

Attachment: thg-kuy_rev4269.patch
Description: Binary data

------------------------------------------------------------------------------
Come build with us! The BlackBerry&reg; Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay 
ahead of the curve. Join us from November 9&#45;12, 2009. Register now&#33;
http://p.sf.net/sfu/devconf
_______________________________________________
Tortoisehg-develop mailing list
Tortoisehg-develop@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tortoisehg-develop

Reply via email to