summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/vcl/fixed.hxx2
-rw-r--r--vcl/source/control/fixed.cxx23
-rw-r--r--vcl/source/window/builder.cxx20
3 files changed, 34 insertions, 11 deletions
diff --git a/include/vcl/fixed.hxx b/include/vcl/fixed.hxx
index d8379e5be6ca..50f184ed99c2 100644
--- a/include/vcl/fixed.hxx
+++ b/include/vcl/fixed.hxx
@@ -201,6 +201,8 @@ public:
sal_Bool SetModeImage( const Image& rImage );
const Image& GetModeImage( ) const;
virtual bool set_property(const OString &rKey, const OString &rValue);
+
+ static Image loadThemeImage(const OString &rFileName);
};
#endif // _SV_FIXED_HXX
diff --git a/vcl/source/control/fixed.cxx b/vcl/source/control/fixed.cxx
index 267bdcc9eea7..70bfac2fb1b9 100644
--- a/vcl/source/control/fixed.cxx
+++ b/vcl/source/control/fixed.cxx
@@ -1213,19 +1213,24 @@ const Image& FixedImage::GetModeImage( ) const
return maImage;
}
+Image FixedImage::loadThemeImage(const OString &rFileName)
+{
+ static ImplImageTreeSingletonRef aImageTree;
+ OUString sCurrentSymbolsStyle =
+ Application::GetSettings().GetStyleSettings().GetCurrentSymbolsStyleName();
+ const OUString sFileName(OStringToOUString(rFileName, RTL_TEXTENCODING_UTF8));
+ BitmapEx aBitmap;
+ bool bSuccess = aImageTree->loadImage(sFileName, sCurrentSymbolsStyle, aBitmap, true);
+ SAL_WARN_IF(!bSuccess, "vcl.layout", "Unable to load " << sFileName
+ << " from theme " << sCurrentSymbolsStyle);
+ return Image(aBitmap);
+}
+
bool FixedImage::set_property(const OString &rKey, const OString &rValue)
{
if (rKey == "pixbuf")
{
- static ImplImageTreeSingletonRef aImageTree;
- OUString sCurrentSymbolsStyle =
- Application::GetSettings().GetStyleSettings().GetCurrentSymbolsStyleName();
- const OUString sFileName(OStringToOUString(rValue, RTL_TEXTENCODING_UTF8));
- BitmapEx aBitmap;
- bool bSuccess = aImageTree->loadImage(sFileName, sCurrentSymbolsStyle, aBitmap, true);
- SAL_WARN_IF(!bSuccess, "vcl.layout", "Unable to load " << sFileName
- << " from theme " << sCurrentSymbolsStyle);
- SetImage(Image(aBitmap));
+ SetImage(FixedImage::loadThemeImage(rValue));
}
else
return Control::set_property(rKey, rValue);
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 8641ed2fbcd9..21d45b6431cf 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -585,6 +585,18 @@ namespace
return bInconsistent;
}
+ OString extractIconName(VclBuilder::stringmap &rMap)
+ {
+ OString sIconName;
+ VclBuilder::stringmap::iterator aFind = rMap.find(OString("icon-name"));
+ if (aFind != rMap.end())
+ {
+ sIconName = aFind->second;
+ rMap.erase(aFind);
+ }
+ return sIconName;
+ }
+
OUString getStockText(const OString &rType)
{
if (rType == "gtk-ok")
@@ -1452,9 +1464,13 @@ Window *VclBuilder::makeObject(Window *pParent, const OString &name, const OStri
pToolBox->SetHelpId(nItemId, m_sHelpRoot + id);
}
- OUString sTooltip(OStringToOUString(extractTooltipText(rMap), RTL_TEXTENCODING_UTF8));
+ OString sTooltip(extractTooltipText(rMap));
if (!sTooltip.isEmpty())
- pToolBox->SetQuickHelpText(nItemId, sTooltip);
+ pToolBox->SetQuickHelpText(nItemId, OStringToOUString(sTooltip, RTL_TEXTENCODING_UTF8));
+
+ OString sIconName(extractIconName(rMap));
+ if (!sIconName.isEmpty())
+ pToolBox->SetItemImage(nItemId, FixedImage::loadThemeImage(sIconName));
return NULL; // no widget to be created
}