diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx index 38c094a2d9dc..76e16bf6dfb5 100644 --- a/include/vcl/button.hxx +++ b/include/vcl/button.hxx @@ -163,6 +163,16 @@ public: virtual bool set_property(const OString &rKey, const OUString &rValue) override; virtual void ShowFocus(const tools::Rectangle& rRect) override; + void setStock(bool bIsStock) + { + mbIsStock = bIsStock; + } + + bool isStock() + { + return mbIsStock; + } + protected: PushButtonDropdownStyle mnDDStyle; bool mbIsActive; @@ -199,6 +209,7 @@ private: SymbolType meSymbol; TriState meState; bool mbPressed; + bool mbIsStock; }; inline void PushButton::Check( bool bCheck ) diff --git a/include/vcl/salnativewidgets.hxx b/include/vcl/salnativewidgets.hxx index f6132e5bb17e..9ccfa0319057 100644 --- a/include/vcl/salnativewidgets.hxx +++ b/include/vcl/salnativewidgets.hxx @@ -494,8 +494,12 @@ class VCL_DLLPUBLIC PushButtonValue : public ImplControlValue { public: PushButtonValue() - : ImplControlValue( ControlType::Pushbutton, 0 ) - , mbBevelButton( false ), mbSingleLine( true ) {} + : ImplControlValue( ControlType::Pushbutton, 0 ) + , mbBevelButton(false) + , mbSingleLine(true) + , mbIsStock(false) + {} + virtual ~PushButtonValue() override; virtual PushButtonValue* clone() const override; @@ -504,8 +508,9 @@ public: PushButtonValue & operator =(PushButtonValue const &) = delete; // due to ImplControlValue PushButtonValue & operator =(PushButtonValue &&) = delete; // due to ImplControlValue - bool mbBevelButton:1; // only used on OSX - bool mbSingleLine:1; // only used on OSX + bool mbBevelButton:1; // only used on OSX + bool mbSingleLine:1; // only used on OSX + bool mbIsStock:1; }; diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 92d8b8227aaa..54600b8ea31d 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -634,6 +634,7 @@ void PushButton::ImplInitPushButtonData() mnDDStyle = PushButtonDropdownStyle::NONE; mbIsActive = false; mbPressed = false; + mbIsStock = false; } namespace @@ -1044,6 +1045,8 @@ void PushButton::ImplDrawPushButton(vcl::RenderContext& rRenderContext) if (bNativeOK) { PushButtonValue aControlValue; + aControlValue.mbIsStock = isStock(); + tools::Rectangle aCtrlRegion(aInRect); ControlState nState = ControlState::NONE; @@ -1697,7 +1700,8 @@ void PushButton::ShowFocus(const tools::Rectangle& rRect) { if (IsNativeControlSupported(ControlType::Pushbutton, ControlPart::Focus)) { - ImplControlValue aControlValue; + PushButtonValue aControlValue; + aControlValue.mbIsStock = isStock(); tools::Rectangle aInRect(Point(), GetOutputSizePixel()); GetOutDev()->DrawNativeControl(ControlType::Pushbutton, ControlPart::Focus, aInRect, ControlState::FOCUSED, aControlValue, OUString()); diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx index 8c0e98154a37..c56ac2242304 100644 --- a/vcl/source/window/builder.cxx +++ b/vcl/source/window/builder.cxx @@ -1128,6 +1128,9 @@ namespace xWindow = VclPtr::Create(pParent, nBits); xWindow->SetText(getStockText(sType)); } + PushButton* pPushButton = dynamic_cast(xWindow.get()); + if (pPushButton) + pPushButton->setStock(true); } if (!xWindow)