diff options
author | enselic <enselic@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2009-06-05 16:26:52 +0000 |
---|---|---|
committer | enselic <enselic@f606c939-3180-4ac9-a4b8-4b8779d57d0a> | 2009-06-05 16:26:52 +0000 |
commit | a155e9f88218060c207cf6a152d78b0e47fc7d2d (patch) | |
tree | 18146c1cf6e1c026e32edff8442092cc0d83c85d | |
parent | 7395087031dc7ee82cb8b5c1ad2acbe455ba21f7 (diff) |
Apply patch from Dominic Evans that fixes capturing of window
decorations when compiz is running.
git-svn-id: https://recordmydesktop.svn.sourceforge.net/svnroot/recordmydesktop/trunk@600 f606c939-3180-4ac9-a4b8-4b8779d57d0a
-rw-r--r-- | gtk-recordmydesktop/ChangeLog | 4 | ||||
-rw-r--r-- | gtk-recordmydesktop/src/rmdSimple.py | 43 |
2 files changed, 39 insertions, 8 deletions
diff --git a/gtk-recordmydesktop/ChangeLog b/gtk-recordmydesktop/ChangeLog index ba48499..3f194a2 100644 --- a/gtk-recordmydesktop/ChangeLog +++ b/gtk-recordmydesktop/ChangeLog @@ -1,3 +1,7 @@ +/*VERSION 0.3.9 unreleased*/ +* Fix selection of window (including frame) on compiz +* ... + /*VERSION 0.3.8*/ * nl.po added Dutch translation by Jos Poortvliet * Applied patch by freedo, to Replace GtkFileSelection with diff --git a/gtk-recordmydesktop/src/rmdSimple.py b/gtk-recordmydesktop/src/rmdSimple.py index 1cdf17d..eb85b84 100644 --- a/gtk-recordmydesktop/src/rmdSimple.py +++ b/gtk-recordmydesktop/src/rmdSimple.py @@ -39,7 +39,9 @@ from rmdTrayIcon import * import gtk.gdk import gobject import gc +import sys import re +from subprocess import Popen,PIPE import rmdPrefsWidget as pW import rmdSelectThumb as sT from rmdStrings import * @@ -217,14 +219,39 @@ class simpleWidget(object): self.__fileSelQuit__() def __select_window__(self,button): - xwininfo_com=['xwininfo','-frame'] - if self.values[21]==1: - xwininfo_com=['xwininfo'] - (stdin,stdout,stderr)=os.popen3(xwininfo_com,'t') - wid=stdout.readlines() - stdin.close() - stdout.close() - stderr.close() + # check user has not disabled capture of window decoration + if self.values[21]!=1: + # else work out the size including decoration (also taking into account compiz) + p = Popen(['xwininfo','-frame'],stdout=PIPE) + pattern = re.compile('^xwininfo: Window id: (0x[0-9a-fA-F]+)') + + while True: + o = p.stdout.readline() + if o == '' and p.poll() != None: break + match = pattern.search(o) + if match: + fid = match.group(1) + break + + p = Popen(['xprop','-id',fid,'_NET_FRAME_WINDOW'],stdout=PIPE) + pattern = re.compile('^_NET_FRAME_WINDOW\(WINDOW\): window id # (0x[0-9a-fA-F]+)') + + while True: + o = p.stdout.readline() + if o == '' and p.poll() != None: break + match = pattern.search(o) + if match: + wid = match.group(1) + break + else: + print pattern + print o + + if wid: xwininfo_com = ['xwininfo','-id',wid] + else: xwininfo_com = ['xwininfo'] + p = Popen(xwininfo_com,stdout=PIPE) + wid=p.stdout.readlines() + x=y=width=height=None for i in wid: if i.lstrip().startswith('Absolute upper-left X:'): |