msi: fix tab order

Dan Kegel dank at kegel.com
Sat May 24 19:10:52 CDT 2008


When you press Tab in an msi dialog, focus moves the wrong way.
You can confirm the correct tab order by viewing the msi
file in Orca and looking at the Dialog and Control tables.

It seems that tab order in user32 is equal to z order,
and SetWindowPos() is the function used to control both.
Our msi currently seems to get the first two args backwards;
reversing them fixes http://bugs.winehq.org/show_bug.cgi?id=10147
and at least superficially makes more sense.

diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c
index 0e5799f..d7114f9 100644
--- a/dlls/msi/dialog.c
+++ b/dlls/msi/dialog.c
@@ -2988,7 +2988,7 @@ static void msi_dialog_adjust_dialog_pos(
msi_dialog *dialog, MSIRECORD *rec, LP

 static BOOL msi_control_set_next( msi_control *control, msi_control *next )
 {
-    return SetWindowPos( next->hwnd, control->hwnd, 0, 0, 0, 0,
+    return SetWindowPos( control->hwnd, next->hwnd, 0, 0, 0, 0,
                          SWP_NOMOVE | SWP_NOOWNERZORDER | SWP_NOREDRAW |
                          SWP_NOREPOSITION | SWP_NOSENDCHANGING | SWP_NOSIZE );
 }



More information about the wine-patches mailing list