weld sidebar "too-narrow" CloseIndicator
Change-Id: Ifda6f56ba51d46bd35065c2230f39e837b037096
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/110991
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/include/sfx2/sidebar/Theme.hxx b/include/sfx2/sidebar/Theme.hxx
index c59d712..ebacb43 100644
--- a/include/sfx2/sidebar/Theme.hxx
+++ b/include/sfx2/sidebar/Theme.hxx
@@ -51,11 +51,9 @@ public:
enum ThemeItem
{
Begin_,
Pre_Image_ = Begin_,
Pre_Color_ = Begin_,
AnyItem_ = Pre_Image_,
Image_CloseIndicator,
AnyItem_ = Pre_Color_,
Image_Color_,
@@ -92,7 +90,6 @@ public:
End_=Post_Bool_
};
static Image GetImage (const ThemeItem eItem);
static Color GetColor (const ThemeItem eItem);
static sal_Int32 GetInteger (const ThemeItem eItem);
static bool GetBoolean (const ThemeItem eItem);
@@ -140,7 +137,6 @@ public:
private:
static Theme& GetCurrentTheme();
std::vector<Image> maImages;
std::vector<Color> maColors;
std::vector<sal_Int32> maIntegers;
std::vector<bool> maBooleans;
@@ -163,7 +159,6 @@ private:
enum PropertyType
{
PT_Image,
PT_Color,
PT_Integer,
PT_Boolean,
diff --git a/sfx2/inc/bitmaps.hlst b/sfx2/inc/bitmaps.hlst
index 7e97d12..de8d655 100644
--- a/sfx2/inc/bitmaps.hlst
+++ b/sfx2/inc/bitmaps.hlst
@@ -88,6 +88,7 @@
#define SFX_BMP_CLOSE_DOC "sfx2/res/closedoc.png"
#define SIDEBAR_CLOSE_INDICATOR "cmd/lc_decrementlevel.png"
#endif
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index b46de16..fdd52a4 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -36,7 +36,6 @@
#include <framework/ContextChangeEventMultiplexerTunnel.hxx>
#include <vcl/floatwin.hxx>
#include <vcl/fixed.hxx>
#include <vcl/uitest/logger.hxx>
#include <vcl/uitest/eventdescription.hxx>
#include <vcl/svapp.hxx>
@@ -61,6 +60,7 @@
#include <com/sun/star/util/URL.hpp>
#include <com/sun/star/rendering/XSpriteCanvas.hpp>
#include <bitmaps.hlst>
using namespace css;
using namespace css::uno;
@@ -240,6 +240,40 @@ void SidebarController::disposeDecks()
mpResourceManager->disposeDecks();
}
namespace
{
class CloseIndicator final : public InterimItemWindow
{
public:
CloseIndicator(vcl::Window* pParent)
: InterimItemWindow(pParent, "svt/ui/fixedimagecontrol.ui", "FixedImageControl")
, m_xWidget(m_xBuilder->weld_image("image"))
{
InitControlBase(m_xWidget.get());
m_xWidget->set_from_icon_name(SIDEBAR_CLOSE_INDICATOR);
SetSizePixel(get_preferred_size());
SetBackground(Theme::GetColor(Theme::Color_DeckBackground));
}
virtual ~CloseIndicator() override
{
disposeOnce();
}
virtual void dispose() override
{
m_xWidget.reset();
InterimItemWindow::dispose();
}
private:
std::unique_ptr<weld::Image> m_xWidget;
};
}
void SAL_CALL SidebarController::disposing()
{
SolarMutexGuard aSolarMutexGuard;
@@ -1438,15 +1472,8 @@ void SidebarController::UpdateCloseIndicator (const bool bCloseAfterDrag)
if (bCloseAfterDrag)
{
// Make sure that the indicator exists.
if ( ! mpCloseIndicator)
{
mpCloseIndicator.reset(VclPtr<FixedImage>::Create(mpParentWindow));
FixedImage* pFixedImage = static_cast<FixedImage*>(mpCloseIndicator.get());
const Image aImage (Theme::GetImage(Theme::Image_CloseIndicator));
pFixedImage->SetImage(aImage);
pFixedImage->SetSizePixel(aImage.GetSizePixel());
pFixedImage->SetBackground(Theme::GetColor(Theme::Color_DeckBackground));
}
if (!mpCloseIndicator)
mpCloseIndicator.reset(VclPtr<CloseIndicator>::Create(mpParentWindow));
// Place and show the indicator.
const Size aWindowSize (mpParentWindow->GetSizePixel());
diff --git a/sfx2/source/sidebar/Theme.cxx b/sfx2/source/sidebar/Theme.cxx
index 6ad2b89..dd187aa 100644
--- a/sfx2/source/sidebar/Theme.cxx
+++ b/sfx2/source/sidebar/Theme.cxx
@@ -37,7 +37,6 @@ Theme& Theme::GetCurrentTheme()
Theme::Theme()
: ThemeInterfaceBase(m_aMutex),
maImages(),
maColors(),
maIntegers(),
maBooleans(),
@@ -57,15 +56,6 @@ Theme::~Theme()
{
}
Image Theme::GetImage (const ThemeItem eItem)
{
const PropertyType eType (GetPropertyType(eItem));
OSL_ASSERT(eType==PT_Image);
const sal_Int32 nIndex (GetIndex(eItem, eType));
const Theme& rTheme (GetCurrentTheme());
return rTheme.maImages[nIndex];
}
Color Theme::GetColor (const ThemeItem eItem)
{
const PropertyType eType (GetPropertyType(eItem));
@@ -196,9 +186,6 @@ void Theme::UpdateTheme()
setPropertyValue(
maPropertyIdToNameMap[Color_VerticalBorder],
Any(sal_Int32(aBorderColor.GetRGBColor())));
setPropertyValue(
maPropertyIdToNameMap[Image_CloseIndicator],
Any(OUString("private:graphicrepository/cmd/lc_decrementlevel.png")));
}
catch(beans::UnknownPropertyException const &)
{
@@ -485,15 +472,10 @@ sal_Bool SAL_CALL Theme::hasPropertyByName (const OUString& rsPropertyName)
void Theme::SetupPropertyMaps()
{
maPropertyIdToNameMap.resize(Post_Bool_);
maImages.resize(Image_Color_ - Pre_Image_ - 1);
maColors.resize(Color_Int_ - Image_Color_ - 1);
maColors.resize(Color_Int_ - Pre_Color_ - 1);
maIntegers.resize(Int_Bool_ - Color_Int_ - 1);
maBooleans.resize(Post_Bool_ - Int_Bool_ - 1);
maPropertyNameToIdMap["Image_CloseIndicator"]=Image_CloseIndicator;
maPropertyIdToNameMap[Image_CloseIndicator]="Image_CloseIndicator";
maPropertyNameToIdMap["Color_DeckTitleFont"]=Color_DeckTitleFont;
maPropertyIdToNameMap[Color_DeckTitleFont]="Color_DeckTitleFont";
@@ -570,9 +552,6 @@ Theme::PropertyType Theme::GetPropertyType (const ThemeItem eItem)
{
switch(eItem)
{
case Image_CloseIndicator:
return PT_Image;
case Color_DeckTitleFont:
case Color_PanelTitleFont:
case Color_Highlight:
@@ -610,9 +589,6 @@ css::uno::Type const & Theme::GetCppuType (const PropertyType eType)
{
switch(eType)
{
case PT_Image:
return cppu::UnoType<OUString>::get();
case PT_Color:
return cppu::UnoType<sal_uInt32>::get();
@@ -632,10 +608,8 @@ sal_Int32 Theme::GetIndex (const ThemeItem eItem, const PropertyType eType)
{
switch(eType)
{
case PT_Image:
return eItem - Pre_Image_-1;
case PT_Color:
return eItem - Image_Color_-1;
return eItem - Pre_Color_-1;
case PT_Integer:
return eItem - Color_Int_-1;
case PT_Boolean:
@@ -733,15 +707,6 @@ void Theme::ProcessNewValue (
const sal_Int32 nIndex (GetIndex (eItem, eType));
switch (eType)
{
case PT_Image:
{
OUString sURL;
if (rValue >>= sURL)
{
maImages[nIndex] = Image(Tools::GetImage(sURL, nullptr));
}
break;
}
case PT_Color:
{
Color nColorValue;