[gnome-utils] Disable masking for area or window screenshots.



commit 56f50c747274f0e8c6624dbc3c6fac04766bd193
Author: Ian Westcott <ianw pixar com>
Date:   Fri Sep 16 23:50:10 2011 -0400

    Disable masking for area or window screenshots.
    
    Area masking doesn't cope well with window or area screenshot, so
    disable it unless we are taking a screenshot of the whole screen.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=587101

 gnome-screenshot/gnome-screenshot.c |    5 +++--
 gnome-screenshot/screenshot-utils.c |    6 ++++--
 gnome-screenshot/screenshot-utils.h |    3 ++-
 3 files changed, 9 insertions(+), 5 deletions(-)
---
diff --git a/gnome-screenshot/gnome-screenshot.c b/gnome-screenshot/gnome-screenshot.c
index 9c6fca0..a8f5417 100644
--- a/gnome-screenshot/gnome-screenshot.c
+++ b/gnome-screenshot/gnome-screenshot.c
@@ -874,13 +874,14 @@ finish_prepare_screenshot (char *initial_uri, GdkWindow *window, GdkRectangle *r
   GError *error = NULL;
   GdkRectangle rect;
   ScreenshotDialog *dialog;
+  gboolean include_mask = (!take_window_shot && !take_area_shot);
 
   /* always disable window border for full-desktop or selected-area screenshots */
   if (!take_window_shot)
-    screenshot = screenshot_get_pixbuf (window, rectangle, include_pointer, FALSE);
+    screenshot = screenshot_get_pixbuf (window, rectangle, include_pointer, FALSE, include_mask);
   else
     {
-      screenshot = screenshot_get_pixbuf (window, rectangle, include_pointer, include_border);
+      screenshot = screenshot_get_pixbuf (window, rectangle, include_pointer, include_border, include_mask);
 
       switch (border_effect[0])
         {
diff --git a/gnome-screenshot/screenshot-utils.c b/gnome-screenshot/screenshot-utils.c
index a3afcf9..623b795 100644
--- a/gnome-screenshot/screenshot-utils.c
+++ b/gnome-screenshot/screenshot-utils.c
@@ -731,7 +731,8 @@ GdkPixbuf *
 screenshot_get_pixbuf (GdkWindow    *window,
                        GdkRectangle *rectangle,
                        gboolean      include_pointer,
-                       gboolean      include_border)
+                       gboolean      include_border,
+                       gboolean      include_mask)
 {
   GdkWindow *root;
   GdkPixbuf *screenshot;
@@ -763,7 +764,8 @@ screenshot_get_pixbuf (GdkWindow    *window,
                                            x_orig, y_orig,
                                            width, height);
 
-  mask_monitors (screenshot, root);
+  if (include_mask)
+    mask_monitors (screenshot, root);
 
 #ifdef HAVE_X11_EXTENSIONS_SHAPE_H
   if (include_border)
diff --git a/gnome-screenshot/screenshot-utils.h b/gnome-screenshot/screenshot-utils.h
index 6c51109..34a116f 100644
--- a/gnome-screenshot/screenshot-utils.h
+++ b/gnome-screenshot/screenshot-utils.h
@@ -37,7 +37,8 @@ void       screenshot_select_area_async   (SelectAreaCallback callback);
 GdkPixbuf *screenshot_get_pixbuf          (GdkWindow *win,
                                            GdkRectangle *rectangle,
                                            gboolean include_pointer,
-                                           gboolean include_border);
+                                           gboolean include_border,
+                                           gboolean include_mask);
 
 void       screenshot_show_error_dialog   (GtkWindow   *parent,
                                            const gchar *message,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]