From 851ebece4a4fe2d317950ef4944e65be6ab5dd63 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Mon, 5 Sep 2005 21:04:10 +0000 Subject: [PATCH] =?UTF-8?q?Sync=20to=20Wine-20050830:=20Michael=20Jung=20=20-=20Check=20the=20GetPidlFromDataO?= =?UTF-8?q?bject's=20doSelected=20parameter=20before=20calling=20=20=20a?= =?UTF-8?q?=20method=20on=20it.=20Alexandre=20Julliard=20=20-=20Replace=20the=20=5FICOM=5FTHIS=5FFrom=20macros=20by?= =?UTF-8?q?=20inline=20functions=20the=20way=20it's=20=20=20already=20done?= =?UTF-8?q?=20in=20shelllink.c.=20Vincent=20B=C3=A9ron=20=20-=20Uniformize=20DllMain=20TRACEing=20across=20d?= =?UTF-8?q?lls.=20Vitaly=20Lipatov=20=20-=20Restore=20pap?= =?UTF-8?q?er=20orientation=20when=20pagesetupdlg=20is=20initializing.=20T?= =?UTF-8?q?roy=20Rollo=20=20-=20Browse=20to=20the=20?= =?UTF-8?q?directory=20if=20a=20directory=20name=20is=20typed=20into=20the?= =?UTF-8?q?=20edit=20box=20=20=20of=20a=20file=20dialog=20and=20the=20conf?= =?UTF-8?q?irmation=20button=20(or=20Enter=20key)=20is=20hit.=20=20=20Retu?= =?UTF-8?q?rn=20any=20file=20name=20in=20the=20edit=20box=20if=20OFN=5FNOV?= =?UTF-8?q?ALIDATE=20is=20set=20and=20=20=20OFN=5FFILEMUSTEXIST=20is=20not?= =?UTF-8?q?,=20even=20if=20that=20file=20name=20includes=20a=20path=20name?= =?UTF-8?q?=20=20=20or=20is=20the=20name=20of=20a=20folder.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit svn path=/trunk/; revision=17666 --- reactos/lib/comdlg32/cdlg32.c | 2 +- reactos/lib/comdlg32/comdlg32.spec | 50 ++++++------- reactos/lib/comdlg32/filedlg.c | 104 ++++++++++++++------------ reactos/lib/comdlg32/filedlgbrowser.c | 46 +++++++----- reactos/lib/comdlg32/filedlgbrowser.h | 5 -- reactos/lib/comdlg32/printdlg.c | 19 +++-- 6 files changed, 123 insertions(+), 103 deletions(-) diff --git a/reactos/lib/comdlg32/cdlg32.c b/reactos/lib/comdlg32/cdlg32.c index f52c6f6965a..1355ece8d63 100644 --- a/reactos/lib/comdlg32/cdlg32.c +++ b/reactos/lib/comdlg32/cdlg32.c @@ -73,7 +73,7 @@ static const char * GPA_string = "Failed to get entry point %s for hinst = 0x%08 BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD Reason, LPVOID Reserved) { - TRACE("(%p, %08lx, %p)\n", hInstance, Reason, Reserved); + TRACE("(%p, %ld, %p)\n", hInstance, Reason, Reserved); switch(Reason) { diff --git a/reactos/lib/comdlg32/comdlg32.spec b/reactos/lib/comdlg32/comdlg32.spec index 3d523dea805..618ccd00266 100644 --- a/reactos/lib/comdlg32/comdlg32.spec +++ b/reactos/lib/comdlg32/comdlg32.spec @@ -1,25 +1,25 @@ -@ stdcall ChooseColorA(ptr) -@ stdcall ChooseColorW(ptr) -@ stdcall ChooseFontA(ptr) -@ stdcall ChooseFontW(ptr) -@ stdcall CommDlgExtendedError() -@ stdcall FindTextA(ptr) -@ stdcall FindTextW(ptr) -@ stdcall GetFileTitleA(str ptr long) -@ stdcall GetFileTitleW(wstr ptr long) -@ stdcall GetOpenFileNameA(ptr) -@ stdcall GetOpenFileNameW(ptr) -@ stdcall GetSaveFileNameA(ptr) -@ stdcall GetSaveFileNameW(ptr) -@ stub LoadAlterBitmap -@ stdcall PageSetupDlgA(ptr) -@ stdcall PageSetupDlgW(ptr) -@ stdcall PrintDlgA(ptr) -@ stdcall PrintDlgExA(ptr) -@ stdcall PrintDlgExW(ptr) -@ stdcall PrintDlgW(ptr) -@ stdcall ReplaceTextA(ptr) -@ stdcall ReplaceTextW(ptr) -@ stub WantArrows -@ stub dwLBSubclass -@ stub dwOKSubclass +@ stdcall ChooseColorA(ptr) +@ stdcall ChooseColorW(ptr) +@ stdcall ChooseFontA(ptr) +@ stdcall ChooseFontW(ptr) +@ stdcall CommDlgExtendedError() +@ stdcall FindTextA(ptr) +@ stdcall FindTextW(ptr) +@ stdcall GetFileTitleA(str ptr long) +@ stdcall GetFileTitleW(wstr ptr long) +@ stdcall GetOpenFileNameA(ptr) +@ stdcall GetOpenFileNameW(ptr) +@ stdcall GetSaveFileNameA(ptr) +@ stdcall GetSaveFileNameW(ptr) +@ stub LoadAlterBitmap +@ stdcall PageSetupDlgA(ptr) +@ stdcall PageSetupDlgW(ptr) +@ stdcall PrintDlgA(ptr) +@ stdcall PrintDlgExA(ptr) +@ stdcall PrintDlgExW(ptr) +@ stdcall PrintDlgW(ptr) +@ stdcall ReplaceTextA(ptr) +@ stdcall ReplaceTextW(ptr) +@ stub WantArrows +@ stub dwLBSubclass +@ stub dwOKSubclass diff --git a/reactos/lib/comdlg32/filedlg.c b/reactos/lib/comdlg32/filedlg.c index 3a727de9582..8b2ac817ac6 100644 --- a/reactos/lib/comdlg32/filedlg.c +++ b/reactos/lib/comdlg32/filedlg.c @@ -1711,8 +1711,9 @@ BOOL FILEDLG95_OnOpenMultipleFiles(HWND hwnd, LPWSTR lpstrFileList, UINT nFileCo * * If the function succeeds, the return value is nonzero. */ -#define ONOPEN_OPEN 1 -#define ONOPEN_SEARCH 2 +#define ONOPEN_BROWSE 1 +#define ONOPEN_OPEN 2 +#define ONOPEN_SEARCH 3 static void FILEDLG95_OnOpenMessage(HWND hwnd, int idCaption, int idText) { WCHAR strMsgTitle[MAX_PATH]; @@ -1739,15 +1740,15 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) TRACE("hwnd=%p\n", hwnd); - if(BrowseSelectedFolder(hwnd)) - return FALSE; - /* get the files from the edit control */ nFileCount = FILEDLG95_FILENAME_GetFileNames(hwnd, &lpstrFileList, &sizeUsed, '\0'); /* try if the user selected a folder in the shellview */ if(nFileCount == 0) + { + BrowseSelectedFolder(hwnd); return FALSE; + } if(nFileCount > 1) { @@ -1808,7 +1809,12 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) lpstrPathAndFile: cleaned up path */ - nOpenAction = ONOPEN_OPEN; + if (nFileCount && + (fodInfos->ofnInfos->Flags & OFN_NOVALIDATE) && + !(fodInfos->ofnInfos->Flags & OFN_FILEMUSTEXIST)) + nOpenAction = ONOPEN_OPEN; + else + nOpenAction = ONOPEN_BROWSE; /* don't apply any checks with OFN_NOVALIDATE */ { @@ -1842,7 +1848,8 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) *p = 0; lpszTemp = lpszTemp + strlenW(lpwstrTemp); - if(*lpszTemp==0) + /* There are no wildcards when OFN_NOVALIDATE is set */ + if(*lpszTemp==0 && !(fodInfos->ofnInfos->Flags & OFN_NOVALIDATE)) { static const WCHAR wszWild[] = { '*', '?', 0 }; /* if the last element is a wildcard do a search */ @@ -1941,7 +1948,6 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) int iPos; LPWSTR lpszTemp = PathFindFileNameW(lpstrPathAndFile); DWORD len; - IPersistFolder2 * ppf2; /* replace the current filter */ if(fodInfos->ShellInfos.lpstrCurrentFilter) @@ -1953,7 +1959,12 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) /* set the filter cb to the extension when possible */ if(-1 < (iPos = FILEDLG95_FILETYPE_SearchExt(fodInfos->DlgInfos.hwndFileTypeCB, lpszTemp))) CBSetCurSel(fodInfos->DlgInfos.hwndFileTypeCB, iPos); - + } + /* fall through */ + case ONOPEN_BROWSE: /* browse to the highest folder we could bind to */ + TRACE("ONOPEN_BROWSE\n"); + { + IPersistFolder2 * ppf2; if(SUCCEEDED(IShellFolder_QueryInterface( lpsf, &IID_IPersistFolder2, (LPVOID*)&ppf2))) { LPITEMIDLIST pidlCurrent; @@ -1963,11 +1974,10 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) { IShellBrowser_BrowseObject(fodInfos->Shell.FOIShellBrowser, pidlCurrent, SBSP_ABSOLUTE); } - else + else if( nOpenAction == ONOPEN_SEARCH ) { IShellView_Refresh(fodInfos->Shell.FOIShellView); } - SendCustomDlgNotificationMessage(hwnd, CDN_FOLDERCHANGE); COMDLG32_SHFree(pidlCurrent); } } @@ -1985,51 +1995,48 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) fodInfos->ofnInfos->Flags &= ~OFN_READONLY; /* Attach the file extension with file name*/ - - if(!PathIsDirectoryW(lpstrPathAndFile)) + ext = PathFindExtensionW(lpstrPathAndFile); + if (! *ext) { - if((ext = PathFindExtensionW(lpstrPathAndFile)) == NULL) - { - /* if no extension is specified with file name, then */ - /* attach the extension from file filter or default one */ + /* if no extension is specified with file name, then */ + /* attach the extension from file filter or default one */ - WCHAR *filterExt = NULL; - LPWSTR lpstrFilter = NULL; - static const WCHAR szwDot[] = {'.',0}; - int PathLength = strlenW(lpstrPathAndFile); + WCHAR *filterExt = NULL; + LPWSTR lpstrFilter = NULL; + static const WCHAR szwDot[] = {'.',0}; + int PathLength = strlenW(lpstrPathAndFile); - /* Attach the dot*/ - strcatW(lpstrPathAndFile, szwDot); + /* Attach the dot*/ + strcatW(lpstrPathAndFile, szwDot); - /*Get the file extension from file type filter*/ - lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB, - fodInfos->ofnInfos->nFilterIndex-1); + /*Get the file extension from file type filter*/ + lpstrFilter = (LPWSTR) CBGetItemDataPtr(fodInfos->DlgInfos.hwndFileTypeCB, + fodInfos->ofnInfos->nFilterIndex-1); - if (lpstrFilter != (LPWSTR)CB_ERR) /* control is not empty */ - filterExt = PathFindExtensionW(lpstrFilter); + if (lpstrFilter != (LPWSTR)CB_ERR) /* control is not empty */ + filterExt = PathFindExtensionW(lpstrFilter); - if ( filterExt && *filterExt ) /* attach the file extension from file type filter*/ - strcatW(lpstrPathAndFile, filterExt + 1); - else if ( fodInfos->defext ) /* attach the default file extension*/ - strcatW(lpstrPathAndFile, fodInfos->defext); + if ( filterExt && *filterExt ) /* attach the file extension from file type filter*/ + strcatW(lpstrPathAndFile, filterExt + 1); + else if ( fodInfos->defext ) /* attach the default file extension*/ + strcatW(lpstrPathAndFile, fodInfos->defext); - /* In Open dialog: if file does not exist try without extension */ - if (!(fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG) && !PathFileExistsW(lpstrPathAndFile)) - lpstrPathAndFile[PathLength] = '\0'; - } - - if (fodInfos->defext) /* add default extension */ - { - /* Set/clear the output OFN_EXTENSIONDIFFERENT flag */ - if (*ext) - ext++; - if (!lstrcmpiW(fodInfos->defext, ext)) - fodInfos->ofnInfos->Flags &= ~OFN_EXTENSIONDIFFERENT; - else - fodInfos->ofnInfos->Flags |= OFN_EXTENSIONDIFFERENT; - } + /* In Open dialog: if file does not exist try without extension */ + if (!(fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG) && !PathFileExistsW(lpstrPathAndFile)) + lpstrPathAndFile[PathLength] = '\0'; } + if (fodInfos->defext) /* add default extension */ + { + /* Set/clear the output OFN_EXTENSIONDIFFERENT flag */ + if (*ext) + ext++; + if (!lstrcmpiW(fodInfos->defext, ext)) + fodInfos->ofnInfos->Flags &= ~OFN_EXTENSIONDIFFERENT; + else + fodInfos->ofnInfos->Flags |= OFN_EXTENSIONDIFFERENT; + } + /* In Save dialog: check if the file already exists */ if (fodInfos->DlgInfos.dwDlgProp & FODPROP_SAVEDLG && fodInfos->ofnInfos->Flags & OFN_OVERWRITEPROMPT @@ -3201,6 +3208,9 @@ LPITEMIDLIST GetPidlFromDataObject ( IDataObject *doSelected, UINT nPidlIndex) TRACE("sv=%p index=%u\n", doSelected, nPidlIndex); + if (!doSelected) + return NULL; + /* Set the FORMATETC structure*/ SETDefFormatEtc(formatetc, RegisterClipboardFormatA(CFSTR_SHELLIDLIST), TYMED_HGLOBAL); diff --git a/reactos/lib/comdlg32/filedlgbrowser.c b/reactos/lib/comdlg32/filedlgbrowser.c index dd0b54295b6..2b7d678f47b 100644 --- a/reactos/lib/comdlg32/filedlgbrowser.c +++ b/reactos/lib/comdlg32/filedlgbrowser.c @@ -55,6 +55,16 @@ typedef struct } IShellBrowserImpl; +static inline IShellBrowserImpl *impl_from_ICommDlgBrowser( ICommDlgBrowser *iface ) +{ + return (IShellBrowserImpl *)((char*)iface - FIELD_OFFSET(IShellBrowserImpl, lpVtblCommDlgBrowser)); +} + +static inline IShellBrowserImpl *impl_from_IServiceProvider( IServiceProvider *iface ) +{ + return (IShellBrowserImpl *)((char*)iface - FIELD_OFFSET(IShellBrowserImpl, lpVtblServiceProvider)); +} + /************************************************************************** * vtable */ @@ -728,11 +738,11 @@ static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_QueryInterface( REFIID riid, LPVOID *ppvObj) { - _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface); + IShellBrowserImpl *This = impl_from_ICommDlgBrowser(iface); TRACE("(%p)\n", This); - return IShellBrowserImpl_QueryInterface(This,riid,ppvObj); + return IShellBrowserImpl_QueryInterface((IShellBrowser *)This,riid,ppvObj); } /************************************************************************** @@ -740,11 +750,11 @@ static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_QueryInterface( */ static ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_AddRef(ICommDlgBrowser * iface) { - _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface); + IShellBrowserImpl *This = impl_from_ICommDlgBrowser(iface); TRACE("(%p)\n", This); - return IShellBrowserImpl_AddRef(This); + return IShellBrowserImpl_AddRef((IShellBrowser *)This); } /************************************************************************** @@ -752,11 +762,11 @@ static ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_AddRef(ICommDlgBrowser * i */ static ULONG WINAPI IShellBrowserImpl_ICommDlgBrowser_Release(ICommDlgBrowser * iface) { - _ICOM_THIS_FromICommDlgBrowser(IShellBrowser,iface); + IShellBrowserImpl *This = impl_from_ICommDlgBrowser(iface); TRACE("(%p)\n", This); - return IShellBrowserImpl_Release(This); + return IShellBrowserImpl_Release((IShellBrowser *)This); } /************************************************************************** @@ -770,7 +780,7 @@ static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnDefaultCommand(ICommDl LPITEMIDLIST pidl; FileOpenDlgInfos *fodInfos; - _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); + IShellBrowserImpl *This = impl_from_ICommDlgBrowser(iface); TRACE("(%p)\n", This); @@ -812,7 +822,7 @@ static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_OnStateChange(ICommDlgBr ULONG uChange) { - _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); + IShellBrowserImpl *This = impl_from_ICommDlgBrowser(iface); TRACE("(%p shv=%p)\n", This, ppshv); @@ -855,7 +865,7 @@ static HRESULT WINAPI IShellBrowserImpl_ICommDlgBrowser_IncludeObject(ICommDlgBr STRRET str; WCHAR szPathW[MAX_PATH]; - _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); + IShellBrowserImpl *This = impl_from_ICommDlgBrowser(iface); TRACE("(%p)\n", This); @@ -895,7 +905,7 @@ static HRESULT IShellBrowserImpl_ICommDlgBrowser_OnSelChange(ICommDlgBrowser *if { FileOpenDlgInfos *fodInfos; - _ICOM_THIS_FromICommDlgBrowser(IShellBrowserImpl,iface); + IShellBrowserImpl *This = impl_from_ICommDlgBrowser(iface); fodInfos = (FileOpenDlgInfos *) GetPropA(This->hwndOwner,FileOpenDlgInfosStr); TRACE("(%p do=%p view=%p)\n", This, fodInfos->Shell.FOIDataObject, fodInfos->Shell.FOIShellView); @@ -942,11 +952,11 @@ static HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryInterface( REFIID riid, LPVOID *ppvObj) { - _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface); + IShellBrowserImpl *This = impl_from_IServiceProvider(iface); FIXME("(%p)\n", This); - return IShellBrowserImpl_QueryInterface(This,riid,ppvObj); + return IShellBrowserImpl_QueryInterface((IShellBrowser *)This,riid,ppvObj); } /************************************************************************** @@ -954,11 +964,11 @@ static HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryInterface( */ static ULONG WINAPI IShellBrowserImpl_IServiceProvider_AddRef(IServiceProvider * iface) { - _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface); + IShellBrowserImpl *This = impl_from_IServiceProvider(iface); FIXME("(%p)\n", This); - return IShellBrowserImpl_AddRef(This); + return IShellBrowserImpl_AddRef((IShellBrowser *)This); } /************************************************************************** @@ -966,11 +976,11 @@ static ULONG WINAPI IShellBrowserImpl_IServiceProvider_AddRef(IServiceProvider * */ static ULONG WINAPI IShellBrowserImpl_IServiceProvider_Release(IServiceProvider * iface) { - _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface); + IShellBrowserImpl *This = impl_from_IServiceProvider(iface); FIXME("(%p)\n", This); - return IShellBrowserImpl_Release(This); + return IShellBrowserImpl_Release((IShellBrowser *)This); } /************************************************************************** @@ -990,14 +1000,14 @@ static HRESULT WINAPI IShellBrowserImpl_IServiceProvider_QueryService( REFIID riid, void** ppv) { - _ICOM_THIS_FromIServiceProvider(IShellBrowser,iface); + IShellBrowserImpl *This = impl_from_IServiceProvider(iface); FIXME("(%p)\n\t%s\n\t%s\n", This,debugstr_guid(guidService), debugstr_guid(riid) ); *ppv = NULL; if(guidService && IsEqualIID(guidService, &SID_STopLevelBrowser)) { - return IShellBrowserImpl_QueryInterface(This,riid,ppv); + return IShellBrowserImpl_QueryInterface((IShellBrowser *)This,riid,ppv); } FIXME("(%p) unknown interface requested\n", This); return E_NOINTERFACE; diff --git a/reactos/lib/comdlg32/filedlgbrowser.h b/reactos/lib/comdlg32/filedlgbrowser.h index 4e2a30aa161..22d288e54b7 100644 --- a/reactos/lib/comdlg32/filedlgbrowser.h +++ b/reactos/lib/comdlg32/filedlgbrowser.h @@ -37,11 +37,6 @@ /*********************************************************************** * Defines and global variables */ -#define _ICommDlgBrowser_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblCommDlgBrowser))) -#define _ICOM_THIS_FromICommDlgBrowser(class, name) class* This = (class*)(((char*)name)-_ICommDlgBrowser_Offset); - -#define _IServiceProvider_Offset ((int)(&(((IShellBrowserImpl*)0)->lpVtblServiceProvider))) -#define _ICOM_THIS_FromIServiceProvider(class, name) class* This = (class*)(((char*)name)-_IServiceProvider_Offset); /* dialog internal property */ diff --git a/reactos/lib/comdlg32/printdlg.c b/reactos/lib/comdlg32/printdlg.c index a5beff40862..68eef42268d 100644 --- a/reactos/lib/comdlg32/printdlg.c +++ b/reactos/lib/comdlg32/printdlg.c @@ -2968,7 +2968,7 @@ PRINTDLG_PagePaintProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) HDC hdc; HBRUSH hbrush, holdbrush; PageSetupDataA *pda; - int papersize=0, orientation=0; /* FIXME: set this values */ + int papersize=0, orientation=0; /* FIXME: set this values for user paint hook */ double scalx, scaly; #define CALLPAINTHOOK(msg,lprc) PRINTDLG_DefaultPagePaintHook( hWnd, msg, (WPARAM)hdc, (LPARAM)lprc, pda) @@ -3085,11 +3085,8 @@ PRINTDLG_PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) /* FIXME: Paint hook. Must it be at begin of initializtion or at end? */ res = TRUE; if (pda->dlga->Flags & PSD_ENABLEPAGESETUPHOOK) { - res = pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,(LPARAM)pda->dlga); - if (!res) { + if (!pda->dlga->lpfnPageSetupHook(hDlg,uMsg,wParam,(LPARAM)pda->dlga)) FIXME("Setup page hook failed?\n"); - res = TRUE; - } } /* if printer button disabled */ @@ -3102,11 +3099,14 @@ PRINTDLG_PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) EnableWindow(GetDlgItem(hDlg, edt6), FALSE); EnableWindow(GetDlgItem(hDlg, edt7), FALSE); } - /* width larger as height -> landscape */ - if (pda->dlga->ptPaperSize.x > pda->dlga->ptPaperSize.y) + /* Set orientation radiobutton properly */ + dm = GlobalLock(pda->dlga->hDevMode); + if (dm->u.s.dmOrientation == DMORIENT_LANDSCAPE) CheckRadioButton(hDlg, rad1, rad2, rad2); else /* this is default if papersize is not set */ CheckRadioButton(hDlg, rad1, rad2, rad1); + GlobalUnlock(pda->dlga->hDevMode); + /* if orientation disabled */ if (pda->dlga->Flags & PSD_DISABLEORIENTATION) { EnableWindow(GetDlgItem(hDlg,rad1),FALSE); @@ -3151,6 +3151,11 @@ PRINTDLG_PageDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) GlobalUnlock(pda->pdlg.hDevMode); pda->curdlg.ptPaperSize.x = _c_10mm2size(pda->dlga, pda->curdlg.ptPaperSize.x); pda->curdlg.ptPaperSize.y = _c_10mm2size(pda->dlga, pda->curdlg.ptPaperSize.y); + if (IsDlgButtonChecked(hDlg, rad2) == BST_CHECKED) { /* Landscape orientation */ + DWORD tmp = pda->curdlg.ptPaperSize.y; + pda->curdlg.ptPaperSize.y = pda->curdlg.ptPaperSize.x; + pda->curdlg.ptPaperSize.x = tmp; + } } else WARN("GlobalLock(pda->pdlg.hDevMode) fail? hDevMode=%ld", (DWORD)pda->pdlg.hDevMode); /* Drawing paper prev */