chart2/source/controller/inc/ChartController.hxx | 2 chart2/source/controller/main/ChartController.cxx | 18 ++++ chart2/source/controller/main/ChartController_Tools.cxx | 60 ++++++++++++++++ chart2/source/controller/sidebar/ChartColorWrapper.cxx | 14 +++ chart2/source/controller/sidebar/ChartLinePanel.cxx | 21 +++++ chart2/source/controller/sidebar/ChartLinePanel.hxx | 2 include/svx/fontworkgallery.hxx | 7 - include/svx/sidebar/LinePropertyPanelBase.hxx | 5 - include/vcl/weld.hxx | 9 ++ sfx2/source/control/unoctitm.cxx | 5 + svx/source/sidebar/line/LinePropertyPanelBase.cxx | 2 svx/source/tbxctrls/fontworkgallery.cxx | 54 ++++---------- svx/uiconfig/ui/fontworkgallerydialog.ui | 37 ++++++--- vcl/source/app/salvtables.cxx | 46 +++++++++++- vcl/source/control/button.cxx | 2 vcl/source/control/fmtfield.cxx | 1 vcl/source/window/dialog.cxx | 2 vcl/source/window/window.cxx | 4 - vcl/unx/gtk3/gtk3gtkinst.cxx | 28 +++++++ 19 files changed, 254 insertions(+), 65 deletions(-)
New commits: commit e8b4f6d0dc5acf41070f9a7d5e858e853647e54f Author: Szymon Kłos <[email protected]> AuthorDate: Fri Jan 8 09:28:38 2021 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:04 2021 +0200 Fontwork dialog: use iconview Change-Id: I5bb35407ca83c9b0cda6f6355e6e25c21fecb459 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108960 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109181 Tested-by: Szymon Kłos <[email protected]> diff --git a/include/svx/fontworkgallery.hxx b/include/svx/fontworkgallery.hxx index 12648ebd6a19..3fa657305ad6 100644 --- a/include/svx/fontworkgallery.hxx +++ b/include/svx/fontworkgallery.hxx @@ -52,17 +52,16 @@ class SAL_WARN_UNUSED SVXCORE_DLLPUBLIC FontWorkGalleryDialog final : public wel SdrObject** mppSdrObject; SdrModel* mpDestModel; - std::vector<BitmapEx> maFavoritesHorizontal; + std::vector<VclPtr< VirtualDevice >> maFavoritesHorizontal; - ValueSet maCtlFavorites; - std::unique_ptr<weld::CustomWeld> mxCtlFavorites; + std::unique_ptr<weld::IconView> maCtlFavorites; std::unique_ptr<weld::Button> mxOKButton; void initFavorites(sal_uInt16 nThemeId); void insertSelectedFontwork(); void fillFavorites(sal_uInt16 nThemeId); - DECL_LINK(DoubleClickFavoriteHdl, ValueSet*, void); + DECL_LINK(DoubleClickFavoriteHdl, weld::IconView&, bool); DECL_LINK(ClickOKHdl, weld::Button&, void ); public: diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 496b6d489e9d..db5ada010fd1 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -1243,11 +1243,20 @@ public: const OUString* pIconName, TreeIter* pRet) = 0; + virtual void insert(int pos, const OUString* pStr, const OUString* pId, + const VirtualDevice* pIcon, TreeIter* pRet) + = 0; + void append(const OUString& rId, const OUString& rStr, const OUString& rImage) { insert(-1, &rStr, &rId, &rImage, nullptr); } + void append(const OUString& rId, const OUString& rStr, const VirtualDevice* pImage) + { + insert(-1, &rStr, &rId, pImage, nullptr); + } + void connect_selection_changed(const Link<IconView&, void>& rLink) { m_aSelectionChangeHdl = rLink; diff --git a/svx/source/tbxctrls/fontworkgallery.cxx b/svx/source/tbxctrls/fontworkgallery.cxx index a1b28688f13a..efef6f786e0d 100644 --- a/svx/source/tbxctrls/fontworkgallery.cxx +++ b/svx/source/tbxctrls/fontworkgallery.cxx @@ -48,29 +48,21 @@ using namespace ::com::sun::star::beans; namespace svx { -const int nColCount = 4; -const int nLineCount = 4; - FontWorkGalleryDialog::FontWorkGalleryDialog(weld::Window* pParent, SdrView& rSdrView) : GenericDialogController(pParent, "svx/ui/fontworkgallerydialog.ui", "FontworkGalleryDialog") , mnThemeId(0xffff) , mrSdrView(rSdrView) , mppSdrObject(nullptr) , mpDestModel(nullptr) - , maCtlFavorites(m_xBuilder->weld_scrolled_window("ctlFavoriteswin", true)) - , mxCtlFavorites(new weld::CustomWeld(*m_xBuilder, "ctlFavorites", maCtlFavorites)) + , maCtlFavorites(m_xBuilder->weld_icon_view("ctlFavoriteswin")) , mxOKButton(m_xBuilder->weld_button("ok")) { - Size aSize(maCtlFavorites.GetDrawingArea()->get_ref_device().LogicToPixel(Size(200, 200), MapMode(MapUnit::MapAppFont))); - mxCtlFavorites->set_size_request(aSize.Width(), aSize.Height()); + Size aSize(530, 400); + maCtlFavorites->set_size_request(aSize.Width(), aSize.Height()); - maCtlFavorites.SetDoubleClickHdl( LINK( this, FontWorkGalleryDialog, DoubleClickFavoriteHdl ) ); + maCtlFavorites->connect_item_activated( LINK( this, FontWorkGalleryDialog, DoubleClickFavoriteHdl ) ); mxOKButton->connect_clicked(LINK(this, FontWorkGalleryDialog, ClickOKHdl)); - maCtlFavorites.SetColCount( nColCount ); - maCtlFavorites.SetLineCount( nLineCount ); - maCtlFavorites.SetExtraSpacing( 3 ); - initFavorites( GALLERY_THEME_FONTWORK ); fillFavorites( GALLERY_THEME_FONTWORK ); } @@ -96,7 +88,7 @@ void FontWorkGalleryDialog::initFavorites(sal_uInt16 nThemeId) if (GalleryExplorer::GetSdrObj(nThemeId, nModelPos, pModel, &aThumb) && !!aThumb) { - ScopedVclPtrInstance< VirtualDevice > pVDev; + VclPtr< VirtualDevice > pVDev = VclPtr<VirtualDevice>::Create(); const Point aNull(0, 0); if (pVDev->GetDPIScaleFactor() > 1) @@ -113,7 +105,7 @@ void FontWorkGalleryDialog::initFavorites(sal_uInt16 nThemeId) pVDev->DrawCheckered(aNull, aSize, nLen, aW, aG); pVDev->DrawBitmapEx(aNull, aThumb); - maFavoritesHorizontal.emplace_back(pVDev->GetBitmapEx(aNull, aSize)); + maFavoritesHorizontal.emplace_back(pVDev); } } @@ -125,33 +117,18 @@ void FontWorkGalleryDialog::fillFavorites(sal_uInt16 nThemeId) { mnThemeId = nThemeId; - Size aThumbSize(maCtlFavorites.GetOutputSizePixel()); - aThumbSize.setWidth( aThumbSize.Width() / nColCount ); - aThumbSize.setHeight( aThumbSize.Height() / nLineCount ); - aThumbSize.AdjustWidth( -12 ); - aThumbSize.AdjustHeight( -12 ); - auto nFavCount = maFavoritesHorizontal.size(); - // ValueSet favorites - if( nFavCount > (nColCount * nLineCount) ) - { - WinBits nWinBits = maCtlFavorites.GetStyle(); - nWinBits |= WB_VSCROLL; - maCtlFavorites.SetStyle( nWinBits ); - } - - maCtlFavorites.Clear(); + maCtlFavorites->clear(); for( size_t nFavorite = 1; nFavorite <= nFavCount; nFavorite++ ) { - OUString aStr = SvxResId(RID_SVXFLOAT3D_FAVORITE) + " " + OUString::number(nFavorite); - Image aThumbImage( maFavoritesHorizontal[nFavorite-1] ); - maCtlFavorites.InsertItem( static_cast<sal_uInt16>(nFavorite), aThumbImage, aStr ); + OUString sId = OUString::number(static_cast<sal_uInt16>(nFavorite)); + maCtlFavorites->append(sId, "", maFavoritesHorizontal[nFavorite-1]); } - if (maCtlFavorites.GetItemCount()) - maCtlFavorites.SelectItem(1); + if (maCtlFavorites->n_children()) + maCtlFavorites->select(0); } void FontWorkGalleryDialog::SetSdrObjectRef( SdrObject** ppSdrObject, SdrModel* pModel ) @@ -162,7 +139,11 @@ void FontWorkGalleryDialog::SetSdrObjectRef( SdrObject** ppSdrObject, SdrModel* void FontWorkGalleryDialog::insertSelectedFontwork() { - sal_uInt16 nItemId = maCtlFavorites.GetSelectedItemId(); + OUString sItemId = maCtlFavorites->get_selected_id(); + if (sItemId.isEmpty()) + return; + + sal_Int32 nItemId = sItemId.toInt32(); if (nItemId == 0) return; @@ -244,10 +225,11 @@ IMPL_LINK_NOARG(FontWorkGalleryDialog, ClickOKHdl, weld::Button&, void) m_xDialog->response(RET_OK); } -IMPL_LINK_NOARG(FontWorkGalleryDialog, DoubleClickFavoriteHdl, ValueSet*, void) +IMPL_LINK_NOARG(FontWorkGalleryDialog, DoubleClickFavoriteHdl, weld::IconView&, bool) { insertSelectedFontwork(); m_xDialog->response(RET_OK); + return true; } namespace { diff --git a/svx/uiconfig/ui/fontworkgallerydialog.ui b/svx/uiconfig/ui/fontworkgallerydialog.ui index 683832e39d70..72cbdeff46cf 100644 --- a/svx/uiconfig/ui/fontworkgallerydialog.ui +++ b/svx/uiconfig/ui/fontworkgallerydialog.ui @@ -2,6 +2,16 @@ <!-- Generated with glade 3.22.1 --> <interface domain="svx"> <requires lib="gtk+" version="3.20"/> + <object class="GtkTreeStore" id="liststore1"> + <columns> + <!-- column-name expander --> + <column type="GdkPixbuf"/> + <!-- column-name text --> + <column type="gchararray"/> + <!-- column-name id --> + <column type="gchararray"/> + </columns> + </object> <object class="GtkDialog" id="FontworkGalleryDialog"> <property name="can_focus">False</property> <property name="border_width">6</property> @@ -98,25 +108,24 @@ </packing> </child> <child> - <object class="GtkScrolledWindow" id="ctlFavoriteswin"> + <object class="GtkScrolledWindow"> <property name="visible">True</property> - <property name="can_focus">False</property> + <property name="can_focus">True</property> <property name="hexpand">True</property> - <property name="hscrollbar_policy">never</property> - <property name="vscrollbar_policy">never</property> + <property name="vexpand">True</property> <property name="shadow_type">in</property> <child> - <object class="GtkViewport"> + <object class="GtkIconView" id="ctlFavoriteswin"> <property name="visible">True</property> - <property name="can_focus">False</property> - <child> - <object class="GtkDrawingArea" id="ctlFavorites"> - <property name="visible">True</property> - <property name="can_focus">True</property> - <property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK | GDK_STRUCTURE_MASK</property> - <property name="hexpand">True</property> - </object> - </child> + <property name="can_focus">True</property> + <property name="margin">6</property> + <property name="hexpand">True</property> + <property name="vexpand">True</property> + <property name="model">liststore1</property> + <property name="columns">3</property> + <property name="item_width">100</property> + <property name="pixbuf-column">0</property> + <property name="text-column">1</property> </object> </child> </object> diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 42912823c372..c8e8167c4757 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -5086,6 +5086,47 @@ public: enable_notify_events(); } + virtual void insert(int pos, const OUString* pStr, const OUString* pId, + const VirtualDevice* pIcon, weld::TreeIter* pRet) override + { + disable_notify_events(); + auto nInsertPos = pos == -1 ? TREELIST_APPEND : pos; + void* pUserData; + if (pId) + { + m_aUserData.emplace_back(std::make_unique<OUString>(*pId)); + pUserData = m_aUserData.back().get(); + } + else + pUserData = nullptr; + + SvTreeListEntry* pEntry = new SvTreeListEntry; + if (pIcon) + { + const Point aNull(0, 0); + const Size aSize = pIcon->GetOutputSizePixel(); + Image aImage(pIcon->GetBitmapEx(aNull, aSize)); + pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aImage, aImage, false)); + } + else + { + Image aDummy; + pEntry->AddItem(std::make_unique<SvLBoxContextBmp>(aDummy, aDummy, false)); + } + if (pStr) + pEntry->AddItem(std::make_unique<SvLBoxString>(*pStr)); + pEntry->SetUserData(pUserData); + m_xIconView->Insert(pEntry, nullptr, nInsertPos); + + if (pRet) + { + SalInstanceTreeIter* pVclRetIter = static_cast<SalInstanceTreeIter*>(pRet); + pVclRetIter->iter = pEntry; + } + + enable_notify_events(); + } + virtual OUString get_selected_id() const override { assert(m_xIconView->IsUpdateMode() && "don't request selection when frozen"); diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx index 773b20ac5b07..fa6220835b75 100644 --- a/vcl/unx/gtk3/gtk3gtkinst.cxx +++ b/vcl/unx/gtk3/gtk3gtkinst.cxx @@ -12381,6 +12381,21 @@ private: } } + void insert_item(GtkTreeIter& iter, int pos, const OUString* pId, const OUString* pText, const VirtualDevice* pIcon) + { + gtk_tree_store_insert_with_values(m_pTreeStore, &iter, nullptr, pos, + m_nTextCol, !pText ? nullptr : OUStringToOString(*pText, RTL_TEXTENCODING_UTF8).getStr(), + m_nIdCol, !pId ? nullptr : OUStringToOString(*pId, RTL_TEXTENCODING_UTF8).getStr(), + -1); + if (pIcon) + { + GdkPixbuf* pixbuf = getPixbuf(*pIcon); + gtk_tree_store_set(m_pTreeStore, &iter, m_nImageCol, pixbuf, -1); + if (pixbuf) + g_object_unref(pixbuf); + } + } + OUString get(const GtkTreeIter& iter, int col) const { GtkTreeModel *pModel = GTK_TREE_MODEL(m_pTreeStore); @@ -12441,6 +12456,19 @@ public: enable_notify_events(); } + virtual void insert(int pos, const OUString* pText, const OUString* pId, const VirtualDevice* pIcon, weld::TreeIter* pRet) override + { + disable_notify_events(); + GtkTreeIter iter; + insert_item(iter, pos, pId, pText, pIcon); + if (pRet) + { + GtkInstanceTreeIter* pGtkRetIter = static_cast<GtkInstanceTreeIter*>(pRet); + pGtkRetIter->iter = iter; + } + enable_notify_events(); + } + virtual OUString get_selected_id() const override { assert(gtk_icon_view_get_model(m_pIconView) && "don't request selection when frozen"); commit c00375c68255cbee6b90875d7feff4f0bb2f4758 Author: Szymon Kłos <[email protected]> AuthorDate: Wed Jan 6 11:44:43 2021 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:04 2021 +0200 lok: send chart line width updates Change-Id: I4c9c4a977df12a1cefb81cfbcac73b61ff26e488 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108843 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Andras Timar <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108966 Tested-by: Jenkins Reviewed-by: Szymon Kłos <[email protected]> diff --git a/chart2/source/controller/sidebar/ChartLinePanel.cxx b/chart2/source/controller/sidebar/ChartLinePanel.cxx index 3ae57de73739..019b022bd1a3 100644 --- a/chart2/source/controller/sidebar/ChartLinePanel.cxx +++ b/chart2/source/controller/sidebar/ChartLinePanel.cxx @@ -24,6 +24,10 @@ #include <com/sun/star/util/XModifyBroadcaster.hpp> #include <com/sun/star/chart2/XDiagram.hpp> +#include <comphelper/lok.hxx> +#include <sfx2/viewsh.hxx> +#include <LibreOfficeKit/LibreOfficeKitEnums.h> + namespace chart::sidebar { namespace { @@ -189,6 +193,11 @@ void ChartLinePanel::updateData() XLineTransparenceItem aLineTransparenceItem(nLineTransparence); updateLineTransparence(false, true, &aLineTransparenceItem); + sal_uInt32 nWidth; + xPropSet->getPropertyValue("LineWidth") >>= nWidth; + XLineWidthItem aWidthItem(nWidth); + updateLineWidth(false, true, &aWidthItem); + maLineStyleWrapper.updateData(); maLineColorWrapper.updateData(); } @@ -274,6 +283,18 @@ void ChartLinePanel::setLineWidth(const XLineWidthItem& rItem) xPropSet->setPropertyValue("LineWidth", css::uno::Any(rItem.GetValue())); } +void ChartLinePanel::updateLineWidth(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem) +{ + LinePropertyPanelBase::updateLineWidth(bDisabled, bSetOrDefault, pItem); + + SfxViewShell* pViewShell = SfxViewShell::Current(); + if (comphelper::LibreOfficeKit::isActive() && pViewShell) + { + pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, + (".uno:LineWidth=" + std::to_string(mnWidthCoreValue)).c_str()); + } +} + } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/chart2/source/controller/sidebar/ChartLinePanel.hxx b/chart2/source/controller/sidebar/ChartLinePanel.hxx index 2f703839a22c..ef174a5ee3a9 100644 --- a/chart2/source/controller/sidebar/ChartLinePanel.hxx +++ b/chart2/source/controller/sidebar/ChartLinePanel.hxx @@ -67,6 +67,8 @@ protected: virtual void setLineJoint(const XLineJointItem* pItem) override; virtual void setLineCap(const XLineCapItem* pItem) override; + virtual void updateLineWidth(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem) override; + private: css::uno::Reference<css::frame::XModel> mxModel; diff --git a/include/svx/sidebar/LinePropertyPanelBase.hxx b/include/svx/sidebar/LinePropertyPanelBase.hxx index cd924e6b8a8f..52411be57d2c 100644 --- a/include/svx/sidebar/LinePropertyPanelBase.hxx +++ b/include/svx/sidebar/LinePropertyPanelBase.hxx @@ -77,7 +77,7 @@ protected: virtual void setLineCap(const XLineCapItem* pItem) = 0; void updateLineTransparence(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem); - void updateLineWidth(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem); + virtual void updateLineWidth(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem); void updateLineJoint(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem); void updateLineCap(bool bDisabled, bool bSetOrDefault, const SfxPoolItem* pItem); @@ -93,6 +93,8 @@ protected: std::unique_ptr<weld::Toolbar> mxLineStyleTB; std::unique_ptr<ToolbarUnoDispatcher> mxLineStyleDispatch; + sal_Int32 mnWidthCoreValue; + private: //ui controls std::unique_ptr<weld::Label> mxFTWidth; @@ -112,7 +114,6 @@ private: sal_uInt16 mnTrans; MapUnit meMapUnit; - sal_Int32 mnWidthCoreValue; // images from resource OUString maIMGNone; diff --git a/svx/source/sidebar/line/LinePropertyPanelBase.cxx b/svx/source/sidebar/line/LinePropertyPanelBase.cxx index f1b49ebde5c1..8d26da31ffa4 100644 --- a/svx/source/sidebar/line/LinePropertyPanelBase.cxx +++ b/svx/source/sidebar/line/LinePropertyPanelBase.cxx @@ -72,6 +72,7 @@ LinePropertyPanelBase::LinePropertyPanelBase( mxColorDispatch(new ToolbarUnoDispatcher(*mxTBColor, *m_xBuilder, rxFrame)), mxLineStyleTB(m_xBuilder->weld_toolbar("linestyle")), mxLineStyleDispatch(new ToolbarUnoDispatcher(*mxLineStyleTB, *m_xBuilder, rxFrame)), + mnWidthCoreValue(0), mxFTWidth(m_xBuilder->weld_label("widthlabel")), mxTBWidth(m_xBuilder->weld_toolbar("width")), mxFTTransparency(m_xBuilder->weld_label("translabel")), @@ -86,7 +87,6 @@ LinePropertyPanelBase::LinePropertyPanelBase( mxLineStyleNoneChange(new LineStyleNoneChange(*this)), mnTrans(0), meMapUnit(MapUnit::MapMM), - mnWidthCoreValue(0), maIMGNone(BMP_NONE_ICON), mbWidthValuable(true), mbArrowSupported(true), commit 7a76382b9f541a3af72f497d024fc1dbe9a39f0f Author: Szymon Kłos <[email protected]> AuthorDate: Tue Jan 5 18:11:41 2021 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:04 2021 +0200 lok: Apply chart line width Change-Id: I94a6406eeb929498592ca5430cf7248cfd3e9f77 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108815 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Andras Timar <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108946 Tested-by: Jenkins Reviewed-by: Szymon Kłos <[email protected]> diff --git a/chart2/source/controller/inc/ChartController.hxx b/chart2/source/controller/inc/ChartController.hxx index a4cd900ff2f2..e2af7e0afa68 100644 --- a/chart2/source/controller/inc/ChartController.hxx +++ b/chart2/source/controller/inc/ChartController.hxx @@ -500,6 +500,7 @@ private: void executeDispatch_FillColor(sal_uInt32 nColor); void executeDispatch_FillGradient(OUString sJSONGradient); void executeDispatch_LineColor(sal_uInt32 nColor); + void executeDispatch_LineWidth(sal_uInt32 nWidth); void sendPopupRequest(OUString const & rCID, tools::Rectangle aRectangle); diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index 53e86e23b92e..137396b3e64b 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -1121,6 +1121,15 @@ void SAL_CALL ChartController::dispatch( this->executeDispatch_LineColor(nColor); } } + else if(aCommand == "LineWidth") + { + if (rArgs.getLength() > 0) + { + sal_Int32 nWidth = -1; + rArgs[0].Value >>= nWidth; + this->executeDispatch_LineWidth(nWidth); + } + } else if(aCommand.startsWith("FillGradient")) { this->executeDispatch_FillGradient(aCommand.copy(aCommand.indexOf('=') + 1)); diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx index 6eb592da4e08..b194e171dbe9 100644 --- a/chart2/source/controller/main/ChartController_Tools.cxx +++ b/chart2/source/controller/main/ChartController_Tools.cxx @@ -1009,6 +1009,36 @@ void ChartController::executeDispatch_LineColor(sal_uInt32 nColor) } } +void ChartController::executeDispatch_LineWidth(sal_uInt32 nWidth) +{ + try + { + OUString aCID( m_aSelection.getSelectedCID() ); + const uno::Reference< frame::XModel >& xChartModel = getModel(); + if( xChartModel.is() ) + { + Reference< beans::XPropertySet > xPropSet( + ObjectIdentifier::getObjectPropertySet( aCID, xChartModel ) ); + + ObjectType eType = ObjectIdentifier::getObjectType(aCID); + if (eType == OBJECTTYPE_DIAGRAM) + { + css::uno::Reference<css::chart2::XDiagram> xDiagram( + xPropSet, css::uno::UNO_QUERY); + if (xDiagram.is()) + xPropSet.set(xDiagram->getWall()); + } + + if( xPropSet.is() ) + xPropSet->setPropertyValue( "LineWidth", css::uno::makeAny( nWidth ) ); + } + } + catch( const uno::Exception& ) + { + DBG_UNHANDLED_EXCEPTION( "chart2" ); + } +} + void ChartController::executeDispatch_LOKSetTextSelection(int nType, int nX, int nY) { if (!m_pDrawViewWrapper) commit 72eeb19bd68048fe1f84fee0f76659c7f76a895a Author: Szymon Kłos <[email protected]> AuthorDate: Wed Jan 6 17:19:50 2021 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:04 2021 +0200 lok: send linespacing updates Change-Id: I2dd123b04a2d6a03eac92aca5db5a4413b386e7c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108877 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Andras Timar <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108945 Tested-by: Jenkins Reviewed-by: Szymon Kłos <[email protected]> diff --git a/sfx2/source/control/unoctitm.cxx b/sfx2/source/control/unoctitm.cxx index 9c78b4c693ce..ddccd885ab15 100644 --- a/sfx2/source/control/unoctitm.cxx +++ b/sfx2/source/control/unoctitm.cxx @@ -1020,7 +1020,10 @@ static void InterceptLOKStateChangeEvent(sal_uInt16 nSID, SfxViewFrame* pViewFra aEvent.FeatureURL.Path == "FormatPaintbrush" || aEvent.FeatureURL.Path == "FreezePanes" || aEvent.FeatureURL.Path == "Sidebar" || - aEvent.FeatureURL.Path == "SheetRightToLeft") + aEvent.FeatureURL.Path == "SheetRightToLeft" || + aEvent.FeatureURL.Path == "SpacePara1" || + aEvent.FeatureURL.Path == "SpacePara15" || + aEvent.FeatureURL.Path == "SpacePara2") { bool bTemp = false; aEvent.State >>= bTemp; commit 33860463429c6a5b0d7b3731d62c44bcfc5023cc Author: Szymon Kłos <[email protected]> AuthorDate: Tue Jan 5 10:36:31 2021 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:04 2021 +0200 lok: send chart color updates Change-Id: I037049fb19ddf4c1450d7d9327c574cb4e37977c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108793 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Andras Timar <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108927 Tested-by: Jenkins Reviewed-by: Szymon Kłos <[email protected]> diff --git a/chart2/source/controller/sidebar/ChartColorWrapper.cxx b/chart2/source/controller/sidebar/ChartColorWrapper.cxx index cbe7e088e313..880170d32730 100644 --- a/chart2/source/controller/sidebar/ChartColorWrapper.cxx +++ b/chart2/source/controller/sidebar/ChartColorWrapper.cxx @@ -26,6 +26,10 @@ #include <svx/xlndsit.hxx> #include <svx/unomid.hxx> +#include <comphelper/lok.hxx> +#include <sfx2/viewsh.hxx> +#include <LibreOfficeKit/LibreOfficeKitEnums.h> + namespace chart::sidebar { namespace { @@ -115,6 +119,16 @@ void ChartColorWrapper::updateData() aEvent.IsEnabled = true; aEvent.State = xPropSet->getPropertyValue(maPropertyName); mpControl->statusChanged(aEvent); + + SfxViewShell* pViewShell = SfxViewShell::Current(); + if (comphelper::LibreOfficeKit::isActive() && pViewShell && (maPropertyName == aLineColor)) + { + std::string sCommand = OUStringToOString(aUrl.Complete, RTL_TEXTENCODING_ASCII_US).getStr(); + sal_Int32 nColor = -1; + aEvent.State >>= nColor; + pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_STATE_CHANGED, + (sCommand + "=" + std::to_string(nColor)).c_str()); + } } ChartLineStyleWrapper::ChartLineStyleWrapper( commit e73f6309a2751c1d29f4a478860be54b57c5b1aa Author: Szymon Kłos <[email protected]> AuthorDate: Mon Jan 4 13:35:25 2021 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:04 2021 +0200 lok: Apply chart line color Change-Id: I21b96485f26439844f19278e0d6340b55012d4ec Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108666 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Andras Timar <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108926 Tested-by: Jenkins Reviewed-by: Szymon Kłos <[email protected]> diff --git a/chart2/source/controller/inc/ChartController.hxx b/chart2/source/controller/inc/ChartController.hxx index aa399f2164b3..a4cd900ff2f2 100644 --- a/chart2/source/controller/inc/ChartController.hxx +++ b/chart2/source/controller/inc/ChartController.hxx @@ -499,6 +499,7 @@ private: void executeDispatch_LOKPieSegmentDragging(int nOffset); void executeDispatch_FillColor(sal_uInt32 nColor); void executeDispatch_FillGradient(OUString sJSONGradient); + void executeDispatch_LineColor(sal_uInt32 nColor); void sendPopupRequest(OUString const & rCID, tools::Rectangle aRectangle); diff --git a/chart2/source/controller/main/ChartController.cxx b/chart2/source/controller/main/ChartController.cxx index defde0487db7..53e86e23b92e 100644 --- a/chart2/source/controller/main/ChartController.cxx +++ b/chart2/source/controller/main/ChartController.cxx @@ -1112,6 +1112,15 @@ void SAL_CALL ChartController::dispatch( this->executeDispatch_FillColor(nColor); } } + else if(aCommand == "XLineColor") + { + if (rArgs.getLength() > 0) + { + sal_Int32 nColor = -1; + rArgs[0].Value >>= nColor; + this->executeDispatch_LineColor(nColor); + } + } else if(aCommand.startsWith("FillGradient")) { this->executeDispatch_FillGradient(aCommand.copy(aCommand.indexOf('=') + 1)); diff --git a/chart2/source/controller/main/ChartController_Tools.cxx b/chart2/source/controller/main/ChartController_Tools.cxx index ed0776d94c79..6eb592da4e08 100644 --- a/chart2/source/controller/main/ChartController_Tools.cxx +++ b/chart2/source/controller/main/ChartController_Tools.cxx @@ -979,6 +979,36 @@ void ChartController::executeDispatch_FillGradient(OUString sJSONGradient) } } +void ChartController::executeDispatch_LineColor(sal_uInt32 nColor) +{ + try + { + OUString aCID( m_aSelection.getSelectedCID() ); + const uno::Reference< frame::XModel >& xChartModel = getModel(); + if( xChartModel.is() ) + { + Reference< beans::XPropertySet > xPropSet( + ObjectIdentifier::getObjectPropertySet( aCID, xChartModel ) ); + + ObjectType eType = ObjectIdentifier::getObjectType(aCID); + if (eType == OBJECTTYPE_DIAGRAM) + { + css::uno::Reference<css::chart2::XDiagram> xDiagram( + xPropSet, css::uno::UNO_QUERY); + if (xDiagram.is()) + xPropSet.set(xDiagram->getWall()); + } + + if( xPropSet.is() ) + xPropSet->setPropertyValue( "LineColor", css::uno::makeAny( Color(nColor) ) ); + } + } + catch( const uno::Exception& ) + { + DBG_UNHANDLED_EXCEPTION( "chart2" ); + } +} + void ChartController::executeDispatch_LOKSetTextSelection(int nType, int nX, int nY) { if (!m_pDrawViewWrapper) commit 61707d7b758a6555f9fec1eb8ccc928dd15cfd07 Author: Szymon Kłos <[email protected]> AuthorDate: Thu Dec 17 14:44:51 2020 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:03 2021 +0200 lok: don't use focus window to request help Use clicked button instead - what leads to the correct window. If only focused window was taken into account sometimes it caused incorrect help link to be used. Change-Id: I645dc1ffa6a6d6d363ea5f9874fa830c441516c7 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107882 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108429 Tested-by: Jenkins diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 4b7ccce0153c..42912823c372 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -76,8 +76,7 @@ #include <window.h> #include <wizdlg.hxx> #include <salvtables.hxx> - -#include <boost/property_tree/ptree.hpp> +#include <comphelper/lok.hxx> SalFrame::SalFrame() : m_pWindow(nullptr) @@ -6850,7 +6849,7 @@ void SalInstanceWindow::help() { //show help for widget with keyboard focus vcl::Window* pWidget = ImplGetSVData()->mpWinData->mpFocusWin; - if (!pWidget) + if (!pWidget || comphelper::LibreOfficeKit::isActive()) pWidget = m_xWindow; OString sHelpId = pWidget->GetHelpId(); while (sHelpId.isEmpty()) diff --git a/vcl/source/control/button.cxx b/vcl/source/control/button.cxx index 91a4aa4543a3..b2a7dc7cfdc2 100644 --- a/vcl/source/control/button.cxx +++ b/vcl/source/control/button.cxx @@ -1753,7 +1753,7 @@ void HelpButton::Click() if ( !GetClickHdl() ) { vcl::Window* pFocusWin = Application::GetFocusWindow(); - if ( !pFocusWin ) + if ( !pFocusWin || comphelper::LibreOfficeKit::isActive() ) pFocusWin = this; HelpEvent aEvt( pFocusWin->GetPointerPosPixel(), HelpEventMode::CONTEXT ); diff --git a/vcl/source/window/dialog.cxx b/vcl/source/window/dialog.cxx index e502c33caeb1..92528597e476 100644 --- a/vcl/source/window/dialog.cxx +++ b/vcl/source/window/dialog.cxx @@ -1398,7 +1398,7 @@ IMPL_LINK(Dialog, ResponseHdl, Button*, pButton, void) if (nResponse == RET_HELP) { vcl::Window* pFocusWin = Application::GetFocusWindow(); - if (!pFocusWin) + if (!pFocusWin || comphelper::LibreOfficeKit::isActive()) pFocusWin = pButton; HelpEvent aEvt(pFocusWin->GetPointerPosPixel(), HelpEventMode::CONTEXT); pFocusWin->RequestHelp(aEvt); commit aac96250cfbae2a596438ec32a47c724e4a428ef Author: Szymon Kłos <[email protected]> AuthorDate: Thu Dec 17 15:07:49 2020 +0100 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:03 2021 +0200 jsdialog: step for spinfields Change-Id: I35336dfcd9913a984b0a8894622d0785d4007bc8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/107884 Tested-by: Jenkins CollaboraOffice <[email protected]> Reviewed-by: Szymon Kłos <[email protected]> Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108419 Tested-by: Jenkins diff --git a/vcl/source/control/fmtfield.cxx b/vcl/source/control/fmtfield.cxx index 48a82370b325..20ad995de48d 100644 --- a/vcl/source/control/fmtfield.cxx +++ b/vcl/source/control/fmtfield.cxx @@ -1358,6 +1358,7 @@ void FormattedField::DumpAsPropertyTree(tools::JsonWriter& rJsonWriter) rJsonWriter.put("min", rFormatter.GetMinValue()); rJsonWriter.put("max", rFormatter.GetMaxValue()); rJsonWriter.put("value", rFormatter.GetValue()); + rJsonWriter.put("step", rFormatter.GetSpinSize()); } FactoryFunction FormattedField::GetUITestFactory() const commit 368d6ada674c425fdaa88b1c21e83281e318b0af Author: Ashod Nakashian <[email protected]> AuthorDate: Sun Nov 8 09:15:25 2020 -0500 Commit: Andras Timar <[email protected]> CommitDate: Thu Apr 8 16:42:03 2021 +0200 vcl: lok: don't use window impl after destroy When destroying floating windows, accessing the GetLOKNotifier can segfault. The following is the stack-trace from such a case. /usr/bin/loolforkit(_ZN7SigUtil13dumpBacktraceEv+0x5e)[0x55cbf9da62fe] /usr/bin/loolforkit(+0x1d0af5)[0x55cbf9da6af5] /lib/x86_64-linux-gnu/libpthread.so.0(+0x128a0)[0x7fe0a125f8a0] /opt/collaboraoffice6.4/program/libmergedlo.so(_ZNK3vcl6Window14GetLOKNotifierEv+0x7)[0x7fe09e67b827] /opt/collaboraoffice6.4/program/libmergedlo.so(_ZN3vcl6Window24GetParentWithLOKNotifierEv+0x2b)[0x7fe09e67b86b] /opt/collaboraoffice6.4/program/libmergedlo.so(_ZN14FloatingWindow12StateChangedE16StateChangedType+0x43)[0x7fe09e609a13] /opt/collaboraoffice6.4/program/libmergedlo.so(_ZN3vcl6Window4ShowEb9ShowFlags+0x2ba)[0x7fe09e67cd5a] /opt/collaboraoffice6.4/program/libmergedlo.so(_Z21ImplDestroyHelpWindowR14ImplSVHelpDatab+0xe3)[0x7fe09e90c193] /opt/collaboraoffice6.4/program/libmergedlo.so(_ZN9Scheduler21ProcessTaskSchedulingEv+0x8ea)[0x7fe09e93817a] /opt/collaboraoffice6.4/program/libmergedlo.so(_ZN14SvpSalInstance12CheckTimeoutEb+0x107)[0x7fe09ea06807] /opt/collaboraoffice6.4/program/libmergedlo.so(_ZN14SvpSalInstance7DoYieldEbb+0x85)[0x7fe09ea06905] /opt/collaboraoffice6.4/program/libmergedlo.so(+0x2f5d6fb)[0x7fe09e94f6fb] /opt/collaboraoffice6.4/program/libmergedlo.so(_ZN11Application7ExecuteEv+0x45)[0x7fe09e950295] /opt/collaboraoffice6.4/program/libmergedlo.so(+0x1f6d545)[0x7fe09d95f545] /opt/collaboraoffice6.4/program/libmergedlo.so(_Z10ImplSVMainv+0x51)[0x7fe09e957321] /opt/collaboraoffice6.4/program/libmergedlo.so(soffice_main+0x98)[0x7fe09d980b88] /opt/collaboraoffice6.4/program/libmergedlo.so(+0x1f9e7c1)[0x7fe09d9907c1] /usr/bin/loolforkit(_Z10lokit_mainRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S6_S6_S6_bbbbm+0x2562)[0x55cbf9d4c792] /usr/bin/loolforkit(+0x15fc77)[0x55cbf9d35c77] /usr/bin/loolforkit(_Z18forkLibreOfficeKitRKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES6_S6_S6_i+0xb44)[0x55cbf9d36b24] /usr/bin/loolforkit(main+0x18a7)[0x55cbf9d00e17] /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xe7)[0x7fe0a0e7db97] /usr/bin/loolforkit(_start+0x2a)[0x55cbf9d07efa] Change-Id: Ia467d51896d1ac657bde5ae2803fcb2557ebd3fe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105366 Tested-by: Jenkins Reviewed-by: Ashod Nakashian <[email protected]> diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx index 9b8ae89b7433..5e6d92b47ef9 100644 --- a/vcl/source/window/window.cxx +++ b/vcl/source/window/window.cxx @@ -3216,12 +3216,12 @@ ILibreOfficeKitNotifier::~ILibreOfficeKitNotifier() const vcl::ILibreOfficeKitNotifier* Window::GetLOKNotifier() const { - return mpWindowImpl->mpLOKNotifier; + return mpWindowImpl ? mpWindowImpl->mpLOKNotifier : nullptr; } vcl::LOKWindowId Window::GetLOKWindowId() const { - return mpWindowImpl->mnLOKWindowId; + return mpWindowImpl ? mpWindowImpl->mnLOKWindowId : 0; } VclPtr<vcl::Window> Window::GetParentWithLOKNotifier() _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
