From f329d85ca7973164e5ac5d283c56d33bef8f4773 Mon Sep 17 00:00:00 2001 From: Eratosthenes Date: Sun, 5 Dec 2010 12:52:02 -0500 Subject: [PATCH] Fixed table dectection on Ubuntu/KDE. --- pyfpdb/XTables.py | 36 +++++++++++++++++++++++------------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/pyfpdb/XTables.py b/pyfpdb/XTables.py index 4a5af947..5ae3112e 100644 --- a/pyfpdb/XTables.py +++ b/pyfpdb/XTables.py @@ -66,27 +66,37 @@ class Table(Table_Window): if self.number is None: return None - self.window = self.get_window_from_xid(self.number) - self.parent = self.window.query_tree().parent + (self.window, self.parent) = self.get_window_from_xid(self.number) def get_window_from_xid(self, id): for outside in root.query_tree().children: if outside.id == id: - return outside + return (outside, outside.query_tree().parent) for inside in outside.query_tree().children: - if inside.id == id: - return inside - return None + if inside.id == id: # GNOME, Xfce + return (inside, inside.query_tree().parent) + for wayinside in inside.query_tree().children: + if wayinside.id == id: # KDE + parent = wayinside.query_tree().parent + return (wayinside, parent.query_tree().parent) + return (None, None) def get_geometry(self): try: my_geo = self.window.get_geometry() - pa_geo = self.parent.get_geometry() - return {'x' : my_geo.x + pa_geo.x, - 'y' : my_geo.y + pa_geo.y, - 'width' : my_geo.width, - 'height' : my_geo.height - } + if self.parent is None: + return {'x' : my_geo.x + pa_geo.x, + 'y' : my_geo.y + pa_geo.y, + 'width' : my_geo.width, + 'height' : my_geo.height + } + else: + pa_geo = self.parent.get_geometry() + return {'x' : my_geo.x + pa_geo.x, + 'y' : my_geo.y + pa_geo.y, + 'width' : my_geo.width, + 'height' : my_geo.height + } except: return None @@ -105,4 +115,4 @@ class Table(Table_Window): # This is the gdkhandle for the HUD window gdkwindow = gtk.gdk.window_foreign_new(window.window.xid) - gdkwindow.set_transient_for(self.gdkhandle) \ No newline at end of file + gdkwindow.set_transient_for(self.gdkhandle)