https://git.reactos.org/?p=reactos.git;a=commitdiff;h=f8b90805ff124a951c9035...
commit f8b90805ff124a951c903535ce30090d7a57798a Author: Bișoc George fraizeraust99@gmail.com AuthorDate: Wed May 1 10:33:13 2019 +0200 Commit: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org CommitDate: Wed May 1 22:22:08 2019 +0200
[OSK] Hotfix for PR #1536 (#1549)
CORE-15965 --- base/applications/osk/main.c | 78 +++++++++++++++++++++++++++++--------------- 1 file changed, 52 insertions(+), 26 deletions(-)
diff --git a/base/applications/osk/main.c b/base/applications/osk/main.c index 6f04d78f97..939326d0da 100644 --- a/base/applications/osk/main.c +++ b/base/applications/osk/main.c @@ -181,7 +181,7 @@ int OSK_DlgInitDialog(HWND hDlg) GetMonitorInfoW(monitor, &info); GetWindowRect(hDlg, &rcWindow);
- /* + /* If the coordination values are default then re-initialize using the specific formulas to move the dialog at the bottom of the screen. */ @@ -191,7 +191,7 @@ int OSK_DlgInitDialog(HWND hDlg) Globals.PosY = info.rcMonitor.bottom - (rcWindow.bottom - rcWindow.top); }
- /* + /* Calculate the intersection of two rectangle sources (dialog and work desktop area). If such sources do not intersect, then the dialog is deemed as "off screen". */ @@ -439,6 +439,7 @@ LRESULT APIENTRY OSK_ThemeHandler(HWND hDlg, NMCUSTOMDRAW *pNmDraw) { HTHEME hTheme; HWND hDlgButtonCtrl; + LRESULT Ret; INT iState = PBS_NORMAL;
/* Retrieve the theme handle for the button controls */ @@ -451,34 +452,59 @@ LRESULT APIENTRY OSK_ThemeHandler(HWND hDlg, NMCUSTOMDRAW *pNmDraw) */ if (hTheme) { - /* - The button could be either in normal state or pushed. - Retrieve its state and save to a variable. - */ - if (pNmDraw->uItemState & CDIS_DEFAULT) - { - iState = PBS_DEFAULTED; - } - else if (pNmDraw->uItemState & CDIS_SELECTED) - { - iState = PBS_PRESSED; - } - else if (pNmDraw->uItemState & CDIS_HOT) + /* Obtain CDDS drawing stages */ + switch (pNmDraw->dwDrawStage) { - iState = PBS_HOT; - } + case CDDS_PREPAINT: + { + /* + The button could be either in normal state or pushed. + Retrieve its state and save to a variable. + */ + if (pNmDraw->uItemState & CDIS_DEFAULT) + { + iState = PBS_DEFAULTED; + } + else if (pNmDraw->uItemState & CDIS_SELECTED) + { + iState = PBS_PRESSED; + } + else if (pNmDraw->uItemState & CDIS_HOT) + { + iState = PBS_HOT; + }
- if (IsThemeBackgroundPartiallyTransparent(hTheme, BP_PUSHBUTTON, iState)) - { - /* Draw the application if the theme is transparent */ - DrawThemeParentBackground(hDlg, pNmDraw->hdc, &pNmDraw->rc); - } + if (IsThemeBackgroundPartiallyTransparent(hTheme, BP_PUSHBUTTON, iState)) + { + /* Draw the application if the theme is transparent */ + DrawThemeParentBackground(hDlgButtonCtrl, pNmDraw->hdc, &pNmDraw->rc); + }
- /* Draw it */ - DrawThemeBackground(hTheme, pNmDraw->hdc, BP_PUSHBUTTON, iState, &pNmDraw->rc, NULL); + /* Draw it */ + DrawThemeBackground(hTheme, pNmDraw->hdc, BP_PUSHBUTTON, iState, &pNmDraw->rc, NULL); + + Ret = CDRF_SKIPDEFAULT; + break; + } + + case CDDS_PREERASE: + { + Ret = CDRF_DODEFAULT; + break; + } + + default: + Ret = CDRF_SKIPDEFAULT; + break; + } + } + else + { + /* hTheme is NULL so bail right away */ + Ret = CDRF_DODEFAULT; }
- return CDRF_SKIPDEFAULT; + return Ret; }
/*********************************************************************** @@ -543,7 +569,7 @@ INT_PTR APIENTRY OSK_DlgProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { if (!Globals.bIsEnhancedKeyboard) { - /* + /* The user attempted to switch to enhanced keyboard dialog type. Set the member value as TRUE, destroy the dialog and save the data configuration into the registry. */