diff --git a/ChangeLog b/ChangeLog index 2e5eb08c2c..747bdf75e4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2003-03-13 Tor Lillqvist + + * 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 * gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 2e5eb08c2c..747bdf75e4 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,22 @@ +2003-03-13 Tor Lillqvist + + * 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 * gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 2e5eb08c2c..747bdf75e4 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,22 @@ +2003-03-13 Tor Lillqvist + + * 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 * gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 2e5eb08c2c..747bdf75e4 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,22 @@ +2003-03-13 Tor Lillqvist + + * 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 * gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 2e5eb08c2c..747bdf75e4 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,22 @@ +2003-03-13 Tor Lillqvist + + * 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 * gtk/gtktreeview.c (gtk_tree_view_class_init): Ctrl/Shift diff --git a/gdk/win32/gdkcursor-win32.c b/gdk/win32/gdkcursor-win32.c index c4918a5f52..1ddb1046e4 100644 --- a/gdk/win32/gdkcursor-win32.c +++ b/gdk/win32/gdkcursor-win32.c @@ -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"); diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 8b4879b3ef..eded08349c 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -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; }