Module: wine Branch: master Commit: 1cfdc5185a86934b634674e7ff4654b4367aedca URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=1cfdc5185a86934b634674e7...
Author: James Hawkins truiken@gmail.com Date: Thu Aug 31 13:43:01 2006 -0700
msi: Store and use the center point of the dialog window in between dialogs.
---
dlls/msi/dialog.c | 31 +++++++++++++++++++++++++++---- dlls/msi/msipriv.h | 2 ++ 2 files changed, 29 insertions(+), 4 deletions(-)
diff --git a/dlls/msi/dialog.c b/dlls/msi/dialog.c index 824db78..6785e77 100644 --- a/dlls/msi/dialog.c +++ b/dlls/msi/dialog.c @@ -86,6 +86,7 @@ struct msi_dialog_tag BOOL finished; INT scale; DWORD attributes; + SIZE size; HWND hwnd; LPWSTR default_font; msi_font *font_list; @@ -2373,10 +2374,27 @@ static void msi_dialog_adjust_dialog_pos center.y = MulDiv( center.y, yres, 100 );
/* turn the client pos into the window rectangle */ - pos->left = center.x - sz.cx/2; - pos->right = pos->left + sz.cx; - pos->top = center.y - sz.cy/2; - pos->bottom = pos->top + sz.cy; + if (dialog->package->center_x && dialog->package->center_y) + { + pos->left = dialog->package->center_x - sz.cx / 2.0; + pos->right = pos->left + sz.cx; + pos->top = dialog->package->center_y - sz.cy / 2.0; + pos->bottom = pos->top + sz.cy; + } + else + { + pos->left = center.x - sz.cx/2; + pos->right = pos->left + sz.cx; + pos->top = center.y - sz.cy/2; + pos->bottom = pos->top + sz.cy; + + /* save the center */ + dialog->package->center_x = center.x; + dialog->package->center_y = center.y; + } + + dialog->size.cx = sz.cx; + dialog->size.cy = sz.cy;
TRACE("%lu %lu %lu %lu\n", pos->left, pos->top, pos->right, pos->bottom);
@@ -2709,6 +2727,11 @@ static LRESULT WINAPI MSIDialog_WndProc(
switch (msg) { + case WM_MOVE: + dialog->package->center_x = LOWORD(lParam) + dialog->size.cx / 2.0; + dialog->package->center_y = HIWORD(lParam) + dialog->size.cy / 2.0; + break; + case WM_CREATE: return msi_dialog_oncreate( hwnd, (LPCREATESTRUCTW)lParam );
diff --git a/dlls/msi/msipriv.h b/dlls/msi/msipriv.h index 8db0074..9a9b8b4 100644 --- a/dlls/msi/msipriv.h +++ b/dlls/msi/msipriv.h @@ -231,6 +231,8 @@ typedef struct tagMSIPACKAGE UINT CurrentInstallState; msi_dialog *dialog; LPWSTR next_dialog; + float center_x; + float center_y;
UINT WordCount;