include/vcl/jsdialog/executor.hxx | 5 +++++ include/vcl/weld.hxx | 4 +++- vcl/inc/salvtables.hxx | 2 ++ vcl/jsdialog/executor.cxx | 7 +++++-- vcl/source/app/salvtables.cxx | 7 +++++++ 5 files changed, 22 insertions(+), 3 deletions(-)
New commits: commit 1c193d7817e20fc05092068c6132b101f2955707 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Tue Mar 14 13:11:46 2023 +0100 Commit: Szymon Kłos <szymon.k...@collabora.com> CommitDate: Tue Mar 14 14:55:25 2023 +0000 jsdialog: double click for drawing area Change-Id: I280158b101f39d107090a2eebb2c06e64591cb94 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/148852 Tested-by: Szymon Kłos <szymon.k...@collabora.com> Reviewed-by: Szymon Kłos <szymon.k...@collabora.com> diff --git a/include/vcl/jsdialog/executor.hxx b/include/vcl/jsdialog/executor.hxx index 50f71272bb61..0c47066da9fa 100644 --- a/include/vcl/jsdialog/executor.hxx +++ b/include/vcl/jsdialog/executor.hxx @@ -61,6 +61,11 @@ public: rDrawingArea.click(rPos); } + static void trigger_dblclick(weld::DrawingArea& rDrawingArea, const Point& rPos) + { + rDrawingArea.dblclick(rPos); + } + static void trigger_value_changed(weld::SpinButton& rSpinButton) { rSpinButton.signal_value_changed(); diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx index 1960bf1ffd06..a1966434355a 100644 --- a/include/vcl/weld.hxx +++ b/include/vcl/weld.hxx @@ -2351,7 +2351,9 @@ public: private: friend class ::LOKTrigger; - virtual void click(const Point& rPos) = 0; + virtual void click(const Point&) = 0; + + virtual void dblclick(const Point&){}; }; enum class Placement diff --git a/vcl/inc/salvtables.hxx b/vcl/inc/salvtables.hxx index adc0ef043eab..efc5e07e3ae7 100644 --- a/vcl/inc/salvtables.hxx +++ b/vcl/inc/salvtables.hxx @@ -1330,6 +1330,8 @@ public: virtual OutputDevice& get_ref_device() override; virtual void click(const Point& rPos) override; + + virtual void dblclick(const Point& rPos) override; }; class SalInstanceToolbar : public SalInstanceWidget, public virtual weld::Toolbar diff --git a/vcl/jsdialog/executor.cxx b/vcl/jsdialog/executor.cxx index e2e091bfa143..6532f562e1ec 100644 --- a/vcl/jsdialog/executor.cxx +++ b/vcl/jsdialog/executor.cxx @@ -187,7 +187,7 @@ bool ExecuteAction(const std::string& nWindowId, const OString& rWidget, StringM auto pArea = dynamic_cast<weld::DrawingArea*>(pWidget); if (pArea) { - if (sAction == "click") + if (sAction == "click" || sAction == "dblclick") { OUString sClickData = rData["data"]; int nSeparatorPos = sClickData.indexOf(';'); @@ -209,7 +209,10 @@ bool ExecuteAction(const std::string& nWindowId, const OString& rWidget, StringM Size size = rRefDevice.GetOutputSize(); posX = posX * size.Width(); posY = posY * size.Height(); - LOKTrigger::trigger_click(*pArea, Point(posX, posY)); + if (sAction == "click") + LOKTrigger::trigger_click(*pArea, Point(posX, posY)); + else + LOKTrigger::trigger_dblclick(*pArea, Point(posX, posY)); return true; } diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx index 40ca131ee5e8..20a53926ee3a 100644 --- a/vcl/source/app/salvtables.cxx +++ b/vcl/source/app/salvtables.cxx @@ -6324,6 +6324,13 @@ void SalInstanceDrawingArea::click(const Point& rPos) m_xDrawingArea->MouseButtonUp(aEvent); } +void SalInstanceDrawingArea::dblclick(const Point& rPos) +{ + MouseEvent aEvent(rPos, 2, MouseEventModifiers::NONE, MOUSE_LEFT, 0); + m_xDrawingArea->MouseButtonDown(aEvent); + m_xDrawingArea->MouseButtonUp(aEvent); +} + IMPL_LINK(SalInstanceDrawingArea, PaintHdl, target_and_area, aPayload, void) { m_aDrawHdl.Call(aPayload);