[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source
include/svtools/brwbox.hxx |1 + include/svtools/editbrowsebox.hxx |2 ++ svtools/source/brwbox/brwbox2.cxx |3 +++ svtools/source/brwbox/ebbcontrols.cxx |7 +++ svtools/source/brwbox/editbrowsebox.cxx |8 ++-- 5 files changed, 19 insertions(+), 2 deletions(-) New commits: commit 51c7c4ddb884703907759918f0541f9ad1f1fd98 Author: Caolán McNamara AuthorDate: Fri Jan 15 14:00:50 2021 + Commit: Adolfo Jayme Barrientos CommitDate: Sun Jan 17 21:39:40 2021 +0100 tdf#135641 update DataBrowser has-focus when child widget gains focus Change-Id: Ic5e618b50c31ebeffa1b2cc59857582804874747 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109372 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos diff --git a/include/svtools/brwbox.hxx b/include/svtools/brwbox.hxx index 0b0d3af6fb2e..47deb3af6755 100644 --- a/include/svtools/brwbox.hxx +++ b/include/svtools/brwbox.hxx @@ -507,6 +507,7 @@ public: boolReserveControlArea(sal_uInt16 nWidth = USHRT_MAX); tools::Rectangle GetControlArea() const; boolProcessKey( const KeyEvent& rEvt ); +virtual voidChildFocusIn(); voidDispatch( sal_uInt16 nId ); voidSetMode( BrowserMode nMode ); BrowserMode GetMode( ) const { return m_nCurrentMode; } diff --git a/include/svtools/editbrowsebox.hxx b/include/svtools/editbrowsebox.hxx index a1a38353637e..1b9fd13aa93f 100644 --- a/include/svtools/editbrowsebox.hxx +++ b/include/svtools/editbrowsebox.hxx @@ -326,6 +326,7 @@ namespace svt virtual bool ControlHasFocus() const = 0; protected: DECL_LINK(KeyInputHdl, const KeyEvent&, bool); +DECL_LINK(FocusInHdl, weld::Widget&, void); }; //= ComboBoxControl @@ -691,6 +692,7 @@ namespace svt virtual sal_Int32 GetFieldIndexAtPoint(sal_Int32 _nRow,sal_Int32 _nColumnPos,const Point& _rPoint) override; css::uno::Reference< css::accessibility::XAccessible > CreateAccessibleCheckBoxCell(long _nRow, sal_uInt16 _nColumnPos,const TriState& eState); +virtual void ChildFocusIn() override; bool ControlHasFocus() const; protected: // creates the accessible which wraps the active cell diff --git a/svtools/source/brwbox/brwbox2.cxx b/svtools/source/brwbox/brwbox2.cxx index e9e725149020..8cd05f2daa7c 100644 --- a/svtools/source/brwbox/brwbox2.cxx +++ b/svtools/source/brwbox/brwbox2.cxx @@ -1698,6 +1698,9 @@ bool BrowseBox::ProcessKey( const KeyEvent& rEvt ) return nId != BROWSER_NONE; } +void BrowseBox::ChildFocusIn() +{ +} void BrowseBox::Dispatch( sal_uInt16 nId ) { diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx index c38025d0a13e..e5e404bb291f 100644 --- a/svtools/source/brwbox/ebbcontrols.cxx +++ b/svtools/source/brwbox/ebbcontrols.cxx @@ -35,6 +35,7 @@ namespace svt m_xWidget->set_entry_width_chars(1); // so a smaller than default width can be used m_xWidget->connect_changed(LINK(this, ComboBoxControl, SelectHdl)); m_xWidget->connect_key_press(LINK(this, ControlBase, KeyInputHdl)); +m_xWidget->connect_focus_in(LINK(this, ControlBase, FocusInHdl)); } void ComboBoxControl::dispose() @@ -116,6 +117,11 @@ namespace svt return static_cast(GetParent())->GetParent()->ProcessKey(rKEvt); } +IMPL_LINK_NOARG(ControlBase, FocusInHdl, weld::Widget&, void) +{ +return static_cast(GetParent())->GetParent()->ChildFocusIn(); +} + //= ListBoxControl ListBoxControl::ListBoxControl(vcl::Window* pParent) : ControlBase(pParent, "svt/ui/listcontrol.ui", "ListControl") @@ -124,6 +130,7 @@ namespace svt m_xWidget->set_size_request(42, -1); // so a later narrow size request can stick m_xWidget->connect_changed(LINK(this, ListBoxControl, SelectHdl)); m_xWidget->connect_key_press(LINK(this, ControlBase, KeyInputHdl)); +m_xWidget->connect_focus_in(LINK(this, ControlBase, FocusInHdl)); } void ListBoxControl::dispose() diff --git a/svtools/source/brwbox/editbrowsebox.cxx b/svtools/source/brwbox/editbrowsebox.cxx index 12ef6d6fd181..83b44d07daf1 100644 --- a/svtools/source/brwbox/editbrowsebox.cxx +++ b/svtools/source/brwbox/editbrowsebox.cxx @@ -194,7 +194,7 @@ namespace svt if (IsEditing() && Controller()->GetWindow().IsVisible()) Controller()->GetWindow().GrabFocus(); -DetermineFocus( getRealGetFocusFlags( this ) ); +DetermineFocus(getRealGetFocusFlags(this)); } @@ -415,6 +415,10 @@ namespace svt } } +void EditBrowseBox::ChildFocusIn() +{ +DetermineFocus(getRealGetFocusFlags(this)); +} void EditBrowseBox::MouseButtonDown(const BrowserMouseEvent& rEvt) { @@ -677,7 +681,7 @@ namespace svt switch (rEvt.GetType()) {
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source
include/svtools/editbrowsebox.hxx |2 ++ svtools/source/brwbox/ebbcontrols.cxx |8 2 files changed, 10 insertions(+) New commits: commit 55e2721e1ea6b8db7c92e5bb304ec1fb2c3cf068 Author: Caolán McNamara AuthorDate: Fri Aug 14 16:42:32 2020 +0100 Commit: Aron Budea CommitDate: Thu Jan 14 08:34:44 2021 +0100 tdf#137694 let tab switch between cells Change-Id: I12806e2afc022c079d9db758973b8d1bfc0c7107 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100752 Tested-by: Jenkins Reviewed-by: Caolán McNamara (cherry picked from commit 3dac8855e93e09fab9d66f6cc4126a106ed44952) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108584 Reviewed-by: Aron Budea diff --git a/include/svtools/editbrowsebox.hxx b/include/svtools/editbrowsebox.hxx index 04c931d82fdd..a1a38353637e 100644 --- a/include/svtools/editbrowsebox.hxx +++ b/include/svtools/editbrowsebox.hxx @@ -324,6 +324,8 @@ namespace svt { } virtual bool ControlHasFocus() const = 0; +protected: +DECL_LINK(KeyInputHdl, const KeyEvent&, bool); }; //= ComboBoxControl diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx index e402f0a42a40..c38025d0a13e 100644 --- a/svtools/source/brwbox/ebbcontrols.cxx +++ b/svtools/source/brwbox/ebbcontrols.cxx @@ -22,6 +22,7 @@ #include #include #include +#include "datwin.hxx" namespace svt { @@ -33,6 +34,7 @@ namespace svt { m_xWidget->set_entry_width_chars(1); // so a smaller than default width can be used m_xWidget->connect_changed(LINK(this, ComboBoxControl, SelectHdl)); +m_xWidget->connect_key_press(LINK(this, ControlBase, KeyInputHdl)); } void ComboBoxControl::dispose() @@ -109,6 +111,11 @@ namespace svt GetComboBox().save_value(); } +IMPL_LINK(ControlBase, KeyInputHdl, const KeyEvent&, rKEvt, bool) +{ +return static_cast(GetParent())->GetParent()->ProcessKey(rKEvt); +} + //= ListBoxControl ListBoxControl::ListBoxControl(vcl::Window* pParent) : ControlBase(pParent, "svt/ui/listcontrol.ui", "ListControl") @@ -116,6 +123,7 @@ namespace svt { m_xWidget->set_size_request(42, -1); // so a later narrow size request can stick m_xWidget->connect_changed(LINK(this, ListBoxControl, SelectHdl)); +m_xWidget->connect_key_press(LINK(this, ControlBase, KeyInputHdl)); } void ListBoxControl::dispose() ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source svx/source svx/uiconfig svx/UIConfig_svx.mk
include/svtools/toolbarmenu.hxx |2 +- svtools/source/control/toolbarmenu.cxx |6 -- svx/UIConfig_svx.mk |1 + svx/source/tbxctrls/tbcontrl.cxx |6 +- svx/uiconfig/ui/interimtearableparent.ui | 29 + 5 files changed, 40 insertions(+), 4 deletions(-) New commits: commit 48f27cbca68c2e00c081ed240b6dd0851ab85458 Author: Caolán McNamara AuthorDate: Tue Sep 29 15:07:50 2020 +0100 Commit: Adolfo Jayme Barrientos CommitDate: Wed Sep 30 04:31:22 2020 +0200 tdf#136520 allow color popdowns to be tearable again Change-Id: Ic92ef5235662e1680aadb5666e05dad1bf808e9d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103626 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos diff --git a/include/svtools/toolbarmenu.hxx b/include/svtools/toolbarmenu.hxx index c08da7e9c899..f50a8359831c 100644 --- a/include/svtools/toolbarmenu.hxx +++ b/include/svtools/toolbarmenu.hxx @@ -125,7 +125,7 @@ private: std::unique_ptr m_xPopup; public: InterimToolbarPopup(const css::uno::Reference& rFrame, vcl::Window* pParent, -std::unique_ptr xPopup); +std::unique_ptr xPopup, bool bTearable = false); weld::Container* getContainer() { return m_xContainer.get(); } virtual void dispose() override; virtual ~InterimToolbarPopup() override; diff --git a/svtools/source/control/toolbarmenu.cxx b/svtools/source/control/toolbarmenu.cxx index da45acfbddf6..c96dba998c7e 100644 --- a/svtools/source/control/toolbarmenu.cxx +++ b/svtools/source/control/toolbarmenu.cxx @@ -223,8 +223,10 @@ IMPL_LINK_NOARG(ToolbarPopupContainer, FocusHdl, weld::Widget&, void) } InterimToolbarPopup::InterimToolbarPopup(const css::uno::Reference& rFrame, vcl::Window* pParent, - std::unique_ptr xPopup) -: ToolbarPopup(rFrame, pParent, "InterimDockParent", "svx/ui/interimdockparent.ui") + std::unique_ptr xPopup, bool bTearable) +: ToolbarPopup(rFrame, pParent, + !bTearable ? OString("InterimDockParent") : OString("InterimTearableParent"), + !bTearable ? OUString("svx/ui/interimdockparent.ui") : OUString("svx/ui/interimtearableparent.ui")) , m_xBox(get("box")) , m_xBuilder(Application::CreateInterimBuilder(m_xBox.get(), "svx/ui/interimparent.ui")) , m_xContainer(m_xBuilder->weld_container("container")) diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk index fdc7d1b3bc52..2d7986074b54 100644 --- a/svx/UIConfig_svx.mk +++ b/svx/UIConfig_svx.mk @@ -83,6 +83,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\ svx/uiconfig/ui/inspectortextpanel \ svx/uiconfig/ui/interimdockparent \ svx/uiconfig/ui/interimparent \ + svx/uiconfig/ui/interimtearableparent \ svx/uiconfig/ui/labelbox \ svx/uiconfig/ui/lightingwindow \ svx/uiconfig/ui/linkwarndialog \ diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 2cb126483faa..8780b03f2d6e 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -3293,7 +3293,11 @@ VclPtr SvxColorToolBoxControl::createVclPopupWindow( vcl::Window* p xPopover->SetSelectedHdl( LINK( this, SvxColorToolBoxControl, SelectedHdl ) ); mxInterimPopover = VclPtr::Create(getFrameInterface(), pParent, -std::move(xPopover)); +std::move(xPopover), true); + +auto aProperties = vcl::CommandInfoProvider::GetCommandProperties(m_aCommandURL, m_sModuleName); +OUString aWindowTitle = vcl::CommandInfoProvider::GetLabelForCommand(aProperties); +mxInterimPopover->SetText(aWindowTitle); mxInterimPopover->Show(); diff --git a/svx/uiconfig/ui/interimtearableparent.ui b/svx/uiconfig/ui/interimtearableparent.ui new file mode 100644 index ..910472c2c258 --- /dev/null +++ b/svx/uiconfig/ui/interimtearableparent.ui @@ -0,0 +1,29 @@ + + + + + +False +True +True +4 +False +True +dock +True + + +True +False +vertical +6 + + + + + + + + + + ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source
include/svtools/filechangedchecker.hxx |2 +- svtools/source/misc/filechangedchecker.cxx | 21 - 2 files changed, 13 insertions(+), 10 deletions(-) New commits: commit 1d28170d94893171e2a358274cda62cd73f7b834 Author: Tomofumi Yagi AuthorDate: Fri Sep 18 16:21:43 2020 +0900 Commit: Caolán McNamara CommitDate: Mon Sep 21 17:56:50 2020 +0200 tdf#134157 fix Edit with external tool causes a CPU hit Switch Idle to 100ms Timer for fixing the bug Change-Id: I85a9bdcb173edd28d952d8e91c1b93d748e69206 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102984 Tested-by: Jenkins Reviewed-by: Noel Grandin (cherry picked from commit f110c037114f90d219ac8d149542bf96fe66a2f1) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103055 Reviewed-by: Caolán McNamara diff --git a/include/svtools/filechangedchecker.hxx b/include/svtools/filechangedchecker.hxx index 3b7f817f3035..016fe9279800 100644 --- a/include/svtools/filechangedchecker.hxx +++ b/include/svtools/filechangedchecker.hxx @@ -29,7 +29,7 @@ class Timer; class UNLESS_MERGELIBS(SVT_DLLPUBLIC) FileChangedChecker { private: -IdlemIdle; +TimermTimer; OUString mFileName; TimeValuemLastModTime; ::std::function mpCallback; diff --git a/svtools/source/misc/filechangedchecker.cxx b/svtools/source/misc/filechangedchecker.cxx index 09e24c3fafb1..8536eb0bda57 100644 --- a/svtools/source/misc/filechangedchecker.cxx +++ b/svtools/source/misc/filechangedchecker.cxx @@ -16,7 +16,7 @@ FileChangedChecker::FileChangedChecker(const OUString& rFilename, const ::std::function& rCallback) -: mIdle("SVTools FileChangedChecker Idle") +: mTimer("SVTools FileChangedChecker Timer") , mFileName(rFilename) , mLastModTime() , mpCallback(rCallback) @@ -24,21 +24,24 @@ FileChangedChecker::FileChangedChecker(const OUString& rFilename, // Get the curren last file modified Status getCurrentModTime(mLastModTime); -// associate the callback function for the Idle -mIdle.SetInvokeHandler(LINK(this, FileChangedChecker, TimerHandler)); +// associate the callback function for the Timer +mTimer.SetInvokeHandler(LINK(this, FileChangedChecker, TimerHandler)); -//start the timer +// set timer interval +mTimer.SetTimeout(100); + +// start the timer resetTimer(); } void FileChangedChecker::resetTimer() { -//Start the Idle if it's not active -if(!mIdle.IsActive()) -mIdle.Start(); +// Start the Idle if it's not active +if(!mTimer.IsActive()) +mTimer.Start(); // Set lowest Priority -mIdle.SetPriority(TaskPriority::LOWEST); +mTimer.SetPriority(TaskPriority::LOWEST); } bool FileChangedChecker::getCurrentModTime(TimeValue& o_rValue) const @@ -90,7 +93,7 @@ IMPL_LINK_NOARG(FileChangedChecker, TimerHandler, Timer *, void) mpCallback(); } -// Reset the Idle in any case +// Reset the Timer in any case resetTimer(); } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source
include/svtools/valueset.hxx|2 ++ svtools/source/control/valueset.cxx | 36 2 files changed, 22 insertions(+), 16 deletions(-) New commits: commit 51c17d2bdb35fdb4ab21a94d3bba40f97dc5c138 Author: Caolán McNamara AuthorDate: Tue Sep 8 20:24:14 2020 +0100 Commit: Adolfo Jayme Barrientos CommitDate: Fri Sep 11 21:49:13 2020 +0200 tdf#134413 must add scrollbar width on turning it off to occupy the same space when scrollbars have width Change-Id: I3f9f6951add23f8ac93a03cf3356add5a2b3ddd8 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/102288 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos diff --git a/include/svtools/valueset.hxx b/include/svtools/valueset.hxx index 6c6055d0d982..b27885d9b72b 100644 --- a/include/svtools/valueset.hxx +++ b/include/svtools/valueset.hxx @@ -256,6 +256,8 @@ private: SVT_DLLPRIVATE void QueueReformat(); SVT_DLLPRIVATE void SetFirstLine(sal_uInt16 nNewFirstLine); // set mnFirstLine and update scrollbar to match SVT_DLLPRIVATE void RecalcScrollBar(); +SVT_DLLPRIVATE void TurnOffScrollBar(); +SVT_DLLPRIVATE void TurnOnScrollBar(); DECL_DLLPRIVATE_LINK(ImplScrollHdl, weld::ScrolledWindow&, void); Size GetLargestItemSize(); diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx index 00bd7226478a..dde904d2b9a2 100644 --- a/svtools/source/control/valueset.cxx +++ b/svtools/source/control/valueset.cxx @@ -539,13 +539,29 @@ void ValueSet::RemoveItem( sal_uInt16 nItemId ) QueueReformat(); } +void ValueSet::TurnOffScrollBar() +{ +mxScrolledWindow->set_vpolicy(VclPolicyType::NEVER); +weld::DrawingArea* pDrawingArea = GetDrawingArea(); +Size aPrefSize(pDrawingArea->get_preferred_size()); +pDrawingArea->set_size_request(aPrefSize.Width() + GetScrollWidth(), aPrefSize.Height()); +} + +void ValueSet::TurnOnScrollBar() +{ +mxScrolledWindow->set_vpolicy(VclPolicyType::ALWAYS); +weld::DrawingArea* pDrawingArea = GetDrawingArea(); +Size aPrefSize(pDrawingArea->get_preferred_size()); +pDrawingArea->set_size_request(aPrefSize.Width() - GetScrollWidth(), aPrefSize.Height()); +} + void ValueSet::RecalcScrollBar() { // reset scrolled window state to initial value // so it will get configured to the right adjustment WinBits nStyle = GetStyle(); if (mxScrolledWindow && (nStyle & WB_VSCROLL)) -mxScrolledWindow->set_vpolicy(VclPolicyType::NEVER); +TurnOffScrollBar(); } void ValueSet::Clear() @@ -841,11 +857,7 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext) long nNoneSpace; if (mxScrolledWindow && !(nStyle & WB_VSCROLL) && mxScrolledWindow->get_vpolicy() != VclPolicyType::NEVER) -{ -mxScrolledWindow->set_vpolicy(VclPolicyType::NEVER); -Size aPrefSize(GetDrawingArea()->get_preferred_size()); -GetDrawingArea()->set_size_request(aPrefSize.Width() + GetScrollWidth(), aPrefSize.Height()); -} +TurnOffScrollBar(); // calculate item offset if (nStyle & WB_ITEMBORDER) @@ -995,11 +1007,7 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext) } if (mxScrolledWindow && mxScrolledWindow->get_vpolicy() != VclPolicyType::NEVER) -{ -mxScrolledWindow->set_vpolicy(VclPolicyType::NEVER); -Size aPrefSize(GetDrawingArea()->get_preferred_size()); -GetDrawingArea()->set_size_request(aPrefSize.Width() + GetScrollWidth(), aPrefSize.Height()); -} +TurnOffScrollBar(); } else { @@ -1151,11 +1159,7 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext) } if (bTurnScrollbarOn) -{ -mxScrolledWindow->set_vpolicy(VclPolicyType::ALWAYS); -Size aPrefSize(GetDrawingArea()->get_preferred_size()); -GetDrawingArea()->set_size_request(aPrefSize.Width() - GetScrollWidth(), aPrefSize.Height()); -} +TurnOnScrollBar(); } } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source svx/source
include/svtools/editbrowsebox.hxx | 27 +-- svtools/source/brwbox/ebbcontrols.cxx | 10 -- svx/source/fmcomp/gridcell.cxx| 23 ++- svx/source/inc/gridcell.hxx |7 +++ 4 files changed, 50 insertions(+), 17 deletions(-) New commits: commit 4771535e40feb6ec7f15e160e00592b2f253f3a5 Author: Caolán McNamara AuthorDate: Fri Aug 14 14:41:35 2020 +0100 Commit: Michael Stahl CommitDate: Mon Aug 24 12:15:43 2020 +0200 tdf#135550 make XListBox Item status changed event work again Change-Id: I9a5fe6a097c5d06e3ac3ab6c4c77cbe082d1a17d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100747 Tested-by: Jenkins Reviewed-by: Michael Stahl diff --git a/include/svtools/editbrowsebox.hxx b/include/svtools/editbrowsebox.hxx index 61deadfdd4fa..ebd968d254ad 100644 --- a/include/svtools/editbrowsebox.hxx +++ b/include/svtools/editbrowsebox.hxx @@ -375,6 +375,11 @@ namespace svt //= ListBoxControl class SVT_DLLPUBLIC ListBoxControl final : public InterimItemWindow { +private: +std::unique_ptr m_xWidget; +Link m_aModify1Hdl; +Link m_aModify2Hdl; + friend class ListBoxCellController; public: @@ -382,9 +387,27 @@ namespace svt weld::ComboBox& get_widget() { return *m_xWidget; } +// sets a link to call when the selection is changed by the user +void SetModifyHdl(const Link& rHdl) +{ +m_aModify1Hdl = rHdl; +} + +// sets an additional link to call when the selection is changed by the user +void SetAuxModifyHdl(const Link& rLink) +{ +m_aModify2Hdl = rLink; +} + virtual void dispose() override; private: -std::unique_ptr m_xWidget; +DECL_LINK(SelectHdl, weld::ComboBox&, void); + +void CallModifyHdls() +{ +m_aModify1Hdl.Call(nullptr); +m_aModify2Hdl.Call(nullptr); +} }; //= ListBoxCellController @@ -401,7 +424,7 @@ namespace svt protected: virtual bool MoveAllowed(const KeyEvent& rEvt) const override; private: -DECL_LINK(ListBoxSelectHdl, weld::ComboBox&, void); +DECL_LINK(ListBoxSelectHdl, LinkParamNone*, void); }; //= FormattedFieldCellController diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx index 4d4fc8ea72cf..1e0272aeeea9 100644 --- a/svtools/source/brwbox/ebbcontrols.cxx +++ b/svtools/source/brwbox/ebbcontrols.cxx @@ -115,6 +115,7 @@ namespace svt , m_xWidget(m_xBuilder->weld_combo_box("listbox")) { m_xWidget->set_size_request(42, -1); // so a later narrow size request can stick +m_xWidget->connect_changed(LINK(this, ListBoxControl, SelectHdl)); } void ListBoxControl::dispose() @@ -123,11 +124,16 @@ namespace svt InterimItemWindow::dispose(); } +IMPL_LINK_NOARG(ListBoxControl, SelectHdl, weld::ComboBox&, void) +{ +CallModifyHdls(); +} + //= ListBoxCellController ListBoxCellController::ListBoxCellController(ListBoxControl* pWin) :CellController(pWin) { -GetListBox().connect_changed(LINK(this, ListBoxCellController, ListBoxSelectHdl)); +static_cast(GetWindow()).SetModifyHdl(LINK(this, ListBoxCellController, ListBoxSelectHdl)); } bool ListBoxCellController::MoveAllowed(const KeyEvent& rEvt) const @@ -165,7 +171,7 @@ namespace svt GetListBox().save_value(); } -IMPL_LINK_NOARG(ListBoxCellController, ListBoxSelectHdl, weld::ComboBox&, void) +IMPL_LINK_NOARG(ListBoxCellController, ListBoxSelectHdl, LinkParamNone*, void) { callModifyHdl(); } diff --git a/svx/source/fmcomp/gridcell.cxx b/svx/source/fmcomp/gridcell.cxx index 8811f7ce29e1..b84805165c9e 100644 --- a/svx/source/fmcomp/gridcell.cxx +++ b/svx/source/fmcomp/gridcell.cxx @@ -3967,9 +3967,9 @@ FmXListBoxCell::FmXListBoxCell(DbGridColumn* pColumn, std::unique_ptr(m_pCellControl->GetWindow()).get_widget()) + , m_pBox(_cast(m_pCellControl->GetWindow())) { -m_pBox->connect_changed(LINK(this, FmXListBoxCell, ChangedHdl)); +m_pBox->SetAuxModifyHdl(LINK(this, FmXListBoxCell, ChangedHdl)); } FmXListBoxCell::~FmXListBoxCell() @@ -3988,7 +3988,7 @@ void FmXListBoxCell::disposing() m_aItemListeners.disposeAndClear(aEvt); m_aActionListeners.disposeAndClear(aEvt); -m_pBox->connect_changed( Link() ); +m_pBox->SetAuxModifyHdl(Link()); m_pBox = nullptr; FmXTextCell::disposing(); @@ -3996,9 +3996,14 @@ void FmXListBoxCell::disposing() IMPLEMENT_GET_IMPLEMENTATION_ID( FmXListBoxCell ) -IMPL_LINK_NOARG(FmXListBoxCell, ChangedHdl, weld::ComboBox&, void) +IMPL_LINK_NOARG(FmXListBoxCell, ChangedHdl, LinkParamNone*, void) { -if (!m_pBox || !m_pBox->changed_by_direct_pick()) +if
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source svx/source
include/svtools/editbrowsebox.hxx | 27 +-- svtools/source/brwbox/ebbcontrols.cxx | 10 ++-- svx/source/fmcomp/gridcell.cxx| 39 +- svx/source/inc/gridcell.hxx |9 +++ 4 files changed, 62 insertions(+), 23 deletions(-) New commits: commit 23c965a299315398c0931ecefbca49824cc21261 Author: Caolán McNamara AuthorDate: Fri Aug 14 16:26:52 2020 +0100 Commit: Michael Stahl CommitDate: Thu Aug 20 13:07:27 2020 +0200 tdf#135550 make XComboBox Item status changed event work again Change-Id: I323a114d3b71a74267ee7a89c5fb29821611e57e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/100704 Tested-by: Jenkins Reviewed-by: Michael Stahl diff --git a/include/svtools/editbrowsebox.hxx b/include/svtools/editbrowsebox.hxx index 2e9c7cb891cb..61deadfdd4fa 100644 --- a/include/svtools/editbrowsebox.hxx +++ b/include/svtools/editbrowsebox.hxx @@ -319,6 +319,11 @@ namespace svt //= ComboBoxControl class SVT_DLLPUBLIC ComboBoxControl final : public InterimItemWindow { +private: +std::unique_ptr m_xWidget; +Link m_aModify1Hdl; +Link m_aModify2Hdl; + friend class ComboBoxCellController; public: @@ -326,10 +331,28 @@ namespace svt weld::ComboBox& get_widget() { return *m_xWidget; } +// sets a link to call when the selection is changed by the user +void SetModifyHdl(const Link& rHdl) +{ +m_aModify1Hdl = rHdl; +} + +// sets an additional link to call when the selection is changed by the user +void SetAuxModifyHdl(const Link& rLink) +{ +m_aModify2Hdl = rLink; +} + virtual void dispose() override; private: -std::unique_ptr m_xWidget; +DECL_LINK(SelectHdl, weld::ComboBox&, void); + +void CallModifyHdls() +{ +m_aModify1Hdl.Call(nullptr); +m_aModify2Hdl.Call(nullptr); +} }; //= ComboBoxCellController @@ -346,7 +369,7 @@ namespace svt protected: virtual bool MoveAllowed(const KeyEvent& rEvt) const override; private: -DECL_LINK(ModifyHdl, weld::ComboBox&, void); +DECL_LINK(ModifyHdl, LinkParamNone*, void); }; //= ListBoxControl diff --git a/svtools/source/brwbox/ebbcontrols.cxx b/svtools/source/brwbox/ebbcontrols.cxx index 2c6291fd3f7e..4d4fc8ea72cf 100644 --- a/svtools/source/brwbox/ebbcontrols.cxx +++ b/svtools/source/brwbox/ebbcontrols.cxx @@ -32,6 +32,7 @@ namespace svt , m_xWidget(m_xBuilder->weld_combo_box("combobox")) { m_xWidget->set_entry_width_chars(1); // so a smaller than default width can be used +m_xWidget->connect_changed(LINK(this, ComboBoxControl, SelectHdl)); } void ComboBoxControl::dispose() @@ -40,14 +41,19 @@ namespace svt InterimItemWindow::dispose(); } +IMPL_LINK_NOARG(ComboBoxControl, SelectHdl, weld::ComboBox&, void) +{ +CallModifyHdls(); +} + //= ComboBoxCellController ComboBoxCellController::ComboBoxCellController(ComboBoxControl* pWin) :CellController(pWin) { -GetComboBox().connect_changed(LINK(this, ComboBoxCellController, ModifyHdl)); +static_cast(GetWindow()).SetModifyHdl(LINK(this, ComboBoxCellController, ModifyHdl)); } -IMPL_LINK_NOARG(ComboBoxCellController, ModifyHdl, weld::ComboBox&, void) +IMPL_LINK_NOARG(ComboBoxCellController, ModifyHdl, LinkParamNone*, void) { callModifyHdl(); } diff --git a/svx/source/fmcomp/gridcell.cxx b/svx/source/fmcomp/gridcell.cxx index fcbb633fb003..8811f7ce29e1 100644 --- a/svx/source/fmcomp/gridcell.cxx +++ b/svx/source/fmcomp/gridcell.cxx @@ -4031,10 +4031,10 @@ FmXComboBoxCell::FmXComboBoxCell( DbGridColumn* pColumn, std::unique_ptr(m_pCellControl->GetWindow()).get_widget()) +,m_pComboBox(_cast(m_pCellControl->GetWindow())) ,m_nLines(Application::GetSettings().GetStyleSettings().GetListBoxMaximumLineCount()) { -m_pComboBox->connect_changed(LINK(this, FmXComboBoxCell, ChangedHdl)); +m_pComboBox->SetAuxModifyHdl(LINK(this, FmXComboBoxCell, ChangedHdl)); } FmXComboBoxCell::~FmXComboBoxCell() @@ -4053,7 +4053,7 @@ void FmXComboBoxCell::disposing() m_aItemListeners.disposeAndClear(aEvt); m_aActionListeners.disposeAndClear(aEvt); -m_pComboBox->connect_changed( Link() ); +m_pComboBox->SetAuxModifyHdl(Link()); m_pComboBox = nullptr; FmXTextCell::disposing(); @@ -4105,7 +4105,8 @@ void SAL_CALL FmXComboBoxCell::addItem( const OUString& Item, sal_Int16 Pos ) ::osl::MutexGuard aGuard( m_aMutex ); if (!m_pComboBox) return; -m_pComboBox->insert_text(Pos, Item); +weld::ComboBox& rBox = m_pComboBox->get_widget(); +rBox.insert_text(Pos, Item); } void SAL_CALL FmXComboBoxCell::addItems( const
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source
include/svtools/valueset.hxx|1 + svtools/source/control/valueset.cxx | 18 ++ 2 files changed, 15 insertions(+), 4 deletions(-) New commits: commit 3a3ab9c95c37bdd84fdceac82349621368e1bee1 Author: Caolán McNamara AuthorDate: Sun Jun 14 19:54:20 2020 +0100 Commit: Caolán McNamara CommitDate: Mon Jun 15 13:16:05 2020 +0200 Related: tdf#132966 scrollbar not tracking valueset cursor position Change-Id: I408d872f89da67cd91f0282c1624fd33ddc6c538 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96298 Tested-by: Jenkins Reviewed-by: Caolán McNamara (cherry picked from commit 5cce65171b12cd652d6a9857a9c0bad1c608a65c) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96333 diff --git a/include/svtools/valueset.hxx b/include/svtools/valueset.hxx index 29a17f530483..6c6055d0d982 100644 --- a/include/svtools/valueset.hxx +++ b/include/svtools/valueset.hxx @@ -254,6 +254,7 @@ private: SVT_DLLPRIVATE bool ImplHasAccessibleListeners(); SVT_DLLPRIVATE void ImplTracking(const Point& rPos); SVT_DLLPRIVATE void QueueReformat(); +SVT_DLLPRIVATE void SetFirstLine(sal_uInt16 nNewFirstLine); // set mnFirstLine and update scrollbar to match SVT_DLLPRIVATE void RecalcScrollBar(); DECL_DLLPRIVATE_LINK(ImplScrollHdl, weld::ScrolledWindow&, void); diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx index 40f2280cda5d..4329d415f9a1 100644 --- a/svtools/source/control/valueset.cxx +++ b/svtools/source/control/valueset.cxx @@ -696,6 +696,16 @@ void ValueSet::RecalculateItemSizes() } } +void ValueSet::SetFirstLine(sal_uInt16 nNewFirstLine) +{ +if (nNewFirstLine != mnFirstLine) +{ +mnFirstLine = nNewFirstLine; +if (mxScrolledWindow) +mxScrolledWindow->vadjustment_set_value(mnFirstLine); +} +} + void ValueSet::SelectItem( sal_uInt16 nItemId ) { size_t nItemPos = 0; @@ -731,12 +741,12 @@ void ValueSet::SelectItem( sal_uInt16 nItemId ) sal_uInt16 nNewLine = static_cast(nItemPos / mnCols); if ( nNewLine < mnFirstLine ) { -mnFirstLine = nNewLine; +SetFirstLine(nNewLine); bNewLine = true; } else if ( nNewLine > o3tl::make_unsigned(mnFirstLine+mnVisLines-1) ) { -mnFirstLine = static_cast(nNewLine-mnVisLines+1); +SetFirstLine(static_cast(nNewLine-mnVisLines+1)); bNewLine = true; } } @@ -924,12 +934,12 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext) if (mnLines <= mnVisLines) { -mnFirstLine = 0; +SetFirstLine(0); } else { if (mnFirstLine > o3tl::make_unsigned(mnLines - mnVisLines)) -mnFirstLine = static_cast(mnLines - mnVisLines); +SetFirstLine(static_cast(mnLines - mnVisLines)); } // calculate item size ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
[Libreoffice-commits] core.git: Branch 'libreoffice-7-0' - include/svtools svtools/source
include/svtools/valueset.hxx|1 svtools/source/control/valueset.cxx | 51 +++- 2 files changed, 17 insertions(+), 35 deletions(-) New commits: commit dbe8bc3cea4d4cb7b3f90caede01c186c49fa51b Author: Caolán McNamara AuthorDate: Sun Jun 14 19:41:04 2020 +0100 Commit: Caolán McNamara CommitDate: Mon Jun 15 10:06:04 2020 +0200 bundle copies of the same ValueSet pattern together as a method Change-Id: Iea3c1de70ca840371aaffa3de678a622aa450c74 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96296 Tested-by: Caolán McNamara Reviewed-by: Caolán McNamara (cherry picked from commit ec336de1bd600a131e6b7b0f2c2fdda98dd04fa3) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96281 Tested-by: Jenkins diff --git a/include/svtools/valueset.hxx b/include/svtools/valueset.hxx index f1bdd154a790..29a17f530483 100644 --- a/include/svtools/valueset.hxx +++ b/include/svtools/valueset.hxx @@ -253,6 +253,7 @@ private: SVT_DLLPRIVATE void ImplFireAccessibleEvent( short nEventId, const css::uno::Any& rOldValue, const css::uno::Any& rNewValue ); SVT_DLLPRIVATE bool ImplHasAccessibleListeners(); SVT_DLLPRIVATE void ImplTracking(const Point& rPos); +SVT_DLLPRIVATE void QueueReformat(); SVT_DLLPRIVATE void RecalcScrollBar(); DECL_DLLPRIVATE_LINK(ImplScrollHdl, weld::ScrolledWindow&, void); diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx index 4bc20997393f..63d246b289d0 100644 --- a/svtools/source/control/valueset.cxx +++ b/svtools/source/control/valueset.cxx @@ -507,6 +507,14 @@ bool ValueSet::MouseMove(const MouseEvent& rMouseEvent) return CustomWidgetController::MouseMove(rMouseEvent); } +void ValueSet::QueueReformat() +{ +queue_resize(); +mbFormat = true; +if ( IsReallyVisible() && IsUpdateMode() ) +Invalidate(); +} + void ValueSet::RemoveItem( sal_uInt16 nItemId ) { size_t nPos = GetItemPos( nItemId ); @@ -527,11 +535,7 @@ void ValueSet::RemoveItem( sal_uInt16 nItemId ) mbNoSelection = true; } -queue_resize(); - -mbFormat = true; -if ( IsReallyVisible() && IsUpdateMode() ) -Invalidate(); +QueueReformat(); } void ValueSet::RecalcScrollBar() @@ -687,10 +691,7 @@ void ValueSet::RecalculateItemSizes() { mnUserItemWidth = aLargestItem.Width(); mnUserItemHeight = aLargestItem.Height(); -mbFormat = true; -queue_resize(); -if ( IsReallyVisible() && IsUpdateMode() ) -Invalidate(); +QueueReformat(); } } @@ -1456,10 +1457,7 @@ void ValueSet::SetColCount( sal_uInt16 nNewCols ) if ( mnUserCols != nNewCols ) { mnUserCols = nNewCols; -mbFormat = true; -queue_resize(); -if (IsReallyVisible() && IsUpdateMode()) -Invalidate(); +QueueReformat(); } } @@ -1636,11 +1634,7 @@ void ValueSet::ImplInsertItem( std::unique_ptr pItem, const size_t mItemList.push_back( std::move(pItem) ); } -queue_resize(); - -mbFormat = true; -if ( IsReallyVisible() && IsUpdateMode() ) -Invalidate(); +QueueReformat(); } int ValueSet::GetScrollWidth() const @@ -1690,10 +1684,7 @@ void ValueSet::SetLineCount( sal_uInt16 nNewLines ) if ( mnUserVisLines != nNewLines ) { mnUserVisLines = nNewLines; -mbFormat = true; -queue_resize(); -if ( IsReallyVisible() && IsUpdateMode() ) -Invalidate(); +QueueReformat(); } } @@ -1702,10 +1693,7 @@ void ValueSet::SetItemWidth( long nNewItemWidth ) if ( mnUserItemWidth != nNewItemWidth ) { mnUserItemWidth = nNewItemWidth; -mbFormat = true; -queue_resize(); -if ( IsReallyVisible() && IsUpdateMode() ) -Invalidate(); +QueueReformat(); } } @@ -1727,10 +1715,7 @@ void ValueSet::SetItemHeight( long nNewItemHeight ) if ( mnUserItemHeight != nNewItemHeight ) { mnUserItemHeight = nNewItemHeight; -mbFormat = true; -queue_resize(); -if ( IsReallyVisible() && IsUpdateMode() ) -Invalidate(); +QueueReformat(); } } @@ -1762,11 +1747,7 @@ void ValueSet::SetExtraSpacing( sal_uInt16 nNewSpacing ) if ( GetStyle() & WB_ITEMBORDER ) { mnSpacing = nNewSpacing; - -mbFormat = true; -queue_resize(); -if ( IsReallyVisible() && IsUpdateMode() ) -Invalidate(); +QueueReformat(); } } ___ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits