From 9242a80a84fa5c96dbadec9594177875aeeec1ac Mon Sep 17 00:00:00 2001 From: Kirill Volinsky Date: Tue, 10 Jul 2012 18:37:21 +0000 Subject: only added MyDetails and Skins. not adopted yet git-svn-id: http://svn.miranda-ng.org/main/trunk@892 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Skins/SkinLib/EditFieldState.cpp | 58 ++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 plugins/Skins/SkinLib/EditFieldState.cpp (limited to 'plugins/Skins/SkinLib/EditFieldState.cpp') diff --git a/plugins/Skins/SkinLib/EditFieldState.cpp b/plugins/Skins/SkinLib/EditFieldState.cpp new file mode 100644 index 0000000000..e634be7b55 --- /dev/null +++ b/plugins/Skins/SkinLib/EditFieldState.cpp @@ -0,0 +1,58 @@ +#include "globals.h" +#include "EditFieldState.h" + + +EditFieldState::EditFieldState(DialogState *dialog, EditField *field) + : ControlFieldState(dialog, field) +{ +} + +EditFieldState::~EditFieldState() +{ +} + +Size EditFieldState::getPreferedSize() const +{ + ControlField *field = getField(); + HWND hwnd = field->getHWND(); + + int style = GetWindowLong(hwnd, GWL_STYLE); + int exstyle = GetWindowLong(hwnd, GWL_EXSTYLE); + + int format = DT_NOPREFIX | DT_EDITCONTROL; + if (!(style & ES_MULTILINE)) + format |= DT_SINGLELINE; + Size ret = getTextPreferedSize(format); + + RECT rc = {0}; + SetRect(&rc, 0, 0, ret.x, ret.y); + AdjustWindowRectEx(&rc, style, false, exstyle); + + bool hasHorScroll = field->isScrollVisible(true); + if (hasHorScroll) + rc.bottom += GetSystemMetrics(SM_CYHSCROLL); + if (field->isScrollVisible(false)) + rc.right += GetSystemMetrics(SM_CXVSCROLL); + + int margins = SendMessage(hwnd, EM_GETMARGINS, 0, 0); + rc.left -= LOWORD(margins); + rc.right += HIWORD(margins); + if (hasHorScroll || (style & ES_AUTOHSCROLL)) + rc.right++; + + ret.x = rc.right - rc.left; + ret.y = rc.bottom - rc.top; + + if ((exstyle & WS_EX_CLIENTEDGE) || (exstyle & WS_EX_STATICEDGE) || (style & WS_BORDER)) + { + ret.x += 3; + ret.y += 3; + } + + return ret; +} + +bool EditFieldState::isEmpty() const +{ + return false; +} \ No newline at end of file -- cgit v1.2.3