weld AreaPropertyPanel
Change-Id: I5f4c4b43067b99cd57f8ea941002481ef5977e09
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/86144
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/chart2/source/controller/sidebar/ChartAreaPanel.cxx b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
index 61e7231..1260b36 100644
--- a/chart2/source/controller/sidebar/ChartAreaPanel.cxx
+++ b/chart2/source/controller/sidebar/ChartAreaPanel.cxx
@@ -17,6 +17,7 @@
#include <com/sun/star/util/XModifyBroadcaster.hpp>
#include <com/sun/star/chart2/XDiagram.hpp>
#include <sfx2/weldutils.hxx>
#include <svx/xfltrit.hxx>
#include <svx/xflftrit.hxx>
#include <svx/xbtmpit.hxx>
@@ -29,9 +30,9 @@ namespace chart { namespace sidebar {
namespace {
SvxColorToolBoxControl* getColorToolBoxControl(sfx2::sidebar::SidebarToolBox* pToolBoxColor)
SvxColorToolBoxControl* getColorToolBoxControl(ToolbarUnoDispatcher& rColorDispatch)
{
css::uno::Reference<css::frame::XToolbarController> xController = pToolBoxColor->GetFirstController();
css::uno::Reference<css::frame::XToolbarController> xController = rColorDispatch.GetControllerForCommand(".uno:FillColor");
SvxColorToolBoxControl* pToolBoxColorControl = dynamic_cast<SvxColorToolBoxControl*>(xController.get());
return pToolBoxColorControl;
}
@@ -261,7 +262,7 @@ ChartAreaPanel::ChartAreaPanel(vcl::Window* pParent,
mxSelectionListener(new ChartSidebarSelectionListener(this)),
mbUpdate(true),
mbModelValid(true),
maFillColorWrapper(mxModel, getColorToolBoxControl(mpToolBoxColor.get()), "FillColor")
maFillColorWrapper(mxModel, getColorToolBoxControl(*mxColorDispatch), "FillColor")
{
std::vector<ObjectType> aAcceptedTypes { OBJECTTYPE_PAGE, OBJECTTYPE_DIAGRAM,
OBJECTTYPE_DATA_SERIES, OBJECTTYPE_DATA_POINT,
@@ -296,7 +297,7 @@ void ChartAreaPanel::Initialize()
if (xSelectionSupplier.is())
xSelectionSupplier->addSelectionChangeListener(mxSelectionListener.get());
SvxColorToolBoxControl* pToolBoxColor = getColorToolBoxControl(mpToolBoxColor.get());
SvxColorToolBoxControl* pToolBoxColor = getColorToolBoxControl(*mxColorDispatch);
pToolBoxColor->setColorSelectFunction(maFillColorWrapper);
updateData();
diff --git a/framework/inc/uielement/complextoolbarcontroller.hxx b/framework/inc/uielement/complextoolbarcontroller.hxx
index fad83e6..5c5bf84 100644
--- a/framework/inc/uielement/complextoolbarcontroller.hxx
+++ b/framework/inc/uielement/complextoolbarcontroller.hxx
@@ -88,7 +88,7 @@ class ComplexToolbarController : public svt::ToolboxController
void notifyFocusLost();
void notifyTextChanged( const OUString& aText );
VclPtr<ToolBox> m_pToolbar;
VclPtr<ToolBox> m_xToolbar;
sal_uInt16 m_nID;
bool m_bMadeInvisible;
mutable css::util::URL m_aURL;
diff --git a/framework/inc/uielement/generictoolbarcontroller.hxx b/framework/inc/uielement/generictoolbarcontroller.hxx
index b1d7c5b..4eee88c 100644
--- a/framework/inc/uielement/generictoolbarcontroller.hxx
+++ b/framework/inc/uielement/generictoolbarcontroller.hxx
@@ -62,7 +62,7 @@ class GenericToolbarController final : public svt::ToolboxController
};
private:
VclPtr<ToolBox> m_pToolbar;
VclPtr<ToolBox> m_xToolbar;
sal_uInt16 m_nID;
bool m_bEnumCommand : 1,
m_bMadeInvisible : 1;
diff --git a/framework/source/uielement/FixedImageToolbarController.cxx b/framework/source/uielement/FixedImageToolbarController.cxx
index e3a37e9..19e05f0 100644
--- a/framework/source/uielement/FixedImageToolbarController.cxx
+++ b/framework/source/uielement/FixedImageToolbarController.cxx
@@ -42,8 +42,8 @@ FixedImageToolbarController::FixedImageToolbarController(
: ComplexToolbarController(rxContext, rFrame, pToolbar, nID, aCommand)
, m_eSymbolSize(SvtMiscOptions().GetCurrentSymbolsSize())
{
m_pFixedImageControl = VclPtr<FixedImage>::Create(m_pToolbar, 0);
m_pToolbar->SetItemWindow(m_nID, m_pFixedImageControl);
m_pFixedImageControl = VclPtr<FixedImage>::Create(m_xToolbar, 0);
m_xToolbar->SetItemWindow(m_nID, m_pFixedImageControl);
bool bBigImages(SvtMiscOptions().AreCurrentSymbolsLarge());
@@ -59,7 +59,7 @@ void SAL_CALL FixedImageToolbarController::dispose()
SolarMutexGuard aSolarMutexGuard;
SvtMiscOptions().RemoveListenerLink(
LINK(this, FixedImageToolbarController, MiscOptionsChanged));
m_pToolbar->SetItemWindow(m_nID, nullptr);
m_xToolbar->SetItemWindow(m_nID, nullptr);
m_pFixedImageControl.disposeAndClear();
ComplexToolbarController::dispose();
}
diff --git a/framework/source/uielement/FixedTextToolbarController.cxx b/framework/source/uielement/FixedTextToolbarController.cxx
index 97a9809..26208cc 100644
--- a/framework/source/uielement/FixedTextToolbarController.cxx
+++ b/framework/source/uielement/FixedTextToolbarController.cxx
@@ -38,16 +38,16 @@ FixedTextToolbarController::FixedTextToolbarController(
ToolBox* pToolbar, sal_uInt16 nID, const OUString& aCommand)
: ComplexToolbarController(rxContext, rFrame, pToolbar, nID, aCommand)
{
m_pFixedTextControl = VclPtr<FixedText>::Create(m_pToolbar, WB_NOMULTILINE | WB_VCENTER
m_pFixedTextControl = VclPtr<FixedText>::Create(m_xToolbar, WB_NOMULTILINE | WB_VCENTER
| WB_LEFT | WB_NOPOINTERFOCUS);
m_pToolbar->SetItemWindow(m_nID, m_pFixedTextControl);
m_pToolbar->SetItemBits(m_nID, ToolBoxItemBits::AUTOSIZE | m_pToolbar->GetItemBits(m_nID));
m_xToolbar->SetItemWindow(m_nID, m_pFixedTextControl);
m_xToolbar->SetItemBits(m_nID, ToolBoxItemBits::AUTOSIZE | m_xToolbar->GetItemBits(m_nID));
}
void SAL_CALL FixedTextToolbarController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
m_pToolbar->SetItemWindow(m_nID, nullptr);
m_xToolbar->SetItemWindow(m_nID, nullptr);
m_pFixedTextControl.disposeAndClear();
ComplexToolbarController::dispose();
}
diff --git a/framework/source/uielement/comboboxtoolbarcontroller.cxx b/framework/source/uielement/comboboxtoolbarcontroller.cxx
index 699fd67..fedb1b7 100644
--- a/framework/source/uielement/comboboxtoolbarcontroller.cxx
+++ b/framework/source/uielement/comboboxtoolbarcontroller.cxx
@@ -124,7 +124,7 @@ ComboboxToolbarController::ComboboxToolbarController(
ComplexToolbarController( rxContext, rFrame, pToolbar, nID, aCommand )
, m_pComboBox( nullptr )
{
m_pComboBox = VclPtr<ComboBoxControl>::Create( m_pToolbar, WB_DROPDOWN, this );
m_pComboBox = VclPtr<ComboBoxControl>::Create( m_xToolbar, WB_DROPDOWN, this );
if ( nWidth == 0 )
nWidth = 100;
@@ -133,7 +133,7 @@ ComboboxToolbarController::ComboboxToolbarController(
::Size aPixelSize = m_pComboBox->LogicToPixel(aLogicalSize, MapMode(MapUnit::MapAppFont));
m_pComboBox->SetSizePixel( ::Size( nWidth, aPixelSize.Height() ));
m_pToolbar->SetItemWindow( m_nID, m_pComboBox );
m_xToolbar->SetItemWindow( m_nID, m_pComboBox );
}
ComboboxToolbarController::~ComboboxToolbarController()
@@ -144,7 +144,7 @@ void SAL_CALL ComboboxToolbarController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
m_pToolbar->SetItemWindow( m_nID, nullptr );
m_xToolbar->SetItemWindow( m_nID, nullptr );
m_pComboBox.disposeAndClear();
ComplexToolbarController::dispose();
diff --git a/framework/source/uielement/complextoolbarcontroller.cxx b/framework/source/uielement/complextoolbarcontroller.cxx
index 51ede7a..eb4a59f 100644
--- a/framework/source/uielement/complextoolbarcontroller.cxx
+++ b/framework/source/uielement/complextoolbarcontroller.cxx
@@ -53,7 +53,7 @@ ComplexToolbarController::ComplexToolbarController(
sal_uInt16 nID,
const OUString& aCommand ) :
svt::ToolboxController( rxContext, rFrame, aCommand )
, m_pToolbar( pToolbar )
, m_xToolbar( pToolbar )
, m_nID( nID )
, m_bMadeInvisible( false )
{
@@ -68,11 +68,11 @@ void SAL_CALL ComplexToolbarController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
m_pToolbar->SetItemWindow( m_nID, nullptr );
m_xToolbar->SetItemWindow( m_nID, nullptr );
svt::ToolboxController::dispose();
m_xURLTransformer.clear();
m_pToolbar.clear();
m_xToolbar.clear();
m_nID = 0;
}
@@ -128,11 +128,11 @@ void ComplexToolbarController::statusChanged( const FeatureStateEvent& Event )
if ( m_bDisposed )
return;
if ( m_pToolbar )
if ( m_xToolbar )
{
m_pToolbar->EnableItem( m_nID, Event.IsEnabled );
m_xToolbar->EnableItem( m_nID, Event.IsEnabled );
ToolBoxItemBits nItemBits = m_pToolbar->GetItemBits( m_nID );
ToolBoxItemBits nItemBits = m_xToolbar->GetItemBits( m_nID );
nItemBits &= ~ToolBoxItemBits::CHECKABLE;
TriState eTri = TRISTATE_FALSE;
@@ -146,8 +146,8 @@ void ComplexToolbarController::statusChanged( const FeatureStateEvent& Event )
{
// Boolean, treat it as checked/unchecked
if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_pToolbar->CheckItem( m_nID, bValue );
m_xToolbar->ShowItem( m_nID );
m_xToolbar->CheckItem( m_nID, bValue );
if ( bValue )
eTri = TRISTATE_TRUE;
nItemBits |= ToolBoxItemBits::CHECKABLE;
@@ -155,22 +155,22 @@ void ComplexToolbarController::statusChanged( const FeatureStateEvent& Event )
else if ( Event.State >>= aStrValue )
{
OUString aText( MnemonicGenerator::EraseAllMnemonicChars( aStrValue ) );
m_pToolbar->SetItemText( m_nID, aText );
m_pToolbar->SetQuickHelpText( m_nID, aText );
m_xToolbar->SetItemText( m_nID, aText );
m_xToolbar->SetQuickHelpText( m_nID, aText );
if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_xToolbar->ShowItem( m_nID );
}
else if ( Event.State >>= aItemState )
{
eTri = TRISTATE_INDET;
nItemBits |= ToolBoxItemBits::CHECKABLE;
if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_xToolbar->ShowItem( m_nID );
}
else if ( Event.State >>= aItemVisibility )
{
m_pToolbar->ShowItem( m_nID, aItemVisibility.bVisible );
m_xToolbar->ShowItem( m_nID, aItemVisibility.bVisible );
m_bMadeInvisible = !aItemVisibility.bVisible;
}
else if ( Event.State >>= aControlCommand )
@@ -183,7 +183,7 @@ void ComplexToolbarController::statusChanged( const FeatureStateEvent& Event )
{
OUString aHelpText;
aControlCommand.Arguments[i].Value >>= aHelpText;
m_pToolbar->SetQuickHelpText(m_nID, aHelpText);
m_xToolbar->SetQuickHelpText(m_nID, aHelpText);
break;
}
}
@@ -193,14 +193,14 @@ void ComplexToolbarController::statusChanged( const FeatureStateEvent& Event )
executeControlCommand( aControlCommand );
}
if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_xToolbar->ShowItem( m_nID );
}
else if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_xToolbar->ShowItem( m_nID );
m_pToolbar->SetItemState( m_nID, eTri );
m_pToolbar->SetItemBits( m_nID, nItemBits );
m_xToolbar->SetItemState( m_nID, eTri );
m_xToolbar->SetItemBits( m_nID, nItemBits );
}
}
diff --git a/framework/source/uielement/dropdownboxtoolbarcontroller.cxx b/framework/source/uielement/dropdownboxtoolbarcontroller.cxx
index ef73758..6eacd13 100644
--- a/framework/source/uielement/dropdownboxtoolbarcontroller.cxx
+++ b/framework/source/uielement/dropdownboxtoolbarcontroller.cxx
@@ -116,7 +116,7 @@ DropdownToolbarController::DropdownToolbarController(
ComplexToolbarController( rxContext, rFrame, pToolbar, nID, aCommand )
, m_pListBoxControl( nullptr )
{
m_pListBoxControl = VclPtr<ListBoxControl>::Create( m_pToolbar, WB_DROPDOWN|WB_AUTOHSCROLL|WB_BORDER, this );
m_pListBoxControl = VclPtr<ListBoxControl>::Create( m_xToolbar, WB_DROPDOWN|WB_AUTOHSCROLL|WB_BORDER, this );
if ( nWidth == 0 )
nWidth = 100;
@@ -125,7 +125,7 @@ DropdownToolbarController::DropdownToolbarController(
::Size aPixelSize = m_pListBoxControl->LogicToPixel(aLogicalSize, MapMode(MapUnit::MapAppFont));
m_pListBoxControl->SetSizePixel( ::Size( nWidth, aPixelSize.Height() ));
m_pToolbar->SetItemWindow( m_nID, m_pListBoxControl );
m_xToolbar->SetItemWindow( m_nID, m_pListBoxControl );
m_pListBoxControl->SetDropDownLineCount( 5 );
}
@@ -137,7 +137,7 @@ void SAL_CALL DropdownToolbarController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
m_pToolbar->SetItemWindow( m_nID, nullptr );
m_xToolbar->SetItemWindow( m_nID, nullptr );
m_pListBoxControl.disposeAndClear();
ComplexToolbarController::dispose();
diff --git a/framework/source/uielement/edittoolbarcontroller.cxx b/framework/source/uielement/edittoolbarcontroller.cxx
index 0ec00b7..2e61641 100644
--- a/framework/source/uielement/edittoolbarcontroller.cxx
+++ b/framework/source/uielement/edittoolbarcontroller.cxx
@@ -116,7 +116,7 @@ EditToolbarController::EditToolbarController(
ComplexToolbarController( rxContext, rFrame, pToolbar, nID, aCommand )
, m_pEditControl( nullptr )
{
m_pEditControl = VclPtr<EditControl>::Create( m_pToolbar, WB_BORDER, this );
m_pEditControl = VclPtr<EditControl>::Create( m_xToolbar, WB_BORDER, this );
if ( nWidth == 0 )
nWidth = 100;
@@ -124,7 +124,7 @@ EditToolbarController::EditToolbarController(
sal_Int32 nHeight = getFontSizePixel( m_pEditControl ) + 6 + 1;
m_pEditControl->SetSizePixel( ::Size( nWidth, nHeight ));
m_pToolbar->SetItemWindow( m_nID, m_pEditControl );
m_xToolbar->SetItemWindow( m_nID, m_pEditControl );
}
EditToolbarController::~EditToolbarController()
@@ -135,7 +135,7 @@ void SAL_CALL EditToolbarController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
m_pToolbar->SetItemWindow( m_nID, nullptr );
m_xToolbar->SetItemWindow( m_nID, nullptr );
m_pEditControl.disposeAndClear();
ComplexToolbarController::dispose();
diff --git a/framework/source/uielement/generictoolbarcontroller.cxx b/framework/source/uielement/generictoolbarcontroller.cxx
index 746f4e1..770f586 100644
--- a/framework/source/uielement/generictoolbarcontroller.cxx
+++ b/framework/source/uielement/generictoolbarcontroller.cxx
@@ -92,7 +92,7 @@ GenericToolbarController::GenericToolbarController( const Reference< XComponentC
sal_uInt16 nID,
const OUString& aCommand ) :
svt::ToolboxController( rxContext, rFrame, aCommand )
, m_pToolbar( pToolbar )
, m_xToolbar( pToolbar )
, m_nID( nID )
, m_bEnumCommand( isEnumCommand( aCommand ))
, m_bMadeInvisible( false )
@@ -112,7 +112,7 @@ void SAL_CALL GenericToolbarController::dispose()
svt::ToolboxController::dispose();
m_pToolbar.clear();
m_xToolbar.clear();
m_nID = 0;
}
@@ -167,11 +167,11 @@ void GenericToolbarController::statusChanged( const FeatureStateEvent& Event )
if ( m_bDisposed )
return;
if ( m_pToolbar )
if ( m_xToolbar )
{
m_pToolbar->EnableItem( m_nID, Event.IsEnabled );
m_xToolbar->EnableItem( m_nID, Event.IsEnabled );
ToolBoxItemBits nItemBits = m_pToolbar->GetItemBits( m_nID );
ToolBoxItemBits nItemBits = m_xToolbar->GetItemBits( m_nID );
nItemBits &= ~ToolBoxItemBits::CHECKABLE;
TriState eTri = TRISTATE_FALSE;
@@ -185,8 +185,8 @@ void GenericToolbarController::statusChanged( const FeatureStateEvent& Event )
{
// Boolean, treat it as checked/unchecked
if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_pToolbar->CheckItem( m_nID, bValue );
m_xToolbar->ShowItem( m_nID );
m_xToolbar->CheckItem( m_nID, bValue );
if ( bValue )
eTri = TRISTATE_TRUE;
nItemBits |= ToolBoxItemBits::CHECKABLE;
@@ -197,7 +197,7 @@ void GenericToolbarController::statusChanged( const FeatureStateEvent& Event )
{
bValue = aStrValue == m_aEnumCommand;
m_pToolbar->CheckItem( m_nID, bValue );
m_xToolbar->CheckItem( m_nID, bValue );
if ( bValue )
eTri = TRISTATE_TRUE;
nItemBits |= ToolBoxItemBits::CHECKABLE;
@@ -217,24 +217,24 @@ void GenericToolbarController::statusChanged( const FeatureStateEvent& Event )
{
aStrValue = FwkResId(STR_SAVECOPYDOC) + aStrValue.copy( 4 );
}
m_pToolbar->SetItemText( m_nID, aStrValue );
m_xToolbar->SetItemText( m_nID, aStrValue );
// tdf#124267 strip mnemonic from tooltip
m_pToolbar->SetQuickHelpText(m_nID, aStrValue.replaceFirst("~", ""));
m_xToolbar->SetQuickHelpText(m_nID, aStrValue.replaceFirst("~", ""));
}
if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_xToolbar->ShowItem( m_nID );
}
else if (( Event.State >>= aItemState ) && !m_bEnumCommand )
{
eTri = TRISTATE_INDET;
nItemBits |= ToolBoxItemBits::CHECKABLE;
if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_xToolbar->ShowItem( m_nID );
}
else if ( Event.State >>= aItemVisibility )
{
m_pToolbar->ShowItem( m_nID, aItemVisibility.bVisible );
m_xToolbar->ShowItem( m_nID, aItemVisibility.bVisible );
m_bMadeInvisible = !aItemVisibility.bVisible;
}
else if ( Event.State >>= aControlCommand )
@@ -247,19 +247,19 @@ void GenericToolbarController::statusChanged( const FeatureStateEvent& Event )
{
OUString aHelpText;
aControlCommand.Arguments[i].Value >>= aHelpText;
m_pToolbar->SetQuickHelpText(m_nID, aHelpText);
m_xToolbar->SetQuickHelpText(m_nID, aHelpText);
break;
}
}
}
if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_xToolbar->ShowItem( m_nID );
}
else if ( m_bMadeInvisible )
m_pToolbar->ShowItem( m_nID );
m_xToolbar->ShowItem( m_nID );
m_pToolbar->SetItemState( m_nID, eTri );
m_pToolbar->SetItemBits( m_nID, nItemBits );
m_xToolbar->SetItemState( m_nID, eTri );
m_xToolbar->SetItemBits( m_nID, nItemBits );
}
}
diff --git a/framework/source/uielement/imagebuttontoolbarcontroller.cxx b/framework/source/uielement/imagebuttontoolbarcontroller.cxx
index 18b23dd..9ad5cc47 100644
--- a/framework/source/uielement/imagebuttontoolbarcontroller.cxx
+++ b/framework/source/uielement/imagebuttontoolbarcontroller.cxx
@@ -66,7 +66,7 @@ ImageButtonToolbarController::ImageButtonToolbarController(
Image aImage = AddonsOptions().GetImageFromURL( aCommand, bBigImages, true );
// Height will be controlled by scaling according to button height
m_pToolbar->SetItemImage( m_nID, aImage );
m_xToolbar->SetItemImage( m_nID, aImage );
}
ImageButtonToolbarController::~ImageButtonToolbarController()
@@ -100,7 +100,7 @@ void ImageButtonToolbarController::executeControlCommand( const css::frame::Cont
aURL,
aImage ))
{
m_pToolbar->SetItemImage( m_nID, aImage );
m_xToolbar->SetItemImage( m_nID, aImage );
// send notification
uno::Sequence< beans::NamedValue > aInfo { { "URL", css::uno::makeAny(aURL) } };
diff --git a/framework/source/uielement/spinfieldtoolbarcontroller.cxx b/framework/source/uielement/spinfieldtoolbarcontroller.cxx
index ae51cc6..0f329d9 100644
--- a/framework/source/uielement/spinfieldtoolbarcontroller.cxx
+++ b/framework/source/uielement/spinfieldtoolbarcontroller.cxx
@@ -160,7 +160,7 @@ SpinfieldToolbarController::SpinfieldToolbarController(
, m_nStep( 0.0 )
, m_pSpinfieldControl( nullptr )
{
m_pSpinfieldControl = VclPtr<SpinfieldControl>::Create( m_pToolbar, WB_SPIN|WB_BORDER, this );
m_pSpinfieldControl = VclPtr<SpinfieldControl>::Create( m_xToolbar, WB_SPIN|WB_BORDER, this );
if ( nWidth == 0 )
nWidth = 100;
@@ -168,7 +168,7 @@ SpinfieldToolbarController::SpinfieldToolbarController(
sal_Int32 nHeight = getFontSizePixel( m_pSpinfieldControl ) + 5 + 1;
m_pSpinfieldControl->SetSizePixel( ::Size( nWidth, nHeight ));
m_pToolbar->SetItemWindow( m_nID, m_pSpinfieldControl );
m_xToolbar->SetItemWindow( m_nID, m_pSpinfieldControl );
}
SpinfieldToolbarController::~SpinfieldToolbarController()
@@ -179,7 +179,7 @@ void SAL_CALL SpinfieldToolbarController::dispose()
{
SolarMutexGuard aSolarMutexGuard;
m_pToolbar->SetItemWindow( m_nID, nullptr );
m_xToolbar->SetItemWindow( m_nID, nullptr );
m_pSpinfieldControl.disposeAndClear();
ComplexToolbarController::dispose();
diff --git a/framework/source/uielement/togglebuttontoolbarcontroller.cxx b/framework/source/uielement/togglebuttontoolbarcontroller.cxx
index 8cd8a94..ca2d431 100644
--- a/framework/source/uielement/togglebuttontoolbarcontroller.cxx
+++ b/framework/source/uielement/togglebuttontoolbarcontroller.cxx
@@ -45,9 +45,9 @@ ToggleButtonToolbarController::ToggleButtonToolbarController(
ComplexToolbarController( rxContext, rFrame, pToolbar, nID, aCommand )
{
if ( eStyle == Style::DropDownButton )
m_pToolbar->SetItemBits( m_nID, ToolBoxItemBits::DROPDOWNONLY | m_pToolbar->GetItemBits( m_nID ) );
m_xToolbar->SetItemBits( m_nID, ToolBoxItemBits::DROPDOWNONLY | m_xToolbar->GetItemBits( m_nID ) );
else // Style::ToggleDropDownButton
m_pToolbar->SetItemBits( m_nID, ToolBoxItemBits::DROPDOWN | m_pToolbar->GetItemBits( m_nID ) );
m_xToolbar->SetItemBits( m_nID, ToolBoxItemBits::DROPDOWN | m_xToolbar->GetItemBits( m_nID ) );
}
ToggleButtonToolbarController::~ToggleButtonToolbarController()
@@ -94,10 +94,10 @@ uno::Reference< awt::XWindow > SAL_CALL ToggleButtonToolbarController::createPop
aPopup->SetTipHelpText( sal_uInt16( i+1 ), m_aDropdownMenuList[i].mTipHelpText );
}
m_pToolbar->SetItemDown( m_nID, true );
m_xToolbar->SetItemDown( m_nID, true );
aPopup->SetSelectHdl( LINK( this, ToggleButtonToolbarController, MenuSelectHdl ));
aPopup->Execute( m_pToolbar, m_pToolbar->GetItemRect( m_nID ));
m_pToolbar->SetItemDown( m_nID, false );
aPopup->Execute( m_xToolbar, m_xToolbar->GetItemRect( m_nID ));
m_xToolbar->SetItemDown( m_nID, false );
return xWindow;
}
diff --git a/include/sfx2/weldutils.hxx b/include/sfx2/weldutils.hxx
index ccca8b3..e87295c 100644
--- a/include/sfx2/weldutils.hxx
+++ b/include/sfx2/weldutils.hxx
@@ -38,13 +38,14 @@ private:
ControllerContainer;
ControllerContainer maControllers;
css::uno::Reference<css::frame::XToolbarController>
GetControllerForCommand(const OUString& rCommand) const;
public:
// fill in the label and icons for actions and dispatch the action on item click
ToolbarUnoDispatcher(weld::Toolbar& rToolbar,
const css::uno::Reference<css::frame::XFrame>& rFrame);
css::uno::Reference<css::frame::XToolbarController>
GetControllerForCommand(const OUString& rCommand) const;
void dispose();
~ToolbarUnoDispatcher();
};
diff --git a/include/svtools/popupwindowcontroller.hxx b/include/svtools/popupwindowcontroller.hxx
index 41de1cb..1666c8a 100644
--- a/include/svtools/popupwindowcontroller.hxx
+++ b/include/svtools/popupwindowcontroller.hxx
@@ -32,6 +32,11 @@
namespace vcl { class Window; }
namespace svtools
{
class ToolbarPopupBase;
}
namespace svt
{
class PopupWindowControllerImpl;
@@ -45,6 +50,8 @@ public:
const OUString& aCommandURL );
virtual ~PopupWindowController() override;
void EndPopupMode();
virtual VclPtr<vcl::Window> createPopupWindow( vcl::Window* pParent ) = 0;
// XServiceInfo
@@ -61,6 +68,9 @@ public:
// XToolbarController
virtual css::uno::Reference< css::awt::XWindow > SAL_CALL createPopupWindow() override;
protected:
std::unique_ptr<svtools::ToolbarPopupBase> mxPopover;
private:
std::unique_ptr<PopupWindowControllerImpl, o3tl::default_delete<PopupWindowControllerImpl>> mxImpl;
};
diff --git a/include/svtools/toolboxcontroller.hxx b/include/svtools/toolboxcontroller.hxx
index 5d86aeb..0ec7228 100644
--- a/include/svtools/toolboxcontroller.hxx
+++ b/include/svtools/toolboxcontroller.hxx
@@ -45,6 +45,11 @@ namespace com :: sun :: star :: util { class XURLTransformer; }
class ToolBox;
namespace weld
{
class Toolbar;
}
namespace svt
{
@@ -165,8 +170,9 @@ class SVT_DLLPUBLIC ToolboxController :
// TODO remove
const css::uno::Reference< css::awt::XWindow >& getParent() const { return m_xParentWindow;}
bool m_bInitialized : 1,
m_bDisposed : 1;
bool m_bInitialized,
m_bDisposed,
m_bSidebar;
sal_uInt16 m_nToolBoxId;
css::uno::Reference< css::frame::XFrame > m_xFrame;
css::uno::Reference< css::uno::XComponentContext > m_xContext;
@@ -177,6 +183,7 @@ class SVT_DLLPUBLIC ToolboxController :
css::uno::Reference< css::awt::XWindow > m_xParentWindow;
css::uno::Reference< css::util::XURLTransformer > m_xUrlTransformer;
OUString m_sModuleName;
weld::Toolbar* m_pToolbar;
};
}
diff --git a/include/svx/PaletteManager.hxx b/include/svx/PaletteManager.hxx
index 81621e4..d468f01 100644
--- a/include/svx/PaletteManager.hxx
+++ b/include/svx/PaletteManager.hxx
@@ -29,7 +29,7 @@
class SvxColorValueSet;
namespace com::sun::star::uno { class XComponentContext; }
namespace svx { class ToolboxButtonColorUpdater; }
namespace svx { class ToolboxButtonColorUpdaterBase; }
namespace weld { class Window; }
class SVX_DLLPUBLIC PaletteManager
@@ -40,7 +40,7 @@ class SVX_DLLPUBLIC PaletteManager
sal_uInt16 mnCurrentPalette;
long mnColorCount;
svx::ToolboxButtonColorUpdater* mpBtnUpdater;
svx::ToolboxButtonColorUpdaterBase* mpBtnUpdater;
XColorListRef pColorList;
std::deque<NamedColor> maRecentColors;
@@ -69,7 +69,7 @@ public:
long GetRecentColorCount() const;
void AddRecentColor(const Color& rRecentColor, const OUString& rColorName, bool bFront = true);
void SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater);
void SetBtnUpdater(svx::ToolboxButtonColorUpdaterBase* pBtnUpdater);
void PopupColorPicker(weld::Window* pParent, const OUString& aCommand, const Color& rInitialColor);
void SetColorSelectFunction(const std::function<void(const OUString&, const NamedColor&)>& aColorSelectFunction);
diff --git a/include/svx/colorwindow.hxx b/include/svx/colorwindow.hxx
index acc1814..257d1e6 100644
--- a/include/svx/colorwindow.hxx
+++ b/include/svx/colorwindow.hxx
@@ -132,6 +132,7 @@ private:
std::unique_ptr<weld::Builder> m_xBuilder;
const sal_uInt16 theSlotId;
OUString maCommand;
weld::Window* const mpParentWindow;
MenuOrToolMenuButton maMenuButton;
std::shared_ptr<PaletteManager> mxPaletteManager;
@@ -150,6 +151,7 @@ private:
std::unique_ptr<weld::CustomWeld> mxRecentColorSetWin;
weld::Button* mpDefaultButton;
Link<const NamedColor&, void> maSelectedLink;
DECL_LINK(SelectHdl, SvtValueSet*, void);
DECL_LINK(SelectPaletteHdl, weld::ComboBox&, void);
DECL_LINK(AutoColorClickHdl, weld::Button&, void);
@@ -160,13 +162,14 @@ private:
NamedColor GetAutoColor() const;
public:
ColorWindow(std::shared_ptr<PaletteManager> const & rPaletteManager,
ColorWindow(const OUString& rCommand,
std::shared_ptr<PaletteManager> const & rPaletteManager,
ColorStatus& rColorStatus,
sal_uInt16 nSlotId,
const css::uno::Reference< css::frame::XFrame >& rFrame,
weld::Window* pParentWindow, const MenuOrToolMenuButton &rMenuButton,
ColorSelectFunction const& rColorSelectFunction);
weld::Container* GetWidget() { return mxTopLevel.get(); }
weld::Container* getTopLevel() { return mxTopLevel.get(); }
virtual ~ColorWindow() override;
void ShowNoneButton();
void SetNoSelection();
@@ -179,6 +182,7 @@ public:
virtual void statusChanged( const css::frame::FeatureStateEvent& rEvent ) override;
void SetSelectedHdl( const Link<const NamedColor&, void>& rLink ) { maSelectedLink = rLink; }
};
#endif
diff --git a/include/svx/itemwin.hxx b/include/svx/itemwin.hxx
index 4f4c3ec..889a51358 100644
--- a/include/svx/itemwin.hxx
+++ b/include/svx/itemwin.hxx
@@ -113,6 +113,7 @@ public:
void Fill( const XPatternListRef &pList );
static void Fill(weld::ComboBox&, const XHatchListRef &pList);
static void Fill(weld::ComboBox&, const XGradientListRef &pList);
static void Fill(weld::ComboBox&, const XBitmapListRef &pList);
static void Fill(weld::ComboBox&, const XPatternListRef &pList);
diff --git a/include/svx/sidebar/AreaPropertyPanelBase.hxx b/include/svx/sidebar/AreaPropertyPanelBase.hxx
index abe5a60..bc72b8b 100644
--- a/include/svx/sidebar/AreaPropertyPanelBase.hxx
+++ b/include/svx/sidebar/AreaPropertyPanelBase.hxx
@@ -32,15 +32,11 @@
#include <svx/xflhtit.hxx>
#include <svx/xbtmpit.hxx>
#include <svx/sidebar/PanelLayout.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/field.hxx>
#include <vcl/slider.hxx>
#include <vcl/fixed.hxx>
#include <vcl/vclptr.hxx>
#include <svl/intitem.hxx>
#include <svx/svxdllapi.h>
#include <sfx2/sidebar/Panel.hxx>
class ToolbarUnoDispatcher;
class XFillFloatTransparenceItem;
class XFillTransparenceItem;
class XFillStyleItem;
@@ -117,20 +113,22 @@ protected:
XGradient maGradientRect;
//ui controls
VclPtr<FixedText> mpColorTextFT;
VclPtr<SvxFillTypeBox> mpLbFillType;
VclPtr<SvxFillAttrBox> mpLbFillAttr;
VclPtr<SvxColorListBox> mpLbFillGradFrom;
VclPtr<SvxColorListBox> mpLbFillGradTo;
VclPtr<sfx2::sidebar::SidebarToolBox> mpToolBoxColor; // for new color picker
VclPtr<FixedText> mpTrspTextFT;
VclPtr<ListBox> mpLBTransType;
VclPtr<MetricField> mpMTRTransparent;
VclPtr<Slider> mpSldTransparent;
VclPtr<ToolBox> mpBTNGradient;
VclPtr<MetricField> mpMTRAngle;
VclPtr<ListBox> mpGradientStyle;
VclPtr<PushButton> mpBmpImport;
std::unique_ptr<weld::Label> mxColorTextFT;
std::unique_ptr<weld::ComboBox> mxLbFillType;
std::unique_ptr<weld::ComboBox> mxLbFillAttr;
std::unique_ptr<ColorListBox> mxLbFillGradFrom;
std::unique_ptr<ColorListBox> mxLbFillGradTo;
std::unique_ptr<weld::Toolbar> mxToolBoxColor; // for new color picker
std::unique_ptr<ToolbarUnoDispatcher> mxColorDispatch;
std::unique_ptr<weld::Label> mxTrspTextFT;
std::unique_ptr<weld::ComboBox> mxLBTransType;
std::unique_ptr<weld::MetricSpinButton> mxMTRTransparent;
std::unique_ptr<weld::Scale> mxSldTransparent;
std::unique_ptr<weld::Toolbar> mxBTNGradient;
std::unique_ptr<weld::MetricSpinButton> mxMTRAngle;
std::unique_ptr<weld::ComboBox> mxGradientStyle;
std::unique_ptr<weld::Button> mxBmpImport;
std::unique_ptr<AreaTransparencyGradientPopup> mxTrGrPopup;
std::unique_ptr< XFillStyleItem > mpStyleItem;
std::unique_ptr< XFillColorItem > mpColorItem;
@@ -138,30 +136,27 @@ protected:
std::unique_ptr< XFillHatchItem > mpHatchItem;
std::unique_ptr< XFillBitmapItem > mpBitmapItem;
Image maImgAxial;
Image maImgElli;
Image maImgQuad;
Image maImgRadial;
Image maImgSquare;
Image maImgLinear;
OUString maImgAxial;
OUString maImgElli;
OUString maImgQuad;
OUString maImgRadial;
OUString maImgSquare;
OUString maImgLinear;
VclPtr<AreaTransparencyGradientPopup> mxTrGrPopup;
VclPtr<sfx2::sidebar::Panel> mpPanel;
std::unique_ptr< XFillFloatTransparenceItem > mpFloatTransparenceItem;
std::unique_ptr< SfxUInt16Item > mpTransparanceItem;
DECL_LINK(SelectFillTypeHdl, ListBox&, void );
DECL_LINK(SelectFillAttrHdl, ListBox&, void );
DECL_LINK(SelectFillColorHdl, SvxColorListBox&, void);
DECL_LINK(ChangeGradientAngle, Edit&, void);
DECL_LINK(ChangeTrgrTypeHdl_Impl, ListBox&, void);
DECL_LINK(ModifyTransparentHdl_Impl, Edit&, void);
DECL_LINK(ModifyTransSliderHdl, Slider*, void);
DECL_LINK(ClickImportBitmapHdl, Button*, void);
// for transparency gradient
DECL_LINK( ClickTrGrHdl_Impl, ToolBox*, void );
DECL_LINK(SelectFillTypeHdl, weld::ComboBox&, void );
DECL_LINK(SelectFillAttrHdl, weld::ComboBox&, void );
DECL_LINK(SelectFillColorHdl, ColorListBox&, void);
DECL_LINK(ChangeGradientAngle, weld::MetricSpinButton&, void);
DECL_LINK(ChangeTrgrTypeHdl_Impl, weld::ComboBox&, void);
DECL_LINK(ModifyTransparentHdl_Impl, weld::MetricSpinButton&, void);
DECL_LINK(ModifyTransSliderHdl, weld::Scale&, void);
DECL_LINK(ClickImportBitmapHdl, weld::Button&, void);
DECL_LINK(ToolbarHdl_Impl, const OString&, void);
void Initialize();
void Update();
diff --git a/include/svx/sidebar/AreaTransparencyGradientPopup.hxx b/include/svx/sidebar/AreaTransparencyGradientPopup.hxx
index cbdc5e9..67abcbf 100644
--- a/include/svx/sidebar/AreaTransparencyGradientPopup.hxx
+++ b/include/svx/sidebar/AreaTransparencyGradientPopup.hxx
@@ -19,12 +19,8 @@
#ifndef INCLUDED_SVX_SOURCE_SIDEBAR_AREA_AREATRANSPARENCYGRADIENTPOPUP_HXX
#define INCLUDED_SVX_SOURCE_SIDEBAR_AREA_AREATRANSPARENCYGRADIENTPOPUP_HXX
#include <vcl/edit.hxx>
#include <vcl/field.hxx>
#include <vcl/floatwin.hxx>
#include <vcl/toolbox.hxx>
#include <vcl/weld.hxx>
class VclContainer;
class XFillFloatTransparenceItem;
namespace svx { namespace sidebar {
@@ -32,31 +28,35 @@ namespace svx { namespace sidebar {
class AreaTransparencyGradientControl;
class AreaPropertyPanelBase;
class AreaTransparencyGradientPopup final : public FloatingWindow
class AreaTransparencyGradientPopup final
{
private:
AreaPropertyPanelBase& mrAreaPropertyPanel;
VclPtr<VclContainer> maCenterGrid;
VclPtr<VclContainer> maAngleGrid;
VclPtr<MetricField> maMtrTrgrCenterX;
VclPtr<MetricField> maMtrTrgrCenterY;
VclPtr<MetricField> maMtrTrgrAngle;
VclPtr<ToolBox> maBtnLeft45;
VclPtr<ToolBox> maBtnRight45;
VclPtr<MetricField> maMtrTrgrStartValue;
VclPtr<MetricField> maMtrTrgrEndValue;
VclPtr<MetricField> maMtrTrgrBorder;
std::unique_ptr<weld::Builder> mxBuilder;
std::unique_ptr<weld::Widget> mxTopLevel;
std::unique_ptr<weld::Widget> mxCenterGrid;
std::unique_ptr<weld::Widget> mxAngleGrid;
std::unique_ptr<weld::MetricSpinButton> mxMtrTrgrCenterX;
std::unique_ptr<weld::MetricSpinButton> mxMtrTrgrCenterY;
std::unique_ptr<weld::MetricSpinButton> mxMtrTrgrAngle;
std::unique_ptr<weld::Toolbar> mxBtnLeft45;
std::unique_ptr<weld::Toolbar> mxBtnRight45;
std::unique_ptr<weld::MetricSpinButton> mxMtrTrgrStartValue;
std::unique_ptr<weld::MetricSpinButton> mxMtrTrgrEndValue;
std::unique_ptr<weld::MetricSpinButton> mxMtrTrgrBorder;
void InitStatus(XFillFloatTransparenceItem const * pGradientItem);
void ExecuteValueModify(sal_uInt8 nStartCol, sal_uInt8 nEndCol);
DECL_LINK(ModifiedTrgrHdl_Impl, Edit&, void);
DECL_LINK(Left_Click45_Impl, ToolBox*, void);
DECL_LINK(Right_Click45_Impl, ToolBox*, void);
DECL_LINK(ModifiedTrgrHdl_Impl, weld::MetricSpinButton&, void);
DECL_LINK(Left_Click45_Impl, const OString&, void);
DECL_LINK(Right_Click45_Impl, const OString&, void);
public:
AreaTransparencyGradientPopup(AreaPropertyPanelBase& rPanel);
virtual ~AreaTransparencyGradientPopup() override;
void Rearrange (XFillFloatTransparenceItem const * pItem);
virtual void dispose() override;
AreaTransparencyGradientPopup(AreaPropertyPanelBase& rPanel, weld::Widget* pParent);
~AreaTransparencyGradientPopup();
weld::Widget* getTopLevel() const { return mxTopLevel.get(); }
void Rearrange(XFillFloatTransparenceItem const * pItem);
};
} } // end of namespace svx::sidebar
diff --git a/include/svx/tbcontrl.hxx b/include/svx/tbcontrl.hxx
index 315fd9e..226160e 100644
--- a/include/svx/tbcontrl.hxx
+++ b/include/svx/tbcontrl.hxx
@@ -150,7 +150,7 @@ class PaletteManager;
namespace svx
{
class ToolboxButtonColorUpdater;
class ToolboxButtonColorUpdaterBase;
}
class SVX_DLLPUBLIC SvxStyleToolBoxControl final : public SfxToolBoxControl
@@ -204,13 +204,15 @@ typedef std::function<void(const OUString&, const NamedColor&)> ColorSelectFunct
class SVX_DLLPUBLIC SvxColorToolBoxControl final : public cppu::ImplInheritanceHelper< svt::PopupWindowController,
css::frame::XSubToolbarController >
{
std::unique_ptr<svx::ToolboxButtonColorUpdater> m_xBtnUpdater;
std::unique_ptr<svx::ToolboxButtonColorUpdaterBase> m_xBtnUpdater;
std::shared_ptr<PaletteManager> m_xPaletteManager;
ColorStatus m_aColorStatus;
bool m_bSplitButton;
sal_uInt16 m_nSlotId;
ColorSelectFunction m_aColorSelectFunction;
DECL_LINK(SelectedHdl, const NamedColor&, void);
DECL_LINK(ToolbarHdl_Impl, const OString&, void);
public:
explicit SvxColorToolBoxControl( const css::uno::Reference<css::uno::XComponentContext>& rContext );
virtual ~SvxColorToolBoxControl() override;
@@ -265,8 +267,6 @@ private:
LanguageType m_eLanguage;
sal_uInt32 m_nFormatKey;
weld::Toolbar* m_pToolbar;
std::unique_ptr<svtools::ToolbarPopupBase> m_xPopover;
public:
static void GetCurrencySymbols( std::vector<OUString>& rList, bool bFlag,
std::vector<sal_uInt16>& rCurrencyList );
@@ -277,14 +277,9 @@ public:
// XToolbarController
virtual void SAL_CALL execute( sal_Int16 nSelectModifier ) override;
// XComponent
virtual void SAL_CALL dispose() override;
using svt::ToolboxController::createPopupWindow;
virtual VclPtr<vcl::Window> createPopupWindow( vcl::Window* pParent ) override;
void EndPopupMode();
// XServiceInfo
virtual OUString SAL_CALL getImplementationName() override;
virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
diff --git a/include/svx/tbxcolorupdate.hxx b/include/svx/tbxcolorupdate.hxx
index e37f7f1..460635c 100644
--- a/include/svx/tbxcolorupdate.hxx
+++ b/include/svx/tbxcolorupdate.hxx
@@ -24,13 +24,18 @@
#include <tools/gen.hxx>
#include <tools/color.hxx>
#include <vcl/vclenum.hxx>
#include <vcl/vclptr.hxx>
#include <svx/Palette.hxx>
#include <com/sun/star/frame/XFrame.hpp>
class ToolBox;
class VirtualDevice;
namespace weld
{
class Toolbar;
}
namespace svx
{
@@ -42,12 +47,14 @@ namespace svx
formerly known as SvxTbxButtonColorUpdater_Impl, residing in svx/source/tbxctrls/colorwindow.hxx.
*/
class ToolboxButtonColorUpdater
class ToolboxButtonColorUpdaterBase
{
public:
ToolboxButtonColorUpdater( sal_uInt16 nSlotId, sal_uInt16 nTbxBtnId, ToolBox* ptrTbx, bool bWideButton,
const OUString& rCommandLabel );
~ToolboxButtonColorUpdater();
ToolboxButtonColorUpdaterBase(bool bWideButton, const OUString& rCommandLabel,
const OUString& rCommandURL,
const css::uno::Reference<css::frame::XFrame>& rFrame);
virtual ~ToolboxButtonColorUpdaterBase();
void Update( const NamedColor& rNamedColor );
void Update( const Color& rColor, bool bForceUpdate = false );
@@ -55,23 +62,68 @@ namespace svx
OUString GetCurrentColorName();
private:
ToolboxButtonColorUpdater(ToolboxButtonColorUpdater const &) = delete;
ToolboxButtonColorUpdater& operator =(ToolboxButtonColorUpdater const &) = delete;
ToolboxButtonColorUpdaterBase(ToolboxButtonColorUpdaterBase const &) = delete;
ToolboxButtonColorUpdaterBase& operator =(ToolboxButtonColorUpdaterBase const &) = delete;
bool const mbWideButton;
sal_uInt16 const mnBtnId;
VclPtr<ToolBox> mpTbx;
protected:
bool const mbWideButton;
bool mbWasHiContrastMode;
Color maCurColor;
tools::Rectangle maUpdRect;
Size maBmpSize;
bool mbWasHiContrastMode;
OUString maCommandLabel;
OUString maCommandURL;
css::uno::Reference<css::frame::XFrame> mxFrame;
void Init(sal_uInt16 nSlotId);
virtual void SetQuickHelpText(const OUString& rText) = 0;
virtual OUString GetQuickHelpText() const = 0;
virtual void SetImage(VirtualDevice* pVirDev) = 0;
virtual VclPtr<VirtualDevice> CreateVirtualDevice() const = 0;
virtual vcl::ImageType GetImageSize() const = 0;
virtual Size GetItemSize() const = 0;
};
class VclToolboxButtonColorUpdater : public ToolboxButtonColorUpdaterBase
{
public:
VclToolboxButtonColorUpdater(sal_uInt16 nSlotId, sal_uInt16 nTbxBtnId, ToolBox* ptrTbx, bool bWideButton,
const OUString& rCommandLabel, const OUString& rCommandURL,
const css::uno::Reference<css::frame::XFrame>& rFrame);
private:
sal_uInt16 const mnBtnId;
VclPtr<ToolBox> mpTbx;
virtual void SetQuickHelpText(const OUString& rText) override;
virtual OUString GetQuickHelpText() const override;
virtual void SetImage(VirtualDevice* pVirDev) override;
virtual VclPtr<VirtualDevice> CreateVirtualDevice() const override;
virtual vcl::ImageType GetImageSize() const override;
virtual Size GetItemSize() const override;
};
class ToolboxButtonColorUpdater : public ToolboxButtonColorUpdaterBase
{
public:
ToolboxButtonColorUpdater(sal_uInt16 nSlotId, const OString& rTbxBtnId, weld::Toolbar* ptrTbx, bool bWideButton,
const OUString& rCommandLabel, const css::uno::Reference<css::frame::XFrame>& rFrame);
private:
OString msBtnId;
weld::Toolbar* mpTbx;
virtual void SetQuickHelpText(const OUString& rText) override;
virtual OUString GetQuickHelpText() const override;
virtual void SetImage(VirtualDevice* pVirDev) override;
virtual VclPtr<VirtualDevice> CreateVirtualDevice() const override;
virtual vcl::ImageType GetImageSize() const override;
virtual Size GetItemSize() const override;
};
}
#endif // INCLUDED_SVX_TBXCOLORUPDATE_HXX
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index 8c20ef5..c8ccf42 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -1973,6 +1973,12 @@ public:
virtual void set_item_label(const OString& rIdent, const OUString& rLabel) = 0;
virtual OUString get_item_label(const OString& rIdent) const = 0;
virtual void set_item_tooltip_text(const OString& rIdent, const OUString& rTip) = 0;
virtual OUString get_item_tooltip_text(const OString& rIdent) const = 0;
virtual void set_item_icon_name(const OString& rIdent, const OUString& rIconName) = 0;
virtual void set_item_image(const OString& rIdent,
const css::uno::Reference<css::graphic::XGraphic>& rIcon)
= 0;
virtual void set_item_image(const OString& rIdent, VirtualDevice* pDevice) = 0;
virtual void insert_separator(int pos, const OUString& rId) = 0;
void append_separator(const OUString& rId) { insert_separator(-1, rId); }
@@ -1981,7 +1987,8 @@ public:
virtual OString get_item_ident(int nIndex) const = 0;
virtual void set_item_ident(int nIndex, const OString& rIdent) = 0;
virtual void set_item_label(int nIndex, const OUString& rLabel) = 0;
virtual void set_item_icon(int nIndex, const css::uno::Reference<css::graphic::XGraphic>& rIcon)
virtual void set_item_image(int nIndex,
const css::uno::Reference<css::graphic::XGraphic>& rIcon)
= 0;
virtual void set_item_tooltip_text(int nIndex, const OUString& rTip) = 0;
diff --git a/reportdesign/source/ui/dlg/Condition.cxx b/reportdesign/source/ui/dlg/Condition.cxx
index f76fe49..b2add1c 100644
--- a/reportdesign/source/ui/dlg/Condition.cxx
+++ b/reportdesign/source/ui/dlg/Condition.cxx
@@ -166,6 +166,7 @@ Condition::~Condition()
void Condition::SetBackgroundDropdownClick()
{
m_xBackColorFloat.reset(new ColorWindow(
OUString() /*m_aCommandURL*/,
m_xPaletteManager,
m_aColorStatus,
SID_BACKGROUND_COLOR,
@@ -174,12 +175,13 @@ void Condition::SetBackgroundDropdownClick()
MenuOrToolMenuButton(m_xActions.get(), "background"),
m_aBackColorWrapper));
m_xActions->set_item_popover("background", m_xBackColorFloat->GetWidget());
m_xActions->set_item_popover("background", m_xBackColorFloat->getTopLevel());
}
void Condition::SetForegroundDropdownClick()
{
m_xForeColorFloat.reset(new ColorWindow(
OUString() /*m_aCommandURL*/,
m_xPaletteManager,
m_aColorStatus,
SID_ATTR_CHAR_COLOR2,
@@ -188,7 +190,7 @@ void Condition::SetForegroundDropdownClick()
MenuOrToolMenuButton(m_xActions.get(), "foreground"),
m_aForeColorWrapper));
m_xActions->set_item_popover("foreground", m_xForeColorFloat->GetWidget());
m_xActions->set_item_popover("foreground", m_xForeColorFloat->getTopLevel());
}
diff --git a/reportdesign/source/ui/dlg/Condition.hxx b/reportdesign/source/ui/dlg/Condition.hxx
index 4f263f8..641c1a2 100644
--- a/reportdesign/source/ui/dlg/Condition.hxx
+++ b/reportdesign/source/ui/dlg/Condition.hxx
@@ -32,8 +32,6 @@
#include <memory>
namespace svx { class ToolboxButtonColorUpdater; }
namespace rptui
{
class OColorPopup;
diff --git a/sc/inc/pch/precompiled_sc.hxx b/sc/inc/pch/precompiled_sc.hxx
index 424eaa0..fabc4b8 100644
--- a/sc/inc/pch/precompiled_sc.hxx
+++ b/sc/inc/pch/precompiled_sc.hxx
@@ -13,7 +13,7 @@
manual changes will be rewritten by the next run of update_pch.sh (which presumably
also fixes all possible problems, so it's usually better to use it).
Generated on 2019-12-03 09:20:23 using:
Generated on 2020-01-02 15:21:26 using:
./bin/update_pch sc sc --cutoff=12 --exclude:system --include:module --include:local
If after updating build fails, use the following command to locate conflicting headers:
@@ -472,6 +472,7 @@
#include <formula/token.hxx>
#include <formula/vectortoken.hxx>
#include <formulacell.hxx>
#include <funcdesc.hxx>
#include <global.hxx>
#include <globalnames.hxx>
#include <hints.hxx>
diff --git a/sc/inc/pch/precompiled_scfilt.hxx b/sc/inc/pch/precompiled_scfilt.hxx
index d13e9f4..e647035 100644
--- a/sc/inc/pch/precompiled_scfilt.hxx
+++ b/sc/inc/pch/precompiled_scfilt.hxx
@@ -13,7 +13,7 @@
manual changes will be rewritten by the next run of update_pch.sh (which presumably
also fixes all possible problems, so it's usually better to use it).
Generated on 2019-10-17 16:10:56 using:
Generated on 2020-01-02 15:19:32 using:
./bin/update_pch sc scfilt --cutoff=4 --exclude:system --exclude:module --include:local
If after updating build fails, use the following command to locate conflicting headers:
@@ -40,12 +40,12 @@
#include <string.h>
#include <string_view>
#include <type_traits>
#include <typeinfo>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
#include <o3tl/optional.hxx>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ptree_fwd.hpp>
#endif // PCH_LEVEL >= 1
#if PCH_LEVEL >= 2
#include <osl/diagnose.h>
@@ -102,7 +102,9 @@
#include <com/sun/star/awt/Point.hpp>
#include <com/sun/star/awt/Size.hpp>
#include <com/sun/star/beans/PropertyState.hpp>
#include <com/sun/star/beans/XMultiPropertySet.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
#include <com/sun/star/beans/XPropertyState.hpp>
#include <com/sun/star/chart/XChartDocument.hpp>
#include <com/sun/star/container/XIndexAccess.hpp>
#include <com/sun/star/container/XIndexContainer.hpp>
@@ -116,6 +118,7 @@
#include <com/sun/star/lang/XMultiServiceFactory.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/lang/XTypeProvider.hpp>
#include <com/sun/star/lang/XUnoTunnel.hpp>
#include <com/sun/star/sheet/DataPilotFieldGroupBy.hpp>
#include <com/sun/star/sheet/DataPilotFieldReferenceItemType.hpp>
#include <com/sun/star/sheet/FormulaLanguage.hpp>
@@ -134,11 +137,13 @@
#include <com/sun/star/xml/sax/XFastContextHandler.hpp>
#include <comphelper/comphelperdllapi.h>
#include <comphelper/processfactory.hxx>
#include <comphelper/servicehelper.hxx>
#include <comphelper/string.hxx>
#include <cppu/unotype.hxx>
#include <cppuhelper/implbase.hxx>
#include <cppuhelper/implbase_ex.hxx>
#include <cppuhelper/weak.hxx>
#include <cppuhelper/weakref.hxx>
#include <drawinglayer/primitive2d/baseprimitive2d.hxx>
#include <editeng/borderline.hxx>
#include <editeng/boxitem.hxx>
@@ -161,6 +166,7 @@
#include <filter/msfilter/msfilterdllapi.h>
#include <i18nlangtag/lang.h>
#include <o3tl/cow_wrapper.hxx>
#include <o3tl/optional.hxx>
#include <o3tl/strong_int.hxx>
#include <o3tl/typed_flags_set.hxx>
#include <o3tl/underlyingenumvalue.hxx>
@@ -204,13 +210,16 @@
#include <svl/typedwhich.hxx>
#include <svl/zforlist.hxx>
#include <svtools/svtdllapi.h>
#include <svx/DiagramDataInterface.hxx>
#include <svx/itextprovider.hxx>
#include <svx/msdffdef.hxx>
#include <svx/sdtaditm.hxx>
#include <svx/sdtaitm.hxx>
#include <svx/sdtakitm.hxx>
#include <svx/shapeproperty.hxx>
#include <svx/svddef.hxx>
#include <svx/svdoattr.hxx>
#include <svx/svdobj.hxx>
#include <svx/svdoole2.hxx>
#include <svx/svdorect.hxx>
#include <svx/svdotext.hxx>
@@ -224,6 +233,7 @@
#include <tools/color.hxx>
#include <tools/date.hxx>
#include <tools/datetime.hxx>
#include <tools/diagnose_ex.h>
#include <tools/gen.hxx>
#include <tools/link.hxx>
#include <tools/mapunit.hxx>
@@ -232,6 +242,7 @@
#include <tools/time.hxx>
#include <tools/toolsdllapi.h>
#include <tools/urlobj.hxx>
#include <tools/weakbase.h>
#include <typelib/typedescription.h>
#include <uno/data.h>
#include <unotools/charclass.hxx>
diff --git a/sc/inc/pch/precompiled_scui.hxx b/sc/inc/pch/precompiled_scui.hxx
index 61dee39..e01d112 100644
--- a/sc/inc/pch/precompiled_scui.hxx
+++ b/sc/inc/pch/precompiled_scui.hxx
@@ -13,7 +13,7 @@
manual changes will be rewritten by the next run of update_pch.sh (which presumably
also fixes all possible problems, so it's usually better to use it).
Generated on 2019-10-15 16:58:12 using:
Generated on 2020-01-02 15:21:50 using:
./bin/update_pch sc scui --cutoff=1 --exclude:system --exclude:module --include:local
If after updating build fails, use the following command to locate conflicting headers:
@@ -34,14 +34,7 @@
#include <rtl/ustrbuf.hxx>
#include <sal/config.h>
#include <sal/types.h>
#include <vcl/button.hxx>
#include <vcl/combobox.hxx>
#include <vcl/edit.hxx>
#include <vcl/event.hxx>
#include <vcl/field.hxx>
#include <vcl/fixed.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/ptrstyle.hxx>
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
#include <vcl/weld.hxx>
@@ -92,6 +85,7 @@
#include <svtools/ctrlbox.hxx>
#include <svtools/ehdl.hxx>
#include <svtools/inettbc.hxx>
#include <svtools/miscopt.hxx>
#include <svtools/restartdialog.hxx>
#include <svtools/sfxecode.hxx>
#include <svtools/unitconv.hxx>
diff --git a/sd/inc/pch/precompiled_sd.hxx b/sd/inc/pch/precompiled_sd.hxx
index b2c4f93..b3c53e6 100644
--- a/sd/inc/pch/precompiled_sd.hxx
+++ b/sd/inc/pch/precompiled_sd.hxx
@@ -13,7 +13,7 @@
manual changes will be rewritten by the next run of update_pch.sh (which presumably
also fixes all possible problems, so it's usually better to use it).
Generated on 2019-12-01 19:53:21 using:
Generated on 2020-01-02 15:15:28 using:
./bin/update_pch sd sd --cutoff=4 --exclude:system --exclude:module --include:local
If after updating build fails, use the following command to locate conflicting headers:
@@ -41,6 +41,7 @@
#include <vector>
#include <boost/property_tree/json_parser.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/ptree_fwd.hpp>
#endif // PCH_LEVEL >= 1
#if PCH_LEVEL >= 2
#include <osl/diagnose.h>
diff --git a/sd/inc/pch/precompiled_sdui.hxx b/sd/inc/pch/precompiled_sdui.hxx
index bfecafb..7b2124a 100644
--- a/sd/inc/pch/precompiled_sdui.hxx
+++ b/sd/inc/pch/precompiled_sdui.hxx
@@ -13,7 +13,7 @@
manual changes will be rewritten by the next run of update_pch.sh (which presumably
also fixes all possible problems, so it's usually better to use it).
Generated on 2019-12-03 09:20:46 using:
Generated on 2020-01-02 15:15:40 using:
./bin/update_pch sd sdui --cutoff=4 --exclude:system --include:module --include:local
If after updating build fails, use the following command to locate conflicting headers:
@@ -119,7 +119,6 @@
#include <vcl/image.hxx>
#include <vcl/keycod.hxx>
#include <vcl/keycodes.hxx>
#include <vcl/lstbox.hxx>
#include <vcl/mapmod.hxx>
#include <vcl/menu.hxx>
#include <vcl/metaactiontypes.hxx>
diff --git a/sfx2/source/sidebar/ControllerFactory.cxx b/sfx2/source/sidebar/ControllerFactory.cxx
index 61ed9245..49b67cb 100644
--- a/sfx2/source/sidebar/ControllerFactory.cxx
+++ b/sfx2/source/sidebar/ControllerFactory.cxx
@@ -231,6 +231,10 @@ Reference<frame::XToolbarController> ControllerFactory::CreateToolBarController(
aPropValue.Value <<= rxToolbar;
aPropertyVector.push_back( makeAny( aPropValue ));
aPropValue.Name = "IsSidebar";
aPropValue.Value <<= true;
aPropertyVector.push_back( makeAny( aPropValue ));
if (nWidth > 0)
{
aPropValue.Name = "Width";
diff --git a/sfx2/source/toolbox/weldutils.cxx b/sfx2/source/toolbox/weldutils.cxx
index 3f2d097..52cf254 100644
--- a/sfx2/source/toolbox/weldutils.cxx
+++ b/sfx2/source/toolbox/weldutils.cxx
@@ -57,6 +57,8 @@ ToolbarUnoDispatcher::ToolbarUnoDispatcher(weld::Toolbar& rToolbar,
: m_xFrame(rFrame)
, m_pToolbar(&rToolbar)
{
rToolbar.connect_clicked(LINK(this, ToolbarUnoDispatcher, SelectHdl));
OUString aModuleName(vcl::CommandInfoProvider::GetModuleIdentifier(rFrame));
vcl::ImageType eSize = rToolbar.get_icon_size();
@@ -75,12 +77,10 @@ ToolbarUnoDispatcher::ToolbarUnoDispatcher(weld::Toolbar& rToolbar,
vcl::CommandInfoProvider::GetTooltipForCommand(sCommand, aProperties, rFrame));
rToolbar.set_item_tooltip_text(i, aTooltip);
auto xImage(vcl::CommandInfoProvider::GetXGraphicForCommand(sCommand, rFrame, eSize));
rToolbar.set_item_icon(i, xImage);
rToolbar.set_item_image(i, xImage);
CreateController(sCommand);
}
rToolbar.connect_clicked(LINK(this, ToolbarUnoDispatcher, SelectHdl));
}
void ToolbarUnoDispatcher::CreateController(const OUString& rCommand)
diff --git a/solenv/sanitizers/ui/svx.suppr b/solenv/sanitizers/ui/svx.suppr
index b2d33d3..d089305 100644
--- a/solenv/sanitizers/ui/svx.suppr
+++ b/solenv/sanitizers/ui/svx.suppr
@@ -60,9 +60,6 @@ svx/uiconfig/ui/redlinefilterpage.ui://GtkLabel[@id='and'] orphan-label
svx/uiconfig/ui/safemodedialog.ui://GtkLabel[@id='label1'] orphan-label
svx/uiconfig/ui/safemodedialog.ui://GtkLabel[@id='label3'] orphan-label
svx/uiconfig/ui/safemodedialog.ui://GtkLabel[@id='label4'] orphan-label
svx/uiconfig/ui/sidebararea.ui://GtkLabel[@id='filllabel'] orphan-label
svx/uiconfig/ui/sidebararea.ui://svxlo-SvxFillAttrBox[@id='fillattr'] missing-label-for
svx/uiconfig/ui/sidebararea.ui://svxlo-SvxFillTypeBox[@id='fillstyle'] missing-label-for
svx/uiconfig/ui/sidebararea.ui://GtkLabel[@id='transparencylabel'] orphan-label
svx/uiconfig/ui/sidebarshadow.ui://GtkLabel[@id='transparency_label'] orphan-label
svx/uiconfig/ui/sidebarshadow.ui://GtkSpinButton[@id='FIELD_TRANSPARENCY'] no-labelled-by
diff --git a/svtools/source/uno/popupwindowcontroller.cxx b/svtools/source/uno/popupwindowcontroller.cxx
index 0ffb2f5..cc283adb 100644
--- a/svtools/source/uno/popupwindowcontroller.cxx
+++ b/svtools/source/uno/popupwindowcontroller.cxx
@@ -24,7 +24,9 @@
#include <vcl/toolbox.hxx>
#include <vcl/weldutils.hxx>
#include <svtools/framestatuslistener.hxx>
#include <svtools/popupwindowcontroller.hxx>
#include <svtools/toolbarmenu.hxx>
using namespace ::com::sun::star;
using namespace css::uno;
@@ -174,6 +176,7 @@ sal_Bool SAL_CALL PopupWindowController::supportsService( const OUString& Servic
// XComponent
void SAL_CALL PopupWindowController::dispose()
{
mxPopover.reset();
mxImpl.reset();
svt::ToolboxController::dispose();
}
@@ -233,6 +236,11 @@ Reference< awt::XWindow > SAL_CALL PopupWindowController::createPopupWindow()
return Reference< awt::XWindow >();
}
void PopupWindowController::EndPopupMode()
{
m_pToolbar->set_menu_item_active(m_aCommandURL.toUtf8(), false);
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svtools/source/uno/toolboxcontroller.cxx b/svtools/source/uno/toolboxcontroller.cxx
index 8bd9d94..3ff118f 100644
--- a/svtools/source/uno/toolboxcontroller.cxx
+++ b/svtools/source/uno/toolboxcontroller.cxx
@@ -29,6 +29,7 @@
#include <vcl/svapp.hxx>
#include <toolkit/helper/vclunohelper.hxx>
#include <vcl/toolbox.hxx>
#include <vcl/weldutils.hxx>
#include <comphelper/processfactory.hxx>
const int TOOLBARCONTROLLER_PROPHANDLE_SUPPORTSVISIBLE = 1;
@@ -54,11 +55,13 @@ ToolboxController::ToolboxController(
, m_bSupportVisible( false )
, m_bInitialized( false )
, m_bDisposed( false )
, m_bSidebar( false )
, m_nToolBoxId( SAL_MAX_UINT16 )
, m_xFrame( xFrame )
, m_xContext( rxContext )
, m_aCommandURL( aCommandURL )
, m_aListenerContainer( m_aMutex )
, m_pToolbar(nullptr)
{
OSL_ASSERT( m_xContext.is() );
registerProperty( TOOLBARCONTROLLER_PROPNAME_SUPPORTSVISIBLE,
@@ -80,8 +83,10 @@ ToolboxController::ToolboxController() :
, m_bSupportVisible(false)
, m_bInitialized( false )
, m_bDisposed( false )
, m_bSidebar( false )
, m_nToolBoxId( SAL_MAX_UINT16 )
, m_aListenerContainer( m_aMutex )
, m_pToolbar(nullptr)
{
registerProperty( TOOLBARCONTROLLER_PROPNAME_SUPPORTSVISIBLE,
TOOLBARCONTROLLER_PROPHANDLE_SUPPORTSVISIBLE,
@@ -191,6 +196,8 @@ void SAL_CALL ToolboxController::initialize( const Sequence< Any >& aArguments )
aPropValue.Value >>= m_sModuleName;
else if ( aPropValue.Name == "Identifier" )
aPropValue.Value >>= m_nToolBoxId;
else if ( aPropValue.Name == "IsSidebar" )
aPropValue.Value >>= m_bSidebar;
}
}
@@ -205,6 +212,12 @@ void SAL_CALL ToolboxController::initialize( const Sequence< Any >& aArguments )
if ( !m_aCommandURL.isEmpty() )
m_aListenerMap.emplace( m_aCommandURL, Reference< XDispatch >() );
if (weld::TransportAsXWindow* pTunnel = dynamic_cast<weld::TransportAsXWindow*>(getParent().get()))
{
m_pToolbar = dynamic_cast<weld::Toolbar*>(pTunnel->getWidget());
assert(m_pToolbar && "must be a toolbar");
}
}
void SAL_CALL ToolboxController::update()
diff --git a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
index 0b050bb..e53bd5d 100644
--- a/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
+++ b/svx/source/sidebar/area/AreaPropertyPanelBase.cxx
@@ -35,13 +35,14 @@
#include <svtools/toolbarmenu.hxx>
#include <svx/tbcontrl.hxx>
#include <sfx2/opengrf.hxx>
#include <sfx2/weldutils.hxx>
#include <tools/urlobj.hxx>
#include <bitmaps.hlst>
using namespace css;
using namespace css::uno;
const char UNO_SIDEBARGRADIENT[] = ".uno:sidebargradient";
const char SIDEBARGRADIENT[] = "sidebargradient";
namespace svx { namespace sidebar {
@@ -69,7 +70,7 @@ const sal_Int32 AreaPropertyPanelBase::DEFAULT_BORDER = 0;
AreaPropertyPanelBase::AreaPropertyPanelBase(
vcl::Window* pParent,
const css::uno::Reference<css::frame::XFrame>& rxFrame)
: PanelLayout(pParent, "AreaPropertyPanel", "svx/ui/sidebararea.ui", rxFrame),
: PanelLayout(pParent, "AreaPropertyPanel", "svx/ui/sidebararea.ui", rxFrame, true),
meLastXFS(static_cast<sal_uInt16>(-1)),
mnLastPosHatch(0),
mnLastPosBitmap(0),
@@ -81,37 +82,36 @@ AreaPropertyPanelBase::AreaPropertyPanelBase(
maGradientElliptical(),
maGradientSquare(),
maGradientRect(),
mxColorTextFT(m_xBuilder->weld_label("filllabel")),
mxLbFillType(m_xBuilder->weld_combo_box("fillstyle")),
mxLbFillAttr(m_xBuilder->weld_combo_box("fillattr")),
mxLbFillGradFrom(new ColorListBox(m_xBuilder->weld_menu_button("fillgrad1"), GetFrameWeld())),
mxLbFillGradTo(new ColorListBox(m_xBuilder->weld_menu_button("fillgrad2"), GetFrameWeld())),
mxToolBoxColor(m_xBuilder->weld_toolbar("selectcolor")),
mxColorDispatch(new ToolbarUnoDispatcher(*mxToolBoxColor, rxFrame)),
mxTrspTextFT(m_xBuilder->weld_label("transparencylabel")),
mxLBTransType(m_xBuilder->weld_combo_box("transtype")),
mxMTRTransparent(m_xBuilder->weld_metric_spin_button("settransparency", FieldUnit::PERCENT)),
mxSldTransparent(m_xBuilder->weld_scale("transparencyslider")),
mxBTNGradient(m_xBuilder->weld_toolbar("selectgradient")),
mxMTRAngle(m_xBuilder->weld_metric_spin_button("gradangle", FieldUnit::DEGREE)),
mxGradientStyle(m_xBuilder->weld_combo_box("gradientstyle")),
mxBmpImport(m_xBuilder->weld_button("bmpimport")),
mpStyleItem(),
mpColorItem(),
mpFillGradientItem(),
mpHatchItem(),
mpBitmapItem(),
maImgAxial(StockImage::Yes, BMP_AXIAL),
maImgElli(StockImage::Yes, BMP_ELLI),
maImgQuad(StockImage::Yes, BMP_QUAD),
maImgRadial(StockImage::Yes, BMP_RADIAL),
maImgSquare(StockImage::Yes, BMP_SQUARE),
maImgLinear(StockImage::Yes, BMP_LINEAR),
maImgAxial(BMP_AXIAL),
maImgElli(BMP_ELLI),
maImgQuad(BMP_QUAD),
maImgRadial(BMP_RADIAL),
maImgSquare(BMP_SQUARE),
maImgLinear(BMP_LINEAR),
mpFloatTransparenceItem(),
mpTransparanceItem()
{
get(mpColorTextFT, "filllabel");
get(mpLbFillType, "fillstyle");
get(mpLbFillAttr, "fillattr");
get(mpTrspTextFT, "transparencylabel");
get(mpToolBoxColor, "selectcolor");
get(mpLBTransType, "transtype");
get(mpMTRTransparent, "settransparency");
get(mpSldTransparent, "transparencyslider");
get(mpBTNGradient, "selectgradient");
get(mpMTRAngle, "gradangle");
get(mpLbFillGradFrom, "fillgrad1");
get(mpLbFillGradTo, "fillgrad2");
get(mpGradientStyle, "gradientstyle");
get(mpBmpImport, "bmpimport");
mpPanel = dynamic_cast<sfx2::sidebar::Panel*>(pParent);
Initialize();
}
AreaPropertyPanelBase::~AreaPropertyPanelBase()
@@ -121,21 +121,22 @@ AreaPropertyPanelBase::~AreaPropertyPanelBase()
void AreaPropertyPanelBase::dispose()
{
mxTrGrPopup.disposeAndClear();
mpColorTextFT.clear();
mpLbFillType.clear();
mpLbFillAttr.clear();
mpToolBoxColor.clear();
mpTrspTextFT.clear();
mpLBTransType.clear();
mpMTRTransparent.clear();
mpSldTransparent.clear();
mpBTNGradient.clear();
mpMTRAngle.clear();
mpLbFillGradFrom.clear();
mpLbFillGradTo.clear();
mpGradientStyle.clear();
mpBmpImport.clear();
mxTrGrPopup.reset();
mxColorTextFT.reset();
mxLbFillType.reset();
mxLbFillAttr.reset();
mxColorDispatch.reset();
mxToolBoxColor.reset();
mxTrspTextFT.reset();
mxLBTransType.reset();
mxMTRTransparent.reset();
mxSldTransparent.reset();
mxBTNGradient.reset();
mxMTRAngle.reset();
mxLbFillGradFrom.reset();
mxLbFillGradTo.reset();
mxGradientStyle.reset();
mxBmpImport.reset();
mpPanel.clear();
PanelLayout::dispose();
@@ -143,6 +144,8 @@ void AreaPropertyPanelBase::dispose()
void AreaPropertyPanelBase::Initialize()
{
FillTypeLB::Fill(*mxLbFillType);
maGradientLinear.SetXOffset(DEFAULT_CENTERX);
maGradientLinear.SetYOffset(DEFAULT_CENTERY);
maGradientLinear.SetAngle(DEFAULT_ANGLE);
@@ -167,39 +170,44 @@ void AreaPropertyPanelBase::Initialize()
maGradientRect.SetGradientStyle(css::awt::GradientStyle_RECT);
mpLbFillType->SetSelectHdl( LINK( this, AreaPropertyPanelBase, SelectFillTypeHdl ) );
mxLbFillType->connect_changed( LINK( this, AreaPropertyPanelBase, SelectFillTypeHdl ) );
Link<ListBox&,void> aLink = LINK( this, AreaPropertyPanelBase, SelectFillAttrHdl );
Link<SvxColorListBox&,void> aLink3 = LINK( this, AreaPropertyPanelBase, SelectFillColorHdl );
mpLbFillAttr->SetSelectHdl( aLink );
mpGradientStyle->SetSelectHdl( aLink );
mpLbFillGradFrom->SetSelectHdl( aLink3 );
mpLbFillGradTo->SetSelectHdl( aLink3 );
mpMTRAngle->SetModifyHdl(LINK(this,AreaPropertyPanelBase, ChangeGradientAngle));
Link<weld::ComboBox&,void> aLink = LINK( this, AreaPropertyPanelBase, SelectFillAttrHdl );
mxLbFillAttr->connect_changed( aLink );
mxGradientStyle->connect_changed( aLink );
Link<ColorListBox&,void> aLink3 = LINK( this, AreaPropertyPanelBase, SelectFillColorHdl );
mxLbFillGradFrom->SetSelectHdl( aLink3 );
mxLbFillGradTo->SetSelectHdl( aLink3 );
mxMTRAngle->connect_value_changed(LINK(this,AreaPropertyPanelBase, ChangeGradientAngle));
mpLBTransType->SetSelectHdl(LINK(this, AreaPropertyPanelBase, ChangeTrgrTypeHdl_Impl));
mxLBTransType->connect_changed(LINK(this, AreaPropertyPanelBase, ChangeTrgrTypeHdl_Impl));
SetTransparency( 50 );
mpMTRTransparent->SetModifyHdl(LINK(this, AreaPropertyPanelBase, ModifyTransparentHdl_Impl));
mpSldTransparent->SetSlideHdl(LINK(this, AreaPropertyPanelBase, ModifyTransSliderHdl));
mxMTRTransparent->connect_value_changed(LINK(this, AreaPropertyPanelBase, ModifyTransparentHdl_Impl));
mxSldTransparent->connect_value_changed(LINK(this, AreaPropertyPanelBase, ModifyTransSliderHdl));
const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
mpBTNGradient->SetItemBits( nIdGradient, mpBTNGradient->GetItemBits( nIdGradient ) | ToolBoxItemBits::DROPDOWNONLY );
Link<ToolBox *, void> aLink2 = LINK( this, AreaPropertyPanelBase, ClickTrGrHdl_Impl );
mpBTNGradient->SetDropdownClickHdl( aLink2 );
mpBTNGradient->SetSelectHdl( aLink2 );
mpBTNGradient->SetItemImage(nIdGradient,maImgLinear);
mpBTNGradient->Hide();
mpBmpImport->SetClickHdl( LINK(this, AreaPropertyPanelBase, ClickImportBitmapHdl));
mxTrGrPopup = std::make_unique<AreaTransparencyGradientPopup>(*this, mxBTNGradient.get());
mxBTNGradient->set_item_popover(SIDEBARGRADIENT, mxTrGrPopup->getTopLevel());
mxBTNGradient->connect_clicked(LINK(this, AreaPropertyPanelBase, ToolbarHdl_Impl));
mxBTNGradient->set_item_icon_name(SIDEBARGRADIENT, maImgLinear);
mxBTNGradient->hide();
mxBmpImport->connect_clicked( LINK(this, AreaPropertyPanelBase, ClickImportBitmapHdl));
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, ToolbarHdl_Impl, const OString&, void)
{
mxBTNGradient->set_menu_item_active(SIDEBARGRADIENT, !mxBTNGradient->get_menu_item_active(SIDEBARGRADIENT));
}
void AreaPropertyPanelBase::SetTransparency(sal_uInt16 nVal)
{
mpSldTransparent->SetThumbPos(nVal);
mpMTRTransparent->SetValue(nVal);
mxSldTransparent->set_value(nVal);
mxMTRTransparent->set_value(nVal, FieldUnit::PERCENT);
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, ClickImportBitmapHdl, Button*, void)
IMPL_LINK_NOARG(AreaPropertyPanelBase, ClickImportBitmapHdl, weld::Button&, void)
{
SvxOpenGraphicDialog aDlg("Import", GetFrameWeld());
aDlg.EnableLink(false);
@@ -232,18 +240,18 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, ClickImportBitmapHdl, Button*, void)
pList->Insert(std::make_unique<XBitmapEntry>(aGraphic, aName));
pList->Save();
mpLbFillAttr->Clear();
mpLbFillAttr->Fill(pList);
mpLbFillAttr->SelectEntry(aName);
SelectFillAttrHdl(*mpLbFillAttr);
mxLbFillAttr->clear();
SvxFillAttrBox::Fill(*mxLbFillAttr, pList);
mxLbFillAttr->set_active_text(aName);
SelectFillAttrHdl(*mxLbFillAttr);
}
}
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, weld::ComboBox&, void)
{
sal_Int32 nPos = static_cast<eFillStyle>(mpLbFillType->GetSelectedEntryPos());
mpLbFillAttr->Clear();
sal_Int32 nPos = static_cast<eFillStyle>(mxLbFillType->get_active());
mxLbFillAttr->clear();
SfxObjectShell* pSh = SfxObjectShell::Current();
if(!pSh)
return;
@@ -257,15 +265,14 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
default:
case NONE:
{
mpLbFillAttr->Show();
mpLbFillGradFrom->Hide();
mpLbFillGradTo->Hide();
mpGradientStyle->Hide();
mpMTRAngle->Hide();
mpToolBoxColor->Hide();
mpBmpImport->Hide();
mpLbFillType->Selected();
mpLbFillAttr->Disable();
mxLbFillAttr->show();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxGradientStyle->hide();
mxMTRAngle->hide();
mxToolBoxColor->hide();
mxBmpImport->hide();
mxLbFillAttr->set_sensitive(false);
// #i122676# need to call a single SID_ATTR_FILL_STYLE change
setFillStyle(XFillStyleItem(drawing::FillStyle_NONE));
@@ -273,13 +280,13 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
}
case SOLID:
{
mpLbFillAttr->Hide();
mpLbFillGradFrom->Hide();
mpLbFillGradTo->Hide();
mpGradientStyle->Hide();
mpMTRAngle->Hide();
mpBmpImport->Hide();
mpToolBoxColor->Show();
mxLbFillAttr->hide();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxGradientStyle->hide();
mxMTRAngle->hide();
mxBmpImport->hide();
mxToolBoxColor->show();
const OUString aTmpStr;
const Color aColor = mpColorItem ? mpColorItem->GetColorValue() : COL_AUTO;
const XFillColorItem aXFillColorItem( aTmpStr, aColor );
@@ -291,20 +298,20 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
}
case GRADIENT:
{
mpLbFillAttr->Hide();
mpLbFillGradFrom->Show();
mpLbFillGradTo->Show();
mpGradientStyle->Show();
mpMTRAngle->Show();
mpToolBoxColor->Hide();
mpBmpImport->Hide();
mxLbFillAttr->hide();
mxLbFillGradFrom->show();
mxLbFillGradTo->show();
mxGradientStyle->show();
mxMTRAngle->show();
mxToolBoxColor->hide();
mxBmpImport->hide();
mpLbFillAttr->Enable();
mpLbFillGradTo->Enable();
mpLbFillGradFrom->Enable();
mpGradientStyle->Enable();
mpMTRAngle->Enable();
mpLbFillAttr->Clear();
mxLbFillAttr->set_sensitive(true);
mxLbFillGradTo->set_sensitive(true);
mxLbFillGradFrom->set_sensitive(true);
mxGradientStyle->set_sensitive(true);
mxMTRAngle->set_sensitive(true);
mxLbFillAttr->clear();
const SvxGradientListItem * pItem = pSh->GetItem(SID_GRADIENT_LIST);
@@ -317,36 +324,34 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
// #i122676# change FillStyle and Gradient in one call
XFillStyleItem aXFillStyleItem(drawing::FillStyle_GRADIENT);
setFillStyleAndGradient(&aXFillStyleItem, aXFillGradientItem);
mpLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());
mxLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
mxLbFillGradTo->SelectEntry(aGradient.GetEndColor());
mpMTRAngle->SetValue(aGradient.GetAngle() / 10);
mxMTRAngle->set_value(aGradient.GetAngle() / 10, FieldUnit::DEGREE);
css::awt::GradientStyle eXGS = aGradient.GetGradientStyle();
mpGradientStyle->SelectEntryPos(sal::static_int_cast< sal_Int32 >( eXGS ));
mxGradientStyle->set_active(sal::static_int_cast< sal_Int32 >( eXGS ));
}
break;
}
case HATCH:
{
mpLbFillAttr->Show();
mpLbFillGradFrom->Hide();
mpLbFillGradTo->Hide();
mpMTRAngle->Hide();
mpGradientStyle->Hide();
mpToolBoxColor->Hide();
mpBmpImport->Hide();
mxLbFillAttr->show();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxMTRAngle->hide();
mxGradientStyle->hide();
mxToolBoxColor->hide();
mxBmpImport->hide();
const SvxHatchListItem* pItem( pSh->GetItem(SID_HATCH_LIST) );
if(pItem)
{
const XHatchListRef& pXHatchList(pItem->GetHatchList());
mpLbFillAttr->Enable();
mpLbFillAttr->Clear();
mpLbFillAttr->Fill(pXHatchList);
mxLbFillAttr->set_sensitive(true);
mxLbFillAttr->clear();
SvxFillAttrBox::Fill(*mxLbFillAttr, pXHatchList);
mpLbFillAttr->AdaptDropDownLineCountToMaximum();
if(LISTBOX_ENTRY_NOTFOUND != mnLastPosHatch)
if (mnLastPosHatch != -1)
{
if(mnLastPosHatch < pXHatchList->Count())
{
@@ -357,81 +362,78 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
// #i122676# change FillStyle and Hatch in one call
XFillStyleItem aXFillStyleItem(drawing::FillStyle_HATCH);
setFillStyleAndHatch(&aXFillStyleItem, aXFillHatchItem);
mpLbFillAttr->SelectEntryPos(mnLastPosHatch);
mxLbFillAttr->set_active(mnLastPosHatch);
}
}
}
else
{
mpLbFillAttr->Disable();
mxLbFillAttr->set_sensitive(false);
}
break;
}
case BITMAP:
case PATTERN:
{
mpLbFillAttr->Show();
mpLbFillAttr->Enable();
mpLbFillAttr->Clear();
mpLbFillGradFrom->Hide();
mpLbFillGradTo->Hide();
mpMTRAngle->Hide();
mpGradientStyle->Hide();
mpToolBoxColor->Hide();
mxLbFillAttr->show();
mxLbFillAttr->set_sensitive(true);
mxLbFillAttr->clear();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxMTRAngle->hide();
mxGradientStyle->hide();
mxToolBoxColor->hide();
OUString aName;
GraphicObject aBitmap;
if(nPos == static_cast< sal_Int32 >(BITMAP))
{
mpBmpImport->Show();
mxBmpImport->show();
const SvxBitmapListItem* pItem = pSh->GetItem(SID_BITMAP_LIST);
if(pItem)
{
const XBitmapListRef& pXBitmapList(pItem->GetBitmapList());
mpLbFillAttr->Fill(pXBitmapList);
SvxFillAttrBox::Fill(*mxLbFillAttr, pXBitmapList);
mpLbFillAttr->AdaptDropDownLineCountToMaximum();
if(LISTBOX_ENTRY_NOTFOUND != mnLastPosBitmap)
if (mnLastPosBitmap != -1)
{
if(mnLastPosBitmap < pXBitmapList->Count())
{
const XBitmapEntry* pXBitmapEntry = pXBitmapList->GetBitmap(mnLastPosBitmap);
aBitmap = pXBitmapEntry->GetGraphicObject();
aName = pXBitmapEntry->GetName();
mpLbFillAttr->SelectEntryPos(mnLastPosBitmap);
mxLbFillAttr->set_active(mnLastPosBitmap);
}
}
}
else
{
mpLbFillAttr->Hide();
mxLbFillAttr->hide();
}
}
else if(nPos == static_cast< sal_Int32 >(PATTERN))
{
mpBmpImport->Hide();
mxBmpImport->hide();
const SvxPatternListItem* pItem = pSh->GetItem(SID_PATTERN_LIST);
if(pItem)
{
const XPatternListRef& pXPatternList(pItem->GetPatternList());
mpLbFillAttr->Fill(pXPatternList);
SvxFillAttrBox::Fill(*mxLbFillAttr, pXPatternList);
mpLbFillAttr->AdaptDropDownLineCountToMaximum();
if(LISTBOX_ENTRY_NOTFOUND != mnLastPosPattern)
if (mnLastPosPattern != -1)
{
if(mnLastPosPattern < pXPatternList->Count())
{
const XBitmapEntry* pXPatternEntry = pXPatternList->GetBitmap(mnLastPosPattern);
aBitmap = pXPatternEntry->GetGraphicObject();
aName = pXPatternEntry->GetName();
mpLbFillAttr->SelectEntryPos(mnLastPosPattern);
mxLbFillAttr->set_active(mnLastPosPattern);
}
}
}
else
{
mpLbFillAttr->Hide();
mxLbFillAttr->hide();
}
}
const XFillBitmapItem aXFillBitmapItem( aName, aBitmap );
@@ -443,25 +445,21 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillTypeHdl, ListBox&, void)
meLastXFS = static_cast<sal_uInt16>(nPos);
if(eFillStyle::NONE != static_cast<eFillStyle>(nPos))
{
mpLbFillType->Selected();
}
if(mpPanel)
mpPanel->TriggerDeckLayouting();
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillColorHdl, SvxColorListBox&, void)
IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillColorHdl, ColorListBox&, void)
{
SelectFillAttrHdl_Impl();
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillAttrHdl, ListBox&, void)
IMPL_LINK_NOARG(AreaPropertyPanelBase, SelectFillAttrHdl, weld::ComboBox&, void)
{
SelectFillAttrHdl_Impl();
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, ChangeGradientAngle, Edit&, void)
IMPL_LINK_NOARG(AreaPropertyPanelBase, ChangeGradientAngle, weld::MetricSpinButton&, void)
{
SelectFillAttrHdl_Impl();
}
@@ -473,7 +471,7 @@ void AreaPropertyPanelBase::DataChanged(
void AreaPropertyPanelBase::SelectFillAttrHdl_Impl()
{
sal_Int32 nPosFillStyle = static_cast<eFillStyle>(mpLbFillType->GetSelectedEntryPos());
sal_Int32 nPosFillStyle = static_cast<eFillStyle>(mxLbFillType->get_active());
SfxObjectShell* pSh = SfxObjectShell::Current();
// #i122676# dependent from bFillStyleChange, do execute a single or two
@@ -507,12 +505,12 @@ void AreaPropertyPanelBase::SelectFillAttrHdl_Impl()
if(pSh && pSh->GetItem(SID_COLOR_TABLE))
{
XGradient aGradient;
aGradient.SetAngle(mpMTRAngle->GetValue() * 10);
aGradient.SetGradientStyle(static_cast<css::awt::GradientStyle>(mpGradientStyle->GetSelectedEntryPos()));
aGradient.SetStartColor(mpLbFillGradFrom->GetSelectEntryColor());
aGradient.SetEndColor(mpLbFillGradTo->GetSelectEntryColor());
aGradient.SetAngle(mxMTRAngle->get_value(FieldUnit::DEGREE) * 10);
aGradient.SetGradientStyle(static_cast<css::awt::GradientStyle>(mxGradientStyle->get_active()));
aGradient.SetStartColor(mxLbFillGradFrom->GetSelectEntryColor());
aGradient.SetEndColor(mxLbFillGradTo->GetSelectEntryColor());
const XFillGradientItem aXFillGradientItem(mpLbFillAttr->GetSelectedEntry(), aGradient);
const XFillGradientItem aXFillGradientItem(mxLbFillAttr->get_active_text(), aGradient);
// #i122676# Change FillStyle and Gradinet in one call
XFillStyleItem aXFillStyleItem(drawing::FillStyle_GRADIENT);
@@ -522,21 +520,21 @@ void AreaPropertyPanelBase::SelectFillAttrHdl_Impl()
}
case eFillStyle::HATCH:
{
sal_Int32 nPos = mpLbFillAttr->GetSelectedEntryPos();
sal_Int32 nPos = mxLbFillAttr->get_active();
if(LISTBOX_ENTRY_NOTFOUND == nPos)
if (nPos == -1)
{
nPos = mnLastPosHatch;
}
if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_HATCH_LIST))
if (nPos != -1 && pSh && pSh->GetItem(SID_HATCH_LIST))
{
const SvxHatchListItem * pItem = pSh->GetItem(SID_HATCH_LIST);
if(nPos < pItem->GetHatchList()->Count())
{
const XHatch aHatch = pItem->GetHatchList()->GetHatch(nPos)->GetHatch();
const XFillHatchItem aXFillHatchItem( mpLbFillAttr->GetSelectedEntry(), aHatch);
const XFillHatchItem aXFillHatchItem( mxLbFillAttr->get_active_text(), aHatch);
// #i122676# Change FillStyle and Hatch in one call
XFillStyleItem aXFillStyleItem(drawing::FillStyle_HATCH);
@@ -544,7 +542,7 @@ void AreaPropertyPanelBase::SelectFillAttrHdl_Impl()
}
}
if(LISTBOX_ENTRY_NOTFOUND != nPos)
if (nPos != -1)
{
mnLastPosHatch = nPos;
}
@@ -552,21 +550,21 @@ void AreaPropertyPanelBase::SelectFillAttrHdl_Impl()
}
case eFillStyle::BITMAP:
{
sal_Int32 nPos = mpLbFillAttr->GetSelectedEntryPos();
sal_Int32 nPos = mxLbFillAttr->get_active();
if(LISTBOX_ENTRY_NOTFOUND == nPos)
if (nPos == -1)
{
nPos = mnLastPosBitmap;
}
if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_BITMAP_LIST))
if (nPos != -1 && pSh && pSh->GetItem(SID_BITMAP_LIST))
{
const SvxBitmapListItem * pItem = pSh->GetItem(SID_BITMAP_LIST);
if(nPos < pItem->GetBitmapList()->Count())
{
const XBitmapEntry* pXBitmapEntry = pItem->GetBitmapList()->GetBitmap(nPos);
const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectedEntry(), pXBitmapEntry->GetGraphicObject());
const XFillBitmapItem aXFillBitmapItem(mxLbFillAttr->get_active_text(), pXBitmapEntry->GetGraphicObject());
// #i122676# Change FillStyle and Bitmap in one call
XFillStyleItem aXFillStyleItem(drawing::FillStyle_BITMAP);
@@ -574,7 +572,7 @@ void AreaPropertyPanelBase::SelectFillAttrHdl_Impl()
}
}
if(LISTBOX_ENTRY_NOTFOUND != nPos)
if (nPos != -1)
{
mnLastPosBitmap = nPos;
}
@@ -582,21 +580,21 @@ void AreaPropertyPanelBase::SelectFillAttrHdl_Impl()
}
case eFillStyle::PATTERN:
{
sal_Int32 nPos = mpLbFillAttr->GetSelectedEntryPos();
sal_Int32 nPos = mxLbFillAttr->get_active();
if(LISTBOX_ENTRY_NOTFOUND == nPos)
if (nPos == -1)
{
nPos = mnLastPosPattern;
}
if(LISTBOX_ENTRY_NOTFOUND != nPos && pSh && pSh->GetItem(SID_PATTERN_LIST))
if (nPos != -1 && pSh && pSh->GetItem(SID_PATTERN_LIST))
{
const SvxPatternListItem * pItem = pSh->GetItem(SID_PATTERN_LIST);
if(nPos < pItem->GetPatternList()->Count())
{
const XBitmapEntry* pXPatternEntry = pItem->GetPatternList()->GetBitmap(nPos);
const XFillBitmapItem aXFillBitmapItem(mpLbFillAttr->GetSelectedEntry(), pXPatternEntry->GetGraphicObject());
const XFillBitmapItem aXFillBitmapItem(mxLbFillAttr->get_active_text(), pXPatternEntry->GetGraphicObject());
// #i122676# Change FillStyle and Bitmap in one call
XFillStyleItem aXFillStyleItem(drawing::FillStyle_BITMAP);
@@ -604,7 +602,7 @@ void AreaPropertyPanelBase::SelectFillAttrHdl_Impl()
}
}
if(LISTBOX_ENTRY_NOTFOUND != nPos)
if (nPos != -1)
{
mnLastPosPattern = nPos;
}
@@ -631,20 +629,20 @@ void AreaPropertyPanelBase::ImpUpdateTransparencies()
}
else if(nValue <= 100)
{
mpLBTransType->Enable();
mpTrspTextFT->Enable();
mpLBTransType->SelectEntryPos(1);
mpBTNGradient->Hide();
mpMTRTransparent->Show();
mpSldTransparent->Show();
mpMTRTransparent->Enable();
mpSldTransparent->Enable();
mxLBTransType->set_sensitive(true);
mxTrspTextFT->set_sensitive(true);
mxLBTransType->set_active(1);
mxBTNGradient->hide();
mxMTRTransparent->show();
mxSldTransparent->show();
mxMTRTransparent->set_sensitive(true);
mxSldTransparent->set_sensitive(true);
SetTransparency(nValue);
}
if (!bZeroValue && mxTrGrPopup)
{
mxTrGrPopup->EndPopupMode();
mxBTNGradient->set_menu_item_active(SIDEBARGRADIENT, false);
}
}
@@ -654,14 +652,14 @@ void AreaPropertyPanelBase::ImpUpdateTransparencies()
{
const XGradient& rGradient = mpFloatTransparenceItem->GetGradientValue();
sal_Int32 nEntryPos(0);
Image* pImage = nullptr;
OUString* pImage = nullptr;
mpLBTransType->Enable();
mpTrspTextFT->Enable();
mpMTRTransparent->Hide();
mpSldTransparent->Hide();
mpBTNGradient->Enable();
mpBTNGradient->Show();
mxLBTransType->set_sensitive(true);
mxTrspTextFT->set_sensitive(true);
mxMTRTransparent->hide();
mxSldTransparent->hide();
mxBTNGradient->set_sensitive(true);
mxBTNGradient->show();
switch(rGradient.GetGradientStyle())
{
@@ -703,10 +701,9 @@ void AreaPropertyPanelBase::ImpUpdateTransparencies()
break;
}
}
const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
mpLBTransType->SelectEntryPos(nEntryPos);
mpBTNGradient->SetItemImage(nIdGradient, *pImage);
mxLBTransType->set_active(nEntryPos);
mxBTNGradient->set_item_icon_name(SIDEBARGRADIENT, *pImage);
mxTrGrPopup->Rearrange(mpFloatTransparenceItem.get());
bZeroValue = false;
}
else
@@ -717,29 +714,29 @@ void AreaPropertyPanelBase::ImpUpdateTransparencies()
if(bZeroValue)
{
mpLBTransType->Enable();
mpTrspTextFT->Enable();
mpLBTransType->SelectEntryPos(0);
mpBTNGradient->Hide();
mpMTRTransparent->Enable();
mpSldTransparent->Enable();
mpMTRTransparent->Show();
mpSldTransparent->Show();
mxLBTransType->set_sensitive(true);
mxTrspTextFT->set_sensitive(true);
mxLBTransType->set_active(0);
mxBTNGradient->hide();
mxMTRTransparent->set_sensitive(true);
mxSldTransparent->set_sensitive(true);
mxMTRTransparent->show();
mxSldTransparent->show();
SetTransparency(0);
}
}
else
{
// no transparency at all
mpLBTransType->SetNoSelection();
mpLBTransType->Disable();
mpTrspTextFT->Disable();
mpMTRTransparent->Disable();
mpSldTransparent->Disable();
mpMTRTransparent->Show();
mpSldTransparent->Show();
mpBTNGradient->Disable();
mpBTNGradient->Hide();
mxLBTransType->set_active(-1);
mxLBTransType->set_sensitive(false);
mxTrspTextFT->set_sensitive(false);
mxMTRTransparent->set_sensitive(false);
mxSldTransparent->set_sensitive(false);
mxMTRTransparent->show();
mxSldTransparent->show();
mxBTNGradient->set_sensitive(false);
mxBTNGradient->hide();
}
}
@@ -804,13 +801,13 @@ void AreaPropertyPanelBase::updateFillStyle(bool bDisabled, bool bDefaultOrSet,
{
if(bDisabled)
{
mpLbFillType->Disable();
mpColorTextFT->Disable();
mpLbFillType->SetNoSelection();
mpLbFillAttr->Show();
mpLbFillAttr->Disable();
mpLbFillAttr->SetNoSelection();
mpToolBoxColor->Hide();
mxLbFillType->set_sensitive(false);
mxColorTextFT->set_sensitive(false);
mxLbFillType->set_active(-1);
mxLbFillAttr->show();
mxLbFillAttr->set_sensitive(false);
mxLbFillAttr->set_active(-1);
mxToolBoxColor->hide();
meLastXFS = static_cast<sal_uInt16>(-1);
mpStyleItem.reset();
}
@@ -818,8 +815,8 @@ void AreaPropertyPanelBase::updateFillStyle(bool bDisabled, bool bDefaultOrSet,
{
const XFillStyleItem* pItem = static_cast<const XFillStyleItem*>(pState);
mpStyleItem.reset(pItem->Clone());
mpLbFillType->Enable();
mpColorTextFT->Enable();
mxLbFillType->set_sensitive(true);
mxColorTextFT->set_sensitive(true);
drawing::FillStyle eXFS = mpStyleItem->GetValue();
eFillStyle nPos = NONE;
switch(eXFS)
@@ -827,8 +824,8 @@ void AreaPropertyPanelBase::updateFillStyle(bool bDisabled, bool bDefaultOrSet,
default:
case drawing::FillStyle_NONE:
{
mpLbFillAttr->SetNoSelection();
mpLbFillAttr->Disable();
mxLbFillAttr->set_active(-1);
mxLbFillAttr->set_sensitive(false);
nPos = NONE;
break;
}
@@ -855,17 +852,17 @@ void AreaPropertyPanelBase::updateFillStyle(bool bDisabled, bool bDefaultOrSet,
break;
}
}
meLastXFS = static_cast< sal_uInt16 >(mpLbFillType->GetSelectedEntryPos());
mpLbFillType->SelectEntryPos(static_cast< sal_Int32 >(nPos));
meLastXFS = static_cast< sal_uInt16 >(mxLbFillType->get_active());
mxLbFillType->set_active(static_cast< sal_Int32 >(nPos));
Update();
return;
}
mpLbFillType->SetNoSelection();
mpLbFillAttr->Show();
mpLbFillAttr->Disable();
mpLbFillAttr->SetNoSelection();
mpToolBoxColor->Hide();
mxLbFillType->set_active(-1);
mxLbFillAttr->show();
mxLbFillAttr->set_sensitive(false);
mxLbFillAttr->set_active(-1);
mxToolBoxColor->hide();
meLastXFS = static_cast<sal_uInt16>(-1);
mpStyleItem.reset();
if(mpPanel)
@@ -882,31 +879,31 @@ void AreaPropertyPanelBase::updateFillGradient(bool bDisabled, bool bDefaultOrSe
if(mpStyleItem && drawing::FillStyle_GRADIENT == mpStyleItem->GetValue())
{
mpLbFillAttr->Hide();
mpLbFillGradFrom->Show();
mpLbFillGradTo->Show();
mpMTRAngle->Show();
mpGradientStyle->Show();
mpToolBoxColor->Hide();
mxLbFillAttr->hide();
mxLbFillGradFrom->show();
mxLbFillGradTo->show();
mxMTRAngle->show();
mxGradientStyle->show();
mxToolBoxColor->hide();
if (bDefaultOrSet)
{
mpLbFillType->SelectEntryPos(GRADIENT);
mxLbFillType->set_active(GRADIENT);
Update();
}
else if(bDisabled)
{
mpLbFillGradFrom->SetNoSelection();
mpLbFillGradTo->SetNoSelection();
mpLbFillGradFrom->Disable();
mpLbFillGradTo->Disable();
mpMTRAngle->Disable();
mpGradientStyle->Disable();
mxLbFillGradFrom->SetNoSelection();
mxLbFillGradTo->SetNoSelection();
mxLbFillGradFrom->set_sensitive(false);
mxLbFillGradTo->set_sensitive(false);
mxMTRAngle->set_sensitive(false);
mxGradientStyle->set_sensitive(false);
}
else
{
mpLbFillGradFrom->SetNoSelection();
mpLbFillGradTo->SetNoSelection();
mxLbFillGradFrom->SetNoSelection();
mxLbFillGradTo->SetNoSelection();
}
}
if(mpPanel)
@@ -923,23 +920,23 @@ void AreaPropertyPanelBase::updateFillHatch(bool bDisabled, bool bDefaultOrSet,
if(mpStyleItem && drawing::FillStyle_HATCH == mpStyleItem->GetValue())
{
mpLbFillAttr->Show();
mpToolBoxColor->Hide();
mxLbFillAttr->show();
mxToolBoxColor->hide();
if (bDefaultOrSet)
{
mpLbFillAttr->Enable();
mpLbFillType->SelectEntryPos(HATCH);
mxLbFillAttr->set_sensitive(true);
mxLbFillType->set_active(HATCH);
Update();
}
else if(bDisabled)
{
mpLbFillAttr->Disable();
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_sensitive(false);
mxLbFillAttr->set_active(-1);
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
}
if(mpPanel)
@@ -956,9 +953,9 @@ void AreaPropertyPanelBase::updateFillColor(bool bDefaultOrSet, const SfxPoolIte
if(mpStyleItem && drawing::FillStyle_SOLID == mpStyleItem->GetValue())
{
mpLbFillAttr->Hide();
mpToolBoxColor->Show();
mpLbFillType->SelectEntryPos(SOLID);
mxLbFillAttr->hide();
mxToolBoxColor->show();
mxLbFillType->set_active(SOLID);
Update();
}
if(mpPanel)
@@ -975,25 +972,25 @@ void AreaPropertyPanelBase::updateFillBitmap(bool bDisabled, bool bDefaultOrSet,
if(mpStyleItem && drawing::FillStyle_BITMAP == mpStyleItem->GetValue())
{
mpLbFillAttr->Show();
mpToolBoxColor->Hide();
mxLbFillAttr->show();
mxToolBoxColor->hide();
if (bDefaultOrSet)
{
if(mpBitmapItem->isPattern())
mpLbFillType->SelectEntryPos(PATTERN);
mxLbFillType->set_active(PATTERN);
else
mpLbFillType->SelectEntryPos(BITMAP);
mxLbFillType->set_active(BITMAP);
Update();
}
else if(bDisabled)
{
mpLbFillAttr->Hide();
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->hide();
mxLbFillAttr->set_active(-1);
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
}
if(mpPanel)
@@ -1043,14 +1040,14 @@ void AreaPropertyPanelBase::NotifyItemUpdate(
const OUString aString( mpFillGradientItem->GetName() );
const SfxObjectShell* pSh = SfxObjectShell::Current();
mpLbFillAttr->Clear();
mpLbFillAttr->Enable();
mpLbFillAttr->Fill(pSh->GetItem(SID_GRADIENT_LIST)->GetGradientList());
mpLbFillAttr->SelectEntry(aString);
mxLbFillAttr->clear();
mxLbFillAttr->set_sensitive(true);
SvxFillAttrBox::Fill(*mxLbFillAttr, pSh->GetItem(SID_GRADIENT_LIST)->GetGradientList());
mxLbFillAttr->set_active_text(aString);
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
}
}
@@ -1067,14 +1064,14 @@ void AreaPropertyPanelBase::NotifyItemUpdate(
const OUString aString( mpHatchItem->GetName() );
const SfxObjectShell* pSh = SfxObjectShell::Current();
mpLbFillAttr->Clear();
mpLbFillAttr->Enable();
mpLbFillAttr->Fill(pSh->GetItem(SID_HATCH_LIST)->GetHatchList());
mpLbFillAttr->SelectEntry(aString);
mxLbFillAttr->clear();
mxLbFillAttr->set_sensitive(true);
SvxFillAttrBox::Fill(*mxLbFillAttr, pSh->GetItem(SID_HATCH_LIST)->GetHatchList());
mxLbFillAttr->set_active_text(aString);
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
}
}
@@ -1091,21 +1088,21 @@ void AreaPropertyPanelBase::NotifyItemUpdate(
{
const OUString aString( mpBitmapItem->GetName() );
const SfxObjectShell* pSh = SfxObjectShell::Current();
mpLbFillAttr->Clear();
mpLbFillAttr->Show();
mxLbFillAttr->clear();
mxLbFillAttr->show();
if(nSID == SID_BITMAP_LIST)
{
mpLbFillAttr->Fill(pSh->GetItem(SID_BITMAP_LIST)->GetBitmapList());
SvxFillAttrBox::Fill(*mxLbFillAttr, pSh->GetItem(SID_BITMAP_LIST)->GetBitmapList());
}
else if(nSID == SID_PATTERN_LIST)
{
mpLbFillAttr->Fill(pSh->GetItem(SID_PATTERN_LIST)->GetPatternList());
SvxFillAttrBox::Fill(*mxLbFillAttr, pSh->GetItem(SID_PATTERN_LIST)->GetPatternList());
}
mpLbFillAttr->SelectEntry(aString);
mxLbFillAttr->set_active_text(aString);
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
}
}
@@ -1116,147 +1113,147 @@ void AreaPropertyPanelBase::NotifyItemUpdate(
void AreaPropertyPanelBase::Update()
{
const eFillStyle eXFS = static_cast<eFillStyle>(mpLbFillType->GetSelectedEntryPos());
const eFillStyle eXFS = static_cast<eFillStyle>(mxLbFillType->get_active());
SfxObjectShell* pSh = SfxObjectShell::Current();
switch( eXFS )
{
case eFillStyle::NONE:
{
mpLbFillAttr->Show();
mpLbFillGradFrom->Hide();
mpLbFillGradTo->Hide();
mpMTRAngle->Hide();
mpGradientStyle->Hide();
mpToolBoxColor->Hide();
mpBmpImport->Hide();
mxLbFillAttr->show();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxMTRAngle->hide();
mxGradientStyle->hide();
mxToolBoxColor->hide();
mxBmpImport->hide();
break;
}
case eFillStyle::SOLID:
{
if(mpColorItem)
{
mpLbFillAttr->Hide();
mpLbFillGradFrom->Hide();
mpLbFillGradTo->Hide();
mpMTRAngle->Hide();
mpGradientStyle->Hide();
mpToolBoxColor->Show();
mpBmpImport->Hide();
mxLbFillAttr->hide();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxMTRAngle->hide();
mxGradientStyle->hide();
mxToolBoxColor->show();
mxBmpImport->hide();
}
break;
}
case eFillStyle::GRADIENT:
{
mpLbFillAttr->Hide();
mpLbFillGradFrom->Show();
mpLbFillGradTo->Show();
mpMTRAngle->Enable();
mpMTRAngle->Show();
mpGradientStyle->Show();
mpToolBoxColor->Hide();
mpBmpImport->Hide();
mxLbFillAttr->hide();
mxLbFillGradFrom->show();
mxLbFillGradTo->show();
mxMTRAngle->set_sensitive(true);
mxMTRAngle->show();
mxGradientStyle->show();
mxToolBoxColor->hide();
mxBmpImport->hide();
if(pSh && pSh->GetItem(SID_GRADIENT_LIST))
{
mpLbFillAttr->Enable();
mpLbFillAttr->Clear();
mpLbFillAttr->Fill(pSh->GetItem(SID_GRADIENT_LIST)->GetGradientList());
mpLbFillGradTo->SetNoSelection();
mpLbFillGradFrom->SetNoSelection();
mxLbFillAttr->set_sensitive(true);
mxLbFillAttr->clear();
SvxFillAttrBox::Fill(*mxLbFillAttr, pSh->GetItem(SID_GRADIENT_LIST)->GetGradientList());
mxLbFillGradTo->SetNoSelection();
mxLbFillGradFrom->SetNoSelection();
if (mpFillGradientItem)
{
const OUString aString(mpFillGradientItem->GetName());
mpLbFillAttr->SelectEntry(aString);
mxLbFillAttr->set_active_text(aString);
const XGradient aGradient = mpFillGradientItem->GetGradientValue();
mpLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
mpLbFillGradTo->SelectEntry(aGradient.GetEndColor());
mpGradientStyle->SelectEntryPos(sal::static_int_cast< sal_Int32 >( aGradient.GetGradientStyle() ));
if(mpGradientStyle->GetSelectedEntryPos() == sal_Int32(GradientStyle::Radial))
mpMTRAngle->Disable();
mxLbFillGradFrom->SelectEntry(aGradient.GetStartColor());
mxLbFillGradTo->SelectEntry(aGradient.GetEndColor());
mxGradientStyle->set_active(sal::static_int_cast< sal_Int32 >( aGradient.GetGradientStyle() ));
if(mxGradientStyle->get_active() == sal_Int32(GradientStyle::Radial))
mxMTRAngle->set_sensitive(false);
else
mpMTRAngle->SetValue( aGradient.GetAngle() /10 );
mxMTRAngle->set_value(aGradient.GetAngle() / 10, FieldUnit::DEGREE);
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
break;
}
case eFillStyle::HATCH:
{
mpLbFillAttr->Show();
mpLbFillGradFrom->Hide();
mpLbFillGradTo->Hide();
mpMTRAngle->Hide();
mpGradientStyle->Hide();
mpToolBoxColor->Hide();
mpBmpImport->Hide();
mpBmpImport->Hide();
mxLbFillAttr->show();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxMTRAngle->hide();
mxGradientStyle->hide();
mxToolBoxColor->hide();
mxBmpImport->hide();
mxBmpImport->hide();
if(pSh && pSh->GetItem(SID_HATCH_LIST))
{
mpLbFillAttr->Enable();
mpLbFillAttr->Clear();
mpLbFillAttr->Fill(pSh->GetItem(SID_HATCH_LIST)->GetHatchList());
mxLbFillAttr->set_sensitive(true);
mxLbFillAttr->clear();
SvxFillAttrBox::Fill(*mxLbFillAttr, pSh->GetItem(SID_HATCH_LIST)->GetHatchList());
if(mpHatchItem)
{
const OUString aString(mpHatchItem->GetName());
mpLbFillAttr->SelectEntry( aString );
mxLbFillAttr->set_active_text( aString );
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
}
else
{
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
}
break;
}
case eFillStyle::BITMAP:
case eFillStyle::PATTERN:
{
mpLbFillAttr->Show();
mpLbFillAttr->Enable();
mpLbFillAttr->Clear();
mpToolBoxColor->Hide();
mpLbFillGradFrom->Hide();
mpLbFillGradTo->Hide();
mpMTRAngle->Hide();
mpGradientStyle->Hide();
mxLbFillAttr->show();
mxLbFillAttr->set_sensitive(true);
mxLbFillAttr->clear();
mxToolBoxColor->hide();
mxLbFillGradFrom->hide();
mxLbFillGradTo->hide();
mxMTRAngle->hide();
mxGradientStyle->hide();
if(mpBitmapItem)
{
if(pSh && pSh->GetItem(SID_BITMAP_LIST) && eXFS == BITMAP)
{
mpBmpImport->Show();
mpLbFillType->SelectEntryPos(sal_uInt32(BITMAP));
mpLbFillAttr->Fill(pSh->GetItem(SID_BITMAP_LIST)->GetBitmapList());
mxBmpImport->show();
mxLbFillType->set_active(sal_uInt32(BITMAP));
SvxFillAttrBox::Fill(*mxLbFillAttr, pSh->GetItem(SID_BITMAP_LIST)->GetBitmapList());
const OUString aString(mpBitmapItem->GetName());
mpLbFillAttr->SelectEntry(aString);
mxLbFillAttr->set_active_text(aString);
}
else if(pSh && pSh->GetItem(SID_PATTERN_LIST) && eXFS == PATTERN)
{
mpBmpImport->Hide();
mpLbFillType->SelectEntryPos(sal_uInt32(PATTERN));
mpLbFillAttr->Fill(pSh->GetItem(SID_PATTERN_LIST)->GetPatternList());
mxBmpImport->hide();
mxLbFillType->set_active(sal_uInt32(PATTERN));
SvxFillAttrBox::Fill(*mxLbFillAttr, pSh->GetItem(SID_PATTERN_LIST)->GetPatternList());
const OUString aString(mpBitmapItem->GetName());
mpLbFillAttr->SelectEntry(aString);
mxLbFillAttr->set_active_text(aString);
}
}
else
mpLbFillAttr->SetNoSelection();
mxLbFillAttr->set_active(-1);
break;
}
default:
@@ -1267,80 +1264,69 @@ void AreaPropertyPanelBase::Update()
mpPanel->TriggerDeckLayouting();
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, ModifyTransSliderHdl, Slider*, void)
IMPL_LINK_NOARG(AreaPropertyPanelBase, ModifyTransSliderHdl, weld::Scale&, void)
{
const sal_uInt16 nVal = mpSldTransparent->GetThumbPos();
const sal_uInt16 nVal = mxSldTransparent->get_value();
SetTransparency(nVal);
const XFillTransparenceItem aLinearItem(nVal);
setFillTransparence(aLinearItem);
}
IMPL_LINK( AreaPropertyPanelBase, ClickTrGrHdl_Impl, ToolBox*, pToolBox, void )
IMPL_LINK_NOARG(AreaPropertyPanelBase, ChangeTrgrTypeHdl_Impl, weld::ComboBox&, void)
{
if (!mxTrGrPopup)
mxTrGrPopup = VclPtr<AreaTransparencyGradientPopup>::Create(*this);
if (mpFloatTransparenceItem)
mxTrGrPopup->Rearrange(mpFloatTransparenceItem.get());
OSL_ASSERT( pToolBox->GetItemCommand(pToolBox->GetCurItemId()) == UNO_SIDEBARGRADIENT);
mxTrGrPopup->StartPopupMode(pToolBox, FloatWinPopupFlags::GrabFocus);
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, ChangeTrgrTypeHdl_Impl, ListBox&, void)
{
sal_Int32 nSelectType = mpLBTransType->GetSelectedEntryPos();
sal_Int32 nSelectType = mxLBTransType->get_active();
bool bGradient = false;
sal_uInt16 nTrans = 0;
if(!nSelectType)
{
mpBTNGradient->Hide();
mpMTRTransparent->Show();
mpSldTransparent->Show();
mpMTRTransparent->Enable();
mpSldTransparent->Enable();
mxBTNGradient->hide();
mxMTRTransparent->show();
mxSldTransparent->show();
mxMTRTransparent->set_sensitive(true);
mxSldTransparent->set_sensitive(true);
SetTransparency(0);
}
else if(1 == nSelectType)
{
mpBTNGradient->Hide();
mpMTRTransparent->Show();
mpSldTransparent->Show();
mxBTNGradient->hide();
mxMTRTransparent->show();
mxSldTransparent->show();
nTrans = mnLastTransSolid;
mpMTRTransparent->SetValue(nTrans);
mpLBTransType->SelectEntryPos(1);
mpMTRTransparent->Enable();
mpSldTransparent->Enable();
mxMTRTransparent->set_value(nTrans, FieldUnit::PERCENT);
mxLBTransType->set_active(1);
mxMTRTransparent->set_sensitive(true);
mxSldTransparent->set_sensitive(true);
}
else
{
mpBTNGradient->Show();
mxBTNGradient->show();
const sal_uInt16 nIdGradient = mpBTNGradient->GetItemId(UNO_SIDEBARGRADIENT);
switch (nSelectType)
{
case 2:
mpBTNGradient->SetItemImage(nIdGradient, maImgLinear);
mxBTNGradient->set_item_icon_name(SIDEBARGRADIENT, maImgLinear);
break;
case 3:
mpBTNGradient->SetItemImage(nIdGradient, maImgAxial);
mxBTNGradient->set_item_icon_name(SIDEBARGRADIENT, maImgAxial);
break;
case 4:
mpBTNGradient->SetItemImage(nIdGradient, maImgRadial);
mxBTNGradient->set_item_icon_name(SIDEBARGRADIENT, maImgRadial);
break;
case 5:
mpBTNGradient->SetItemImage(nIdGradient, maImgElli );
mxBTNGradient->set_item_icon_name(SIDEBARGRADIENT, maImgElli);
break;
case 6:
mpBTNGradient->SetItemImage(nIdGradient, maImgQuad );
mxBTNGradient->set_item_icon_name(SIDEBARGRADIENT, maImgQuad);
break;
case 7:
mpBTNGradient->SetItemImage(nIdGradient, maImgSquare);
mxBTNGradient->set_item_icon_name(SIDEBARGRADIENT, maImgSquare);
break;
}
mpMTRTransparent->Hide();
mpSldTransparent->Hide();
mpBTNGradient->Enable();
mxMTRTransparent->hide();
mxSldTransparent->hide();
mxBTNGradient->set_sensitive(true);
bGradient = true;
}
@@ -1382,16 +1368,16 @@ IMPL_LINK_NOARG(AreaPropertyPanelBase, ChangeTrgrTypeHdl_Impl, ListBox&, void)
setFillFloatTransparence(aGradientItem);
}
IMPL_LINK_NOARG(AreaPropertyPanelBase, ModifyTransparentHdl_Impl, Edit&, void)
IMPL_LINK_NOARG(AreaPropertyPanelBase, ModifyTransparentHdl_Impl, weld::MetricSpinButton&, void)
{
const sal_uInt16 nTrans = static_cast<sal_uInt16>(mpMTRTransparent->GetValue());
const sal_uInt16 nTrans = static_cast<sal_uInt16>(mxMTRTransparent->get_value(FieldUnit::PERCENT));
mnLastTransSolid = nTrans;
SetTransparency(nTrans);
const sal_Int32 nSelectType = mpLBTransType->GetSelectedEntryPos();
const sal_Int32 nSelectType = mxLBTransType->get_active();
if(nTrans && !nSelectType)
{
mpLBTransType->SelectEntryPos(1);
mxLBTransType->set_active(1);
}
const XFillTransparenceItem aLinearItem(nTrans);
@@ -1447,7 +1433,7 @@ void AreaPropertyPanelBase::SetGradient (const XGradient& rGradient)
sal_Int32 AreaPropertyPanelBase::GetSelectedTransparencyTypeIndex() const
{
return mpLBTransType->GetSelectedEntryPos();
return mxLBTransType->get_active();
}
} } // end of namespace svx::sidebar
diff --git a/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx b/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx
index e3c0ae3..7bb8128 100644
--- a/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx
+++ b/svx/source/sidebar/area/AreaTransparencyGradientPopup.cxx
@@ -18,7 +18,6 @@
*/
#include <sfx2/app.hxx>
#include <vcl/layout.hxx>
#include <svx/sidebar/AreaTransparencyGradientPopup.hxx>
#include <svx/sidebar/AreaPropertyPanelBase.hxx>
#include <svx/xflftrit.hxx>
@@ -26,35 +25,34 @@
namespace svx { namespace sidebar {
AreaTransparencyGradientPopup::AreaTransparencyGradientPopup(AreaPropertyPanelBase& rPanel)
: FloatingWindow(SfxGetpApp()->GetTopWindow(), "FloatingAreaStyle", "svx/ui/floatingareastyle.ui")
, mrAreaPropertyPanel(rPanel)
AreaTransparencyGradientPopup::AreaTransparencyGradientPopup(AreaPropertyPanelBase& rPanel, weld::Widget* pParent)
: mrAreaPropertyPanel(rPanel)
, mxBuilder(Application::CreateBuilder(pParent, "svx/ui/floatingareastyle.ui"))
, mxTopLevel(mxBuilder->weld_widget("FloatingAreaStyle"))
, mxCenterGrid(mxBuilder->weld_widget("centergrid"))
, mxAngleGrid(mxBuilder->weld_widget("anglegrid"))
, mxMtrTrgrCenterX(mxBuilder->weld_metric_spin_button("centerx", FieldUnit::PERCENT))
, mxMtrTrgrCenterY(mxBuilder->weld_metric_spin_button("centery", FieldUnit::PERCENT))
, mxMtrTrgrAngle(mxBuilder->weld_metric_spin_button("angle", FieldUnit::DEGREE))
, mxBtnLeft45(mxBuilder->weld_toolbar("lefttoolbox"))
, mxBtnRight45(mxBuilder->weld_toolbar("righttoolbox"))
, mxMtrTrgrStartValue(mxBuilder->weld_metric_spin_button("start", FieldUnit::PERCENT))
, mxMtrTrgrEndValue(mxBuilder->weld_metric_spin_button("end", FieldUnit::PERCENT))
, mxMtrTrgrBorder(mxBuilder->weld_metric_spin_button("border", FieldUnit::PERCENT))
{
get(maCenterGrid, "centergrid");
get(maAngleGrid, "anglegrid");
get(maMtrTrgrCenterX, "centerx");
get(maMtrTrgrCenterY, "centery");
get(maMtrTrgrAngle, "angle");
get(maBtnLeft45, "lefttoolbox");
get(maBtnRight45, "righttoolbox");
get(maMtrTrgrStartValue, "start");
get(maMtrTrgrEndValue, "end");
get(maMtrTrgrBorder, "border");
Link<Edit&,void> aLink = LINK(this, AreaTransparencyGradientPopup, ModifiedTrgrHdl_Impl);
maMtrTrgrCenterX->SetModifyHdl(aLink);
maMtrTrgrCenterY->SetModifyHdl(aLink);
maMtrTrgrAngle->SetModifyHdl(aLink);
maMtrTrgrBorder->SetModifyHdl(aLink);
maMtrTrgrStartValue->SetModifyHdl(aLink);
maMtrTrgrEndValue->SetModifyHdl(aLink);
maBtnLeft45->SetSelectHdl(LINK(this, AreaTransparencyGradientPopup, Left_Click45_Impl));
maBtnRight45->SetSelectHdl(LINK(this, AreaTransparencyGradientPopup, Right_Click45_Impl));
Link<weld::MetricSpinButton&,void> aLink = LINK(this, AreaTransparencyGradientPopup, ModifiedTrgrHdl_Impl);
mxMtrTrgrCenterX->connect_value_changed(aLink);
mxMtrTrgrCenterY->connect_value_changed(aLink);
mxMtrTrgrAngle->connect_value_changed(aLink);
mxMtrTrgrBorder->connect_value_changed(aLink);
mxMtrTrgrStartValue->connect_value_changed(aLink);
mxMtrTrgrEndValue->connect_value_changed(aLink);
mxBtnLeft45->connect_clicked(LINK(this, AreaTransparencyGradientPopup, Left_Click45_Impl));
mxBtnRight45->connect_clicked(LINK(this, AreaTransparencyGradientPopup, Right_Click45_Impl));
}
AreaTransparencyGradientPopup::~AreaTransparencyGradientPopup()
{
disposeOnce();
}
void AreaTransparencyGradientPopup::InitStatus(XFillFloatTransparenceItem const * pGradientItem)
@@ -78,12 +76,12 @@ void AreaTransparencyGradientPopup::InitStatus(XFillFloatTransparenceItem const
{
aGradient = rGradient;
}
maMtrTrgrCenterX->SetValue(aGradient.GetXOffset());
maMtrTrgrCenterY->SetValue(aGradient.GetYOffset());
maMtrTrgrAngle->SetValue(aGradient.GetAngle() / 10);
maMtrTrgrStartValue->SetValue(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(aGradient.GetStartColor().GetRed()) + 1) * 100) / 255));
maMtrTrgrEndValue->SetValue(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(aGradient.GetEndColor().GetRed()) + 1) * 100) / 255));
maMtrTrgrBorder->SetValue(aGradient.GetBorder());
mxMtrTrgrCenterX->set_value(aGradient.GetXOffset(), FieldUnit::PERCENT);
mxMtrTrgrCenterY->set_value(aGradient.GetYOffset(), FieldUnit::PERCENT);
mxMtrTrgrAngle->set_value(aGradient.GetAngle() / 10, FieldUnit::DEGREE);
mxMtrTrgrStartValue->set_value(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(aGradient.GetStartColor().GetRed()) + 1) * 100) / 255), FieldUnit::PERCENT);
mxMtrTrgrEndValue->set_value(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(aGradient.GetEndColor().GetRed()) + 1) * 100) / 255), FieldUnit::PERCENT);
mxMtrTrgrBorder->set_value(aGradient.GetBorder(), FieldUnit::PERCENT);
}
void AreaTransparencyGradientPopup::Rearrange(XFillFloatTransparenceItem const * pGradientItem)
@@ -96,18 +94,18 @@ void AreaTransparencyGradientPopup::Rearrange(XFillFloatTransparenceItem const *
{
case css::awt::GradientStyle_LINEAR:
case css::awt::GradientStyle_AXIAL:
maCenterGrid->Hide();
maAngleGrid->Show();
mxCenterGrid->hide();
mxAngleGrid->show();
break;
case css::awt::GradientStyle_RADIAL:
maCenterGrid->Show();
maAngleGrid->Hide();
mxCenterGrid->show();
mxAngleGrid->hide();
break;
case css::awt::GradientStyle_ELLIPTICAL:
case css::awt::GradientStyle_SQUARE:
case css::awt::GradientStyle_RECT:
maCenterGrid->Show();
maAngleGrid->Show();
mxCenterGrid->show();
mxAngleGrid->show();
break;
default:
break;
@@ -117,21 +115,21 @@ void AreaTransparencyGradientPopup::Rearrange(XFillFloatTransparenceItem const *
void AreaTransparencyGradientPopup::ExecuteValueModify(sal_uInt8 nStartCol, sal_uInt8 nEndCol)
{
//Added
sal_Int16 aMtrValue = static_cast<sal_Int16>(maMtrTrgrAngle->GetValue());
sal_Int16 aMtrValue = static_cast<sal_Int16>(mxMtrTrgrAngle->get_value(FieldUnit::DEGREE));
while(aMtrValue<0)
aMtrValue += 360;
sal_uInt16 nVal = aMtrValue/360;
nVal = aMtrValue - nVal*360;
maMtrTrgrAngle->SetValue(nVal);
mxMtrTrgrAngle->set_value(nVal, FieldUnit::DEGREE);
//End of new code
XGradient aTmpGradient(
Color(nStartCol, nStartCol, nStartCol),
Color(nEndCol, nEndCol, nEndCol),
static_cast<css::awt::GradientStyle>(mrAreaPropertyPanel.GetSelectedTransparencyTypeIndex()-2),
static_cast<sal_uInt16>(maMtrTrgrAngle->GetValue()) * 10,
static_cast<sal_uInt16>(maMtrTrgrCenterX->GetValue()),
static_cast<sal_uInt16>(maMtrTrgrCenterY->GetValue()),
static_cast<sal_uInt16>(maMtrTrgrBorder->GetValue()),
static_cast<sal_uInt16>(mxMtrTrgrAngle->get_value(FieldUnit::DEGREE)) * 10,
static_cast<sal_uInt16>(mxMtrTrgrCenterX->get_value(FieldUnit::PERCENT)),
static_cast<sal_uInt16>(mxMtrTrgrCenterY->get_value(FieldUnit::PERCENT)),
static_cast<sal_uInt16>(mxMtrTrgrBorder->get_value(FieldUnit::PERCENT)),
100, 100);
mrAreaPropertyPanel.SetGradient(aTmpGradient);
@@ -141,52 +139,37 @@ void AreaTransparencyGradientPopup::ExecuteValueModify(sal_uInt8 nStartCol, sal_
mrAreaPropertyPanel.setFillFloatTransparence(aGradientItem);
}
IMPL_LINK_NOARG(AreaTransparencyGradientPopup, ModifiedTrgrHdl_Impl, Edit&, void)
IMPL_LINK_NOARG(AreaTransparencyGradientPopup, ModifiedTrgrHdl_Impl, weld::MetricSpinButton&, void)
{
sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(maMtrTrgrStartValue->GetValue()) * 255) / 100);
sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(maMtrTrgrEndValue->GetValue()) * 255) / 100);
sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(mxMtrTrgrStartValue->get_value(FieldUnit::PERCENT)) * 255) / 100);
sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(mxMtrTrgrEndValue->get_value(FieldUnit::PERCENT)) * 255) / 100);
ExecuteValueModify( nStartCol, nEndCol );
}
IMPL_LINK_NOARG(AreaTransparencyGradientPopup, Left_Click45_Impl, ToolBox *, void)
IMPL_LINK_NOARG(AreaTransparencyGradientPopup, Left_Click45_Impl, const OString&, void)
{
sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(maMtrTrgrStartValue->GetValue()) * 255) / 100);
sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(maMtrTrgrEndValue->GetValue()) * 255) / 100);
sal_uInt16 nTemp = static_cast<sal_uInt16>(maMtrTrgrAngle->GetValue());
sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(mxMtrTrgrStartValue->get_value(FieldUnit::PERCENT)) * 255) / 100);
sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(mxMtrTrgrEndValue->get_value(FieldUnit::PERCENT)) * 255) / 100);
sal_uInt16 nTemp = static_cast<sal_uInt16>(mxMtrTrgrAngle->get_value(FieldUnit::DEGREE));
if (nTemp>=315)
nTemp -= 360;
nTemp += 45;
maMtrTrgrAngle->SetValue(nTemp);
mxMtrTrgrAngle->set_value(nTemp, FieldUnit::DEGREE);
ExecuteValueModify(nStartCol, nEndCol);
}
IMPL_LINK_NOARG(AreaTransparencyGradientPopup, Right_Click45_Impl, ToolBox *, void)
IMPL_LINK_NOARG(AreaTransparencyGradientPopup, Right_Click45_Impl, const OString&, void)
{
sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(maMtrTrgrStartValue->GetValue()) * 255) / 100);
sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(maMtrTrgrEndValue->GetValue()) * 255) / 100);
sal_uInt16 nTemp = static_cast<sal_uInt16>(maMtrTrgrAngle->GetValue());
sal_uInt8 nStartCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(mxMtrTrgrStartValue->get_value(FieldUnit::PERCENT)) * 255) / 100);
sal_uInt8 nEndCol = static_cast<sal_uInt8>((static_cast<sal_uInt16>(mxMtrTrgrEndValue->get_value(FieldUnit::PERCENT)) * 255) / 100);
sal_uInt16 nTemp = static_cast<sal_uInt16>(mxMtrTrgrAngle->get_value(FieldUnit::DEGREE));
if (nTemp<45)
nTemp += 360;
nTemp -= 45;
maMtrTrgrAngle->SetValue(nTemp);
mxMtrTrgrAngle->set_value(nTemp, FieldUnit::DEGREE);
ExecuteValueModify(nStartCol, nEndCol);
}
void AreaTransparencyGradientPopup::dispose()
{
maCenterGrid.clear();
maAngleGrid.clear();
maMtrTrgrCenterX.clear();
maMtrTrgrCenterY.clear();
maMtrTrgrAngle.clear();
maBtnLeft45.clear();
maBtnRight45.clear();
maMtrTrgrStartValue.clear();
maMtrTrgrEndValue.clear();
maMtrTrgrBorder.clear();
FloatingWindow::dispose();
}
} } // end of namespace svx::sidebar
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/tbxctrls/PaletteManager.cxx b/svx/source/tbxctrls/PaletteManager.cxx
index 0dba161..f8bfd20 100644
--- a/svx/source/tbxctrls/PaletteManager.cxx
+++ b/svx/source/tbxctrls/PaletteManager.cxx
@@ -341,7 +341,7 @@ void PaletteManager::AddRecentColor(const Color& rRecentColor, const OUString& r
batch->commit();
}
void PaletteManager::SetBtnUpdater(svx::ToolboxButtonColorUpdater* pBtnUpdater)
void PaletteManager::SetBtnUpdater(svx::ToolboxButtonColorUpdaterBase* pBtnUpdater)
{
mpBtnUpdater = pBtnUpdater;
}
diff --git a/svx/source/tbxctrls/itemwin.cxx b/svx/source/tbxctrls/itemwin.cxx
index f879c0a..c6b07d3 100644
--- a/svx/source/tbxctrls/itemwin.cxx
+++ b/svx/source/tbxctrls/itemwin.cxx
@@ -732,6 +732,33 @@ void SvxFillAttrBox::Fill(weld::ComboBox& rBox, const XHatchListRef &pList)
rBox.thaw();
}
void SvxFillAttrBox::Fill(weld::ComboBox& rBox, const XGradientListRef &pList)
{
if( !pList.is() )
return;
long nCount = pList->Count();
ScopedVclPtrInstance< VirtualDevice > pVD;
rBox.freeze();
for( long i = 0; i < nCount; i++ )
{
const XGradientEntry* pEntry = pList->GetGradient(i);
const BitmapEx aBitmapEx = pList->GetUiBitmap( i );
if( !aBitmapEx.IsEmpty() )
{
const Size aBmpSize(aBitmapEx.GetSizePixel());
pVD->SetOutputSizePixel(aBmpSize, false);
pVD->DrawBitmapEx(Point(), aBitmapEx);
rBox.append("", pEntry->GetName(), *pVD);
}
else
rBox.append_text(pEntry->GetName());
}
rBox.thaw();
}
void SvxFillAttrBox::Fill(weld::ComboBox& rBox, const XBitmapListRef &pList)
{
if( !pList.is() )
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index b4c7ca5..10ad677 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -32,7 +32,6 @@
#include <vcl/bitmapaccess.hxx>
#include <vcl/menubtn.hxx>
#include <vcl/vclptr.hxx>
#include <vcl/weldutils.hxx>
#include <svtools/valueset.hxx>
#include <svtools/ctrlbox.hxx>
#include <svl/style.hxx>
@@ -1775,7 +1774,8 @@ SvxColorWindow::SvxColorWindow(const OUString& rCommand,
}
}
ColorWindow::ColorWindow(std::shared_ptr<PaletteManager> const & rPaletteManager,
ColorWindow::ColorWindow(const OUString& rCommand,
std::shared_ptr<PaletteManager> const & rPaletteManager,
ColorStatus& rColorStatus,
sal_uInt16 nSlotId,
const Reference< XFrame >& rFrame,
@@ -1785,6 +1785,7 @@ ColorWindow::ColorWindow(std::shared_ptr<PaletteManager> const & rPaletteManager
: ToolbarPopupBase(rFrame)
, m_xBuilder(Application::CreateBuilder(rMenuButton.get_widget(), "svx/ui/colorwindow.ui"))
, theSlotId(nSlotId)
, maCommand(rCommand)
, mpParentWindow(pParentWindow)
, maMenuButton(rMenuButton)
, mxPaletteManager(rPaletteManager)
@@ -1877,6 +1878,12 @@ ColorWindow::ColorWindow(std::shared_ptr<PaletteManager> const & rPaletteManager
mxRecentColorSet->set_size_request(aSize.Width(), aSize.Height());
AddStatusListener( ".uno:ColorTableState" );
AddStatusListener( maCommand );
if ( maCommand == ".uno:FrameLineColor" )
{
AddStatusListener( ".uno:BorderTLBR" );
AddStatusListener( ".uno:BorderBLTR" );
}
}
IMPL_LINK_NOARG(ColorWindow, FocusHdl, weld::Widget&, void)
@@ -2036,7 +2043,9 @@ IMPL_LINK(ColorWindow, SelectHdl, SvtValueSet*, pColorSet, void)
if (maMenuButton.get_active())
maMenuButton.set_active(false);
maColorSelectFunction(OUString(), aNamedColor);
maSelectedLink.Call(aNamedColor);
maColorSelectFunction(maCommand, aNamedColor);
}
IMPL_LINK_NOARG(SvxColorWindow, SelectPaletteHdl, ListBox&, void)
@@ -2092,7 +2101,9 @@ IMPL_LINK(ColorWindow, AutoColorClickHdl, weld::Button&, rButton, void)
if (maMenuButton.get_active())
maMenuButton.set_active(false);
maColorSelectFunction(OUString(), aNamedColor);
maSelectedLink.Call(aNamedColor);
maColorSelectFunction(maCommand, aNamedColor);
}
IMPL_LINK_NOARG(SvxColorWindow, OpenPickerClickHdl, Button*, void)
@@ -2119,7 +2130,7 @@ IMPL_LINK_NOARG(ColorWindow, OpenPickerClickHdl, weld::Button&, void)
{
if (maMenuButton.get_active())
maMenuButton.set_active(false);
mxPaletteManager->PopupColorPicker(mpParentWindow, OUString(), GetSelectEntryColor().first);
mxPaletteManager->PopupColorPicker(mpParentWindow, maCommand, GetSelectEntryColor().first);
}
void SvxColorWindow::StartSelection()
@@ -3456,25 +3467,54 @@ void SvxColorToolBoxControl::initialize( const css::uno::Sequence<css::uno::Any>
{
PopupWindowController::initialize( rArguments );
ToolBox* pToolBox = nullptr;
sal_uInt16 nId = 0;
if ( !getToolboxId( nId, &pToolBox ) )
{
SAL_WARN("svx.tbxcrtls", "ToolBox not found!");
return;
}
m_nSlotId = MapCommandToSlotId( m_aCommandURL );
if ( m_nSlotId == SID_ATTR_LINE_COLOR || m_nSlotId == SID_ATTR_FILL_COLOR ||
m_nSlotId == SID_FRAME_LINECOLOR || m_nSlotId == SID_BACKGROUND_COLOR )
{
// Sidebar uses wide buttons for those.
m_bSplitButton = typeid( *pToolBox ) != typeid( sfx2::sidebar::SidebarToolBox );
m_bSplitButton = !m_bSidebar;
}
auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(getCommandURL(), getModuleName());
OUString aCommandLabel = vcl::CommandInfoProvider::GetLabelForCommand(aProperties);
m_xBtnUpdater.reset( new svx::ToolboxButtonColorUpdater( m_nSlotId, nId, pToolBox, !m_bSplitButton, aCommandLabel ) );
pToolBox->SetItemBits( nId, pToolBox->GetItemBits( nId ) | ( m_bSplitButton ? ToolBoxItemBits::DROPDOWN : ToolBoxItemBits::DROPDOWNONLY ) );
if (m_pToolbar)
{
EnsurePaletteManager();
const css::uno::Reference<css::awt::XWindow> xParent = m_xFrame->getContainerWindow();
weld::Window* pParentFrame = Application::GetFrameWeld(xParent);
const OString aId(m_aCommandURL.toUtf8());
auto xPopover = std::make_unique<ColorWindow>(
m_aCommandURL,
m_xPaletteManager,
m_aColorStatus,
m_nSlotId,
m_xFrame,
pParentFrame,
MenuOrToolMenuButton(m_pToolbar, aId),
m_aColorSelectFunction);
if ( m_bSplitButton )
xPopover->SetSelectedHdl( LINK( this, SvxColorToolBoxControl, SelectedHdl ) );
m_pToolbar->set_item_popover(aId, xPopover->getTopLevel());
mxPopover = std::move(xPopover);
m_xBtnUpdater.reset(new svx::ToolboxButtonColorUpdater(m_nSlotId, aId, m_pToolbar, !m_bSplitButton, aCommandLabel, m_xFrame));
return;
}
ToolBox* pToolBox = nullptr;
sal_uInt16 nId = 0;
if (getToolboxId(nId, &pToolBox))
{
m_xBtnUpdater.reset( new svx::VclToolboxButtonColorUpdater( m_nSlotId, nId, pToolBox, !m_bSplitButton, aCommandLabel, m_aCommandURL, m_xFrame ) );
pToolBox->SetItemBits( nId, pToolBox->GetItemBits( nId ) | ( m_bSplitButton ? ToolBoxItemBits::DROPDOWN : ToolBoxItemBits::DROPDOWNONLY ) );
}
}
void SvxColorToolBoxControl::update()
@@ -3552,11 +3592,15 @@ void SvxColorToolBoxControl::statusChanged( const css::frame::FeatureStateEvent&
{
ToolBox* pToolBox = nullptr;
sal_uInt16 nId = 0;
if ( !getToolboxId( nId, &pToolBox ) )
return;
getToolboxId(nId, &pToolBox);
if ( rEvent.FeatureURL.Complete == m_aCommandURL )
pToolBox->EnableItem( nId, rEvent.IsEnabled );
{
if (m_pToolbar)
m_pToolbar->set_item_sensitive(m_aCommandURL.toUtf8(), rEvent.IsEnabled);
else
pToolBox->EnableItem( nId, rEvent.IsEnabled );
}
bool bValue;
if ( !m_bSplitButton )
@@ -3565,15 +3609,29 @@ void SvxColorToolBoxControl::statusChanged( const css::frame::FeatureStateEvent&
m_xBtnUpdater->Update( m_aColorStatus.GetColor() );
}
else if ( rEvent.State >>= bValue )
pToolBox->CheckItem( nId, bValue );
{
if (m_pToolbar)
m_pToolbar->set_item_active(m_aCommandURL.toUtf8(), bValue);
else if (pToolBox)
pToolBox->CheckItem( nId, bValue );
}
}
void SvxColorToolBoxControl::execute(sal_Int16 /*nSelectModifier*/)
{
if ( !m_bSplitButton )
{
// Open the popup also when Enter key is pressed.
createPopupWindow();
if (m_pToolbar)
{
// Toggle the popup also when toolbutton is activated
const OString aId(m_aCommandURL.toUtf8());
m_pToolbar->set_menu_item_active(aId, !m_pToolbar->get_menu_item_active(aId));
}
else
{
// Open the popup also when Enter key is pressed.
createPopupWindow();
}
return;
}
@@ -3611,17 +3669,7 @@ sal_Bool SvxColorToolBoxControl::opensSubToolbar()
void SvxColorToolBoxControl::updateImage()
{
ToolBox* pToolBox = nullptr;
sal_uInt16 nId = 0;
if ( !getToolboxId( nId, &pToolBox ) )
return;
Image aImage = vcl::CommandInfoProvider::GetImageForCommand(m_aCommandURL, m_xFrame, pToolBox->GetImageSize());
if ( !!aImage )
{
pToolBox->SetItemImage( nId, aImage );
m_xBtnUpdater->Update(m_xBtnUpdater->GetCurrentColor(), true);
}
m_xBtnUpdater->Update(m_xBtnUpdater->GetCurrentColor(), true);
}
OUString SvxColorToolBoxControl::getSubToolbarName()
@@ -3741,8 +3789,7 @@ void SvxSimpleUndoRedoController::StateChanged( sal_uInt16, SfxItemState eState,
SvxCurrencyToolBoxControl::SvxCurrencyToolBoxControl( const css::uno::Reference<css::uno::XComponentContext>& rContext ) :
PopupWindowController( rContext, nullptr, OUString() ),
m_eLanguage( Application::GetSettings().GetLanguageTag().getLanguageType() ),
m_nFormatKey( NUMBERFORMAT_ENTRY_NOT_FOUND ),
m_pToolbar(nullptr)
m_nFormatKey( NUMBERFORMAT_ENTRY_NOT_FOUND )
{
}
@@ -3877,28 +3924,15 @@ namespace
}
}
void SvxCurrencyToolBoxControl::EndPopupMode()
{
m_pToolbar->set_menu_item_active(m_aCommandURL.toUtf8(), false);
}
void SvxCurrencyToolBoxControl::dispose()
{
m_xPopover.reset();
svt::PopupWindowController::dispose();
}
void SvxCurrencyToolBoxControl::initialize( const css::uno::Sequence< css::uno::Any >& rArguments )
{
PopupWindowController::initialize(rArguments);
if (weld::TransportAsXWindow* pTunnel = dynamic_cast<weld::TransportAsXWindow*>(getParent().get()))
if (m_pToolbar)
{
m_pToolbar = dynamic_cast<weld::Toolbar*>(pTunnel->getWidget());
assert(m_pToolbar && "must be a toolbar");
auto xPopover = std::make_unique<CurrencyList_Impl>(this, m_pToolbar, m_aFormatString, m_eLanguage);
m_pToolbar->set_item_popover(m_aCommandURL.toUtf8(), xPopover->getTopLevel());
m_xPopover = std::move(xPopover);
mxPopover = std::move(xPopover);
return;
}
@@ -4310,6 +4344,7 @@ void ColorListBox::createColorWindow()
EnsurePaletteManager();
m_xColorWindow.reset(new ColorWindow(
OUString() /*m_aCommandURL*/,
m_xPaletteManager,
m_aColorStatus,
m_nSlotId,
@@ -4319,7 +4354,7 @@ void ColorListBox::createColorWindow()
m_aColorWrapper));
SetNoSelection();
m_xButton->set_popover(m_xColorWindow->GetWidget());
m_xButton->set_popover(m_xColorWindow->getTopLevel());
if (m_bShowNoneButton)
m_xColorWindow->ShowNoneButton();
m_xColorWindow->SelectEntry(m_aSelectedColor);
diff --git a/svx/source/tbxctrls/tbxcolorupdate.cxx b/svx/source/tbxctrls/tbxcolorupdate.cxx
index 547ae1c..2895f25 100644
--- a/svx/source/tbxctrls/tbxcolorupdate.cxx
+++ b/svx/source/tbxctrls/tbxcolorupdate.cxx
@@ -21,9 +21,11 @@
#include <svx/svxids.hrc>
#include <svx/xdef.hxx>
#include <vcl/commandinfoprovider.hxx>
#include <vcl/svapp.hxx>
#include <vcl/toolbox.hxx>
#include <vcl/virdev.hxx>
#include <vcl/weld.hxx>
#include <vcl/settings.hxx>
#include <tools/debug.hxx>
@@ -32,16 +34,20 @@
namespace svx
{
ToolboxButtonColorUpdater::ToolboxButtonColorUpdater(
sal_uInt16 nSlotId, sal_uInt16 nTbxBtnId, ToolBox* pToolBox, bool bWideButton, const OUString& rCommandLabel)
ToolboxButtonColorUpdaterBase::ToolboxButtonColorUpdaterBase(bool bWideButton, const OUString& rCommandLabel,
const OUString& rCommandURL,
const css::uno::Reference<css::frame::XFrame>& rFrame)
: mbWideButton(bWideButton)
, mnBtnId(nTbxBtnId)
, mpTbx(pToolBox)
, mbWasHiContrastMode(Application::GetSettings().GetStyleSettings().GetHighContrastMode())
, maCurColor(COL_TRANSPARENT)
, maCommandLabel(rCommandLabel)
, maCommandURL(rCommandURL)
, mxFrame(rFrame)
{
DBG_ASSERT(pToolBox, "ToolBox not found :-(");
mbWasHiContrastMode = pToolBox && pToolBox->GetSettings().GetStyleSettings().GetHighContrastMode();
}
void ToolboxButtonColorUpdaterBase::Init(sal_uInt16 nSlotId)
{
switch (nSlotId)
{
case SID_ATTR_CHAR_COLOR:
@@ -68,10 +74,57 @@ namespace svx
}
}
ToolboxButtonColorUpdater::~ToolboxButtonColorUpdater()
VclToolboxButtonColorUpdater::VclToolboxButtonColorUpdater(
sal_uInt16 nSlotId, sal_uInt16 nTbxBtnId, ToolBox* pToolBox, bool bWideButton,
const OUString& rCommandLabel, const OUString& rCommandURL,
const css::uno::Reference<css::frame::XFrame>& rFrame)
: ToolboxButtonColorUpdaterBase(bWideButton, rCommandLabel, rCommandURL, rFrame)
, mnBtnId(nTbxBtnId)
, mpTbx(pToolBox)
{
Init(nSlotId);
}
void VclToolboxButtonColorUpdater::SetQuickHelpText(const OUString& rText)
{
mpTbx->SetQuickHelpText(mnBtnId, rText);
}
OUString VclToolboxButtonColorUpdater::GetQuickHelpText() const
{
return mpTbx->GetQuickHelpText(mnBtnId);
}
void VclToolboxButtonColorUpdater::SetImage(VirtualDevice* pVirDev)
{
mpTbx->SetItemImage(mnBtnId, Image(pVirDev->GetBitmapEx(Point(0,0), maBmpSize)));
}
VclPtr<VirtualDevice> VclToolboxButtonColorUpdater::CreateVirtualDevice() const
{
auto xRet = VclPtr<VirtualDevice>::Create(*mpTbx,
DeviceFormat::DEFAULT, DeviceFormat::DEFAULT);
xRet->SetBackground(mpTbx->GetControlBackground());
return xRet;
}
vcl::ImageType VclToolboxButtonColorUpdater::GetImageSize() const
{
return mpTbx->GetImageSize();
}
Size VclToolboxButtonColorUpdater::GetItemSize() const
{
if (mbWideButton)
return mpTbx->GetItemContentSize(mnBtnId);
Image aImage(mpTbx->GetItemImage(mnBtnId));
return aImage.GetSizePixel();
}
ToolboxButtonColorUpdaterBase::~ToolboxButtonColorUpdaterBase()
{}
void ToolboxButtonColorUpdater::Update(const NamedColor &rNamedColor)
void ToolboxButtonColorUpdaterBase::Update(const NamedColor &rNamedColor)
{
Update(rNamedColor.first);
if (!mbWideButton)
@@ -80,14 +133,14 @@ namespace svx
OUString colorSuffix = OUString(" (%1)").replaceFirst("%1", rNamedColor.second);
OUString colorHelpText = maCommandLabel + colorSuffix;
mpTbx->SetQuickHelpText(mnBtnId, colorHelpText);
SetQuickHelpText(colorHelpText);
}
}
void ToolboxButtonColorUpdater::Update(const Color& rColor, bool bForceUpdate)
void ToolboxButtonColorUpdaterBase::Update(const Color& rColor, bool bForceUpdate)
{
Image aImage(mpTbx->GetItemImage(mnBtnId));
Size aItemSize(mbWideButton ? mpTbx->GetItemContentSize(mnBtnId) : aImage.GetSizePixel());
Size aItemSize(GetItemSize());
#ifdef IOS // tdf#126966
// Oddly enough, it is in the "not wide button" case that we want the larger ones, hmm.
if (!mbWideButton)
@@ -102,7 +155,7 @@ namespace svx
}
#endif
const bool bSizeChanged = (maBmpSize != aItemSize);
const bool bDisplayModeChanged = (mbWasHiContrastMode != mpTbx->GetSettings().GetStyleSettings().GetHighContrastMode());
const bool bDisplayModeChanged = (mbWasHiContrastMode != Application::GetSettings().GetStyleSettings().GetHighContrastMode());
Color aColor(rColor);
// !!! #109290# Workaround for SetFillColor with COL_AUTO
@@ -115,19 +168,20 @@ namespace svx
if (!aItemSize.Width() || !aItemSize.Height())
return;
ScopedVclPtr<VirtualDevice> pVirDev(VclPtr<VirtualDevice>::Create(*Application::GetDefaultDevice(),
DeviceFormat::DEFAULT, DeviceFormat::DEFAULT));
ScopedVclPtr<VirtualDevice> pVirDev(CreateVirtualDevice());
pVirDev->SetOutputSizePixel(aItemSize);
maBmpSize = aItemSize;
mbWasHiContrastMode = mpTbx->GetSettings().GetStyleSettings().GetHighContrastMode();
auto xImage = vcl::CommandInfoProvider::GetXGraphicForCommand(maCommandURL, mxFrame, GetImageSize());
pVirDev->DrawImage(Point(0, 0), Image(xImage));
const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
mbWasHiContrastMode = rStyleSettings.GetHighContrastMode();
if ((COL_TRANSPARENT != aColor) && (maBmpSize.Width() == maBmpSize.Height()))
pVirDev->SetLineColor(aColor);
else if( mpTbx->GetBackground().GetColor().IsDark() )
pVirDev->SetLineColor(COL_WHITE);
else
pVirDev->SetLineColor(COL_BLACK);
pVirDev->SetLineColor(rStyleSettings.GetDisableColor());
// use not only COL_TRANSPARENT for detection of transparence,
// but the method/way which is designed to do that
@@ -151,12 +205,12 @@ namespace svx
pVirDev->DrawRect(maUpdRect);
mpTbx->SetItemOverlayImage(mnBtnId, Image(pVirDev->GetBitmapEx(Point(0,0), aItemSize)));
SetImage(pVirDev.get());
}
OUString ToolboxButtonColorUpdater::GetCurrentColorName()
OUString ToolboxButtonColorUpdaterBase::GetCurrentColorName()
{
OUString sColorName = mpTbx->GetQuickHelpText(mnBtnId);
OUString sColorName = GetQuickHelpText();
// The obtained string is of format: color context (color name)
// Generate a substring which contains only the color name
sal_Int32 nStart = sColorName.indexOf('(');
@@ -166,6 +220,61 @@ namespace svx
sColorName = sColorName.copy( 0, nLength - 1);
return sColorName;
}
ToolboxButtonColorUpdater::ToolboxButtonColorUpdater(sal_uInt16 nSlotId, const OString& rTbxBtnId, weld::Toolbar* ptrTbx, bool bWideButton,
const OUString& rCommandLabel, const css::uno::Reference<css::frame::XFrame>& rFrame)
: ToolboxButtonColorUpdaterBase(bWideButton, rCommandLabel, OUString::fromUtf8(rTbxBtnId), rFrame)
, msBtnId(rTbxBtnId)
, mpTbx(ptrTbx)
{
Init(nSlotId);
}
void ToolboxButtonColorUpdater::SetQuickHelpText(const OUString& rText)
{
mpTbx->set_item_tooltip_text(msBtnId, rText);
}
OUString ToolboxButtonColorUpdater::GetQuickHelpText() const
{
return mpTbx->get_item_tooltip_text(msBtnId);
}
void ToolboxButtonColorUpdater::SetImage(VirtualDevice* pVirDev)
{
mpTbx->set_item_image(msBtnId, pVirDev);
}
VclPtr<VirtualDevice> ToolboxButtonColorUpdater::CreateVirtualDevice() const
{
return mpTbx->create_virtual_device();
}
vcl::ImageType ToolboxButtonColorUpdater::GetImageSize() const
{
return mpTbx->get_icon_size();
}
Size ToolboxButtonColorUpdater::GetItemSize() const
{
vcl::ImageType eImageType = GetImageSize();
int nHeight(16);
switch (eImageType)
{
case vcl::ImageType::Size16:
nHeight = 16;
break;
case vcl::ImageType::Size26:
nHeight = 26;
break;
case vcl::ImageType::Size32:
nHeight = 32;
break;
}
int nWidth = mbWideButton ? nHeight * 5 : nHeight;
return Size(nWidth, nHeight);
}
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/uiconfig/ui/floatingareastyle.ui b/svx/uiconfig/ui/floatingareastyle.ui
index 5ba56ad..bef7b24 100644
--- a/svx/uiconfig/ui/floatingareastyle.ui
+++ b/svx/uiconfig/ui/floatingareastyle.ui
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.20.0 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="svx">
<requires lib="gtk+" version="3.18"/>
<object class="GtkAdjustment" id="adjustment1">
@@ -12,16 +12,30 @@
<property name="step_increment">5</property>
<property name="page_increment">10</property>
</object>
<object class="GtkWindow" id="FloatingAreaStyle">
<object class="GtkAdjustment" id="adjustment3">
<property name="upper">100</property>
<property name="step_increment">5</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment4">
<property name="upper">100</property>
<property name="step_increment">5</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment5">
<property name="upper">100</property>
<property name="step_increment">5</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment6">
<property name="upper">100</property>
<property name="step_increment">5</property>
<property name="page_increment">10</property>
</object>
<object class="GtkPopover" id="FloatingAreaStyle">
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="no_show_all">True</property>
<property name="border_width">4</property>
<property name="resizable">False</property>
<property name="destroy_with_parent">True</property>
<property name="type_hint">popup-menu</property>
<property name="skip_pager_hint">True</property>
<property name="deletable">False</property>
<child>
<object class="GtkGrid">
<property name="visible">True</property>
@@ -42,7 +56,7 @@
<property name="halign">start</property>
<property name="label" translatable="yes" context="floatingareastyle|label1">_Angle:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">angle:0degrees</property>
<property name="mnemonic_widget">angle</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -56,7 +70,7 @@
<property name="column_spacing">12</property>
<property name="column_homogeneous">True</property>
<child>
<object class="GtkSpinButton" id="angle:0degrees">
<object class="GtkSpinButton" id="angle">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes" context="floatingareastyle|angle|tooltip_text">Specify the angle of rotation for the gradient shading style.</property>
@@ -75,6 +89,9 @@
<object class="GtkToolbar" id="lefttoolbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="toolbar_style">icons</property>
<property name="show_arrow">False</property>
<property name="icon_size">2</property>
<child>
<object class="GtkToolButton" id="left">
<property name="visible">True</property>
@@ -84,7 +101,7 @@
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
<property name="homogeneous">False</property>
</packing>
</child>
</object>
@@ -97,6 +114,9 @@
<object class="GtkToolbar" id="righttoolbox">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="toolbar_style">icons</property>
<property name="show_arrow">False</property>
<property name="icon_size">2</property>
<child>
<object class="GtkToolButton" id="right">
<property name="visible">True</property>
@@ -106,7 +126,7 @@
</object>
<packing>
<property name="expand">False</property>
<property name="homogeneous">True</property>
<property name="homogeneous">False</property>
</packing>
</child>
</object>
@@ -146,7 +166,7 @@
<property name="halign">start</property>
<property name="label" translatable="yes" context="floatingareastyle|label4">_Start value:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">start:0%</property>
<property name="mnemonic_widget">start</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -160,7 +180,7 @@
<property name="halign">start</property>
<property name="label" translatable="yes" context="floatingareastyle|label5">_End value:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">end:0%</property>
<property name="mnemonic_widget">end</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -168,11 +188,11 @@
</packing>
</child>
<child>
<object class="GtkSpinButton" id="start:0%">
<object class="GtkSpinButton" id="start">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes" context="floatingareastyle|start|tooltip_text">Enter a transparency value for the beginning point of the gradient, where 0% is fully opaque and 100% is fully transparent.</property>
<property name="adjustment">adjustment2</property>
<property name="adjustment">adjustment4</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -180,11 +200,11 @@
</packing>
</child>
<child>
<object class="GtkSpinButton" id="end:0%">
<object class="GtkSpinButton" id="end">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes" context="floatingareastyle|end|tooltip_text">Enter a transparency value for the endpoint of the gradient, where 0% is fully opaque and 100% is fully transparent.</property>
<property name="adjustment">adjustment2</property>
<property name="adjustment">adjustment5</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -209,7 +229,7 @@
<property name="halign">start</property>
<property name="label" translatable="yes" context="floatingareastyle|label6">_Border:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">border:0%</property>
<property name="mnemonic_widget">border</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -217,11 +237,11 @@
</packing>
</child>
<child>
<object class="GtkSpinButton" id="border:0%">
<object class="GtkSpinButton" id="border">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes" context="floatingareastyle|border|tooltip_text">Specify the border value of gradient transparency.</property>
<property name="adjustment">adjustment2</property>
<property name="adjustment">adjustment6</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -247,7 +267,7 @@
<property name="halign">start</property>
<property name="label" translatable="yes" context="floatingareastyle|label2">Center _X:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">centerx:0%</property>
<property name="mnemonic_widget">centerx</property>
</object>
<packing>
<property name="left_attach">0</property>
@@ -261,7 +281,7 @@
<property name="halign">start</property>
<property name="label" translatable="yes" context="floatingareastyle|label3">Center _Y:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">centery:0%</property>
<property name="mnemonic_widget">centery</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -269,7 +289,7 @@
</packing>
</child>
<child>
<object class="GtkSpinButton" id="centerx:0%">
<object class="GtkSpinButton" id="centerx">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes" context="floatingareastyle|centerx|tooltip_text">Specify the horizontal offset percentage from the center for the gradient shading style. 50% is the horizontal center.</property>
@@ -281,11 +301,11 @@
</packing>
</child>
<child>
<object class="GtkSpinButton" id="centery:0%">
<object class="GtkSpinButton" id="centery">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes" context="floatingareastyle|centery|tooltip_text">Specify the vertical offset percentage from the center for the gradient shading style. 50% is the vertical center.</property>
<property name="adjustment">adjustment2</property>
<property name="adjustment">adjustment3</property>
</object>
<packing>
<property name="left_attach">1</property>
@@ -301,4 +321,14 @@
</object>
</child>
</object>
<object class="GtkSizeGroup">
<widgets>
<widget name="angle"/>
<widget name="start"/>
<widget name="end"/>
<widget name="border"/>
<widget name="centerx"/>
<widget name="centery"/>
</widgets>
</object>
</interface>
diff --git a/svx/uiconfig/ui/sidebararea.ui b/svx/uiconfig/ui/sidebararea.ui
index ba5169a..79e5299 100644
--- a/svx/uiconfig/ui/sidebararea.ui
+++ b/svx/uiconfig/ui/sidebararea.ui
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated with glade 3.16.1 -->
<!-- Generated with glade 3.22.1 -->
<interface domain="svx">
<requires lib="LibreOffice" version="1.0"/>
<requires lib="gtk+" version="3.18"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="upper">100</property>
@@ -13,6 +12,23 @@
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkAdjustment" id="adjustment4">
<property name="upper">100</property>
<property name="step_increment">1</property>
<property name="page_increment">10</property>
</object>
<object class="GtkListStore" id="liststore4">
<columns>
<!-- column-name text -->
<column type="gchararray"/>
<!-- column-name id -->
<column type="gchararray"/>
<!-- column-name image -->
<column type="GdkPixbuf"/>
<!-- column-name surface -->
<column type="CairoSurface"/>
</columns>
</object>
<object class="GtkGrid" id="AreaPropertyPanel">
<property name="visible">True</property>
<property name="can_focus">False</property>
@@ -38,15 +54,14 @@
<property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|filllabel|tooltip_text">Fill:</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="sidebararea|filllabel">_Fill:</property>
<property name="use_underline">True</property>
<property name="mnemonic_widget">fillstyle</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -55,21 +70,23 @@
<property name="can_focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="sfxlo-SidebarToolBox" id="selectcolor">
<object class="GtkToolbar" id="selectcolor">
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="toolbar_style">icons</property>
<property name="show_arrow">False</property>
<property name="icon_size">2</property>
<child>
<object class="GtkMenuToolButton" id="color">
<property name="width_request">105</property>
<object class="GtkMenuToolButton" id=".uno:FillColor">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|color|tooltip_text">Select the color to apply.</property>
<property name="action_name">.uno:FillColor</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="homogeneous">True</property>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
</object>
@@ -80,13 +97,27 @@
</packing>
</child>
<child>
<object class="svxlo-SvxFillAttrBox" id="fillattr">
<property name="can_focus">True</property>
<object class="GtkComboBox" id="fillattr">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|fillattr|tooltip_text">Select the effect to apply.</property>
<accessibility>
<relation type="labelled-by" target="filllabel"/>
</accessibility>
<property name="hexpand">True</property>
<property name="model">liststore4</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<child>
<object class="GtkCellRendererText" id="cellrenderertext3"/>
<attributes>
<attribute name="text">0</attribute>
</attributes>
</child>
<child>
<object class="GtkCellRendererPixbuf" id="cellrenderertext4"/>
<attributes>
<attribute name="surface">3</attribute>
</attributes>
</child>
<child internal-child="accessible">
<object class="AtkObject" id="fillattr-atkobject">
<property name="AtkObject::accessible-name" translatable="yes" context="sidebararea|fillattr-atkobject">Hatching/Bitmap</property>
@@ -100,10 +131,19 @@
</packing>
</child>
<child>
<object class="svxcorelo-SvxColorListBox" id="fillgrad1">
<object class="GtkMenuButton" id="fillgrad1">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|fillgrad1|tooltip_text">Fill gradient from.</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="draw_indicator">True</property>
<property name="label" translatable="no"></property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="expand">True</property>
@@ -115,21 +155,14 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="svxlo-SvxFillTypeBox" id="fillstyle">
<object class="GtkComboBoxText" id="fillstyle">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|fillstyle|tooltip_text">Select the fill type to apply.</property>
<property name="entry_text_column">0</property>
<property name="id_column">1</property>
<accessibility>
<relation type="labelled-by" target="fillstyle"/>
</accessibility>
<child internal-child="accessible">
<object class="AtkObject" id="fillstyle-atkobject">
<property name="AtkObject::accessible-name" translatable="yes" context="sidebararea|fillstyle-atkobject">Fill Type</property>
@@ -139,21 +172,26 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="svxcorelo-SvxColorListBox" id="fillgrad2">
<object class="GtkMenuButton" id="fillgrad2">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|fillgrad2|tooltip_text">Fill gradient to.</property>
<property name="valign">center</property>
<property name="hexpand">True</property>
<property name="draw_indicator">True</property>
<property name="label" translatable="no"></property>
<child>
<placeholder/>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -163,7 +201,7 @@
<child>
<object class="GtkComboBoxText" id="gradientstyle">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_focus">False</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|gradientstyle|tooltip_text">Select the gradient style.</property>
<items>
<item translatable="yes" context="sidebararea|gradientstyle">Linear</item>
@@ -202,17 +240,15 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="gradangle:0degrees">
<object class="GtkSpinButton" id="gradangle">
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|gradangle|tooltip_text">Select the gradient angle.</property>
<property name="adjustment">adjustment2</property>
<child internal-child="accessible">
<object class="AtkObject" id="gradangle:0degrees-atkobject">
<object class="AtkObject" id="gradangle-atkobject">
<property name="AtkObject::accessible-name" translatable="yes" context="sidebararea|gradangle-atkobject">Gradient angle</property>
</object>
</child>
@@ -220,8 +256,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">2</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -230,21 +264,19 @@
<property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|transparencylabel|tooltip_text">Transparency</property>
<property name="xalign">0</property>
<property name="label" translatable="yes" context="sidebararea|transparencylabel">_Transparency:</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="transtype">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|transtype|tooltip_text">Select the type of transparency to apply.</property>
<items>
@@ -266,8 +298,6 @@
<packing>
<property name="left_attach">1</property>
<property name="top_attach">3</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -275,27 +305,26 @@
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="halign">start</property>
<property name="toolbar_style">icons</property>
<property name="show_arrow">False</property>
<property name="icon_size">2</property>
<child>
<object class="GtkMenuToolButton" id="gradient">
<object class="GtkMenuToolButton" id="sidebargradient">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|gradient|tooltip_text">Specify the variation of gradient transparency.</property>
<property name="hexpand">True</property>
<property name="action_name">.uno:sidebargradient</property>
<property name="use_underline">True</property>
</object>
<packing>
<property name="expand">True</property>
<property name="homogeneous">True</property>
<property name="expand">False</property>
<property name="homogeneous">False</property>
</packing>
</child>
</object>
<packing>
<property name="left_attach">1</property>
<property name="top_attach">4</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
<child>
@@ -319,6 +348,7 @@
<property name="can_focus">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|transparencyslider|tooltip_text">Specify 0% for fully opaque through 100% for fully transparent.</property>
<property name="hexpand">True</property>
<property name="adjustment">adjustment4</property>
<property name="round_digits">1</property>
<property name="draw_value">False</property>
</object>
@@ -326,21 +356,17 @@
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">3</property>
<property name="height">1</property>
</packing>
</child>
<child>
<object class="GtkSpinButton" id="settransparency:0%">
<object class="GtkSpinButton" id="settransparency">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="has_tooltip">True</property>
<property name="tooltip_text" translatable="yes" context="sidebararea|settransparency|tooltip_text">Specify 0% for fully opaque through 100% for fully transparent.</property>
<property name="max_length">100</property>
<property name="secondary_icon_activatable">False</property>
<property name="adjustment">adjustment1</property>
<property name="numeric">True</property>
<child internal-child="accessible">
<object class="AtkObject" id="settransparency:0%-atkobject">
<object class="AtkObject" id="settransparency-atkobject">
<property name="AtkObject::accessible-name" translatable="yes" context="sidebararea|settransparency-atkobject">Transparency</property>
</object>
</child>
@@ -348,8 +374,6 @@
<packing>
<property name="left_attach">3</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -363,8 +387,6 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">0</property>
<property name="width">1</property>
<property name="height">1</property>
</packing>
</child>
</object>
@@ -381,7 +403,7 @@
<widget name="filllabel"/>
<widget name="gradientstyle"/>
<widget name="bmpimport"/>
<widget name="gradangle:0degrees"/>
<widget name="gradangle"/>
<widget name="transparencylabel"/>
</widgets>
</object>
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index cb6f6d5..910778b 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1099,7 +1099,25 @@ public:
m_xToolBox->SetItemText(m_xToolBox->GetItemId(OUString::fromUtf8(rIdent)), rLabel);
}
virtual void set_item_icon(int nIndex, const css::uno::Reference<css::graphic::XGraphic>& rIcon) override
virtual void set_item_icon_name(const OString& rIdent, const OUString& rIconName) override
{
m_xToolBox->SetItemImage(m_xToolBox->GetItemId(OUString::fromUtf8(rIdent)), Image(StockImage::Yes, rIconName));
}
virtual void set_item_image(const OString& rIdent, const css::uno::Reference<css::graphic::XGraphic>& rIcon) override
{
m_xToolBox->SetItemImage(m_xToolBox->GetItemId(OUString::fromUtf8(rIdent)), Image(rIcon));
}
virtual void set_item_image(const OString& rIdent, VirtualDevice* pDevice) override
{
if (pDevice)
m_xToolBox->SetItemImage(m_xToolBox->GetItemId(OUString::fromUtf8(rIdent)), createImage(*pDevice));
else
m_xToolBox->SetItemImage(m_xToolBox->GetItemId(OUString::fromUtf8(rIdent)), Image());
}
virtual void set_item_image(int nIndex, const css::uno::Reference<css::graphic::XGraphic>& rIcon) override
{
m_xToolBox->SetItemImage(m_xToolBox->GetItemId(nIndex), Image(rIcon));
}
@@ -1114,6 +1132,11 @@ public:
m_xToolBox->SetQuickHelpText(m_xToolBox->GetItemId(OUString::fromUtf8(rIdent)), rTip);
}
virtual OUString get_item_tooltip_text(const OString& rIdent) const override
{
return m_xToolBox->GetQuickHelpText(m_xToolBox->GetItemId(OUString::fromUtf8(rIdent)));
}
virtual vcl::ImageType get_icon_size() const override
{
return m_xToolBox->GetImageSize();
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 6630ee1..a291daf 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -2989,6 +2989,34 @@ namespace
return pRet;
}
GdkPixbuf* getPixbuf(const OUString& rIconName)
{
if (rIconName.isEmpty())
return nullptr;
GdkPixbuf* pixbuf = nullptr;
if (rIconName.lastIndexOf('.') != rIconName.getLength() - 4)
{
assert((rIconName== "dialog-warning" || rIconName== "dialog-error" || rIconName== "dialog-information") &&
"unknown stock image");
GError *error = nullptr;
GtkIconTheme *icon_theme = gtk_icon_theme_get_default();
pixbuf = gtk_icon_theme_load_icon(icon_theme, OUStringToOString(rIconName, RTL_TEXTENCODING_UTF8).getStr(),
16, GTK_ICON_LOOKUP_USE_BUILTIN, &error);
}
else
{
const AllSettings& rSettings = Application::GetSettings();
pixbuf = load_icon_by_name_theme_lang(rIconName,
rSettings.GetStyleSettings().DetermineIconTheme(),
rSettings.GetUILanguageTag().getBcp47());
}
return pixbuf;
}
GtkWidget* image_new_from_virtual_device(const VirtualDevice& rImageSurface)
{
GtkWidget* pImage = nullptr;
@@ -7101,6 +7129,33 @@ private:
signal_clicked(OString(pStr, pStr ? strlen(pStr) : 0));
}
static void set_item_image(GtkToolButton* pItem, const css::uno::Reference<css::graphic::XGraphic>& rIcon)
{
GtkWidget* pImage = nullptr;
if (GdkPixbuf* pixbuf = getPixbuf(rIcon))
{
pImage = gtk_image_new_from_pixbuf(pixbuf);
g_object_unref(pixbuf);
gtk_widget_show(pImage);
}
gtk_tool_button_set_icon_widget(pItem, pImage);
}
static void set_item_image(GtkToolButton* pItem, VirtualDevice* pDevice)
{
GtkWidget* pImage = nullptr;
if (pDevice)
{
pImage = image_new_from_virtual_device(*pDevice);
gtk_widget_show(pImage);
}
gtk_tool_button_set_icon_widget(pItem, pImage);
}
public:
GtkInstanceToolbar(GtkToolbar* pToolbar, GtkInstanceBuilder* pBuilder, bool bTakeOwnership)
: GtkInstanceWidget(GTK_WIDGET(pToolbar), pBuilder, bTakeOwnership)
@@ -7268,20 +7323,38 @@ public:
return OUString(pText, pText ? strlen(pText) : 0, RTL_TEXTENCODING_UTF8);
}
virtual void set_item_icon(int nIndex, const css::uno::Reference<css::graphic::XGraphic>& rIcon) override
virtual void set_item_icon_name(const OString& rIdent, const OUString& rIconName) override
{
GtkToolItem* pItem = gtk_toolbar_get_nth_item(m_pToolbar, nIndex);
GtkToolButton* pItem = m_aMap[rIdent];
GtkWidget* pImage = nullptr;
if (GdkPixbuf* pixbuf = getPixbuf(rIcon))
if (GdkPixbuf* pixbuf = getPixbuf(rIconName))
{
pImage = gtk_image_new_from_pixbuf(pixbuf);
g_object_unref(pixbuf);
gtk_widget_show(pImage);
}
gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(pItem), pImage);
gtk_tool_button_set_icon_widget(pItem, pImage);
}
virtual void set_item_image(const OString& rIdent, const css::uno::Reference<css::graphic::XGraphic>& rIcon) override
{
GtkToolButton* pItem = m_aMap[rIdent];
set_item_image(pItem, rIcon);
}
virtual void set_item_image(const OString& rIdent, VirtualDevice* pDevice) override
{
GtkToolButton* pItem = m_aMap[rIdent];
set_item_image(pItem, pDevice);
}
virtual void set_item_image(int nIndex, const css::uno::Reference<css::graphic::XGraphic>& rIcon) override
{
GtkToolItem* pItem = gtk_toolbar_get_nth_item(m_pToolbar, nIndex);
set_item_image(GTK_TOOL_BUTTON(pItem), rIcon);
}
virtual void set_item_tooltip_text(int nIndex, const OUString& rTip) override
@@ -7296,6 +7369,13 @@ public:
gtk_widget_set_tooltip_text(GTK_WIDGET(pItem), OUStringToOString(rTip, RTL_TEXTENCODING_UTF8).getStr());
}
virtual OUString get_item_tooltip_text(const OString& rIdent) const override
{
GtkToolButton* pItem = m_aMap.find(rIdent)->second;
const gchar* pStr = gtk_widget_get_tooltip_text(GTK_WIDGET(pItem));
return OUString(pStr, pStr ? strlen(pStr) : 0, RTL_TEXTENCODING_UTF8);
}
virtual vcl::ImageType get_icon_size() const override
{
return GtkToVcl(gtk_toolbar_get_icon_size(m_pToolbar));
@@ -7957,34 +8037,6 @@ public:
return found;
}
GdkPixbuf* getPixbuf(const OUString& rIconName)
{
if (rIconName.isEmpty())
return nullptr;
GdkPixbuf* pixbuf = nullptr;
if (rIconName.lastIndexOf('.') != rIconName.getLength() - 4)
{
assert((rIconName== "dialog-warning" || rIconName== "dialog-error" || rIconName== "dialog-information") &&
"unknown stock image");
GError *error = nullptr;
GtkIconTheme *icon_theme = gtk_icon_theme_get_default();
pixbuf = gtk_icon_theme_load_icon(icon_theme, OUStringToOString(rIconName, RTL_TEXTENCODING_UTF8).getStr(),
16, GTK_ICON_LOOKUP_USE_BUILTIN, &error);
}
else
{
const AllSettings& rSettings = Application::GetSettings();
pixbuf = load_icon_by_name_theme_lang(rIconName,
rSettings.GetStyleSettings().DetermineIconTheme(),
rSettings.GetUILanguageTag().getBcp47());
}
return pixbuf;
}
void insert_row(GtkListStore* pListStore, GtkTreeIter& iter, int pos, const OUString* pId, const OUString& rText, const OUString* pIconName, const VirtualDevice* pDevice)
{
if (!pIconName && !pDevice)