[PATCH v2 3/8] user32: Use flags in set_active_window instead of BOOL params.

Rémi Bernon rbernon at codeweavers.com
Thu Oct 1 05:19:59 CDT 2020


Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/user32/focus.c        | 20 ++++++++++----------
 dlls/user32/user_private.h |  6 ++++++
 2 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/dlls/user32/focus.c b/dlls/user32/focus.c
index 4c18238a98b..d5add0ab197 100644
--- a/dlls/user32/focus.c
+++ b/dlls/user32/focus.c
@@ -71,10 +71,10 @@ static HWND set_focus_window( HWND hwnd )
 /*******************************************************************
  *		set_active_window
  */
-static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
+static BOOL set_active_window( HWND hwnd, HWND *prev, UINT flags )
 {
     HWND previous = GetActiveWindow();
-    BOOL ret;
+    BOOL ret, mouse = (flags & SET_ACTIVE_WINDOW_FLAGS_MOUSE);
     DWORD old_thread, new_thread;
     CBTACTIVATESTRUCT cbt;
 
@@ -156,7 +156,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
     }
 
     /* now change focus if necessary */
-    if (focus)
+    if (flags & SET_ACTIVE_WINDOW_FLAGS_FOCUS)
     {
         GUITHREADINFO info;
 
@@ -177,7 +177,7 @@ static BOOL set_active_window( HWND hwnd, HWND *prev, BOOL mouse, BOOL focus )
 /*******************************************************************
  *		set_foreground_window
  */
-static BOOL set_foreground_window( HWND hwnd, BOOL mouse )
+static BOOL set_foreground_window( HWND hwnd, UINT flags )
 {
     BOOL ret, send_msg_old = FALSE, send_msg_new = FALSE;
     HWND previous = 0;
@@ -199,12 +199,12 @@ static BOOL set_foreground_window( HWND hwnd, BOOL mouse )
         if (send_msg_old)  /* old window belongs to other thread */
             SendNotifyMessageW( previous, WM_WINE_SETACTIVEWINDOW, 0, 0 );
         else if (send_msg_new)  /* old window belongs to us but new one to other thread */
-            ret = set_active_window( 0, NULL, mouse, TRUE );
+            ret = set_active_window( 0, NULL, flags|SET_ACTIVE_WINDOW_FLAGS_FOCUS );
 
         if (send_msg_new)  /* new window belongs to other thread */
             SendNotifyMessageW( hwnd, WM_WINE_SETACTIVEWINDOW, (WPARAM)hwnd, 0 );
         else  /* new window belongs to us */
-            ret = set_active_window( hwnd, NULL, mouse, TRUE );
+            ret = set_active_window( hwnd, NULL, flags|SET_ACTIVE_WINDOW_FLAGS_FOCUS );
     }
     return ret;
 }
@@ -217,7 +217,7 @@ static BOOL set_foreground_window( HWND hwnd, BOOL mouse )
  */
 BOOL FOCUS_MouseActivate( HWND hwnd )
 {
-    return set_foreground_window( hwnd, TRUE );
+    return set_foreground_window( hwnd, SET_ACTIVE_WINDOW_FLAGS_MOUSE );
 }
 
 
@@ -246,7 +246,7 @@ HWND WINAPI SetActiveWindow( HWND hwnd )
             return GetActiveWindow();  /* Windows doesn't seem to return an error here */
     }
 
-    if (!set_active_window( hwnd, &prev, FALSE, TRUE )) return 0;
+    if (!set_active_window( hwnd, &prev, SET_ACTIVE_WINDOW_FLAGS_FOCUS )) return 0;
     return prev;
 }
 
@@ -293,7 +293,7 @@ HWND WINAPI SetFocus( HWND hwnd )
         /* activate hwndTop if needed. */
         if (hwndTop != GetActiveWindow())
         {
-            if (!set_active_window( hwndTop, NULL, FALSE, FALSE )) return 0;
+            if (!set_active_window( hwndTop, NULL, 0 )) return 0;
             if (!IsWindow( hwnd )) return 0;  /* Abort if window destroyed */
 
             /* Do not change focus if the window is no longer active */
@@ -319,7 +319,7 @@ BOOL WINAPI SetForegroundWindow( HWND hwnd )
     TRACE( "%p\n", hwnd );
 
     hwnd = WIN_GetFullHandle( hwnd );
-    return set_foreground_window( hwnd, FALSE );
+    return set_foreground_window( hwnd, 0 );
 }
 
 
diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h
index 7761a1ceb4f..193fde53307 100644
--- a/dlls/user32/user_private.h
+++ b/dlls/user32/user_private.h
@@ -60,6 +60,12 @@ enum wine_internal_message
     WM_WINE_LAST_DRIVER_MSG = 0x80001fff
 };
 
+enum set_active_window_flags
+{
+    SET_ACTIVE_WINDOW_FLAGS_MOUSE = 1,
+    SET_ACTIVE_WINDOW_FLAGS_FOCUS = 2,
+};
+
 typedef struct tagUSER_DRIVER {
     /* keyboard functions */
     HKL    (CDECL *pActivateKeyboardLayout)(HKL, UINT);
-- 
2.28.0




More information about the wine-devel mailing list