diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-10-15 15:24:26 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-10-22 17:26:08 +0200 |
commit | 5a342bde16fb46c895eec302af73d7836226eccf (patch) | |
tree | 32363a701b9530b1e9961163edcc1359563ce0a2 | |
parent | f4a5893eceabc1f6d541164a0e858456f0ce0905 (diff) |
weld backing window
Change-Id: I250e46d3f1d558567bddbd4f0330470222e8fd4b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104442
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r-- | extras/source/glade/libreoffice-catalog.xml.in | 7 | ||||
-rw-r--r-- | include/sfx2/templatelocalview.hxx | 15 | ||||
-rw-r--r-- | include/sfx2/thumbnailview.hxx | 5 | ||||
-rw-r--r-- | sd/source/ui/dlg/animobjs.cxx | 2 | ||||
-rw-r--r-- | sfx2/inc/recentdocsview.hxx | 23 | ||||
-rw-r--r-- | sfx2/inc/templatedefaultview.hxx | 11 | ||||
-rw-r--r-- | sfx2/source/control/recentdocsview.cxx | 83 | ||||
-rw-r--r-- | sfx2/source/control/recentdocsviewitem.cxx | 2 | ||||
-rw-r--r-- | sfx2/source/control/templatedefaultview.cxx | 40 | ||||
-rw-r--r-- | sfx2/source/control/templatelocalview.cxx | 8 | ||||
-rw-r--r-- | sfx2/source/control/thumbnailview.cxx | 9 | ||||
-rw-r--r-- | sfx2/source/dialog/backingwindow.cxx | 472 | ||||
-rw-r--r-- | sfx2/source/dialog/backingwindow.hxx | 64 | ||||
-rw-r--r-- | sfx2/source/doc/templatedlg.cxx | 2 | ||||
-rw-r--r-- | sfx2/uiconfig/ui/startcenter.ui | 101 | ||||
-rwxr-xr-x | solenv/bin/native-code.py | 2 | ||||
-rw-r--r-- | solenv/sanitizers/ui/sfx.suppr | 1 | ||||
-rw-r--r-- | vcl/unx/gtk3/gtk3gtksalmenu.cxx | 1 |
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 |