forked from AuroraMiddleware/gtk
Bug 153567 – Repaint glitches in widgets
2008-07-21 Cody Russell <bratsche@gnome.org> Bug 153567 – Repaint glitches in widgets * gdk/win32/gdkevents-win32.c: Set a sync timer when we receive WM_SYNCPAINT, and RedrawWindow() once the timer expires. svn path=/trunk/; revision=20881
This commit is contained in:
parent
b06c30bb51
commit
c8fef535b2
@ -1,3 +1,11 @@
|
||||
2008-07-21 Cody Russell <bratsche@gnome.org>
|
||||
|
||||
Bug 153567 – Repaint glitches in widgets
|
||||
|
||||
* gdk/win32/gdkevents-win32.c: Set a sync timer when
|
||||
we receive WM_SYNCPAINT, and RedrawWindow() once
|
||||
the timer expires.
|
||||
|
||||
2008-07-21 Michael Natterer <mitch@imendio.com>
|
||||
|
||||
* gtk/gtktoolbar.c (gtk_toolbar_class_init): use the simpler
|
||||
|
@ -139,6 +139,7 @@ static HKL latin_locale = NULL;
|
||||
|
||||
static gboolean in_ime_composition = FALSE;
|
||||
static UINT modal_timer;
|
||||
static UINT sync_timer = 0;
|
||||
|
||||
static int debug_indent = 0;
|
||||
|
||||
@ -2031,14 +2032,31 @@ handle_stuff_while_moving_or_resizing (void)
|
||||
|
||||
static VOID CALLBACK
|
||||
modal_timer_proc (HWND hwnd,
|
||||
UINT msg,
|
||||
UINT id,
|
||||
DWORD time)
|
||||
UINT msg,
|
||||
UINT id,
|
||||
DWORD time)
|
||||
{
|
||||
if (_sizemove_in_progress)
|
||||
handle_stuff_while_moving_or_resizing ();
|
||||
}
|
||||
|
||||
static VOID CALLBACK
|
||||
sync_timer_proc (HWND hwnd,
|
||||
UINT msg,
|
||||
UINT id,
|
||||
DWORD time)
|
||||
{
|
||||
MSG message;
|
||||
if (PeekMessageW (&message, hwnd, WM_PAINT, WM_PAINT, PM_REMOVE))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
RedrawWindow (hwnd, NULL, NULL, RDW_INVALIDATE|RDW_UPDATENOW|RDW_ALLCHILDREN);
|
||||
|
||||
KillTimer (hwnd, sync_timer);
|
||||
}
|
||||
|
||||
static void
|
||||
handle_display_change (void)
|
||||
{
|
||||
@ -2824,6 +2842,13 @@ gdk_event_translate (MSG *msg,
|
||||
*ret_valp = 1;
|
||||
break;
|
||||
|
||||
case WM_SYNCPAINT:
|
||||
|
||||
sync_timer = SetTimer (GDK_WINDOW_HWND (window),
|
||||
1,
|
||||
200, sync_timer_proc);
|
||||
break;
|
||||
|
||||
case WM_PAINT:
|
||||
handle_wm_paint (msg, window, FALSE, NULL);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user