forked from AuroraMiddleware/gtk
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
This commit is contained in:
parent
4e10d9604b
commit
68d28aad97
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user