summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/vcl/button.hxx11
-rw-r--r--include/vcl/salnativewidgets.hxx13
-rw-r--r--vcl/source/control/button.cxx6
-rw-r--r--vcl/source/window/builder.cxx3
4 files changed, 28 insertions, 5 deletions
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<PushButton>::Create(pParent, nBits);
xWindow->SetText(getStockText(sType));
}
+ PushButton* pPushButton = dynamic_cast<PushButton*>(xWindow.get());
+ if (pPushButton)
+ pPushButton->setStock(true);
}
if (!xWindow)