diff options
Diffstat (limited to 'alf')
| -rw-r--r-- | alf/alfbutton.cpp | 8 | ||||
| -rw-r--r-- | alf/alflayout.cpp | 19 | ||||
| -rw-r--r-- | alf/alfnativebtn.cpp | 19 | ||||
| -rw-r--r-- | alf/alfnotebook.cpp | 7 |
4 files changed, 31 insertions, 22 deletions
diff --git a/alf/alfbutton.cpp b/alf/alfbutton.cpp index 17ff1b0..2bc6bc4 100644 --- a/alf/alfbutton.cpp +++ b/alf/alfbutton.cpp @@ -907,14 +907,14 @@ ALF_NtButton_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) ALFColor newcolor = (ALFColor)lParam; if (priv->bgcolor != newcolor) { priv->bgcolor = newcolor; - // FIXME! optimize classic button which is not transparent - InvalidateRect(hwnd, NULL, TRUE); + if (priv->hTheme) { + InvalidateRect(hwnd, NULL, TRUE); + } } } else if (uMsg == ALF_WM_GETBGCOLOR) { return (LRESULT)priv->bgcolor; } else if (uMsg == ALF_WM_BACKGROUNDCHANGE) { - if (priv->bgcolor == ALF_COLOR_TRANSPARENT) { - // FIXME! optimize classic button which is not transparent + if (priv->bgcolor == ALF_COLOR_TRANSPARENT && priv->hTheme) { InvalidateRect(hwnd, NULL, TRUE); } } else if (uMsg == WM_SIZE) { diff --git a/alf/alflayout.cpp b/alf/alflayout.cpp index ba2854b..38e69a2 100644 --- a/alf/alflayout.cpp +++ b/alf/alflayout.cpp @@ -104,6 +104,7 @@ ALF_Layout_ForwardFontToControl(ALFLayout *layout, HWND window, ALFControlPriv * switch (control->flags & ALF_LAYOUT_SIZETYPE_MASK) { case ALF_LAYOUT_SIZE_EDIT: case ALF_LAYOUT_SIZE_CHECKBOX: + case ALF_LAYOUT_SIZE_PUSHBUTTON: ALF_Layout_Invalidate(layout, window); break; default: @@ -627,12 +628,12 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window) if (!ALF_Compat_Is40()) flags |= SWP_NOCOPYBITS; + RECT oldR; + GetWindowRect(c->hwnd, &oldR); + MapWindowRect(NULL, window, &oldR); + // transparent background: invalidate if control moved if (layout->bgcolor == ALF_COLOR_TRANSPARENT) { - RECT oldR; - GetWindowRect(c->hwnd, &oldR); - MapWindowRect(NULL, window, &oldR); - if (oldR.left != r.left || oldR.top != r.top) { if (c->flags & ALF_LAYOUT_SENDBGCHANGE) { ALF_InvalidateBackground(c->hwnd); @@ -643,10 +644,12 @@ ALF_Layout_Apply(ALFLayout* layout, HWND window) } } - hdwp = DeferWindowPos(hdwp, - c->hwnd, 0, - r.left, r.top, r.right - r.left, r.bottom - r.top, - flags); + if (!EqualRect(&r, &oldR)) { + hdwp = DeferWindowPos(hdwp, + c->hwnd, 0, + r.left, r.top, r.right - r.left, r.bottom - r.top, + flags); + } } } diff --git a/alf/alfnativebtn.cpp b/alf/alfnativebtn.cpp index 3b35321..517676d 100644 --- a/alf/alfnativebtn.cpp +++ b/alf/alfnativebtn.cpp @@ -12,7 +12,12 @@ ALF_AddNativeButton(HWND win, WORD id, int x, int y, const TCHAR *text) (HMENU)(ULONG_PTR)id, ALF_HINSTANCE, NULL); - ALF_AddControl(win, x, y, hwndBtn, 5625, 1725, ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_TRANSPARENTBG | ALF_LAYOUT_SIZE_PUSHBUTTON); + + DWORD layoutFlags = ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_SIZE_PUSHBUTTON; + if (ALF_Compat_IsComCtlV6()) + layoutFlags |= ALF_LAYOUT_TRANSPARENTBG; + + ALF_AddControl(win, x, y, hwndBtn, 5625, 1725, layoutFlags); return hwndBtn; } @@ -30,7 +35,11 @@ ALF_AddNativeCheckbox(HWND parent, WORD id, int x, int y, const TCHAR *text) ALF_HINSTANCE, NULL); - ALF_AddControl(parent, x, y, hwnd, 0, 0, ALF_LAYOUT_SIZE_CHECKBOX | ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_TRANSPARENTBG); + DWORD layoutFlags = ALF_LAYOUT_SIZE_CHECKBOX | ALF_LAYOUT_INHERITFONT; + if (ALF_Compat_IsComCtlV6()) + layoutFlags |= ALF_LAYOUT_TRANSPARENTBG; + + ALF_AddControl(parent, x, y, hwnd, 0, 0, layoutFlags); return hwnd; } @@ -48,7 +57,11 @@ ALF_AddNativeRadioButton(HWND parent, WORD id, int x, int y, const TCHAR *text) ALF_HINSTANCE, NULL); - ALF_AddControl(parent, x, y, hwnd, 0, 0, ALF_LAYOUT_SIZE_CHECKBOX | ALF_LAYOUT_INHERITFONT | ALF_LAYOUT_TRANSPARENTBG); + DWORD layoutFlags = ALF_LAYOUT_SIZE_CHECKBOX | ALF_LAYOUT_INHERITFONT; + if (ALF_Compat_IsComCtlV6()) + layoutFlags |= ALF_LAYOUT_TRANSPARENTBG; + + ALF_AddControl(parent, x, y, hwnd, 0, 0, layoutFlags); return hwnd; } diff --git a/alf/alfnotebook.cpp b/alf/alfnotebook.cpp index e264b6e..ca93d90 100644 --- a/alf/alfnotebook.cpp +++ b/alf/alfnotebook.cpp @@ -1161,13 +1161,6 @@ ALF_Notebook_ContainerWindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lPa EndDeferWindowPos(hdwp); - if (priv->selectedPage && priv->hTheme - && priv->tabPaneBgColor == ALF_COLOR_TRANSPARENT - && ((oldPanelRect.bottom - oldPanelRect.top) != (rcPanel.bottom - rcPanel.top))) { - // only needed when height changes, since bg is tiled horizontally - ALF_InvalidateBackground(priv->selectedPage->hwndPanel); - } - if (priv->hTheme) { // themed background does contain gradients on XP // FIXME! do we always need to invalidate everyting? |
