Updating branch refs/heads/master to 98c6971ced389996a99335e1b926b56c1c1e5911 (commit) from 38afa7b699e52bfc321f0edc6d5ae5420ca3a8c8 (commit)
commit 98c6971ced389996a99335e1b926b56c1c1e5911 Author: Jérôme Guelfucci <jero...@xfce.org> Date: Mon Aug 3 11:57:13 2009 +0200 Reenable the old active window workaround. In some cases, the WM/X server does not update the active window quickly enough. When running the application and taking a screenshot of the active window this can create a corrupted screenshot. Adding a one second delay in that case fixes this issue. ChangeLog | 9 +++++++++ lib/screenshooter-actions.c | 6 ++++-- lib/screenshooter-capture.c | 12 ++++++++++-- lib/screenshooter-capture.h | 7 ++++--- 4 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index a2e66a8..1311bab 100644 --- a/ChangeLog +++ b/ChangeLog @@ -8,6 +8,15 @@ Updated Italian and Galician documentation translation. 2009-08-03 jeromeg +Reenable the old active window workaround. + +In some cases, the WM/X server does not update the active window +quickly enough. When running the application and taking a screenshot +of the active window this can create a corrupted screenshot. Adding +a one second delay in that case fixes this issue. + +2009-08-03 jeromeg + Improve the creation of the save dialog's thumbnail. The thumbnail's width and height now have a maximum of 150 pixels, if diff --git a/lib/screenshooter-actions.c b/lib/screenshooter-actions.c index 744fe4a..d744e22 100644 --- a/lib/screenshooter-actions.c +++ b/lib/screenshooter-actions.c @@ -29,8 +29,10 @@ gboolean screenshooter_take_and_output_screenshot (ScreenshotData *sd) { GdkPixbuf *screenshot; - screenshot = - screenshooter_take_screenshot (sd->region, sd->delay, sd->show_mouse); + screenshot = screenshooter_take_screenshot (sd->region, + sd->delay, + sd->show_mouse, + sd->plugin); g_return_val_if_fail (screenshot != NULL, FALSE); diff --git a/lib/screenshooter-capture.c b/lib/screenshooter-capture.c index 9f35d04..131c728 100644 --- a/lib/screenshooter-capture.c +++ b/lib/screenshooter-capture.c @@ -442,7 +442,7 @@ static GdkPixbuf * Return value: a #GdkPixbuf containing the screenshot or %NULL (if @region is SELECT, * the user can cancel the operation). **/ -GdkPixbuf *screenshooter_take_screenshot (gint region, gint delay, gboolean show_mouse) +GdkPixbuf *screenshooter_take_screenshot (gint region, gint delay, gboolean show_mouse, gboolean plugin) { GdkPixbuf *screenshot = NULL; GdkWindow *window = NULL; @@ -462,8 +462,16 @@ GdkPixbuf *screenshooter_take_screenshot (gint region, gint delay, gboolean show gdk_display_sync (display); /* wait for n=delay seconds */ + /* Workaround: sleep at least one second to make sure the + * WM/X server hast time to select the new active window after + * the dialog is closed */ if (region != SELECT) - sleep (delay); + { + if (region == ACTIVE_WINDOW && !plugin) + delay ? sleep (delay): sleep (1); + else + sleep (delay); + } /* Get the window/desktop we want to screenshot*/ if (region == FULLSCREEN) diff --git a/lib/screenshooter-capture.h b/lib/screenshooter-capture.h index 52086e7..c229d62 100644 --- a/lib/screenshooter-capture.h +++ b/lib/screenshooter-capture.h @@ -36,8 +36,9 @@ GdkPixbuf -*screenshooter_take_screenshot (gint region, - gint delay, - gboolean show_mouse); +*screenshooter_take_screenshot (gint region, + gint delay, + gboolean show_mouse, + gboolean plugin); #endif
_______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org http://foo-projects.org/mailman/listinfo/xfce4-commits