Fix UDL dialog color picker display issue under high DPI
This commit is contained in:
parent
1b6cd7c3ff
commit
6894e96ad7
|
@ -1696,6 +1696,19 @@ void StringDlg::HandlePaste(HWND hEdit)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StylerDlg::move2CtrlRight(HWND hwndDlg, int ctrlID, HWND handle2Move, int handle2MoveWidth, int handle2MoveHeight)
|
||||||
|
{
|
||||||
|
POINT p;
|
||||||
|
RECT rc;
|
||||||
|
::GetWindowRect(::GetDlgItem(hwndDlg, ctrlID), &rc);
|
||||||
|
|
||||||
|
p.x = rc.right + NppParameters::getInstance()._dpiManager.scaleX(5);
|
||||||
|
p.y = rc.top + ((rc.bottom - rc.top) / 2) - handle2MoveHeight / 2;
|
||||||
|
|
||||||
|
::ScreenToClient(hwndDlg, &p);
|
||||||
|
::MoveWindow(handle2Move, p.x, p.y, handle2MoveWidth, handle2MoveHeight, TRUE);
|
||||||
|
}
|
||||||
|
|
||||||
INT_PTR CALLBACK StylerDlg::dlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
INT_PTR CALLBACK StylerDlg::dlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
StylerDlg * dlg = (StylerDlg *)::GetProp(hwnd, TEXT("Styler dialog prop"));
|
StylerDlg * dlg = (StylerDlg *)::GetProp(hwnd, TEXT("Styler dialog prop"));
|
||||||
|
@ -1755,9 +1768,6 @@ INT_PTR CALLBACK StylerDlg::dlgProc(HWND hwnd, UINT message, WPARAM wParam, LPAR
|
||||||
i = 0;
|
i = 0;
|
||||||
::SendMessage(hFontNameCombo, CB_SETCURSEL, i, 0);
|
::SendMessage(hFontNameCombo, CB_SETCURSEL, i, 0);
|
||||||
|
|
||||||
HWND hFgColourStaticText = ::GetDlgItem(hwnd, IDC_STYLER_FG_STATIC);
|
|
||||||
HWND hBgColourStaticText = ::GetDlgItem(hwnd, IDC_STYLER_BG_STATIC);
|
|
||||||
|
|
||||||
if (style._fgColor == COLORREF(-1))
|
if (style._fgColor == COLORREF(-1))
|
||||||
style._fgColor = black;
|
style._fgColor = black;
|
||||||
|
|
||||||
|
@ -1769,26 +1779,12 @@ INT_PTR CALLBACK StylerDlg::dlgProc(HWND hwnd, UINT message, WPARAM wParam, LPAR
|
||||||
dlg->_pBgColour->init(dlg->_hInst, hwnd);
|
dlg->_pBgColour->init(dlg->_hInst, hwnd);
|
||||||
dlg->_pBgColour->setColour(style._bgColor);
|
dlg->_pBgColour->setColour(style._bgColor);
|
||||||
|
|
||||||
POINT p1, p2;
|
int w = nppParam._dpiManager.scaleX(30);
|
||||||
RECT rc1, rc2;
|
int h = nppParam._dpiManager.scaleY(30);
|
||||||
|
|
||||||
::GetWindowRect(hFgColourStaticText, &rc1);
|
dlg->move2CtrlRight(hwnd, IDC_STYLER_FG_STATIC, dlg->_pFgColour->getHSelf(), w, h);
|
||||||
::GetWindowRect(hBgColourStaticText, &rc2);
|
dlg->move2CtrlRight(hwnd, IDC_STYLER_BG_STATIC, dlg->_pBgColour->getHSelf(), w, h);
|
||||||
|
|
||||||
p1.x = rc1.left; p1.y = rc1.top;
|
|
||||||
p2.x = rc2.left; p2.y = rc2.top;
|
|
||||||
|
|
||||||
p1.x += rc1.right - rc1.left;
|
|
||||||
p2.x += rc2.right - rc2.left;
|
|
||||||
|
|
||||||
::ScreenToClient(hwnd, &p1);
|
|
||||||
::ScreenToClient(hwnd, &p2);
|
|
||||||
|
|
||||||
p1.x += 10; p2.x += 10;
|
|
||||||
p1.y -= 6; p2.y -= 6;
|
|
||||||
|
|
||||||
::MoveWindow(dlg->_pFgColour->getHSelf(), p1.x, p1.y, 30, 30, TRUE);
|
|
||||||
::MoveWindow(dlg->_pBgColour->getHSelf(), p2.x, p2.y, 30, 30, TRUE);
|
|
||||||
|
|
||||||
dlg->_pFgColour->display();
|
dlg->_pFgColour->display();
|
||||||
dlg->_pBgColour->display();
|
dlg->_pBgColour->display();
|
||||||
|
|
|
@ -448,7 +448,8 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
static INT_PTR CALLBACK dlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
static INT_PTR CALLBACK dlgProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
|
||||||
public:
|
|
||||||
|
private:
|
||||||
HINSTANCE _hInst;
|
HINSTANCE _hInst;
|
||||||
HWND _parent;
|
HWND _parent;
|
||||||
int _stylerIndex;
|
int _stylerIndex;
|
||||||
|
@ -456,4 +457,6 @@ public:
|
||||||
ColourPicker * _pFgColour;
|
ColourPicker * _pFgColour;
|
||||||
ColourPicker * _pBgColour;
|
ColourPicker * _pBgColour;
|
||||||
Style _initialStyle;
|
Style _initialStyle;
|
||||||
|
|
||||||
|
void move2CtrlRight(HWND hwndDlg, int ctrlID, HWND handle2Move, int handle2MoveWidth, int handle2MoveHeight);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue