Consistenly use assign_object() when assigning GdkWindow pointers so that
2006-02-08 Tor Lillqvist <tml@novell.com> * gdk/win32/gdkevents-win32.c (gdk_pointer_grab) (gdk_display_pointer_ungrab, gdk_keyboard_grab) (gdk_display_keyboard_ungrab): Consistenly use assign_object() when assigning GdkWindow pointers so that the ref counting doesn't get off whack. (handle_stuff_while_moving_or_resizing): Don't use deprecated API. (gdk_event_translate) <WM_MOUSEMOVE>: When the pointer is grabbed with owner_events FALSE, generate enter and leave events only for the grab window. (#321054)
This commit is contained in:
committed by
Tor Lillqvist
parent
a25bc9a0b7
commit
746a5c36a5
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
|||||||
|
2006-02-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
|
* gdk/win32/gdkevents-win32.c (gdk_pointer_grab)
|
||||||
|
(gdk_display_pointer_ungrab, gdk_keyboard_grab)
|
||||||
|
(gdk_display_keyboard_ungrab): Consistenly use assign_object()
|
||||||
|
when assigning GdkWindow pointers so that the ref counting doesn't
|
||||||
|
get off whack.
|
||||||
|
|
||||||
|
(handle_stuff_while_moving_or_resizing): Don't use deprecated API.
|
||||||
|
|
||||||
|
(gdk_event_translate) <WM_MOUSEMOVE>: When the pointer is grabbed
|
||||||
|
with owner_events FALSE, generate enter and leave events only for
|
||||||
|
the grab window. (#321054)
|
||||||
|
|
||||||
2006-02-08 Kristian Rietveld <kris@imendio.com>
|
2006-02-08 Kristian Rietveld <kris@imendio.com>
|
||||||
|
|
||||||
* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_ref_path),
|
* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_ref_path),
|
||||||
|
|||||||
@ -1,3 +1,17 @@
|
|||||||
|
2006-02-08 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
|
* gdk/win32/gdkevents-win32.c (gdk_pointer_grab)
|
||||||
|
(gdk_display_pointer_ungrab, gdk_keyboard_grab)
|
||||||
|
(gdk_display_keyboard_ungrab): Consistenly use assign_object()
|
||||||
|
when assigning GdkWindow pointers so that the ref counting doesn't
|
||||||
|
get off whack.
|
||||||
|
|
||||||
|
(handle_stuff_while_moving_or_resizing): Don't use deprecated API.
|
||||||
|
|
||||||
|
(gdk_event_translate) <WM_MOUSEMOVE>: When the pointer is grabbed
|
||||||
|
with owner_events FALSE, generate enter and leave events only for
|
||||||
|
the grab window. (#321054)
|
||||||
|
|
||||||
2006-02-08 Kristian Rietveld <kris@imendio.com>
|
2006-02-08 Kristian Rietveld <kris@imendio.com>
|
||||||
|
|
||||||
* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_ref_path),
|
* gtk/gtktreemodelfilter.c (gtk_tree_model_filter_ref_path),
|
||||||
|
|||||||
@ -585,7 +585,7 @@ gdk_pointer_grab (GdkWindow *window,
|
|||||||
if (p_grab_window != NULL && p_grab_window != window)
|
if (p_grab_window != NULL && p_grab_window != window)
|
||||||
generate_grab_broken_event (p_grab_window, FALSE, window);
|
generate_grab_broken_event (p_grab_window, FALSE, window);
|
||||||
|
|
||||||
p_grab_window = window;
|
assign_object (&p_grab_window, window);
|
||||||
|
|
||||||
if (p_grab_cursor != NULL)
|
if (p_grab_cursor != NULL)
|
||||||
{
|
{
|
||||||
@ -642,7 +642,7 @@ gdk_display_pointer_ungrab (GdkDisplay *display,
|
|||||||
|
|
||||||
/* FIXME: Generate GDK_CROSSING_UNGRAB events */
|
/* FIXME: Generate GDK_CROSSING_UNGRAB events */
|
||||||
|
|
||||||
p_grab_window = NULL;
|
assign_object (&p_grab_window, NULL);
|
||||||
if (p_grab_cursor != NULL)
|
if (p_grab_cursor != NULL)
|
||||||
{
|
{
|
||||||
if (GetCursor () == p_grab_cursor)
|
if (GetCursor () == p_grab_cursor)
|
||||||
@ -759,7 +759,7 @@ gdk_keyboard_grab (GdkWindow *window,
|
|||||||
if (k_grab_window != NULL && k_grab_window != window)
|
if (k_grab_window != NULL && k_grab_window != window)
|
||||||
generate_grab_broken_event (k_grab_window, TRUE, window);
|
generate_grab_broken_event (k_grab_window, TRUE, window);
|
||||||
|
|
||||||
k_grab_window = window;
|
assign_object (&k_grab_window, window);
|
||||||
|
|
||||||
if (!k_grab_owner_events)
|
if (!k_grab_owner_events)
|
||||||
{
|
{
|
||||||
@ -824,7 +824,7 @@ gdk_display_keyboard_ungrab (GdkDisplay *display,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
k_grab_window = NULL;
|
assign_object (&k_grab_window, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
gboolean
|
gboolean
|
||||||
@ -2132,8 +2132,8 @@ static void
|
|||||||
handle_stuff_while_moving_or_resizing (void)
|
handle_stuff_while_moving_or_resizing (void)
|
||||||
{
|
{
|
||||||
int arbitrary_limit = 1;
|
int arbitrary_limit = 1;
|
||||||
while (g_main_pending () && arbitrary_limit--)
|
while (g_main_context_pending (NULL) && arbitrary_limit--)
|
||||||
g_main_iteration (FALSE);
|
g_main_context_iteration (NULL, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID CALLBACK
|
static VOID CALLBACK
|
||||||
@ -2749,7 +2749,22 @@ gdk_event_translate (MSG *msg,
|
|||||||
GdkWindow *real_window = find_real_window_for_grabbed_mouse_event (window, msg);
|
GdkWindow *real_window = find_real_window_for_grabbed_mouse_event (window, msg);
|
||||||
|
|
||||||
if (real_window != current_window)
|
if (real_window != current_window)
|
||||||
synthesize_crossing_events (real_window, GDK_CROSSING_NORMAL, msg);
|
{
|
||||||
|
if (p_grab_owner_events)
|
||||||
|
{
|
||||||
|
synthesize_crossing_events (real_window, GDK_CROSSING_NORMAL, msg);
|
||||||
|
}
|
||||||
|
else if (current_window == p_grab_window)
|
||||||
|
{
|
||||||
|
synthesize_leave_event (p_grab_window, msg, GDK_CROSSING_NORMAL, GDK_NOTIFY_ANCESTOR);
|
||||||
|
assign_object (¤t_window, _gdk_root);
|
||||||
|
}
|
||||||
|
else if (real_window == p_grab_window)
|
||||||
|
{
|
||||||
|
synthesize_enter_event (p_grab_window, msg, GDK_CROSSING_NORMAL, GDK_NOTIFY_ANCESTOR);
|
||||||
|
assign_object (¤t_window, p_grab_window);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user