From: Piotr Caban piotr@codeweavers.com
--- dlls/wineps.drv/driver.c | 34 ++++++++++++++++++++++++++++++++++ dlls/wineps.drv/psdlg.h | 2 ++ dlls/wineps.drv/wineps.rc | 5 ++++- 3 files changed, 40 insertions(+), 1 deletion(-)
diff --git a/dlls/wineps.drv/driver.c b/dlls/wineps.drv/driver.c index 67209fbec2b..7b5d2abb32d 100644 --- a/dlls/wineps.drv/driver.c +++ b/dlls/wineps.drv/driver.c @@ -247,6 +247,7 @@ static INT_PTR CALLBACK PSDRV_PaperDlgProc(HWND hwnd, UINT msg, PAGESIZE *ps; DUPLEX *duplex; RESOLUTION *res; + INPUTSLOT *source;
switch(msg) { case WM_INITDIALOG: @@ -336,6 +337,24 @@ static INT_PTR CALLBACK PSDRV_PaperDlgProc(HWND hwnd, UINT msg, } SendDlgItemMessageW(hwnd, IDD_QUALITY, CB_SETCURSEL, Cursel, 0);
+ i = Cursel = 0; + LIST_FOR_EACH_ENTRY( source, &di->pi->ppd->InputSlots, INPUTSLOT, entry ) + { + if (!source->InvocationString) continue; + SendDlgItemMessageA(hwnd, IDD_TRAY, CB_INSERTSTRING, i, (LPARAM)source->FullName); + if (di->pi->Devmode->dmPublic.dmDefaultSource == source->WinBin) + Cursel = i; + i++; + } + if (!i) + { + ShowWindow(GetDlgItem(hwnd, IDD_TRAY), SW_HIDE); + ShowWindow(GetDlgItem(hwnd, IDD_TRAY_NAME), SW_HIDE); + } + else + { + SendDlgItemMessageA(hwnd, IDD_TRAY, CB_SETCURSEL, Cursel, 0); + } break;
case WM_COMMAND: @@ -419,6 +438,21 @@ static INT_PTR CALLBACK PSDRV_PaperDlgProc(HWND hwnd, UINT msg, SendMessageW(GetParent(hwnd), PSM_CHANGED, 0, 0); } break; + + case IDD_TRAY: + Cursel = SendDlgItemMessageA(hwnd, LOWORD(wParam), CB_GETCURSEL, 0, 0); + i = 0; + LIST_FOR_EACH_ENTRY( source, &di->pi->ppd->InputSlots, INPUTSLOT, entry ) + { + if (!source->InvocationString) continue; + if (i >= Cursel) break; + i++; + } + TRACE("Setting paper source to item %d WinBin = %d\n", Cursel, source->WinBin); + di->dlgdm->dmPublic.dmDefaultSource = source->WinBin; + di->dlgdm->dmPublic.dmFields |= DM_DEFAULTSOURCE; + SendMessageW(GetParent(hwnd), PSM_CHANGED, 0, 0); + break; } break;
diff --git a/dlls/wineps.drv/psdlg.h b/dlls/wineps.drv/psdlg.h index 09ce9012d50..c16f1f34270 100644 --- a/dlls/wineps.drv/psdlg.h +++ b/dlls/wineps.drv/psdlg.h @@ -30,6 +30,8 @@ #define IDD_DUPLEX 110 #define IDD_DUPLEX_NAME 111 #define IDD_QUALITY 112 +#define IDD_TRAY_NAME 113 +#define IDD_TRAY 114
#define IDS_DPI 1000
diff --git a/dlls/wineps.drv/wineps.rc b/dlls/wineps.drv/wineps.rc index 35b3e5eb167..83a2e602ae1 100644 --- a/dlls/wineps.drv/wineps.rc +++ b/dlls/wineps.drv/wineps.rc @@ -22,7 +22,7 @@
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
-PAPER DIALOG 5, 43, 227, 215 +PAPER DIALOG 5, 43, 227, 230 STYLE WS_POPUP | WS_CAPTION | WS_CLIPSIBLINGS | WS_VISIBLE CAPTION "Paper" FONT 8, "MS Shell Dlg" @@ -41,6 +41,9 @@ FONT 8, "MS Shell Dlg" LTEXT "Print &Quality:", -1, 10, 170, 200, 8 COMBOBOX IDD_QUALITY, 10, 181, 200, 60, CBS_DROPDOWNLIST | CBS_HASSTRINGS | WS_TABSTOP + LTEXT "Paper &Tray:", IDD_TRAY_NAME, 10, 200, 200, 8 + COMBOBOX IDD_TRAY, 10, 211, 200, 60, CBS_DROPDOWNLIST | CBS_HASSTRINGS | + WS_TABSTOP }
STRINGTABLE
This merge request was approved by Huw Davies.