include/svx/svdhdl.hxx | 3 ++ include/svx/svdmrkv.hxx | 1 include/svx/svdpntv.hxx | 1 include/svx/svdview.hxx | 1 sd/source/ui/func/fudraw.cxx | 3 ++ sd/source/ui/view/viewoverlaymanager.cxx | 39 ++++++++++++++++++++++++++----- svx/source/svdraw/svdhdl.cxx | 4 +++ svx/source/svdraw/svdmrkv.cxx | 19 +++++++++++++++ 8 files changed, 65 insertions(+), 6 deletions(-)
New commits: commit 95b3a12c5c55cb1696995ccba7eb5f33832fa69f Author: Caolán McNamara <[email protected]> AuthorDate: Mon Jan 14 10:56:04 2019 +0000 Commit: Caolán McNamara <[email protected]> CommitDate: Wed Jan 16 17:20:09 2019 +0100 Resolves: tdf#122695 Content Type selector tooltip missing Change-Id: I0ffe6448d865f569fb59d9facbb1582d2152a9ba Reviewed-on: https://gerrit.libreoffice.org/66291 Tested-by: Jenkins Reviewed-by: Caolán McNamara <[email protected]> Tested-by: Caolán McNamara <[email protected]> (cherry picked from commit 423d70f7e45749fad680b3dfe0ccdaed1c1afb19) Reviewed-on: https://gerrit.libreoffice.org/66384 Tested-by: Xisco Faulí <[email protected]> diff --git a/include/svx/svdhdl.hxx b/include/svx/svdhdl.hxx index 5760d642a3f7..fa7ce34404db 100644 --- a/include/svx/svdhdl.hxx +++ b/include/svx/svdhdl.hxx @@ -226,6 +226,9 @@ public: visualisation during mouse over it must override this method and call Touch(). */ virtual void onMouseEnter(const MouseEvent& rMEvt); + /** is called when help is requested for the area of this handle */ + virtual void onHelpRequest(const HelpEvent& rHEvt); + /** is called when the mouse leaves the area of this handle. If the handle changes his visualisation during mouse over it must override this method and call Touch(). */ virtual void onMouseLeave(); diff --git a/include/svx/svdmrkv.hxx b/include/svx/svdmrkv.hxx index abffdba68434..94608620e6b1 100644 --- a/include/svx/svdmrkv.hxx +++ b/include/svx/svdmrkv.hxx @@ -143,6 +143,7 @@ protected: void CheckMarked(); // Scan MarkList after Del and Lock Layer ... void AddDragModeHdl(SdrDragMode eMode); virtual bool MouseMove(const MouseEvent& rMEvt, vcl::Window* pWin) override; + virtual bool RequestHelp(const HelpEvent& rHEvt) override; // add custom handles (used by other apps, e.g. AnchorPos) virtual void AddCustomHdl(); diff --git a/include/svx/svdpntv.hxx b/include/svx/svdpntv.hxx index 8af3d7710d04..f28824813f78 100644 --- a/include/svx/svdpntv.hxx +++ b/include/svx/svdpntv.hxx @@ -466,6 +466,7 @@ public: virtual bool MouseButtonDown(const MouseEvent& /*rMEvt*/, vcl::Window* /*pWin*/) { return false; } virtual bool MouseButtonUp(const MouseEvent& /*rMEvt*/, vcl::Window* /*pWin*/) { return false; } virtual bool MouseMove(const MouseEvent& /*rMEvt*/, vcl::Window* /*pWin*/) { return false; } + virtual bool RequestHelp(const HelpEvent& /*rHEvt*/) { return false; } virtual bool Command(const CommandEvent& /*rCEvt*/, vcl::Window* /*pWin*/) { return false; } void GetAttributes(SfxItemSet& rTargetSet, bool bOnlyHardAttr) const; diff --git a/include/svx/svdview.hxx b/include/svx/svdview.hxx index a4708917de00..da58f13cb407 100644 --- a/include/svx/svdview.hxx +++ b/include/svx/svdview.hxx @@ -185,6 +185,7 @@ public: virtual bool MouseButtonDown(const MouseEvent& rMEvt, vcl::Window* pWin) override; virtual bool MouseButtonUp(const MouseEvent& rMEvt, vcl::Window* pWin) override; virtual bool MouseMove(const MouseEvent& rMEvt, vcl::Window* pWin) override; + using SdrCreateView::RequestHelp; virtual bool Command(const CommandEvent& rCEvt, vcl::Window* pWin) override; virtual void ConfigurationChanged( utl::ConfigurationBroadcaster*, ConfigurationHints ) override; diff --git a/sd/source/ui/func/fudraw.cxx b/sd/source/ui/func/fudraw.cxx index 6b3872fefdae..2ecc44fe0a20 100644 --- a/sd/source/ui/func/fudraw.cxx +++ b/sd/source/ui/func/fudraw.cxx @@ -765,6 +765,9 @@ bool FuDraw::RequestHelp(const HelpEvent& rHEvt) bReturn = FuPoor::RequestHelp(rHEvt); } + if (!bReturn) + bReturn = mpView->RequestHelp(rHEvt); + return bReturn; } diff --git a/sd/source/ui/view/viewoverlaymanager.cxx b/sd/source/ui/view/viewoverlaymanager.cxx index 0174c2ba27c1..4ce242402c80 100644 --- a/sd/source/ui/view/viewoverlaymanager.cxx +++ b/sd/source/ui/view/viewoverlaymanager.cxx @@ -145,10 +145,12 @@ public: virtual bool isMarkable() const override; virtual void onMouseEnter(const MouseEvent& rMEvt) override; + virtual void onHelpRequest(const HelpEvent& rHEvt) override; virtual void onMouseLeave() override; int getHighlightId() const { return mnHighlightId; } + void ShowTip(); static void HideTip(); private: @@ -176,6 +178,35 @@ void ImageButtonHdl::HideTip() Help::HideBalloonAndQuickHelp(); } +void ImageButtonHdl::ShowTip() +{ + if (!pHdlList || !pHdlList->GetView() || mnHighlightId == -1) + return; + + OutputDevice* pDev = pHdlList->GetView()->GetFirstOutputDevice(); + if( pDev == nullptr ) + pDev = Application::GetDefaultDevice(); + + OUString aHelpText(SdResId(gButtonToolTips[mnHighlightId])); + Point aHelpPos(pDev->LogicToPixel(GetPos())); + if (mnHighlightId == 1) + aHelpPos.Move(maImageSize.Width(), 0); + else if (mnHighlightId == 2) + aHelpPos.Move(0, maImageSize.Height()); + else if (mnHighlightId == 3) + aHelpPos.Move(maImageSize.Width(), maImageSize.Height()); + ::tools::Rectangle aLogicPix(aHelpPos, maImageSize); + vcl::Window* pWindow = static_cast<vcl::Window*>(pHdlList->GetView()->GetFirstOutputDevice()); + ::tools::Rectangle aScreenRect(pWindow->OutputToScreenPixel(aLogicPix.TopLeft()), + pWindow->OutputToScreenPixel(aLogicPix.BottomRight())); + Help::ShowQuickHelp(pWindow, aScreenRect, aHelpText); +} + +void ImageButtonHdl::onHelpRequest(const HelpEvent& /*rHEvt*/) +{ + ShowTip(); +} + void ImageButtonHdl::onMouseEnter(const MouseEvent& rMEvt) { if( pHdlList && pHdlList->GetView()) @@ -197,12 +228,8 @@ void ImageButtonHdl::onMouseEnter(const MouseEvent& rMEvt) mnHighlightId = nHighlightId; - if( pHdlList ) - { - OUString aHelpText(SdResId(gButtonToolTips[mnHighlightId])); - ::tools::Rectangle aScreenRect( pDev->LogicToPixel( GetPos() ), maImageSize ); - Help::ShowQuickHelp(static_cast< vcl::Window* >( pHdlList->GetView()->GetFirstOutputDevice() ), aScreenRect, aHelpText); - } + ShowTip(); + Touch(); } } diff --git a/svx/source/svdraw/svdhdl.cxx b/svx/source/svdraw/svdhdl.cxx index a53725c6ee1e..a15808a367b8 100644 --- a/svx/source/svdraw/svdhdl.cxx +++ b/svx/source/svdraw/svdhdl.cxx @@ -1061,6 +1061,10 @@ void SdrHdl::onMouseEnter(const MouseEvent& /*rMEvt*/) { } +void SdrHdl::onHelpRequest(const HelpEvent& /*rHEvt*/) +{ +} + void SdrHdl::onMouseLeave() { } diff --git a/svx/source/svdraw/svdmrkv.cxx b/svx/source/svdraw/svdmrkv.cxx index 6123ce0e8a98..4126d96b119d 100644 --- a/svx/source/svdraw/svdmrkv.cxx +++ b/svx/source/svdraw/svdmrkv.cxx @@ -1197,6 +1197,25 @@ bool SdrMarkView::MouseMove(const MouseEvent& rMEvt, vcl::Window* pWin) return SdrSnapView::MouseMove(rMEvt, pWin); } +bool SdrMarkView::RequestHelp(const HelpEvent& rHEvt) +{ + if (maHdlList.GetHdlCount()) + { + const size_t nHdlCount = maHdlList.GetHdlCount(); + + for (size_t nHdl = 0; nHdl < nHdlCount; ++nHdl) + { + SdrHdl* pCurrentHdl = GetHdl(nHdl); + if (pCurrentHdl->mbMouseOver) + { + pCurrentHdl->onHelpRequest(rHEvt); + return true; + } + } + } + return SdrSnapView::RequestHelp(rHEvt); +} + void SdrMarkView::ForceRefToMarked() { switch(meDragMode) _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
