summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--extras/source/glade/libreoffice-catalog.xml.in7
-rw-r--r--include/sfx2/templatelocalview.hxx15
-rw-r--r--include/sfx2/thumbnailview.hxx5
-rw-r--r--sd/source/ui/dlg/animobjs.cxx2
-rw-r--r--sfx2/inc/recentdocsview.hxx23
-rw-r--r--sfx2/inc/templatedefaultview.hxx11
-rw-r--r--sfx2/source/control/recentdocsview.cxx83
-rw-r--r--sfx2/source/control/recentdocsviewitem.cxx2
-rw-r--r--sfx2/source/control/templatedefaultview.cxx40
-rw-r--r--sfx2/source/control/templatelocalview.cxx8
-rw-r--r--sfx2/source/control/thumbnailview.cxx9
-rw-r--r--sfx2/source/dialog/backingwindow.cxx472
-rw-r--r--sfx2/source/dialog/backingwindow.hxx64
-rw-r--r--sfx2/source/doc/templatedlg.cxx2
-rw-r--r--sfx2/uiconfig/ui/startcenter.ui101
-rwxr-xr-xsolenv/bin/native-code.py2
-rw-r--r--solenv/sanitizers/ui/sfx.suppr1
-rw-r--r--vcl/unx/gtk3/gtk3gtksalmenu.cxx1
18 files changed, 416 insertions, 432 deletions
diff --git a/extras/source/glade/libreoffice-catalog.xml.in b/extras/source/glade/libreoffice-catalog.xml.in
index 170c0a8967a6..2f685a47ae8e 100644
--- a/extras/source/glade/libreoffice-catalog.xml.in
+++ b/extras/source/glade/libreoffice-catalog.xml.in
@@ -25,13 +25,6 @@
</properties>
</glade-widget-class>
- <glade-widget-class title="Recent Documents View" name="sfxlo-RecentDocsView"
- generic-name="Icon View" parent="GtkIconView"
- icon-name="widget-gtk-iconview"/>
- <glade-widget-class title="Template Thumbnail View" name="sfxlo-TemplateDefaultView"
- generic-name="Template Icon View" parent="GtkIconView"
- icon-name="widget-gtk-iconview"/>
-
<glade-widget-class title="Notebook switching tabs depending on context" name="sfxlo-NotebookbarTabControl"
generic-name="NotebookbarTabControl" parent="GtkNotebook"
icon-name="widget-gtk-notebook"/>
diff --git a/include/sfx2/templatelocalview.hxx b/include/sfx2/templatelocalview.hxx
index 6540d091f230..997a67823a44 100644
--- a/include/sfx2/templatelocalview.hxx
+++ b/include/sfx2/templatelocalview.hxx
@@ -105,8 +105,6 @@ public:
void setEditTemplateHdl(const Link<ThumbnailViewItem*,void> &rLink);
- void updateThumbnailDimensions(tools::Long itemMaxSize);
-
static BitmapEx scaleImg (const BitmapEx &rImg, tools::Long width, tools::Long height);
static BitmapEx getDefaultThumbnail( const OUString& rPath );
@@ -137,7 +135,7 @@ protected:
std::vector<TemplateItemProperties > maAllTemplates;
};
-class SfxTemplateLocalView final : public SfxThumbnailView
+class SfxTemplateLocalView : public SfxThumbnailView
{
typedef bool (*selection_cmp_fn)(const ThumbnailViewItem*,const ThumbnailViewItem*);
@@ -154,9 +152,9 @@ public:
// Fill view with template folders thumbnails
void Populate ();
- void reload ();
+ virtual void reload ();
- void showAllTemplates ();
+ virtual void showAllTemplates ();
void showRegion (TemplateContainerItem const *pItem);
@@ -220,6 +218,8 @@ public:
void setDefaultTemplateHdl(const Link<ThumbnailViewItem*,void> &rLink);
+ void updateThumbnailDimensions(tools::Long itemMaxSize);
+
void RemoveDefaultTemplateIcon( const OUString& rPath);
static BitmapEx scaleImg (const BitmapEx &rImg, tools::Long width, tools::Long height);
@@ -230,13 +230,16 @@ public:
static bool IsDefaultTemplate(const OUString& rPath);
-private:
+protected:
virtual void OnItemDblClicked(ThumbnailViewItem *pItem) override;
sal_uInt16 mnCurRegionId;
TemplateViewItem *maSelectedItem;
+ long mnThumbnailWidth;
+ long mnThumbnailHeight;
+
Point maPosition; //store the point of click event
Link<void*,void> maOpenRegionHdl;
diff --git a/include/sfx2/thumbnailview.hxx b/include/sfx2/thumbnailview.hxx
index bd4a815b47ca..767f4d6375aa 100644
--- a/include/sfx2/thumbnailview.hxx
+++ b/include/sfx2/thumbnailview.hxx
@@ -329,7 +329,7 @@ public:
void RemoveItem(sal_uInt16 nItemId);
- void Clear();
+ virtual void Clear();
// Change current thumbnail item list with new one (invalidates all pointers to a thumbnail item)
void updateItems(std::vector<std::unique_ptr<ThumbnailViewItem>> items);
@@ -413,6 +413,9 @@ protected:
virtual void OnItemDblClicked (ThumbnailViewItem *pItem);
+ // Set Item colors from the SfxThumbnailView colors
+ void UpdateColors();
+
protected:
friend class SfxThumbnailViewAcc;
diff --git a/sd/source/ui/dlg/animobjs.cxx b/sd/source/ui/dlg/animobjs.cxx
index 830149e62a0a..4f2cf6d8dce4 100644
--- a/sd/source/ui/dlg/animobjs.cxx
+++ b/sd/source/ui/dlg/animobjs.cxx
@@ -386,7 +386,7 @@ IMPL_LINK_NOARG(AnimationWindow, ClickRbtHdl, weld::Button&, void)
IMPL_LINK(AnimationWindow, ClickHelpHdl, weld::Button&, rButton, void)
{
if (Help* pHelp = Application::GetHelp())
- pHelp->Start(OStringToOUString(m_xContainer->get_help_id(), RTL_TEXTENCODING_UTF8), &rButton);
+ pHelp->Start(OUString::fromUtf8(m_xContainer->get_help_id()), &rButton);
}
IMPL_LINK( AnimationWindow, ClickGetObjectHdl, weld::Button&, rBtn, void )
diff --git a/sfx2/inc/recentdocsview.hxx b/sfx2/inc/recentdocsview.hxx
index 9067f3cef5a3..03fd7fda7c33 100644
--- a/sfx2/inc/recentdocsview.hxx
+++ b/sfx2/inc/recentdocsview.hxx
@@ -22,12 +22,14 @@ namespace com::sun::star::frame { class XDispatch; }
namespace sfx2
{
+class RecentDocsView;
+
struct LoadRecentFile
{
css::util::URL aTargetURL;
css::uno::Sequence< css::beans::PropertyValue > aArgSeq;
css::uno::Reference< css::frame::XDispatch > xDispatch;
- VclPtr< ThumbnailView > pView;
+ RecentDocsView* pView;
};
enum class ApplicationType
@@ -53,10 +55,11 @@ template<> struct typed_flags<sfx2::ApplicationType> : is_typed_flags<sfx2::Appl
namespace sfx2
{
-class RecentDocsView final : public ThumbnailView
+class RecentDocsView final : public SfxThumbnailView
{
public:
- RecentDocsView( vcl::Window* pParent );
+ RecentDocsView(std::unique_ptr<weld::ScrolledWindow> xWindow, std::unique_ptr<weld::Menu> xMenu);
+ virtual ~RecentDocsView() override;
void insertItem(const OUString &rURL, const OUString &rTitle, const BitmapEx &rThumbnail, sal_uInt16 nId);
@@ -70,12 +73,16 @@ public:
/// Update the information in the view.
virtual void Reload() override;
- DECL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, void*, void );
+ // launch load of recently used file
+ void PostLoadRecentUsedFile(LoadRecentFile* pLoadRecentFile);
+
+ // received on load of recently used file
+ void DispatchedLoadRecentUsedFile();
private:
- virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
+ virtual bool MouseButtonDown( const MouseEvent& rMEvt ) override;
- virtual void MouseButtonUp( const MouseEvent& rMEvt ) override;
+ virtual bool MouseButtonUp( const MouseEvent& rMEvt ) override;
virtual void OnItemDblClicked(ThumbnailViewItem *pItem) override;
@@ -85,6 +92,8 @@ private:
bool isAcceptedFile(const OUString &rURL) const;
+ DECL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, void*, void );
+
tools::Long mnItemMaxSize;
size_t mnLastMouseDownItem;
@@ -92,6 +101,8 @@ private:
BitmapEx maWelcomeImage;
OUString maWelcomeLine1;
OUString maWelcomeLine2;
+
+ sfx2::LoadRecentFile* mpLoadRecentFile;
};
} // namespace sfx2
diff --git a/sfx2/inc/templatedefaultview.hxx b/sfx2/inc/templatedefaultview.hxx
index 8c50c428792b..c5cb975fe943 100644
--- a/sfx2/inc/templatedefaultview.hxx
+++ b/sfx2/inc/templatedefaultview.hxx
@@ -11,18 +11,17 @@
#include <sfx2/templatelocalview.hxx>
-class TemplateDefaultView final : public TemplateLocalView
+class TemplateDefaultView : public SfxTemplateLocalView
{
public:
- TemplateDefaultView(Window *pParent);
-
- virtual void reload() override;
+ TemplateDefaultView(std::unique_ptr<weld::ScrolledWindow> xWindow,
+ std::unique_ptr<weld::Menu> xMenu);
virtual void showAllTemplates () override;
- virtual void KeyInput( const KeyEvent& rKEvt ) override;
+ virtual bool KeyInput( const KeyEvent& rKEvt ) override;
- virtual void MouseButtonDown( const MouseEvent& rMEvt ) override;
+ virtual bool MouseButtonDown( const MouseEvent& rMEvt ) override;
void createContextMenu();
diff --git a/sfx2/source/control/recentdocsview.cxx b/sfx2/source/control/recentdocsview.cxx
index 063051642fa0..83b0cb2fed82 100644
--- a/sfx2/source/control/recentdocsview.cxx
+++ b/sfx2/source/control/recentdocsview.cxx
@@ -23,7 +23,6 @@
#include <sfx2/sfxresid.hxx>
#include <tools/diagnose_ex.h>
#include <unotools/historyoptions.hxx>
-#include <vcl/builderfactory.hxx>
#include <vcl/event.hxx>
#include <vcl/pngread.hxx>
#include <vcl/ptrstyle.hxx>
@@ -43,6 +42,8 @@
#include <officecfg/Office/Common.hxx>
+#include <map>
+
using namespace ::com::sun::star;
using namespace com::sun::star::uno;
using namespace com::sun::star::lang;
@@ -121,18 +122,18 @@ static std::map<ApplicationType,OUString> EncryptedBitmapForExtension =
constexpr tools::Long gnTextHeight = 30;
constexpr tools::Long gnItemPadding = 5;
-RecentDocsView::RecentDocsView( vcl::Window* pParent )
- : ThumbnailView(pParent)
+RecentDocsView::RecentDocsView(std::unique_ptr<weld::ScrolledWindow> xWindow, std::unique_ptr<weld::Menu> xMenu)
+ : SfxThumbnailView(std::move(xWindow), std::move(xMenu))
, mnFileTypes(ApplicationType::TYPE_NONE)
, mnLastMouseDownItem(THUMBNAILVIEW_ITEM_NOTFOUND)
, maWelcomeImage()
, maWelcomeLine1(SfxResId(STR_WELCOME_LINE1))
, maWelcomeLine2(SfxResId(STR_WELCOME_LINE2))
+ , mpLoadRecentFile(nullptr)
{
tools::Rectangle aScreen = Application::GetScreenPosSizePixel(Application::GetDisplayBuiltInScreen());
mnItemMaxSize = std::min(aScreen.GetWidth(),aScreen.GetHeight()) > 800 ? 256 : 192;
- SetStyle(GetStyle() | WB_VSCROLL);
setItemMaxTextLength( 30 );
setItemDimensions( mnItemMaxSize, mnItemMaxSize, gnTextHeight, gnItemPadding );
@@ -141,9 +142,18 @@ RecentDocsView::RecentDocsView( vcl::Window* pParent )
maHighlightColor = Color(officecfg::Office::Common::Help::StartCenter::StartCenterThumbnailsHighlightColor::get());
maHighlightTextColor = Color(officecfg::Office::Common::Help::StartCenter::StartCenterThumbnailsHighlightTextColor::get());
mfHighlightTransparence = 0.25;
+
+ UpdateColors();
}
-VCL_BUILDER_FACTORY(RecentDocsView)
+RecentDocsView::~RecentDocsView()
+{
+ if (mpLoadRecentFile)
+ {
+ mpLoadRecentFile->pView = nullptr;
+ mpLoadRecentFile = nullptr;
+ }
+}
bool RecentDocsView::typeMatchesExtension(ApplicationType type, const OUString &rExt)
{
@@ -288,25 +298,25 @@ void RecentDocsView::Reload()
Invalidate();
}
-void RecentDocsView::MouseButtonDown( const MouseEvent& rMEvt )
+bool RecentDocsView::MouseButtonDown( const MouseEvent& rMEvt )
{
if (rMEvt.IsLeft())
{
mnLastMouseDownItem = ImplGetItem(rMEvt.GetPosPixel());
- // ignore to avoid stuff done in ThumbnailView; we don't do selections etc.
- return;
+ // ignore to avoid stuff done in SfxThumbnailView; we don't do selections etc.
+ return true;
}
- ThumbnailView::MouseButtonDown(rMEvt);
+ return SfxThumbnailView::MouseButtonDown(rMEvt);
}
-void RecentDocsView::MouseButtonUp(const MouseEvent& rMEvt)
+bool RecentDocsView::MouseButtonUp(const MouseEvent& rMEvt)
{
if (rMEvt.IsLeft())
{
if( rMEvt.GetClicks() > 1 )
- return;
+ return true;
size_t nPos = ImplGetItem(rMEvt.GetPosPixel());
ThumbnailViewItem* pItem = ImplGetItem(nPos);
@@ -323,9 +333,9 @@ void RecentDocsView::MouseButtonUp(const MouseEvent& rMEvt)
mnLastMouseDownItem = THUMBNAILVIEW_ITEM_NOTFOUND;
if (pItem)
- return;
+ return true;
}
- ThumbnailView::MouseButtonUp(rMEvt);
+ return SfxThumbnailView::MouseButtonUp(rMEvt);
}
void RecentDocsView::OnItemDblClicked(ThumbnailViewItem *pItem)
@@ -337,19 +347,7 @@ void RecentDocsView::OnItemDblClicked(ThumbnailViewItem *pItem)
void RecentDocsView::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle &aRect)
{
- // Set preferred width
- if (mFilteredItemList.empty())
- {
- rRenderContext.Push(PushFlags::FONT);
- SetMessageFont(rRenderContext);
- set_width_request(std::max(rRenderContext.GetTextWidth(maWelcomeLine1),
- rRenderContext.GetTextWidth(maWelcomeLine2)));
- rRenderContext.Pop();
- }
- else
- {
- set_width_request(gnTextHeight + mnItemMaxSize + 2 * gnItemPadding);
- }
+ SfxThumbnailView::Paint(rRenderContext, aRect);
if (mItemList.empty())
{
@@ -362,12 +360,12 @@ void RecentDocsView::Paint(vcl::RenderContext& rRenderContext, const tools::Rect
// No recent files to be shown yet. Show a welcome screen.
rRenderContext.Push(PushFlags::FONT | PushFlags::TEXTCOLOR);
SetMessageFont(rRenderContext);
- SetTextColor(maTextColor);
+ rRenderContext.SetTextColor(maTextColor);
tools::Long nTextHeight = rRenderContext.GetTextHeight();
const Size& rImgSize = maWelcomeImage.GetSizePixel();
- const Size& rSize = GetSizePixel();
+ const Size& rSize = GetOutputSizePixel();
const int nX = (rSize.Width() - rImgSize.Width())/2;
int nY = (rSize.Height() - 3 * nTextHeight - rImgSize.Height())/2;
@@ -384,28 +382,36 @@ void RecentDocsView::Paint(vcl::RenderContext& rRenderContext, const tools::Rect
rRenderContext.Pop();
}
- else
- {
- ThumbnailView::Paint(rRenderContext, aRect);
- }
}
void RecentDocsView::LoseFocus()
{
deselectItems();
- ThumbnailView::LoseFocus();
+ SfxThumbnailView::LoseFocus();
}
void RecentDocsView::Clear()
{
Invalidate();
- ThumbnailView::Clear();
+ SfxThumbnailView::Clear();
+}
+
+void RecentDocsView::PostLoadRecentUsedFile(LoadRecentFile* pLoadRecentFile)
+{
+ assert(!mpLoadRecentFile);
+ mpLoadRecentFile = pLoadRecentFile;
+ Application::PostUserEvent(LINK(nullptr, RecentDocsView, ExecuteHdl_Impl), pLoadRecentFile);
+}
+
+void RecentDocsView::DispatchedLoadRecentUsedFile()
+{
+ mpLoadRecentFile = nullptr;
}
IMPL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, void*, p, void )
{
- LoadRecentFile* pLoadRecentFile = static_cast< LoadRecentFile*>(p);
+ LoadRecentFile* pLoadRecentFile = static_cast<LoadRecentFile*>(p);
try
{
// Asynchronous execution as this can lead to our own destruction!
@@ -417,8 +423,11 @@ IMPL_STATIC_LINK( RecentDocsView, ExecuteHdl_Impl, void*, p, void )
{
}
- if ( !pLoadRecentFile->pView->IsDisposed() )
- pLoadRecentFile->pView->SetPointer( PointerStyle::Arrow );
+ if (pLoadRecentFile->pView)
+ {
+ pLoadRecentFile->pView->DispatchedLoadRecentUsedFile();
+ pLoadRecentFile->pView->SetPointer(PointerStyle::Arrow);
+ }
delete pLoadRecentFile;
}
diff --git a/sfx2/source/control/recentdocsviewitem.cxx b/sfx2/source/control/recentdocsviewitem.cxx
index e7676f1ac74b..8a047b20ee8d 100644
--- a/sfx2/source/control/recentdocsviewitem.cxx
+++ b/sfx2/source/control/recentdocsviewitem.cxx
@@ -211,7 +211,7 @@ void RecentDocsViewItem::OpenDocument()
pLoadRecentFile->aArgSeq = aArgsList;
pLoadRecentFile->pView = &mrParentView;
- Application::PostUserEvent(LINK(nullptr, sfx2::RecentDocsView, ExecuteHdl_Impl), pLoadRecentFile, true);
+ mrParentView.PostLoadRecentUsedFile(pLoadRecentFile);
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sfx2/source/control/templatedefaultview.cxx b/sfx2/source/control/templatedefaultview.cxx
index 5b4a4ccd429a..6c4fd3d241eb 100644
--- a/sfx2/source/control/templatedefaultview.cxx
+++ b/sfx2/source/control/templatedefaultview.cxx
@@ -11,28 +11,23 @@
#include <sfx2/thumbnailview.hxx>
#include <templateviewitem.hxx>
#include <sfx2/sfxresid.hxx>
-#include <vcl/builderfactory.hxx>
#include <vcl/event.hxx>
#include <vcl/svapp.hxx>
#include <sfx2/strings.hrc>
-#define MNI_OPEN 1
-#define MNI_EDIT 2
-
#include <officecfg/Office/Common.hxx>
-VCL_BUILDER_FACTORY(TemplateDefaultView)
-
constexpr int gnItemPadding(5); //TODO:: Change padding to 10. It looks really crowded and occupied.
constexpr tools::Long gnTextHeight = 30;
-TemplateDefaultView::TemplateDefaultView( Window* pParent)
- : TemplateLocalView(pParent)
+TemplateDefaultView::TemplateDefaultView(std::unique_ptr<weld::ScrolledWindow> xWindow,
+ std::unique_ptr<weld::Menu> xMenu)
+ : SfxTemplateLocalView(std::move(xWindow), std::move(xMenu))
{
tools::Rectangle aScreen = Application::GetScreenPosSizePixel(Application::GetDisplayBuiltInScreen());
mnItemMaxSize = std::min(aScreen.GetWidth(),aScreen.GetHeight()) > 800 ? 256 : 192;
- ThumbnailView::setItemDimensions( mnItemMaxSize, mnItemMaxSize, gnTextHeight, gnItemPadding );
+ SfxThumbnailView::setItemDimensions( mnItemMaxSize, mnItemMaxSize, gnTextHeight, gnItemPadding );
updateThumbnailDimensions(mnItemMaxSize);
// startcenter specific settings
@@ -41,13 +36,8 @@ TemplateDefaultView::TemplateDefaultView( Window* pParent)
maHighlightColor = Color(officecfg::Office::Common::Help::StartCenter::StartCenterThumbnailsHighlightColor::get());
maHighlightTextColor = Color(officecfg::Office::Common::Help::StartCenter::StartCenterThumbnailsHighlightTextColor::get());
mfHighlightTransparence = 0.25;
-}
-void TemplateDefaultView::reload()
-{
- TemplateLocalView::reload();
- // Set preferred width
- set_width_request(gnTextHeight + mnItemMaxSize + 2*gnItemPadding);
+ UpdateColors();
}
void TemplateDefaultView::showAllTemplates()
@@ -57,12 +47,12 @@ void TemplateDefaultView::showAllTemplates()
insertItems(maAllTemplates, false);
}
-void TemplateDefaultView::KeyInput( const KeyEvent& rKEvt )
+bool TemplateDefaultView::KeyInput( const KeyEvent& rKEvt )
{
- ThumbnailView::KeyInput(rKEvt);
+ return SfxThumbnailView::KeyInput(rKEvt);
}
-void TemplateDefaultView::MouseButtonDown( const MouseEvent& rMEvt )
+bool TemplateDefaultView::MouseButtonDown( const MouseEvent& rMEvt )
{
if( rMEvt.IsLeft() && rMEvt.GetClicks() == 1 )
{
@@ -71,21 +61,21 @@ void TemplateDefaultView::MouseButtonDown( const MouseEvent& rMEvt )
TemplateViewItem* pViewItem = dynamic_cast<TemplateViewItem*>(pItem);
if(pViewItem)
maOpenTemplateHdl.Call(pViewItem);
- return;
+ return true;
}
- TemplateLocalView::MouseButtonDown(rMEvt);
+ return SfxTemplateLocalView::MouseButtonDown(rMEvt);
}
void TemplateDefaultView::createContextMenu()
{
- ScopedVclPtrInstance<PopupMenu> pItemMenu;
- pItemMenu->InsertItem(MNI_OPEN,SfxResId(STR_OPEN));
- pItemMenu->InsertItem(MNI_EDIT,SfxResId(STR_EDIT_TEMPLATE));
+ mxContextMenu->clear();
+ mxContextMenu->append("open",SfxResId(STR_OPEN));
+ mxContextMenu->append("edit",SfxResId(STR_EDIT_TEMPLATE));
deselectItems();
maSelectedItem->setSelection(true);
- pItemMenu->SetSelectHdl(LINK(this, TemplateLocalView, ContextMenuSelectHdl));
- pItemMenu->Execute(this, tools::Rectangle(maPosition,Size(1,1)), PopupMenuFlags::ExecuteDown);
+ maItemStateHdl.Call(maSelectedItem);
+ ContextMenuSelectHdl(mxContextMenu->popup_at_rect(GetDrawingArea(), tools::Rectangle(maPosition, Size(1,1))));
Invalidate();
}
diff --git a/sfx2/source/control/templatelocalview.cxx b/sfx2/source/control/templatelocalview.cxx
index c043102e73ae..1657a3bae43c 100644
--- a/sfx2/source/control/templatelocalview.cxx
+++ b/sfx2/source/control/templatelocalview.cxx
@@ -289,7 +289,7 @@ void TemplateLocalView::insertItems(const std::vector<TemplateItemProperties> &r
updateItems(std::move(aItems));
}
-void TemplateLocalView::updateThumbnailDimensions(tools::Long itemMaxSize)
+void SfxTemplateLocalView::updateThumbnailDimensions(tools::Long itemMaxSize)
{
mnThumbnailWidth = itemMaxSize;
mnThumbnailHeight = itemMaxSize;
@@ -471,6 +471,8 @@ SfxTemplateLocalView::SfxTemplateLocalView(std::unique_ptr<weld::ScrolledWindow>
: SfxThumbnailView(std::move(xWindow), std::move(xMenu))
, mnCurRegionId(0)
, maSelectedItem(nullptr)
+ , mnThumbnailWidth(TEMPLATE_THUMBNAIL_MAX_WIDTH)
+ , mnThumbnailHeight(TEMPLATE_THUMBNAIL_MAX_HEIGHT)
, maPosition(0,0)
, mpDocTemplates(new SfxDocumentTemplates)
{
@@ -509,8 +511,8 @@ void SfxTemplateLocalView::Populate()
aProperties.aPath = aURL;
aProperties.aRegionName = aRegionName;
aProperties.aThumbnail = TemplateLocalView::fetchThumbnail(aURL,
- TEMPLATE_THUMBNAIL_MAX_WIDTH,
- TEMPLATE_THUMBNAIL_MAX_HEIGHT);
+ mnThumbnailWidth,
+ mnThumbnailHeight);
pItem->maTemplates.push_back(aProperties);
maAllTemplates.push_back(aProperties);
diff --git a/sfx2/source/control/thumbnailview.cxx b/sfx2/source/control/thumbnailview.cxx
index b0827d4922cc..de2415c8640e 100644
--- a/sfx2/source/control/thumbnailview.cxx
+++ b/sfx2/source/control/thumbnailview.cxx
@@ -1327,6 +1327,13 @@ void SfxThumbnailView::ImplInit()
mpStartSelRange = mFilteredItemList.end();
+ UpdateColors();
+
+ mpItemAttrs->nMaxTextLength = 0;
+}
+
+void SfxThumbnailView::UpdateColors()
+{
mpItemAttrs->aFillColor = maFillColor.getBColor();
mpItemAttrs->aTextColor = maTextColor.getBColor();
mpItemAttrs->aHighlightColor = maHighlightColor.getBColor();
@@ -1334,8 +1341,6 @@ void SfxThumbnailView::ImplInit()
mpItemAttrs->aSelectHighlightColor = maSelectHighlightColor.getBColor();
mpItemAttrs->aSelectHighlightTextColor = maSelectHighlightTextColor.getBColor();
mpItemAttrs->fHighlightTransparence = mfHighlightTransparence;
-
- mpItemAttrs->nMaxTextLength = 0;
}
void SfxThumbnailView::ImplDeleteItems()
diff --git a/sfx2/source/dialog/backingwindow.cxx b/sfx2/source/dialog/backingwindow.cxx
index a1a48e253e70..44f53cfd8801 100644
--- a/sfx2/source/dialog/backingwindow.cxx
+++ b/sfx2/source/dialog/backingwindow.cxx
@@ -20,11 +20,12 @@
#include "backingwindow.hxx"
#include <vcl/accel.hxx>
+#include <vcl/event.hxx>
+#include <vcl/help.hxx>
#include <vcl/settings.hxx>
#include <vcl/svapp.hxx>
#include <vcl/syswin.hxx>
#include <vcl/virdev.hxx>
-#include <vcl/fixed.hxx>
#include <unotools/historyoptions.hxx>
#include <unotools/moduleoptions.hxx>
@@ -33,8 +34,6 @@
#include <svtools/langhelp.hxx>
#include <templateviewitem.hxx>
-#include <vcl/menubtn.hxx>
-
#include <comphelper/processfactory.hxx>
#include <comphelper/propertysequence.hxx>
@@ -65,60 +64,43 @@ const char SERVICENAME_CFGREADACCESS[] = "com.sun.star.configuration.Configurati
// increase size of the text in the buttons on the left fMultiplier-times
float const fMultiplier = 1.4f;
-BackingWindow::BackingWindow( vcl::Window* i_pParent ) :
- Window( i_pParent ),
- mbLocalViewInitialized(false),
- mbInitControls( false )
+BackingWindow::BackingWindow(vcl::Window* i_pParent)
+ : InterimItemWindow(i_pParent, "sfx/ui/startcenter.ui", "StartCenter", false)
+ , mxOpenButton(m_xBuilder->weld_button("open_all"))
+ , mxRecentButton(m_xBuilder->weld_menu_toggle_button("open_recent"))
+ , mxRemoteButton(m_xBuilder->weld_button("open_remote"))
+ , mxTemplateButton(m_xBuilder->weld_menu_toggle_button("templates_all"))
+ , mxCreateLabel(m_xBuilder->weld_label("create_label"))
+ , mxAltHelpLabel(m_xBuilder->weld_label("althelplabel"))
+ , mxWriterAllButton(m_xBuilder->weld_button("writer_all"))
+ , mxCalcAllButton(m_xBuilder->weld_button("calc_all"))
+ , mxImpressAllButton(m_xBuilder->weld_button("impress_all"))
+ , mxDrawAllButton(m_xBuilder->weld_button("draw_all"))
+ , mxDBAllButton(m_xBuilder->weld_button("database_all"))
+ , mxMathAllButton(m_xBuilder->weld_button("math_all"))
+ , mxHelpButton(m_xBuilder->weld_button("help"))
+ , mxExtensionsButton(m_xBuilder->weld_button("extensions"))
+ , mxAllButtonsBox(m_xBuilder->weld_container("all_buttons_box"))
+ , mxButtonsBox(m_xBuilder->weld_container("buttons_box"))
+ , mxSmallButtonsBox(m_xBuilder->weld_container("small_buttons_box"))
+ , mxAllRecentThumbnails(new sfx2::RecentDocsView(m_xBuilder->weld_scrolled_window("scrollrecent", true),
+ m_xBuilder->weld_menu("recentmenu")))
+ , mxAllRecentThumbnailsWin(new weld::CustomWeld(*m_xBuilder, "all_recent", *mxAllRecentThumbnails))
+ , mxLocalView(new TemplateDefaultView(m_xBuilder->weld_scrolled_window("scrolllocal", true),
+ m_xBuilder->weld_menu("localmenu")))
+ , mxLocalViewWin(new weld::CustomWeld(*m_xBuilder, "local_view", *mxLocalView))
+ , mbLocalViewInitialized(false)
+ , mbInitControls(false)
{
- m_pUIBuilder.reset(new VclBuilder(this, AllSettings::GetUIRootDir(), "sfx/ui/startcenter.ui", "StartCenter" ));
-
- get(mpOpenButton, "open_all");
- get(mpRemoteButton, "open_remote");
- get(mpRecentButton, "open_recent");
- get(mpTemplateButton, "templates_all");
-
- get(mpCreateLabel, "create_label");
-
- get(mpWriterAllButton, "writer_all");
- get(mpCalcAllButton, "calc_all");
- get(mpImpressAllButton, "impress_all");
- get(mpDrawAllButton, "draw_all");
- get(mpDBAllButton, "database_all");
- get(mpMathAllButton, "math_all");
+ // init background
+ SetPaintTransparent(false);
+ SetBackground(svtools::ColorConfig().GetColorValue(::svtools::APPBACKGROUND).nColor);
- get(mpHelpButton, "help");
//set an alternative help label that doesn't hotkey the H of the Help menu
- mpHelpButton->SetText(get<Window>("althelplabel")->GetText());
- get(mpExtensionsButton, "extensions");
-
- //Containers are invisible to cursor traversal
- //So on pressing "right" when in Help the
- //extension button is considered as a candidate
-
- //But the containers are not invisible to the PushButton ctor which checks
- //if the preceding window of its parent is a button and if it then
- //defaults to grouping with it and if it is not a button defaults to
- //setting itself as the start of a new group.
-
- //So here take the second button and set it as explicitly not the start
- //of a group, i.e. allow it to be grouped with the preceding
- //PushButton so when seen as a candidate by cursor travelling
- //it will be accepted as a continuation of the group.
- WinBits nBits = mpExtensionsButton->GetStyle();
- nBits &= ~WB_GROUP;
- nBits |= WB_NOGROUP;
- mpExtensionsButton->SetStyle(nBits);
- assert(mpHelpButton->GetStyle() & WB_GROUP);
- assert(!(mpExtensionsButton->GetStyle() & WB_GROUP));
-
- get(mpAllButtonsBox, "all_buttons_box");
- get(mpButtonsBox, "buttons_box");
- get(mpSmallButtonsBox, "small_buttons_box");
-
- get(mpAllRecentThumbnails, "all_recent");
- get(mpLocalView, "local_view");
-
- maDndWindows.emplace_back(mpAllRecentThumbnails);
+ mxHelpButton->set_label(mxAltHelpLabel->get_label());
+ mxHelpButton->connect_clicked(LINK(this, BackingWindow, ClickHelpHdl));
+
+ mxDropTarget = mxAllRecentThumbnails->GetDropTarget();
try
{
@@ -129,20 +111,19 @@ BackingWindow::BackingWindow( vcl::Window* i_pParent ) :
TOOLS_WARN_EXCEPTION( "fwk", "BackingWindow" );
}
- // fdo#34392: we do the layout dynamically, the layout depends on the font,
- // so we should handle data changed events (font changing) of the last child
- // control, at this point all the controls have updated settings (i.e. font).
-
- EnableChildTransparentMode();
-
SetStyle( GetStyle() | WB_DIALOGCONTROL );
// get dispatch provider
Reference<XDesktop2> xDesktop = Desktop::create( comphelper::getProcessComponentContext() );
mxDesktopDispatchProvider = xDesktop;
- // init background
- SetBackground();
+ mxOpenButton->grab_focus();
+}
+
+IMPL_LINK(BackingWindow, ClickHelpHdl, weld::Button&, rButton, void)
+{
+ if (Help* pHelp = Application::GetHelp())
+ pHelp->Start(OUString::fromUtf8(m_xContainer->get_help_id()), &rButton);
}
BackingWindow::~BackingWindow()
@@ -155,39 +136,36 @@ void BackingWindow::dispose()
// deregister drag&drop helper
if (mxDropTargetListener.is())
{
- for (auto const & pDndWin : maDndWindows)
+ if (mxDropTarget.is())
{
- css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget =
- pDndWin->GetDropTarget();
- if (xDropTarget.is())
- {
- xDropTarget->removeDropTargetListener(mxDropTargetListener);
- xDropTarget->setActive(false);
- }
+ mxDropTarget->removeDropTargetListener(mxDropTargetListener);
+ mxDropTarget->setActive(false);
}
mxDropTargetListener.clear();
}
- disposeBuilder();
- maDndWindows.clear();
- mpOpenButton.clear();
- mpRemoteButton.clear();
- mpRecentButton.clear();
- mpTemplateButton.clear();
- mpCreateLabel.clear();
- mpWriterAllButton.clear();
- mpCalcAllButton.clear();
- mpImpressAllButton.clear();
- mpDrawAllButton.clear();
- mpDBAllButton.clear();
- mpMathAllButton.clear();
- mpHelpButton.clear();
- mpExtensionsButton.clear();
- mpAllButtonsBox.clear();
- mpButtonsBox.clear();
- mpSmallButtonsBox.clear();
- mpAllRecentThumbnails.clear();
- mpLocalView.clear();
- vcl::Window::dispose();
+ mxDropTarget.clear();
+ mxOpenButton.reset();
+ mxRemoteButton.reset();
+ mxRecentButton.reset();
+ mxTemplateButton.reset();
+ mxCreateLabel.reset();
+ mxAltHelpLabel.reset();
+ mxWriterAllButton.reset();
+ mxCalcAllButton.reset();
+ mxImpressAllButton.reset();
+ mxDrawAllButton.reset();
+ mxDBAllButton.reset();
+ mxMathAllButton.reset();
+ mxHelpButton.reset();
+ mxExtensionsButton.reset();
+ mxAllButtonsBox.reset();
+ mxButtonsBox.reset();
+ mxSmallButtonsBox.reset();
+ mxAllRecentThumbnailsWin.reset();
+ mxAllRecentThumbnails.reset();
+ mxLocalViewWin.reset();
+ mxLocalView.reset();
+ InterimItemWindow::dispose();
}
void BackingWindow::initControls()
@@ -201,77 +179,73 @@ void BackingWindow::initControls()
SvtModuleOptions aModuleOptions;
if (aModuleOptions.IsModuleInstalled(SvtModuleOptions::EModule::WRITER))
- mpAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_WRITER;
+ mxAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_WRITER;
if (aModuleOptions.IsModuleInstalled(SvtModuleOptions::EModule::CALC))
- mpAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_CALC;
+ mxAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_CALC;
if (aModuleOptions.IsModuleInstalled(SvtModuleOptions::EModule::IMPRESS))
- mpAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_IMPRESS;
+ mxAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_IMPRESS;
if (aModuleOptions.IsModuleInstalled(SvtModuleOptions::EModule::DRAW))
- mpAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_DRAW;
+ mxAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_DRAW;
if (aModuleOptions.IsModuleInstalled(SvtModuleOptions::EModule::DATABASE))
- mpAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_DATABASE;
+ mxAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_DATABASE;
if (aModuleOptions.IsModuleInstalled(SvtModuleOptions::EModule::MATH))
- mpAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_MATH;
+ mxAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_MATH;
- mpAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_OTHER;
- mpAllRecentThumbnails->Reload();
- mpAllRecentThumbnails->ShowTooltips( true );
- mpRecentButton->SetActive(true);
+ mxAllRecentThumbnails->mnFileTypes |= sfx2::ApplicationType::TYPE_OTHER;
+ mxAllRecentThumbnails->Reload();
+ mxAllRecentThumbnails->ShowTooltips( true );
+ mxRecentButton->set_active(true);
//initialize Template view
- mpLocalView->SetStyle( mpLocalView->GetStyle() | WB_VSCROLL);
- mpLocalView->Hide();
+ mxLocalView->Hide();
- mpTemplateButton->SetDelayMenu(true);
- mpTemplateButton->SetDropDown(PushButtonDropdownStyle::SplitMenuButton);
- mpRecentButton->SetDelayMenu(true);
- mpRecentButton->SetDropDown(PushButtonDropdownStyle::SplitMenuButton);
//set handlers
- mpLocalView->setCreateContextMenuHdl(LINK(this, BackingWindow, CreateContextMenuHdl));
- mpLocalView->setOpenTemplateHdl(LINK(this, BackingWindow, OpenTemplateHdl));
- mpLocalView->setEditTemplateHdl(LINK(this, BackingWindow, EditTemplateHdl));
- mpLocalView->ShowTooltips( true );
-
- setupButton( mpOpenButton );
- setupButton( mpRemoteButton );
- setupButton( mpRecentButton );
- setupButton( mpTemplateButton );
- setupButton( mpWriterAllButton );
- setupButton( mpDrawAllButton );
- setupButton( mpCalcAllButton );
- setupButton( mpDBAllButton );
- setupButton( mpImpressAllButton );
- setupButton( mpMathAllButton );
+ mxLocalView->setCreateContextMenuHdl(LINK(this, BackingWindow, CreateContextMenuHdl));
+ mxLocalView->setOpenTemplateHdl(LINK(this, BackingWindow, OpenTemplateHdl));
+ mxLocalView->setEditTemplateHdl(LINK(this, BackingWindow, EditTemplateHdl));
+ mxLocalView->ShowTooltips( true );
+
+ setupButton(*mxOpenButton);
+ setupButton(*mxRemoteButton);
+ setupButton(*mxRecentButton);
+ setupButton(*mxTemplateButton);
+ setupButton(*mxWriterAllButton);
+ setupButton(*mxDrawAllButton);
+ setupButton(*mxCalcAllButton);
+ setupButton(*mxDBAllButton);
+ setupButton(*mxImpressAllButton);
+ setupButton(*mxMathAllButton);
checkInstalledModules();
- mpExtensionsButton->SetClickHdl(LINK(this, BackingWindow, ExtLinkClickHdl));
+ mxExtensionsButton->connect_clicked(LINK(this, BackingWindow, ExtLinkClickHdl));
- // setup nice colors
- vcl::Font aFont(mpCreateLabel->GetSettings().GetStyleSettings().GetLabelFont());
+ // setup larger font
+ vcl::Font aFont(mxCreateLabel->get_font());
aFont.SetFontSize(Size(0, aFont.GetFontSize().Height() * fMultiplier));
- mpCreateLabel->SetControlFont(aFont);
-
- Resize();
+ mxCreateLabel->set_font(aFont);
// compute the menubar height
sal_Int32 nMenuHeight = 0;
- SystemWindow* pSystemWindow = GetSystemWindow();
- if (pSystemWindow)
+ if (SystemWindow* pSystemWindow = GetSystemWindow())
{
MenuBar* pMenuBar = pSystemWindow->GetMenuBar();
if (pMenuBar)
nMenuHeight = pMenuBar->ImplGetWindow()->GetOutputSizePixel().Height();
}
- set_width_request(mpAllRecentThumbnails->get_width_request() + mpAllButtonsBox->GetOptimalSize().Width());
- set_height_request(nMenuHeight + mpAllButtonsBox->GetOptimalSize().Height());
+ // fdo#34392: we do the layout dynamically, the layout depends on the font,
+ // so we should handle data changed events (font changing) of the last child
+ // control, at this point all the controls have updated settings (i.e. font).
+ Size aPrefSize(mxAllButtonsBox->get_preferred_size());
+ set_width_request(aPrefSize.Width());
+ set_height_request(nMenuHeight + aPrefSize.Height());
}
void BackingWindow::initializeLocalView()
@@ -279,74 +253,41 @@ void BackingWindow::initializeLocalView()
if (!mbLocalViewInitialized)
{
mbLocalViewInitialized = true;
- mpLocalView->Populate();
- mpLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::NONE));
- mpLocalView->showAllTemplates();
+ mxLocalView->Populate();
+ mxLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::NONE));
+ mxLocalView->showAllTemplates();
}
}
-void BackingWindow::setupButton( PushButton* pButton )
+void BackingWindow::setupButton(weld::Button& rButton)
{
// the buttons should have a bit bigger font
- vcl::Font aFont(pButton->GetSettings().GetStyleSettings().GetPushButtonFont());
+ vcl::Font aFont(rButton.get_font());
aFont.SetFontSize(Size(0, aFont.GetFontSize().Height() * fMultiplier));
- pButton->SetControlFont(aFont);
- pButton->SetClickHdl( LINK( this, BackingWindow, ClickHdl ) );
+ rButton.set_font(aFont);
+ rButton.connect_clicked( LINK( this, BackingWindow, ClickHdl ) );
}
-void BackingWindow::setupButton( MenuToggleButton* pButton )
+void BackingWindow::setupButton(weld::MenuButton& rButton)
{
- vcl::Font aFont(pButton->GetSettings().GetStyleSettings().GetPushButtonFont());
+ vcl::Font aFont(rButton.get_font());
aFont.SetFontSize(Size(0, aFont.GetFontSize().Height() * fMultiplier));
- pButton->SetControlFont(aFont);
-
- PopupMenu* pMenu = pButton->GetPopupMenu();
- pMenu->SetMenuFlags(pMenu->GetMenuFlags() | MenuFlags::AlwaysShowDisabledEntries);
+ rButton.set_font(aFont);
- pButton->SetClickHdl(LINK(this, BackingWindow, ClickHdl));
- pButton->SetSelectHdl(LINK(this, BackingWindow, MenuSelectHdl));
+ rButton.connect_clicked(LINK(this, BackingWindow, ClickHdl));
+ rButton.connect_selected(LINK(this, BackingWindow, MenuSelectHdl));
}
void BackingWindow::checkInstalledModules()
{
SvtModuleOptions aModuleOpt;
- mpWriterAllButton->Enable( aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::WRITER ));
-
- mpCalcAllButton->Enable( aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::CALC ) );
-
- mpImpressAllButton->Enable( aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::IMPRESS ) );
-
- mpDrawAllButton->Enable( aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::DRAW ) );
-
- mpMathAllButton->Enable(aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::MATH ));
-
- mpDBAllButton->Enable(aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::DATABASE ));
-}
-
-void BackingWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
-{
- Resize();
-
- Wallpaper aBack(svtools::ColorConfig().GetColorValue(::svtools::APPBACKGROUND).nColor);
- vcl::Region aClip(tools::Rectangle(Point(0, 0), GetOutputSizePixel()));
-
- aClip.Exclude(maStartCentButtons);
-
- rRenderContext.Push(PushFlags::CLIPREGION);
- rRenderContext.IntersectClipRegion(aClip);
- rRenderContext.DrawWallpaper(tools::Rectangle(Point(0, 0), GetOutputSizePixel()), aBack);
- rRenderContext.Pop();
-
- ScopedVclPtrInstance<VirtualDevice> pVDev(rRenderContext);
- pVDev->EnableRTL(rRenderContext.IsRTLEnabled());
- pVDev->SetOutputSizePixel(maStartCentButtons.GetSize());
- Point aOffset(Point(0, 0) - maStartCentButtons.TopLeft());
- pVDev->DrawWallpaper(tools::Rectangle(aOffset, GetOutputSizePixel()), aBack);
-
- rRenderContext.DrawOutDev(maStartCentButtons.TopLeft(), maStartCentButtons.GetSize(),
- Point(0, 0), maStartCentButtons.GetSize(),
- *pVDev);
+ mxWriterAllButton->set_sensitive( aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::WRITER ));
+ mxCalcAllButton->set_sensitive( aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::CALC ) );
+ mxImpressAllButton->set_sensitive( aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::IMPRESS ) );
+ mxDrawAllButton->set_sensitive( aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::DRAW ) );
+ mxMathAllButton->set_sensitive(aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::MATH ));
+ mxDBAllButton->set_sensitive(aModuleOpt.IsModuleInstalled( SvtModuleOptions::EModule::DATABASE ));
}
bool BackingWindow::PreNotify(NotifyEvent& rNEvt)
@@ -356,42 +297,44 @@ bool BackingWindow::PreNotify(NotifyEvent& rNEvt)
const KeyEvent* pEvt = rNEvt.GetKeyEvent();
const vcl::KeyCode& rKeyCode(pEvt->GetKeyCode());
+ bool bThumbnailHasFocus = mxAllRecentThumbnails->HasFocus() || mxLocalView->HasFocus();
+
// Subwindows of BackingWindow: Sidebar and Thumbnail view
if( rKeyCode.GetCode() == KEY_F6 )
{
if( rKeyCode.IsShift() ) // Shift + F6
{
- if( mpAllRecentThumbnails->HasFocus() || mpLocalView->HasFocus())
+ if (bThumbnailHasFocus)
{
- mpOpenButton->GrabFocus();
+ mxOpenButton->grab_focus();
return true;
}
}
else if ( rKeyCode.IsMod1() ) // Ctrl + F6
{
- if(mpAllRecentThumbnails->IsVisible())
+ if(mxAllRecentThumbnails->IsVisible())
{
- mpAllRecentThumbnails->GrabFocus();
+ mxAllRecentThumbnails->GrabFocus();
return true;
}
- else if(mpLocalView->IsVisible())
+ else if(mxLocalView->IsVisible())
{
- mpLocalView->GrabFocus();
+ mxLocalView->GrabFocus();
return true;
}
}
else // F6
{
- if( mpAllButtonsBox->HasChildPathFocus() )
+ if (!bThumbnailHasFocus)
{
- if(mpAllRecentThumbnails->IsVisible())
+ if(mxAllRecentThumbnails->IsVisible())
{
- mpAllRecentThumbnails->GrabFocus();
+ mxAllRecentThumbnails->GrabFocus();
return true;
}
- else if(mpLocalView->IsVisible())
+ else if(mxLocalView->IsVisible())
{
- mpLocalView->GrabFocus();
+ mxLocalView->GrabFocus();
return true;
}
}
@@ -413,8 +356,7 @@ bool BackingWindow::PreNotify(NotifyEvent& rNEvt)
{
Accelerator::ToggleMnemonicsOnHierarchy(*rNEvt.GetCommandEvent(), this);
}
-
- return Window::PreNotify( rNEvt );
+ return InterimItemWindow::PreNotify( rNEvt );
}
void BackingWindow::GetFocus()
@@ -424,16 +366,19 @@ void BackingWindow::GetFocus()
{
if( nFlags & GetFocusFlags::Forward ) // F6
{
- mpOpenButton->GrabFocus();
+ mxOpenButton->grab_focus();
return;
}
else // Shift + F6 or Ctrl + F6
{
- mpAllRecentThumbnails->GrabFocus();
+ if(mxAllRecentThumbnails->IsVisible())
+ mxAllRecentThumbnails->GrabFocus();
+ else if(mxLocalView->IsVisible())
+ mxLocalView->GrabFocus();
return;
}
}
- Window::GetFocus();
+ InterimItemWindow::GetFocus();
}
void BackingWindow::setOwningFrame( const css::uno::Reference< css::frame::XFrame >& xFrame )
@@ -445,35 +390,18 @@ void BackingWindow::setOwningFrame( const css::uno::Reference< css::frame::XFram
// establish drag&drop mode
mxDropTargetListener.set(new OpenFileDropTargetListener(mxContext, mxFrame));
- for (auto const & pDndWin : maDndWindows)
+ if (mxDropTarget.is())
{
- css::uno::Reference< css::datatransfer::dnd::XDropTarget > xDropTarget =
- pDndWin->GetDropTarget();
- if (xDropTarget.is())
- {
- xDropTarget->addDropTargetListener(mxDropTargetListener);
- xDropTarget->setActive(true);
- }
+ mxDropTarget->addDropTargetListener(mxDropTargetListener);
+ mxDropTarget->setActive(true);
}
}
-void BackingWindow::Resize()
-{
- maStartCentButtons = tools::Rectangle( Point(0, 0), GetOutputSizePixel() );
-
- if (isLayoutEnabled(this))
- VclContainer::setLayoutAllocation(*GetWindow(GetWindowType::FirstChild),
- maStartCentButtons.TopLeft(), maStartCentButtons.GetSize());
-
- if (!IsInPaint())
- Invalidate();
-}
-
-IMPL_LINK(BackingWindow, ExtLinkClickHdl, Button*, pButton, void)
+IMPL_LINK(BackingWindow, ExtLinkClickHdl, weld::Button&, rButton, void)
{
OUString aNode;
- if (pButton == mpExtensionsButton)
+ if (&rButton == mxExtensionsButton.get())
aNode = "AddFeatureURL";
if (aNode.isEmpty())
@@ -509,22 +437,22 @@ IMPL_LINK(BackingWindow, ExtLinkClickHdl, Button*, pButton, void)
}
}
-IMPL_LINK( BackingWindow, ClickHdl, Button*, pButton, void )
+IMPL_LINK( BackingWindow, ClickHdl, weld::Button&, rButton, void )
{
// dispatch the appropriate URL and end the dialog
- if( pButton == mpWriterAllButton )
+ if( &rButton == mxWriterAllButton.get() )
dispatchURL( "private:factory/swriter" );
- else if( pButton == mpCalcAllButton )
+ else if( &rButton == mxCalcAllButton.get() )
dispatchURL( "private:factory/scalc" );
- else if( pButton == mpImpressAllButton )
+ else if( &rButton == mxImpressAllButton.get() )
dispatchURL( "private:factory/simpress?slot=6686" );
- else if( pButton == mpDrawAllButton )
+ else if( &rButton == mxDrawAllButton.get() )
dispatchURL( "private:factory/sdraw" );
- else if( pButton == mpDBAllButton )
+ else if( &rButton == mxDBAllButton.get() )
dispatchURL( "private:factory/sdatabase?Interactive" );
- else if( pButton == mpMathAllButton )
+ else if( &rButton == mxMathAllButton.get() )
dispatchURL( "private:factory/smath" );
- else if( pButton == mpOpenButton )
+ else if( &rButton == mxOpenButton.get() )
{
Reference< XDispatchProvider > xFrame( mxFrame, UNO_QUERY );
@@ -535,7 +463,7 @@ IMPL_LINK( BackingWindow, ClickHdl, Button*, pButton, void )
dispatchURL( ".uno:Open", OUString(), xFrame, aArgs );
}
- else if( pButton == mpRemoteButton )
+ else if( &rButton == mxRemoteButton.get() )
{
Reference< XDispatchProvider > xFrame( mxFrame, UNO_QUERY );
@@ -543,60 +471,56 @@ IMPL_LINK( BackingWindow, ClickHdl, Button*, pButton, void )
dispatchURL( ".uno:OpenRemote", OUString(), xFrame, aArgs );
}
- else if( pButton == mpRecentButton )
+ else if( &rButton == mxRecentButton.get() )
{
- mpLocalView->Hide();
- mpAllRecentThumbnails->Show();
- mpAllRecentThumbnails->GrabFocus();
- mpRecentButton->SetActive(true);
- mpTemplateButton->SetActive(false);
- mpTemplateButton->Invalidate();
+ mxLocalView->Hide();
+ mxAllRecentThumbnails->Show();
+ mxAllRecentThumbnails->GrabFocus();
+ mxRecentButton->set_active(true);
+ mxTemplateButton->set_active(false);
}
- else if( pButton == mpTemplateButton )
+ else if( &rButton == mxTemplateButton.get() )
{
- mpAllRecentThumbnails->Hide();
+ mxAllRecentThumbnails->Hide();
initializeLocalView();
- mpLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::NONE));
- mpLocalView->Show();
- mpLocalView->reload();
- mpLocalView->GrabFocus();
- mpRecentButton->SetActive(false);
- mpRecentButton->Invalidate();
- mpTemplateButton->SetActive(true);
+ mxLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::NONE));
+ mxLocalView->Show();
+ mxLocalView->reload();
+ mxLocalView->GrabFocus();
+ mxRecentButton->set_active(false);
+ mxTemplateButton->set_active(true);
}
}
-IMPL_LINK( BackingWindow, MenuSelectHdl, MenuButton*, pButton, void )
+IMPL_LINK (BackingWindow, MenuSelectHdl, const OString&, rId, void)
{
- if(pButton == mpRecentButton)
+ if (rId == "clear_all")
{
SvtHistoryOptions().Clear(ePICKLIST);
- mpAllRecentThumbnails->Reload();
+ mxAllRecentThumbnails->Reload();
return;
}
- else if(pButton == mpTemplateButton)
+ else if (!rId.isEmpty())
{
initializeLocalView();
- OString sId = pButton->GetCurItemIdent();
-
- if( sId == "filter_writer" )
+ if( rId == "filter_writer" )
{
- mpLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::WRITER));
+ mxLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::WRITER));
}
- else if( sId == "filter_calc" )
+ else if( rId == "filter_calc" )
{
- mpLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::CALC));
+ mxLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::CALC));
}
- else if( sId == "filter_impress" )
+ else if( rId == "filter_impress" )
{
- mpLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::IMPRESS));
+ mxLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::IMPRESS));
}
- else if( sId == "filter_draw" )
+ else if( rId == "filter_draw" )
{
- mpLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::DRAW));
+ mxLocalView->filterItems(ViewFilter_Application(FILTER_APPLICATION::DRAW));
}
- else if( sId == "manage" )
+ else if( rId == "manage" )
{
Reference< XDispatchProvider > xFrame( mxFrame, UNO_QUERY );
@@ -609,13 +533,12 @@ IMPL_LINK( BackingWindow, MenuSelectHdl, MenuButton*, pButton, void )
return;
}
- mpAllRecentThumbnails->Hide();
- mpLocalView->Show();
- mpLocalView->reload();
- mpLocalView->GrabFocus();
- mpRecentButton->SetActive(false);
- mpTemplateButton->SetActive(true);
- mpRecentButton->Invalidate();
+ mxAllRecentThumbnails->Hide();
+ mxLocalView->Show();
+ mxLocalView->reload();
+ mxLocalView->GrabFocus();
+ mxRecentButton->set_active(false);
+ mxTemplateButton->set_active(true);
}
}
@@ -624,7 +547,7 @@ IMPL_LINK(BackingWindow, CreateContextMenuHdl, ThumbnailViewItem*, pItem, void)
const TemplateViewItem *pViewItem = dynamic_cast<TemplateViewItem*>(pItem);
if (pViewItem)
- mpLocalView->createContextMenu();
+ mxLocalView->createContextMenu();
}
IMPL_LINK(BackingWindow, OpenTemplateHdl, ThumbnailViewItem*, pItem, void)
@@ -753,17 +676,8 @@ void BackingWindow::dispatchURL( const OUString& i_rURL,
}
}
-Size BackingWindow::GetOptimalSize() const
-{
- if (isLayoutEnabled(this))
- return VclContainer::getLayoutRequisition(*GetWindow(GetWindowType::FirstChild));
-
- return Window::GetOptimalSize();
-}
-
void BackingWindow::clearRecentFileList()
{
- mpAllRecentThumbnails->Clear();
- set_width_request(mpAllRecentThumbnails->get_width_request() + mpAllButtonsBox->GetOptimalSize().Width());
+ mxAllRecentThumbnails->Clear();
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab:*/
diff --git a/sfx2/source/dialog/backingwindow.hxx b/sfx2/source/dialog/backingwindow.hxx
index cc367f058c76..bdd1a786783c 100644
--- a/sfx2/source/dialog/backingwindow.hxx
+++ b/sfx2/source/dialog/backingwindow.hxx
@@ -22,11 +22,7 @@
#include <rtl/ustring.hxx>
-#include <vcl/builder.hxx>
-#include <vcl/button.hxx>
-#include <vcl/layout.hxx>
-
-#include <vcl/menubtn.hxx>
+#include <vcl/InterimItemWindow.hxx>
#include <recentdocsview.hxx>
#include <templatedefaultview.hxx>
@@ -40,7 +36,7 @@
#include <memory>
-class BackingWindow : public vcl::Window, public VclBuilderContainer
+class BackingWindow : public InterimItemWindow
{
css::uno::Reference<css::uno::XComponentContext> mxContext;
css::uno::Reference<css::frame::XDispatchProvider> mxDesktopDispatchProvider;
@@ -49,49 +45,53 @@ class BackingWindow : public vcl::Window, public VclBuilderContainer
/** helper for drag&drop. */
css::uno::Reference<css::datatransfer::dnd::XDropTargetListener> mxDropTargetListener;
- VclPtr<PushButton> mpOpenButton;
- VclPtr<MenuToggleButton> mpRecentButton;
- VclPtr<PushButton> mpRemoteButton;
- VclPtr<MenuToggleButton> mpTemplateButton;
+ std::unique_ptr<weld::Button> mxOpenButton;
+ std::unique_ptr<weld::MenuToggleButton> mxRecentButton;
+ std::unique_ptr<weld::Button> mxRemoteButton;
+ std::unique_ptr<weld::MenuToggleButton> mxTemplateButton;
- VclPtr<FixedText> mpCreateLabel;
+ std::unique_ptr<weld::Label> mxCreateLabel;
+ std::unique_ptr<weld::Label> mxAltHelpLabel;
- VclPtr<PushButton> mpWriterAllButton;
- VclPtr<PushButton> mpCalcAllButton;
- VclPtr<PushButton> mpImpressAllButton;
- VclPtr<PushButton> mpDrawAllButton;
- VclPtr<PushButton> mpDBAllButton;
- VclPtr<PushButton> mpMathAllButton;
+ std::unique_ptr<weld::Button> mxWriterAllButton;
+ std::unique_ptr<weld::Button> mxCalcAllButton;
+ std::unique_ptr<weld::Button> mxImpressAllButton;
+ std::unique_ptr<weld::Button> mxDrawAllButton;
+ std::unique_ptr<weld::Button> mxDBAllButton;
+ std::unique_ptr<weld::Button> mxMathAllButton;
- VclPtr<PushButton> mpHelpButton;
- VclPtr<PushButton> mpExtensionsButton;
+ std::unique_ptr<weld::Button> mxHelpButton;
+ std::unique_ptr<weld::Button> mxExtensionsButton;
- VclPtr<VclBox> mpAllButtonsBox;
- VclPtr<VclBox> mpButtonsBox;
- VclPtr<VclBox> mpSmallButtonsBox;
+ std::unique_ptr<weld::Container> mxAllButtonsBox;
+ std::unique_ptr<weld::Container> mxButtonsBox;
+ std::unique_ptr<weld::Container> mxSmallButtonsBox;
- VclPtr<sfx2::RecentDocsView> mpAllRecentThumbnails;
- VclPtr<TemplateDefaultView> mpLocalView;
+ std::unique_ptr<sfx2::RecentDocsView> mxAllRecentThumbnails;
+ std::unique_ptr<weld::CustomWeld> mxAllRecentThumbnailsWin;
+ std::unique_ptr<TemplateDefaultView> mxLocalView;
+ std::unique_ptr<weld::CustomWeld> mxLocalViewWin;
bool mbLocalViewInitialized;
- std::vector< VclPtr<vcl::Window> > maDndWindows;
+ css::uno::Reference<css::datatransfer::dnd::XDropTarget> mxDropTarget;
tools::Rectangle maStartCentButtons;
bool mbInitControls;
std::unique_ptr<svt::AcceleratorExecute> mpAccExec;
- void setupButton(PushButton* pButton);
- void setupButton(MenuToggleButton* pButton);
+ void setupButton(weld::Button& rButton);
+ void setupButton(weld::MenuButton& rButton);
void dispatchURL(const OUString& i_rURL,
const OUString& i_rTarget = OUString("_default"),
const css::uno::Reference<css::frame::XDispatchProvider >& i_xProv = css::uno::Reference<css::frame::XDispatchProvider>(),
const css::uno::Sequence<css::beans::PropertyValue >& = css::uno::Sequence<css::beans::PropertyValue>());
- DECL_LINK(ClickHdl, Button*, void);
- DECL_LINK(MenuSelectHdl, MenuButton*, void);
- DECL_LINK(ExtLinkClickHdl, Button*, void);
+ DECL_LINK(ClickHdl, weld::Button&, void);
+ DECL_LINK(ClickHelpHdl, weld::Button&, void);
+ DECL_LINK(MenuSelectHdl, const OString&, void);
+ DECL_LINK(ExtLinkClickHdl, weld::Button&, void);
DECL_LINK(CreateContextMenuHdl, ThumbnailViewItem*, void);
DECL_LINK(OpenTemplateHdl, ThumbnailViewItem*, void);
DECL_LINK(EditTemplateHdl, ThumbnailViewItem*, void);
@@ -107,13 +107,9 @@ public:
virtual ~BackingWindow() override;
virtual void dispose() override;
- virtual void Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle& rRect) override;
- virtual void Resize() override;
virtual bool PreNotify(NotifyEvent& rNEvt) override;
virtual void GetFocus() override;
- virtual Size GetOptimalSize() const override;
-
void setOwningFrame(const css::uno::Reference<css::frame::XFrame>& xFrame );
void clearRecentFileList();
diff --git a/sfx2/source/doc/templatedlg.cxx b/sfx2/source/doc/templatedlg.cxx
index df51462e36cd..14328af69ee3 100644
--- a/sfx2/source/doc/templatedlg.cxx
+++ b/sfx2/source/doc/templatedlg.cxx
@@ -482,8 +482,6 @@ IMPL_LINK(SfxTemplateManagerDlg, MenuSelectHdl, const OString&, rIdent, void)
void SfxTemplateManagerDlg::DefaultTemplateMenuSelectHdl(const OString& rIdent)
{
- fprintf(stderr, "DefaultTemplateMenuSelectHdl ident %s\n", rIdent.getStr());
-
OUString aServiceName = SfxObjectShell::GetServiceNameFromFactory(OUString::fromUtf8(rIdent));
OUString sPrevDefault = SfxObjectFactory::GetStandardTemplate( aServiceName );
diff --git a/sfx2/uiconfig/ui/startcenter.ui b/sfx2/uiconfig/ui/startcenter.ui
index 05f802c06a75..d19430601445 100644
--- a/sfx2/uiconfig/ui/startcenter.ui
+++ b/sfx2/uiconfig/ui/startcenter.ui
@@ -1,12 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generated with glade 3.18.3 -->
+<!-- Generated with glade 3.36.0 -->
<interface domain="sfx">
<requires lib="gtk+" version="3.18"/>
- <requires lib="LibreOffice" version="3.0"/>
<object class="GtkImage" id="calc_all_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">res/ods_32_8.png</property>
+ <property name="icon_name">res/ods_32_8.png</property>
</object>
<object class="GtkMenu" id="clearmenu">
<property name="visible">True</property>
@@ -22,12 +21,12 @@
<object class="GtkImage" id="database_all_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">res/odb_32_8.png</property>
+ <property name="icon_name">res/odb_32_8.png</property>
</object>
<object class="GtkImage" id="draw_all_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">res/odg_32_8.png</property>
+ <property name="icon_name">res/odg_32_8.png</property>
</object>
<object class="GtkMenu" id="filtermenu">
<property name="visible">True</property>
@@ -77,40 +76,51 @@
<object class="GtkImage" id="impress_all_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">res/odp_32_8.png</property>
+ <property name="icon_name">res/odp_32_8.png</property>
+ </object>
+ <object class="GtkMenu" id="localmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
</object>
<object class="GtkImage" id="math_all_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">res/odf_32_8.png</property>
+ <property name="icon_name">res/odf_32_8.png</property>
</object>
<object class="GtkImage" id="open_all_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">framework/res/folder_32.png</property>
+ <property name="icon_name">framework/res/folder_32.png</property>
</object>
<object class="GtkImage" id="open_all_image1">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">framework/res/recent-documents.png</property>
+ <property name="icon_name">framework/res/recent-documents.png</property>
</object>
<object class="GtkImage" id="open_all_image2">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">framework/res/remote-documents.png</property>
+ <property name="icon_name">framework/res/remote-documents.png</property>
+ </object>
+ <object class="GtkMenu" id="recentmenu">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
</object>
<object class="GtkImage" id="templates_all_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">framework/res/templates_32.png</property>
+ <property name="icon_name">framework/res/templates_32.png</property>
</object>
<object class="GtkImage" id="writer_all_image">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="pixbuf">res/odt_32_8.png</property>
+ <property name="icon_name">res/odt_32_8.png</property>
</object>
<object class="GtkBox" id="StartCenter">
+ <property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
<child>
<object class="GtkBox" id="box1">
<property name="visible">True</property>
@@ -137,7 +147,6 @@
<object class="GtkBox" id="buttons_box">
<property name="visible">True</property>
<property name="can_focus">False</property>
- <property name="hexpand">True</property>
<property name="vexpand">True</property>
<property name="orientation">vertical</property>
<property name="spacing">3</property>
@@ -154,6 +163,7 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -173,6 +183,7 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -194,8 +205,9 @@
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="open_recent:clearmenu">
+ <object class="GtkMenuButton" id="open_recent">
<property name="label" translatable="yes" context="startcenter|open_recent">_Recent Files</property>
+ <property name="name">MenuToggleButton</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@@ -205,6 +217,10 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="popup">clearmenu</property>
+ <property name="use_popover">False</property>
</object>
<packing>
<property name="expand">False</property>
@@ -213,8 +229,9 @@
</packing>
</child>
<child>
- <object class="GtkToggleButton" id="templates_all:filtermenu">
+ <object class="GtkMenuButton" id="templates_all">
<property name="label" translatable="yes" context="startcenter|templates_all">T_emplates</property>
+ <property name="name">MenuToggleButton</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">True</property>
@@ -224,6 +241,10 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
+ <property name="draw_indicator">True</property>
+ <property name="popup">filtermenu</property>
+ <property name="use_popover">False</property>
</object>
<packing>
<property name="expand">False</property>
@@ -271,6 +292,7 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -290,6 +312,7 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -309,6 +332,7 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -328,6 +352,7 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -347,6 +372,7 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -366,6 +392,7 @@
<property name="relief">none</property>
<property name="use_underline">True</property>
<property name="xalign">0</property>
+ <property name="always_show_image">True</property>
</object>
<packing>
<property name="expand">False</property>
@@ -474,6 +501,8 @@
<object class="GtkBox" id="box2">
<property name="visible">True</property>
<property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkLabel" id="all_recent_label">
@@ -502,12 +531,29 @@
</packing>
</child>
<child>
- <object class="sfxlo-RecentDocsView" id="all_recent">
+ <object class="GtkScrolledWindow" id="scrollrecent">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="margin">0</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkDrawingArea" id="all_recent">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -516,12 +562,29 @@
</packing>
</child>
<child>
- <object class="sfxlo-TemplateDefaultView" id="local_view">
+ <object class="GtkScrolledWindow" id="scrolllocal">
<property name="visible">True</property>
<property name="can_focus">True</property>
- <property name="margin">0</property>
<property name="hexpand">True</property>
<property name="vexpand">True</property>
+ <property name="shadow_type">in</property>
+ <child>
+ <object class="GtkViewport">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ <child>
+ <object class="GtkDrawingArea" id="local_view">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="events">GDK_BUTTON_MOTION_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_STRUCTURE_MASK</property>
+ <property name="hexpand">True</property>
+ <property name="vexpand">True</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
<packing>
<property name="expand">False</property>
diff --git a/solenv/bin/native-code.py b/solenv/bin/native-code.py
index e3735ac2e667..d0cdeed4bcc8 100755
--- a/solenv/bin/native-code.py
+++ b/solenv/bin/native-code.py
@@ -719,9 +719,7 @@ custom_widgets = [
'ManagedMenuButton',
'PriorityHBox',
'PriorityMergedHBox',
- 'RecentDocsView',
'SidebarToolBox',
- 'TemplateDefaultView',
]
def get_constructor_guard(constructor):
diff --git a/solenv/sanitizers/ui/sfx.suppr b/solenv/sanitizers/ui/sfx.suppr
index 4edcdb02a842..c201fb3dd810 100644
--- a/solenv/sanitizers/ui/sfx.suppr
+++ b/solenv/sanitizers/ui/sfx.suppr
@@ -32,7 +32,6 @@ sfx2/uiconfig/ui/loadtemplatedialog.ui://GtkDrawingArea[@id='image'] no-labelled
sfx2/uiconfig/ui/managestylepage.ui://GtkLabel[@id='desc'] orphan-label
sfx2/uiconfig/ui/password.ui://GtkLabel[@id='minlenft'] orphan-label
sfx2/uiconfig/ui/startcenter.ui://GtkLabel[@id='create_label'] orphan-label
-sfx2/uiconfig/ui/startcenter.ui://GtkImage[@id='motif'] no-labelled-by
sfx2/uiconfig/ui/startcenter.ui://GtkLabel[@id='althelplabel'] orphan-label
sfx2/uiconfig/ui/templatepanel.ui://GtkToggleToolButton[@id='1'] button-no-label
sfx2/uiconfig/ui/templatepanel.ui://GtkToggleToolButton[@id='2'] button-no-label
diff --git a/vcl/unx/gtk3/gtk3gtksalmenu.cxx b/vcl/unx/gtk3/gtk3gtksalmenu.cxx
index 9c02cf50e329..f71269470f15 100644
--- a/vcl/unx/gtk3/gtk3gtksalmenu.cxx
+++ b/vcl/unx/gtk3/gtk3gtksalmenu.cxx
@@ -725,6 +725,7 @@ gboolean GtkSalMenu::SignalKey(GdkEventKey const * pEvent)
{
if (pEvent->keyval == GDK_KEY_F6)
{
+ fprintf(stderr, "GtkSalMenu::SignalKey\n");
mbReturnFocusToDocument = false;
gtk_menu_shell_cancel(GTK_MENU_SHELL(mpMenuBarWidget));
//because we return false here, the keypress will continue