[gtk+] win32: fix pasting screenshots taken with PrintScreen or Alt+PrintScreen
- From: Alexander Larsson <alexl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] win32: fix pasting screenshots taken with PrintScreen or Alt+PrintScreen
- Date: Thu, 10 Nov 2011 16:50:19 +0000 (UTC)
commit 68d28aad97894c5b1fa6875b2cb3a9baa0c8284f
Author: Dieter Verfaillie <dieterv optionexplicit be>
Date: Fri Nov 4 09:44:35 2011 +0100
win32: fix pasting screenshots taken with PrintScreen or Alt+PrintScreen
These are found on the clipboard in the biCompression == BI_BITFIELDS &&
biBitCount >= 16 format. In this case the BITMAPINFOHEADER is followed
by three DWORD specifying the masks of the red green and blue components,
but bfOffBits was not being adjusted accordingly.
Based on Massimo's comment on bug 631384 and verified on
http://msdn.microsoft.com/en-us/library/dd183386%28v=VS.85%29.aspx
https://bugzilla.gnome.org/show_bug.cgi?id=631384
gdk/win32/gdkselection-win32.c | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
---
diff --git a/gdk/win32/gdkselection-win32.c b/gdk/win32/gdkselection-win32.c
index f4e600b..c734b0b 100644
--- a/gdk/win32/gdkselection-win32.c
+++ b/gdk/win32/gdkselection-win32.c
@@ -721,6 +721,17 @@ _gdk_win32_display_convert_selection (GdkDisplay *display,
bi->biSize +
bi->biClrUsed * sizeof (RGBQUAD));
+ if (bi->biCompression == BI_BITFIELDS && bi->biBitCount >= 16)
+ {
+ /* Screenshots taken with PrintScreen or
+ * Alt + PrintScreen are found on the clipboard in
+ * this format. In this case the BITMAPINFOHEADER is
+ * followed by three DWORD specifying the masks of the
+ * red green and blue components, so adjust the offset
+ * accordingly. */
+ bf->bfOffBits += (3 * sizeof (DWORD));
+ }
+
memcpy ((char *) data + sizeof (BITMAPFILEHEADER),
bi,
data_length);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]