From aafd722b21622c73ab71d5895b444698bedc9eb9 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Thu, 26 Aug 1999 22:22:03 +0000 Subject: [PATCH] Win32: Philippe Colantoni suggests a way to get 1999-08-27 Tor Lillqvist Win32: Philippe Colantoni suggests a way to get window contents continually refreshed while resizing. I didn't like the effects myself, so it's not on by default. * gdk/win32/gdkprivate.h: New flag variable gdk_event_func_from_window_proc, FALSE by default. * gdk/win32/gdk.c (gdk_init_check): Set above flag if the environment variable GDK_EVENT_FUNC_FROM_WINDOW_PROC is set, or we are passed --gdk-event-func-from-window-proc. * gdk/win32/gdkevents.c (gdk_WindowProc): If above flag is set, and we have am event_func, call it instead of enqueing the event. --- ChangeLog | 16 ++++++++++++++++ ChangeLog.pre-2-0 | 16 ++++++++++++++++ ChangeLog.pre-2-10 | 16 ++++++++++++++++ ChangeLog.pre-2-2 | 16 ++++++++++++++++ ChangeLog.pre-2-4 | 16 ++++++++++++++++ ChangeLog.pre-2-6 | 16 ++++++++++++++++ ChangeLog.pre-2-8 | 16 ++++++++++++++++ gdk/win32/gdk.c | 8 ++++++++ gdk/win32/gdkevents-win32.c | 27 ++++++++++++++++++++++++--- gdk/win32/gdkevents.c | 27 ++++++++++++++++++++++++--- gdk/win32/gdkmain-win32.c | 8 ++++++++ gdk/win32/gdkprivate-win32.h | 1 + gdk/win32/gdkprivate.h | 1 + 13 files changed, 178 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8b895dc02f..168dd26aec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +1999-08-27 Tor Lillqvist + + Win32: Philippe Colantoni suggests a + way to get window contents continually refreshed while resizing. I + didn't like the effects myself, so it's not on by default. + + * gdk/win32/gdkprivate.h: New flag variable + gdk_event_func_from_window_proc, FALSE by default. + + * gdk/win32/gdk.c (gdk_init_check): Set above flag if the + environment variable GDK_EVENT_FUNC_FROM_WINDOW_PROC is set, or we + are passed --gdk-event-func-from-window-proc. + + * gdk/win32/gdkevents.c (gdk_WindowProc): If above flag is set, + and we have am event_func, call it instead of enqueing the event. + 1999-08-23 Tor Lillqvist * gdk/win32/gdkevents.c (gdk_event_translate): Fix from Simon diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 8b895dc02f..168dd26aec 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,19 @@ +1999-08-27 Tor Lillqvist + + Win32: Philippe Colantoni suggests a + way to get window contents continually refreshed while resizing. I + didn't like the effects myself, so it's not on by default. + + * gdk/win32/gdkprivate.h: New flag variable + gdk_event_func_from_window_proc, FALSE by default. + + * gdk/win32/gdk.c (gdk_init_check): Set above flag if the + environment variable GDK_EVENT_FUNC_FROM_WINDOW_PROC is set, or we + are passed --gdk-event-func-from-window-proc. + + * gdk/win32/gdkevents.c (gdk_WindowProc): If above flag is set, + and we have am event_func, call it instead of enqueing the event. + 1999-08-23 Tor Lillqvist * gdk/win32/gdkevents.c (gdk_event_translate): Fix from Simon diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 8b895dc02f..168dd26aec 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,19 @@ +1999-08-27 Tor Lillqvist + + Win32: Philippe Colantoni suggests a + way to get window contents continually refreshed while resizing. I + didn't like the effects myself, so it's not on by default. + + * gdk/win32/gdkprivate.h: New flag variable + gdk_event_func_from_window_proc, FALSE by default. + + * gdk/win32/gdk.c (gdk_init_check): Set above flag if the + environment variable GDK_EVENT_FUNC_FROM_WINDOW_PROC is set, or we + are passed --gdk-event-func-from-window-proc. + + * gdk/win32/gdkevents.c (gdk_WindowProc): If above flag is set, + and we have am event_func, call it instead of enqueing the event. + 1999-08-23 Tor Lillqvist * gdk/win32/gdkevents.c (gdk_event_translate): Fix from Simon diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 8b895dc02f..168dd26aec 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,19 @@ +1999-08-27 Tor Lillqvist + + Win32: Philippe Colantoni suggests a + way to get window contents continually refreshed while resizing. I + didn't like the effects myself, so it's not on by default. + + * gdk/win32/gdkprivate.h: New flag variable + gdk_event_func_from_window_proc, FALSE by default. + + * gdk/win32/gdk.c (gdk_init_check): Set above flag if the + environment variable GDK_EVENT_FUNC_FROM_WINDOW_PROC is set, or we + are passed --gdk-event-func-from-window-proc. + + * gdk/win32/gdkevents.c (gdk_WindowProc): If above flag is set, + and we have am event_func, call it instead of enqueing the event. + 1999-08-23 Tor Lillqvist * gdk/win32/gdkevents.c (gdk_event_translate): Fix from Simon diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 8b895dc02f..168dd26aec 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,19 @@ +1999-08-27 Tor Lillqvist + + Win32: Philippe Colantoni suggests a + way to get window contents continually refreshed while resizing. I + didn't like the effects myself, so it's not on by default. + + * gdk/win32/gdkprivate.h: New flag variable + gdk_event_func_from_window_proc, FALSE by default. + + * gdk/win32/gdk.c (gdk_init_check): Set above flag if the + environment variable GDK_EVENT_FUNC_FROM_WINDOW_PROC is set, or we + are passed --gdk-event-func-from-window-proc. + + * gdk/win32/gdkevents.c (gdk_WindowProc): If above flag is set, + and we have am event_func, call it instead of enqueing the event. + 1999-08-23 Tor Lillqvist * gdk/win32/gdkevents.c (gdk_event_translate): Fix from Simon diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 8b895dc02f..168dd26aec 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,19 @@ +1999-08-27 Tor Lillqvist + + Win32: Philippe Colantoni suggests a + way to get window contents continually refreshed while resizing. I + didn't like the effects myself, so it's not on by default. + + * gdk/win32/gdkprivate.h: New flag variable + gdk_event_func_from_window_proc, FALSE by default. + + * gdk/win32/gdk.c (gdk_init_check): Set above flag if the + environment variable GDK_EVENT_FUNC_FROM_WINDOW_PROC is set, or we + are passed --gdk-event-func-from-window-proc. + + * gdk/win32/gdkevents.c (gdk_WindowProc): If above flag is set, + and we have am event_func, call it instead of enqueing the event. + 1999-08-23 Tor Lillqvist * gdk/win32/gdkevents.c (gdk_event_translate): Fix from Simon diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 8b895dc02f..168dd26aec 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,19 @@ +1999-08-27 Tor Lillqvist + + Win32: Philippe Colantoni suggests a + way to get window contents continually refreshed while resizing. I + didn't like the effects myself, so it's not on by default. + + * gdk/win32/gdkprivate.h: New flag variable + gdk_event_func_from_window_proc, FALSE by default. + + * gdk/win32/gdk.c (gdk_init_check): Set above flag if the + environment variable GDK_EVENT_FUNC_FROM_WINDOW_PROC is set, or we + are passed --gdk-event-func-from-window-proc. + + * gdk/win32/gdkevents.c (gdk_WindowProc): If above flag is set, + and we have am event_func, call it instead of enqueing the event. + 1999-08-23 Tor Lillqvist * gdk/win32/gdkevents.c (gdk_event_translate): Fix from Simon diff --git a/gdk/win32/gdk.c b/gdk/win32/gdk.c index 78a64e25c1..d9d2dde820 100644 --- a/gdk/win32/gdk.c +++ b/gdk/win32/gdk.c @@ -136,6 +136,9 @@ gdk_init_check (int *argc, if (getenv ("GDK_IGNORE_WINTAB") != NULL) gdk_input_ignore_wintab = TRUE; + if (getenv ("GDK_EVENT_FUNC_FROM_WINDOW_PROC") != NULL) + gdk_event_func_from_window_proc = TRUE; + if (argc && argv) { if (*argc > 0) @@ -216,6 +219,11 @@ gdk_init_check (int *argc, (*argv)[i] = NULL; gdk_input_ignore_wintab = TRUE; } + else if (strcmp ("--gdk-event-func-from-window-proc", (*argv)[i]) == 0) + { + (*argv)[i] = NULL; + gdk_event_func_from_window_proc = TRUE; + } i += 1; } diff --git a/gdk/win32/gdkevents-win32.c b/gdk/win32/gdkevents-win32.c index 627532fb85..6e5a876a5a 100644 --- a/gdk/win32/gdkevents-win32.c +++ b/gdk/win32/gdkevents-win32.c @@ -47,6 +47,8 @@ typedef struct _GdkEventPrivate GdkEventPrivate; #define DOUBLE_CLICK_DIST 5 #define TRIPLE_CLICK_DIST 5 +gint gdk_event_func_from_window_proc = FALSE; + typedef enum { /* Following flag is set for events on the event queue during @@ -201,11 +203,30 @@ gdk_WindowProc(HWND hwnd, eventp = gdk_event_new (); *eventp = event; - gdk_event_queue_append (eventp); + /* Philippe Colantoni suggests this + * in order to handle events while opaque resizing neatly. I + * don't want it as default. Set the + * GDK_EVENT_FUNC_FROM_WINDOW_PROC env var to get this + * behaviour. + */ + if (gdk_event_func_from_window_proc && event_func) + { + GDK_THREADS_ENTER (); + + (*event_func) (eventp, event_data); + gdk_event_free (eventp); + + GDK_THREADS_LEAVE (); + } + else + { + gdk_event_queue_append (eventp); #if 1 - /* Wake up WaitMessage */ - PostMessage (NULL, gdk_ping_msg, 0, 0); + /* Wake up WaitMessage */ + PostMessage (NULL, gdk_ping_msg, 0, 0); #endif + } + if (ret_val_flag) return ret_val; else diff --git a/gdk/win32/gdkevents.c b/gdk/win32/gdkevents.c index 627532fb85..6e5a876a5a 100644 --- a/gdk/win32/gdkevents.c +++ b/gdk/win32/gdkevents.c @@ -47,6 +47,8 @@ typedef struct _GdkEventPrivate GdkEventPrivate; #define DOUBLE_CLICK_DIST 5 #define TRIPLE_CLICK_DIST 5 +gint gdk_event_func_from_window_proc = FALSE; + typedef enum { /* Following flag is set for events on the event queue during @@ -201,11 +203,30 @@ gdk_WindowProc(HWND hwnd, eventp = gdk_event_new (); *eventp = event; - gdk_event_queue_append (eventp); + /* Philippe Colantoni suggests this + * in order to handle events while opaque resizing neatly. I + * don't want it as default. Set the + * GDK_EVENT_FUNC_FROM_WINDOW_PROC env var to get this + * behaviour. + */ + if (gdk_event_func_from_window_proc && event_func) + { + GDK_THREADS_ENTER (); + + (*event_func) (eventp, event_data); + gdk_event_free (eventp); + + GDK_THREADS_LEAVE (); + } + else + { + gdk_event_queue_append (eventp); #if 1 - /* Wake up WaitMessage */ - PostMessage (NULL, gdk_ping_msg, 0, 0); + /* Wake up WaitMessage */ + PostMessage (NULL, gdk_ping_msg, 0, 0); #endif + } + if (ret_val_flag) return ret_val; else diff --git a/gdk/win32/gdkmain-win32.c b/gdk/win32/gdkmain-win32.c index 78a64e25c1..d9d2dde820 100644 --- a/gdk/win32/gdkmain-win32.c +++ b/gdk/win32/gdkmain-win32.c @@ -136,6 +136,9 @@ gdk_init_check (int *argc, if (getenv ("GDK_IGNORE_WINTAB") != NULL) gdk_input_ignore_wintab = TRUE; + if (getenv ("GDK_EVENT_FUNC_FROM_WINDOW_PROC") != NULL) + gdk_event_func_from_window_proc = TRUE; + if (argc && argv) { if (*argc > 0) @@ -216,6 +219,11 @@ gdk_init_check (int *argc, (*argv)[i] = NULL; gdk_input_ignore_wintab = TRUE; } + else if (strcmp ("--gdk-event-func-from-window-proc", (*argv)[i]) == 0) + { + (*argv)[i] = NULL; + gdk_event_func_from_window_proc = TRUE; + } i += 1; } diff --git a/gdk/win32/gdkprivate-win32.h b/gdk/win32/gdkprivate-win32.h index 20b301bf42..80217a0de2 100644 --- a/gdk/win32/gdkprivate-win32.h +++ b/gdk/win32/gdkprivate-win32.h @@ -388,6 +388,7 @@ GDKVAR gint gdk_error_code; GDKVAR gint gdk_error_warnings; GDKVAR gint gdk_null_window_warnings; extern GList *gdk_default_filters; +extern gint gdk_event_func_from_window_proc; #ifdef USE_XIM /* XIM support */ diff --git a/gdk/win32/gdkprivate.h b/gdk/win32/gdkprivate.h index 20b301bf42..80217a0de2 100644 --- a/gdk/win32/gdkprivate.h +++ b/gdk/win32/gdkprivate.h @@ -388,6 +388,7 @@ GDKVAR gint gdk_error_code; GDKVAR gint gdk_error_warnings; GDKVAR gint gdk_null_window_warnings; extern GList *gdk_default_filters; +extern gint gdk_event_func_from_window_proc; #ifdef USE_XIM /* XIM support */