Commit d6ab77ea authored by Tor Lillqvist's avatar Tor Lillqvist Committed by Tor Lillqvist

Bug 544684 - Win64 issue, window handles are assumed to be 32-bit

2008-08-05  Tor Lillqvist  <tml@novell.com>

	Bug 544684 - Win64 issue, window handles are assumed to be 32-bit

	* gdk/win32/gdkcursor-win32.c
	* gdk/win32/xcursors.h: Change some gchar* to guchar* and vice
	versa to avoid gcc 4.4 signedness warnings.

	* gdk/win32/gdkevents-win32.c: Add some guchar and char pointer
	casts to get rid of gcc 4.4 signedness warnings. Print GdkAtom
	values in debugging output using the %p format.
	
	* gdk/win32/gdkkeys-win32.c
	* gdk/win32/gdkfont-win32.c
	* gdk/win32/gdkmain-win32.c: Add some casts to avoid gcc warnings.
 
	* gdk/win32/gdkwindow-win32.c: Use SetWindowLongPtr() instead of
	SetWindowLong().

	* gdk/win32/gdkwin32id.c (gdk_handle_hash): Use all 64 bits of a
	HANDLE on Win64.


svn path=/trunk/; revision=20994
parent a860ec7d
...@@ -25,11 +25,26 @@ ...@@ -25,11 +25,26 @@
parameter of gdk_selection_send_notify_for_display() and parameter of gdk_selection_send_notify_for_display() and
gdk_selection_send_notify(). gdk_selection_send_notify().
* gdk/win32/gdkcursor-win32.c
* gdk/win32/xcursors.h: Change some gchar* to guchar* and vice
versa to avoid gcc 4.4 signedness warnings.
* gdk/win32/gdkevents-win32.c
* gdk/win32/gdkproperty-win32.c * gdk/win32/gdkproperty-win32.c
* gdk/win32/gdkselection-win32.c: Add some guchar and char pointer * gdk/win32/gdkselection-win32.c: Add some guchar and char pointer
casts to get rid of gcc 4.4 warnings. Print GdkAtom values in casts to get rid of gcc 4.4 signedness warnings. Print GdkAtom
debugging output using the %p format. values in debugging output using the %p format.
* gdk/win32/gdkkeys-win32.c
* gdk/win32/gdkfont-win32.c
* gdk/win32/gdkmain-win32.c: Add some casts to avoid gcc warnings.
* gdk/win32/gdkwindow-win32.c: Use SetWindowLongPtr() instead of
SetWindowLong().
* gdk/win32/gdkwin32id.c (gdk_handle_hash): Use all 64 bits of a
HANDLE on Win64.
* gtk/gtkwindow.h * gtk/gtkwindow.h
* gtk/gtkwindow.c: Change the type of the xid parameter of the * gtk/gtkwindow.c: Change the type of the xid parameter of the
internal gtk_window_remove_embedded_xid() and internal gtk_window_remove_embedded_xid() and
......
...@@ -429,7 +429,8 @@ gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon) ...@@ -429,7 +429,8 @@ gdk_win32_icon_to_pixbuf_libgtk_only (HICON hicon)
RGBQUAD colors[2]; RGBQUAD colors[2];
} bmi; } bmi;
HDC hdc; HDC hdc;
gchar *pixels, *bits, buf[32]; guchar *pixels, *bits;
gchar buf[32];
gint rowstride, x, y, w, h; gint rowstride, x, y, w, h;
if (!GDI_CALL (GetIconInfo, (hicon, &ii))) if (!GDI_CALL (GetIconInfo, (hicon, &ii)))
......
...@@ -292,8 +292,11 @@ _gdk_win32_window_procedure (HWND hwnd, ...@@ -292,8 +292,11 @@ _gdk_win32_window_procedure (HWND hwnd,
retval = inner_window_procedure (hwnd, message, wparam, lparam); retval = inner_window_procedure (hwnd, message, wparam, lparam);
debug_indent -= 2; debug_indent -= 2;
GDK_NOTE (EVENTS, g_print (" => %ld%s", #ifdef _WIN64
retval, (debug_indent == 0 ? "\n" : ""))); GDK_NOTE (EVENTS, g_print (" => %I64d%s", retval, (debug_indent == 0 ? "\n" : "")));
#else
GDK_NOTE (EVENTS, g_print (" => %ld%s", retval, (debug_indent == 0 ? "\n" : "")));
#endif
return retval; return retval;
} }
...@@ -2151,7 +2154,7 @@ gdk_event_translate (MSG *msg, ...@@ -2151,7 +2154,7 @@ gdk_event_translate (MSG *msg,
/* XXX Handle WM_QUIT here ? */ /* XXX Handle WM_QUIT here ? */
if (msg->message == WM_QUIT) if (msg->message == WM_QUIT)
{ {
GDK_NOTE (EVENTS, g_print (" %d", msg->wParam)); GDK_NOTE (EVENTS, g_print (" %d", (int) msg->wParam));
exit (msg->wParam); exit (msg->wParam);
} }
else if (msg->message == WM_MOVE || else if (msg->message == WM_MOVE ||
...@@ -2265,9 +2268,9 @@ gdk_event_translate (MSG *msg, ...@@ -2265,9 +2268,9 @@ gdk_event_translate (MSG *msg,
_gdk_input_codepage = atoi (buf); _gdk_input_codepage = atoi (buf);
_gdk_keymap_serial++; _gdk_keymap_serial++;
GDK_NOTE (EVENTS, GDK_NOTE (EVENTS,
g_print (" cs:%lu hkl:%lx%s cp:%d", g_print (" cs:%lu hkl:%p%s cp:%d",
(gulong) msg->wParam, (gulong) msg->wParam,
msg->lParam, _gdk_input_locale_is_ime ? " (IME)" : "", (gpointer) msg->lParam, _gdk_input_locale_is_ime ? " (IME)" : "",
_gdk_input_codepage)); _gdk_input_codepage));
break; break;
...@@ -2276,7 +2279,7 @@ gdk_event_translate (MSG *msg, ...@@ -2276,7 +2279,7 @@ gdk_event_translate (MSG *msg,
GDK_NOTE (EVENTS, GDK_NOTE (EVENTS,
g_print (" %s ch:%.02x %s", g_print (" %s ch:%.02x %s",
_gdk_win32_key_to_string (msg->lParam), _gdk_win32_key_to_string (msg->lParam),
msg->wParam, (int) msg->wParam,
decode_key_lparam (msg->lParam))); decode_key_lparam (msg->lParam)));
/* If posted without us having keyboard focus, ignore */ /* If posted without us having keyboard focus, ignore */
...@@ -2301,7 +2304,7 @@ gdk_event_translate (MSG *msg, ...@@ -2301,7 +2304,7 @@ gdk_event_translate (MSG *msg,
GDK_NOTE (EVENTS, GDK_NOTE (EVENTS,
g_print (" %s ch:%.02x %s", g_print (" %s ch:%.02x %s",
_gdk_win32_key_to_string (msg->lParam), _gdk_win32_key_to_string (msg->lParam),
msg->wParam, (int) msg->wParam,
decode_key_lparam (msg->lParam))); decode_key_lparam (msg->lParam)));
keyup_or_down: keyup_or_down:
...@@ -2408,7 +2411,7 @@ gdk_event_translate (MSG *msg, ...@@ -2408,7 +2411,7 @@ gdk_event_translate (MSG *msg,
* WM_IME_CHAR might work on NT4 or Win9x with ActiveIMM, but * WM_IME_CHAR might work on NT4 or Win9x with ActiveIMM, but
* use WM_IME_COMPOSITION there, too, to simplify the code. * use WM_IME_COMPOSITION there, too, to simplify the code.
*/ */
GDK_NOTE (EVENTS, g_print (" %#lx", msg->lParam)); GDK_NOTE (EVENTS, g_print (" %#lx", (long) msg->lParam));
if (!(msg->lParam & GCS_RESULTSTR)) if (!(msg->lParam & GCS_RESULTSTR))
break; break;
...@@ -2590,8 +2593,8 @@ gdk_event_translate (MSG *msg, ...@@ -2590,8 +2593,8 @@ gdk_event_translate (MSG *msg,
case WM_MOUSEMOVE: case WM_MOUSEMOVE:
GDK_NOTE (EVENTS, GDK_NOTE (EVENTS,
g_print (" %#x (%d,%d)", g_print (" %p (%d,%d)",
msg->wParam, (gpointer) msg->wParam,
GET_X_LPARAM (msg->lParam), GET_Y_LPARAM (msg->lParam))); GET_X_LPARAM (msg->lParam), GET_Y_LPARAM (msg->lParam)));
/* If we haven't moved, don't create any GDK event. Windows /* If we haven't moved, don't create any GDK event. Windows
...@@ -2877,7 +2880,7 @@ gdk_event_translate (MSG *msg, ...@@ -2877,7 +2880,7 @@ gdk_event_translate (MSG *msg,
break; break;
case WM_SHOWWINDOW: case WM_SHOWWINDOW:
GDK_NOTE (EVENTS, g_print (" %d", msg->wParam)); GDK_NOTE (EVENTS, g_print (" %d", (int) msg->wParam));
if (!(((GdkWindowObject *) window)->event_mask & GDK_STRUCTURE_MASK)) if (!(((GdkWindowObject *) window)->event_mask & GDK_STRUCTURE_MASK))
break; break;
...@@ -3410,7 +3413,7 @@ gdk_event_translate (MSG *msg, ...@@ -3410,7 +3413,7 @@ gdk_event_translate (MSG *msg,
event->selection.selection = GDK_SELECTION_CLIPBOARD; event->selection.selection = GDK_SELECTION_CLIPBOARD;
event->selection.target = target; event->selection.target = target;
event->selection.property = _gdk_selection_property; event->selection.property = _gdk_selection_property;
event->selection.requestor = (guint32) msg->hwnd; event->selection.requestor = msg->hwnd;
event->selection.time = msg->time; event->selection.time = msg->time;
fixup_event (event); fixup_event (event);
...@@ -3476,18 +3479,18 @@ gdk_event_translate (MSG *msg, ...@@ -3476,18 +3479,18 @@ gdk_event_translate (MSG *msg,
* constants as case labels. * constants as case labels.
*/ */
case WT_PACKET: case WT_PACKET:
GDK_NOTE (EVENTS, g_print (" %d %#lx", GDK_NOTE (EVENTS, g_print (" %d %p",
msg->wParam, msg->lParam)); (int) msg->wParam, (gpointer) msg->lParam));
goto wintab; goto wintab;
case WT_CSRCHANGE: case WT_CSRCHANGE:
GDK_NOTE (EVENTS, g_print (" %d %#lx", GDK_NOTE (EVENTS, g_print (" %d %p",
msg->wParam, msg->lParam)); (int) msg->wParam, (gpointer) msg->lParam));
goto wintab; goto wintab;
case WT_PROXIMITY: case WT_PROXIMITY:
GDK_NOTE (EVENTS, g_print (" %#x %d %d", GDK_NOTE (EVENTS, g_print (" %p %d %d",
msg->wParam, (gpointer) msg->wParam,
LOWORD (msg->lParam), LOWORD (msg->lParam),
HIWORD (msg->lParam))); HIWORD (msg->lParam)));
/* Fall through */ /* Fall through */
......
...@@ -897,7 +897,7 @@ gdk_font_load_logfont (LOGFONT *lfp) ...@@ -897,7 +897,7 @@ gdk_font_load_logfont (LOGFONT *lfp)
singlefont->charset = GetTextCharsetInfo (_gdk_display_hdc, &singlefont->fs, 0); singlefont->charset = GetTextCharsetInfo (_gdk_display_hdc, &singlefont->fs, 0);
GetTextFace (_gdk_display_hdc, sizeof (face), face); GetTextFace (_gdk_display_hdc, sizeof (face), face);
SelectObject (_gdk_display_hdc, oldfont); SelectObject (_gdk_display_hdc, oldfont);
if (TranslateCharsetInfo ((DWORD *) singlefont->charset, &csi, if (TranslateCharsetInfo ((DWORD *) (gintptr) singlefont->charset, &csi,
TCI_SRCCHARSET) TCI_SRCCHARSET)
&& singlefont->charset != MAC_CHARSET) && singlefont->charset != MAC_CHARSET)
singlefont->codepage = csi.ciACP; singlefont->codepage = csi.ciACP;
...@@ -1400,8 +1400,9 @@ gdk_font_id (const GdkFont *font) ...@@ -1400,8 +1400,9 @@ gdk_font_id (const GdkFont *font)
private = (const GdkFontPrivateWin32 *) font; private = (const GdkFontPrivateWin32 *) font;
/* FIXME: What to do on Win64? */
if (font->type == GDK_FONT_FONT) if (font->type == GDK_FONT_FONT)
return (gint) ((GdkWin32SingleFont *) private->fonts->data)->hfont; return (gint) (gintptr) ((GdkWin32SingleFont *) private->fonts->data)->hfont;
else else
return 0; return 0;
} }
...@@ -1519,7 +1520,7 @@ _gdk_wchar_text_handle (GdkFont *font, ...@@ -1519,7 +1520,7 @@ _gdk_wchar_text_handle (GdkFont *font,
if (!list) if (!list)
singlefont = NULL; singlefont = NULL;
GDK_NOTE (MISC, g_print ("%d:%d:%d:%p ", GDK_NOTE (MISC, g_print ("%" G_GSIZE_FORMAT ":%" G_GSIZE_FORMAT ":%d:%p ",
start-wcstr, wcp-wcstr, block, start-wcstr, wcp-wcstr, block,
(singlefont ? singlefont->hfont : 0))); (singlefont ? singlefont->hfont : 0)));
......
...@@ -504,7 +504,7 @@ gdk_keymap_get_direction (GdkKeymap *keymap) ...@@ -504,7 +504,7 @@ gdk_keymap_get_direction (GdkKeymap *keymap)
{ {
update_keymap (); update_keymap ();
switch (PRIMARYLANGID (LOWORD ((DWORD) _gdk_input_locale))) switch (PRIMARYLANGID (LOWORD ((DWORD) (gintptr) _gdk_input_locale)))
{ {
case LANG_HEBREW: case LANG_HEBREW:
case LANG_ARABIC: case LANG_ARABIC:
......
...@@ -368,7 +368,7 @@ _gdk_win32_print_dc (HDC hdc) ...@@ -368,7 +368,7 @@ _gdk_win32_print_dc (HDC hdc)
_gdk_win32_psstyle_to_string (extlogpen.elpPenStyle), _gdk_win32_psstyle_to_string (extlogpen.elpPenStyle),
_gdk_win32_psendcap_to_string (extlogpen.elpPenStyle), _gdk_win32_psendcap_to_string (extlogpen.elpPenStyle),
_gdk_win32_psjoin_to_string (extlogpen.elpPenStyle), _gdk_win32_psjoin_to_string (extlogpen.elpPenStyle),
extlogpen.elpWidth, (int) extlogpen.elpWidth,
_gdk_win32_lbstyle_to_string (extlogpen.elpBrushStyle)); _gdk_win32_lbstyle_to_string (extlogpen.elpBrushStyle));
g_print ("rop2: %s textcolor=%06lx\n", g_print ("rop2: %s textcolor=%06lx\n",
_gdk_win32_rop2_to_string (GetROP2 (hdc)), _gdk_win32_rop2_to_string (GetROP2 (hdc)),
......
...@@ -34,12 +34,16 @@ static GHashTable *handle_ht = NULL; ...@@ -34,12 +34,16 @@ static GHashTable *handle_ht = NULL;
static guint static guint
gdk_handle_hash (HANDLE *handle) gdk_handle_hash (HANDLE *handle)
{ {
#ifdef _WIN64
return ((guint *) handle)[0] ^ ((guint *) handle)[1];
#else
return (guint) *handle; return (guint) *handle;
#endif
} }
static gint static gint
gdk_handle_equal (HANDLE *a, gdk_handle_equal (HANDLE *a,
HANDLE *b) HANDLE *b)
{ {
return (*a == *b); return (*a == *b);
} }
......
...@@ -2027,9 +2027,9 @@ gdk_window_set_transient_for (GdkWindow *window, ...@@ -2027,9 +2027,9 @@ gdk_window_set_transient_for (GdkWindow *window,
* USENET. Search on Google. * USENET. Search on Google.
*/ */
SetLastError (0); SetLastError (0);
if (SetWindowLong (window_id, GWL_HWNDPARENT, (long) parent_id) == 0 && if (SetWindowLongPtr (window_id, GWLP_HWNDPARENT, (LONG_PTR) parent_id) == 0 &&
GetLastError () != 0) GetLastError () != 0)
WIN32_API_FAILED ("SetWindowLong"); WIN32_API_FAILED ("SetWindowLongPtr");
} }
void void
...@@ -3602,8 +3602,7 @@ gdk_window_set_skip_taskbar_hint (GdkWindow *window, ...@@ -3602,8 +3602,7 @@ gdk_window_set_skip_taskbar_hint (GdkWindow *window,
owner = gdk_window_new_internal (NULL, &wa, 0, TRUE); owner = gdk_window_new_internal (NULL, &wa, 0, TRUE);
} }
SetWindowLong (GDK_WINDOW_HWND (window), GWL_HWNDPARENT, SetWindowLongPtr (GDK_WINDOW_HWND (window), GWLP_HWNDPARENT, (LONG_PTR) GDK_WINDOW_HWND (owner));
(long) GDK_WINDOW_HWND (owner));
#if 0 /* Should we also turn off the minimize and maximize buttons? */ #if 0 /* Should we also turn off the minimize and maximize buttons? */
SetWindowLong (GDK_WINDOW_HWND (window), GWL_STYLE, SetWindowLong (GDK_WINDOW_HWND (window), GWL_STYLE,
...@@ -3616,7 +3615,7 @@ gdk_window_set_skip_taskbar_hint (GdkWindow *window, ...@@ -3616,7 +3615,7 @@ gdk_window_set_skip_taskbar_hint (GdkWindow *window,
} }
else else
{ {
SetWindowLong (GDK_WINDOW_HWND (window), GWL_HWNDPARENT, 0); SetWindowLongPtr (GDK_WINDOW_HWND (window), GWLP_HWNDPARENT, 0);
} }
} }
......
static const struct { const gchar *name; const gchar *builtin; gint type; guchar width; guchar height; guchar hotx; guchar hoty; guchar *data; } cursors[] = { static const struct { const gchar *name; const gchar *builtin; gint type; guchar width; guchar height; guchar hotx; guchar hoty; gchar *data; } cursors[] = {
{ "X_cursor", NULL, 0, 16, 16, 7, 7, { "X_cursor", NULL, 0, 16, 16, 7, 7,
"\125\000\000\125\152\100\001\251\152\220\006\251\152\244\032\251" "\125\000\000\125\152\100\001\251\152\220\006\251\152\244\032\251"
"\032\251\152\244\006\252\252\220\001\252\252\100\000\152\251\000" "\032\251\152\244\006\252\252\220\001\252\252\100\000\152\251\000"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment