if a grab cursor is used, must copy the HCURSOR with CopyCursor(), as it

2003-03-13  Tor Lillqvist  <tml@iki.fi>

	* gdk/win32/gdkevents-win32.c (gdk_pointer_grab): if a grab cursor
	is used, must copy the HCURSOR with CopyCursor(), as it is OK to
	destroy the GdkCursor after calling gdk_pointer_grab(). Set the
	cursor right away with SetCursor(), as we won't get any
	WM_SETCURSOR messages while the mouse is captured.
	(gdk_display_pointer_ungrab): Correspondingly, destroy the copy
	with DestroyCursor() when no longer used. (#108114, Allin Cottrell)

	* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
	WM_SYSCHAR, return FALSE from the window procedure to prevent the
	DefWindowProc from being called. Otherwise Windows would beep,
	thinking you are tring to access a (nonexistent) menu when you
	press Alt-something. Don't do this for Alt-Space,
	though. (#107454, Martyn Russell)

	* gdk/win32/gdkcursor-win32.c: Minor spacing and debug print fixes.
This commit is contained in:
Tor Lillqvist 2003-03-13 00:57:14 +00:00 committed by Tor Lillqvist
parent 746d1cd9d4
commit 1e072f625c
7 changed files with 126 additions and 13 deletions

View File

@ -1,3 +1,22 @@
2003-03-13 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (gdk_pointer_grab): if a grab cursor
is used, must copy the HCURSOR with CopyCursor(), as it is OK to
destroy the GdkCursor after calling gdk_pointer_grab(). Set the
cursor right away with SetCursor(), as we won't get any
WM_SETCURSOR messages while the mouse is captured.
(gdk_display_pointer_ungrab): Correspondingly, destroy the copy
with DestroyCursor() when no longer used. (#108114, Allin Cottrell)
* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
WM_SYSCHAR, return FALSE from the window procedure to prevent the
DefWindowProc from being called. Otherwise Windows would beep,
thinking you are tring to access a (nonexistent) menu when you
press Alt-something. Don't do this for Alt-Space,
though. (#107454, Martyn Russell)
* gdk/win32/gdkcursor-win32.c: Minor spacing and debug print fixes.
Tue Mar 11 12:01:07 2003 Jonathan Blandford <jrb@gnome.org>
* gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift

View File

@ -1,3 +1,22 @@
2003-03-13 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (gdk_pointer_grab): if a grab cursor
is used, must copy the HCURSOR with CopyCursor(), as it is OK to
destroy the GdkCursor after calling gdk_pointer_grab(). Set the
cursor right away with SetCursor(), as we won't get any
WM_SETCURSOR messages while the mouse is captured.
(gdk_display_pointer_ungrab): Correspondingly, destroy the copy
with DestroyCursor() when no longer used. (#108114, Allin Cottrell)
* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
WM_SYSCHAR, return FALSE from the window procedure to prevent the
DefWindowProc from being called. Otherwise Windows would beep,
thinking you are tring to access a (nonexistent) menu when you
press Alt-something. Don't do this for Alt-Space,
though. (#107454, Martyn Russell)
* gdk/win32/gdkcursor-win32.c: Minor spacing and debug print fixes.
Tue Mar 11 12:01:07 2003 Jonathan Blandford <jrb@gnome.org>
* gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift

View File

@ -1,3 +1,22 @@
2003-03-13 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (gdk_pointer_grab): if a grab cursor
is used, must copy the HCURSOR with CopyCursor(), as it is OK to
destroy the GdkCursor after calling gdk_pointer_grab(). Set the
cursor right away with SetCursor(), as we won't get any
WM_SETCURSOR messages while the mouse is captured.
(gdk_display_pointer_ungrab): Correspondingly, destroy the copy
with DestroyCursor() when no longer used. (#108114, Allin Cottrell)
* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
WM_SYSCHAR, return FALSE from the window procedure to prevent the
DefWindowProc from being called. Otherwise Windows would beep,
thinking you are tring to access a (nonexistent) menu when you
press Alt-something. Don't do this for Alt-Space,
though. (#107454, Martyn Russell)
* gdk/win32/gdkcursor-win32.c: Minor spacing and debug print fixes.
Tue Mar 11 12:01:07 2003 Jonathan Blandford <jrb@gnome.org>
* gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift

View File

@ -1,3 +1,22 @@
2003-03-13 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (gdk_pointer_grab): if a grab cursor
is used, must copy the HCURSOR with CopyCursor(), as it is OK to
destroy the GdkCursor after calling gdk_pointer_grab(). Set the
cursor right away with SetCursor(), as we won't get any
WM_SETCURSOR messages while the mouse is captured.
(gdk_display_pointer_ungrab): Correspondingly, destroy the copy
with DestroyCursor() when no longer used. (#108114, Allin Cottrell)
* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
WM_SYSCHAR, return FALSE from the window procedure to prevent the
DefWindowProc from being called. Otherwise Windows would beep,
thinking you are tring to access a (nonexistent) menu when you
press Alt-something. Don't do this for Alt-Space,
though. (#107454, Martyn Russell)
* gdk/win32/gdkcursor-win32.c: Minor spacing and debug print fixes.
Tue Mar 11 12:01:07 2003 Jonathan Blandford <jrb@gnome.org>
* gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift

View File

@ -1,3 +1,22 @@
2003-03-13 Tor Lillqvist <tml@iki.fi>
* gdk/win32/gdkevents-win32.c (gdk_pointer_grab): if a grab cursor
is used, must copy the HCURSOR with CopyCursor(), as it is OK to
destroy the GdkCursor after calling gdk_pointer_grab(). Set the
cursor right away with SetCursor(), as we won't get any
WM_SETCURSOR messages while the mouse is captured.
(gdk_display_pointer_ungrab): Correspondingly, destroy the copy
with DestroyCursor() when no longer used. (#108114, Allin Cottrell)
* gdk/win32/gdkevents-win32.c (gdk_event_translate): On
WM_SYSCHAR, return FALSE from the window procedure to prevent the
DefWindowProc from being called. Otherwise Windows would beep,
thinking you are tring to access a (nonexistent) menu when you
press Alt-something. Don't do this for Alt-Space,
though. (#107454, Martyn Russell)
* gdk/win32/gdkcursor-win32.c: Minor spacing and debug print fixes.
Tue Mar 11 12:01:07 2003 Jonathan Blandford <jrb@gnome.org>
* gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift

View File

@ -96,10 +96,10 @@ gdk_cursor_new_for_display (GdkDisplay *display,
hcursor = _gdk_win32_data_to_wcursor (cursor_type);
if (hcursor == NULL)
g_warning ("gdk_cursor_new: no cursor %d found", cursor_type);
g_warning ("gdk_cursor_new_for_display: no cursor %d found", cursor_type);
else
GDK_NOTE (MISC, g_print ("gdk_cursor_new: %d: %#x\n",
cursor_type, (guint) hcursor));
GDK_NOTE (MISC, g_print ("gdk_cursor_new_for_display: %d: %p\n",
cursor_type, hcursor));
private = g_new (GdkCursorPrivate, 1);
private->hcursor = hcursor;
@ -268,12 +268,12 @@ gdk_cursor_new_from_pixmap (GdkPixmap *source,
and_mask, xor_mask);
GDK_NOTE (MISC, g_print ("gdk_cursor_new_from_pixmap: "
"%#x (%dx%d) %#x (%dx%d) = %#x (%dx%d)\n",
(guint) GDK_PIXMAP_HBITMAP (source),
"%p (%dx%d) %p (%dx%d) = %p (%dx%d)\n",
GDK_PIXMAP_HBITMAP (source),
source_impl->width, source_impl->height,
(guint) GDK_PIXMAP_HBITMAP (mask),
GDK_PIXMAP_HBITMAP (mask),
mask_impl->width, mask_impl->height,
(guint) hcursor, cursor_width, cursor_height));
hcursor, cursor_width, cursor_height));
g_free (xor_mask);
g_free (and_mask);
@ -295,11 +295,11 @@ _gdk_cursor_destroy (GdkCursor *cursor)
g_return_if_fail (cursor != NULL);
private = (GdkCursorPrivate *) cursor;
GDK_NOTE (MISC, g_print ("_gdk_cursor_destroy: %#x\n",
(cursor->type == GDK_CURSOR_IS_PIXMAP) ? (guint) private->hcursor : 0));
GDK_NOTE (MISC, g_print ("_gdk_cursor_destroy: %p\n",
(cursor->type == GDK_CURSOR_IS_PIXMAP) ? private->hcursor : 0));
if (GetCursor() == private->hcursor)
SetCursor(NULL);
if (GetCursor () == private->hcursor)
SetCursor (NULL);
if (!DestroyCursor (private->hcursor))
WIN32_API_FAILED ("DestroyCursor");

View File

@ -201,6 +201,7 @@ real_window_procedure (HWND hwnd,
return ret_val;
else
{
GDK_NOTE (EVENTS, g_print("calling DefWindowProc\n"));
#ifndef HAVE_DIMM_H
return DefWindowProc (hwnd, message, wparam, lparam);
#else
@ -529,8 +530,8 @@ gdk_pointer_grab (GdkWindow *window,
if (!cursor)
hcursor = NULL;
else
hcursor = cursor_private->hcursor;
else if ((hcursor = CopyCursor (cursor_private->hcursor)) == NULL)
WIN32_API_FAILED ("CopyCursor");
#if 0
return_val = _gdk_input_grab_pointer (window,
owner_events,
@ -564,6 +565,9 @@ gdk_pointer_grab (GdkWindow *window,
{
p_grab_window = window;
p_grab_cursor = hcursor;
if (p_grab_cursor != NULL)
SetCursor (p_grab_cursor);
}
return return_val;
@ -586,6 +590,13 @@ gdk_display_pointer_ungrab (GdkDisplay *display,
#endif
p_grab_window = NULL;
if (p_grab_cursor != NULL)
{
if (GetCursor () == p_grab_cursor)
SetCursor (NULL);
DestroyCursor (p_grab_cursor);
p_grab_cursor = NULL;
}
}
/*
@ -2427,6 +2438,13 @@ gdk_event_translate (GdkDisplay *display,
if (ignore_wm_char)
{
ignore_wm_char = FALSE;
if (msg->wParam != VK_SPACE && ret_val_flagp)
{
*ret_val_flagp = TRUE;
*ret_valp = FALSE;
}
break;
}