include/vcl/button.hxx | 1 + vcl/source/control/button.cxx | 21 +++++++++++++++++++++ vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx | 2 +- 3 files changed, 23 insertions(+), 1 deletion(-)
New commits: commit 73cc6d76b598c2028fda65d578ce57affd96cb6f Author: Caolán McNamara <[email protected]> Date: Thu May 14 20:32:41 2015 +0100 gtk3: shiny native focus rectangles for radiobuttons Change-Id: I8f709cd0683c1a244d6b8c269c75b7f841824926 diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx index ef64257..f8bfddf 100644 --- a/include/vcl/button.hxx +++ b/include/vcl/button.hxx @@ -402,6 +402,7 @@ public: * Group this RadioButton with another */ void group(RadioButton &rOther); + virtual void ShowFocus(const Rectangle& rRect) SAL_OVERRIDE; }; diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 75b2fe3..82af4fa 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -2916,6 +2916,27 @@ Size RadioButton::GetOptimalSize() const return CalcMinimumSize(); } +void RadioButton::ShowFocus(const Rectangle& rRect) +{ + if (IsNativeControlSupported(CTRL_RADIOBUTTON, PART_FOCUS)) + { + ImplControlValue aControlValue; + Rectangle aInRect(Point(0, 0), GetSizePixel()); + + aInRect.Left() = rRect.Left(); // exclude the radio element itself from the focusrect + + //to-do, figure out a better solution here + aInRect.Left()-=2; + aInRect.Right()+=2; + aInRect.Top()-=2; + aInRect.Bottom()+=2; + + DrawNativeControl(CTRL_RADIOBUTTON, PART_FOCUS, aInRect, + ControlState::FOCUSED, aControlValue, OUString()); + } + Button::ShowFocus(rRect); +} + void CheckBox::ImplInitCheckBoxData() { meState = TRISTATE_FALSE; diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx index 9db5f72..ea60f09 100644 --- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx +++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx @@ -902,7 +902,7 @@ bool GtkSalGraphics::drawNativeControl( ControlType nType, ControlPart nPart, co ( (rValue.getTristateVal() == BUTTONVALUE_ON) ? CHECKED : GTK_STATE_FLAG_NORMAL)); context = mpCheckButtonStyle; styleClass = GTK_STYLE_CLASS_RADIO; - renderType = RENDER_RADIO; + renderType = nPart == PART_FOCUS ? RENDER_FOCUS : RENDER_RADIO; break; case CTRL_PUSHBUTTON: context = mpButtonStyle;
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
