changeset 2352:32d1ef594704 refactoring

simplified IViewportInteractor::HandleMouseHover()
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 06 Oct 2026 20:45:26 +0200
parents a7a9457a07c6
children d8a6f6296d3b
files Applications/Samples/Common/SimpleViewerCore.cpp Applications/Samples/Sdl/SingleViewportSdlApplication.cpp Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp OrthancStone/Sources/Platforms/WebAssembly/WebAssemblyViewport.cpp OrthancStone/Sources/Scene2DViewport/MeasureTool.h OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp OrthancStone/Sources/Viewport/DefaultViewportInteractor.h OrthancStone/Sources/Viewport/IViewportInteractor.h
diffstat 8 files changed, 15 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/Applications/Samples/Common/SimpleViewerCore.cpp	Tue Oct 06 18:34:56 2026 +0200
+++ b/Applications/Samples/Common/SimpleViewerCore.cpp	Tue Oct 06 20:45:26 2026 +0200
@@ -187,11 +187,10 @@
       return true;
     }
 
-    virtual void HandleMouseHover(IViewport::ILock& viewportLock,
+    virtual void HandleMouseHover(Scene2D& scene,
                                   const PointerEvent& event) ORTHANC_OVERRIDE
     {
-      annotations_->SetMouseHover(event.GetMainPosition(), viewportLock.GetController().GetScene());
-      viewportLock.Invalidate();
+      annotations_->SetMouseHover(event.GetMainPosition(), scene);
     }
   };
 
--- a/Applications/Samples/Sdl/SingleViewportSdlApplication.cpp	Tue Oct 06 18:34:56 2026 +0200
+++ b/Applications/Samples/Sdl/SingleViewportSdlApplication.cpp	Tue Oct 06 20:45:26 2026 +0200
@@ -132,7 +132,7 @@
               }
               else if (interactor->HasMouseHover())
               {
-                interactor->HandleMouseHover(*viewportLock, p);
+                interactor->HandleMouseHover(viewportLock->GetController().GetScene(), p);
                 viewportLock->Invalidate();
               }
               break;
--- a/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp	Tue Oct 06 18:34:56 2026 +0200
+++ b/Applications/StoneWebViewer/WebAssembly/StoneWebViewer.cpp	Tue Oct 06 20:45:26 2026 +0200
@@ -4047,12 +4047,11 @@
       return true;
     }
 
-    virtual void HandleMouseHover(OrthancStone::IViewport::ILock& viewportLock,
+    virtual void HandleMouseHover(OrthancStone::Scene2D& scene,
                                   const OrthancStone::PointerEvent& event) ORTHANC_OVERRIDE
     {
-      viewer_.stoneAnnotations_->SetMouseHover(event.GetMainPosition(), viewportLock.GetController().GetScene());
-      viewer_.stoneAnnotations_->Render(viewportLock.GetController().GetScene());
-      viewportLock.Invalidate();
+      viewer_.stoneAnnotations_->SetMouseHover(event.GetMainPosition(), scene);
+      viewer_.stoneAnnotations_->Render(scene);
     }
   };
   
--- a/OrthancStone/Sources/Platforms/WebAssembly/WebAssemblyViewport.cpp	Tue Oct 06 18:34:56 2026 +0200
+++ b/OrthancStone/Sources/Platforms/WebAssembly/WebAssemblyViewport.cpp	Tue Oct 06 20:45:26 2026 +0200
@@ -205,9 +205,11 @@
         PointerEvent pointer;
         ConvertMouseEvent(pointer, *mouseEvent, *that->compositor_);      
 
+        that->interactor_->HandleMouseHover(that->controller_->GetScene(), pointer);
+
         {
           WebAssemblyViewport::WasmLock lock(*that);
-          that->interactor_->HandleMouseHover(lock, pointer);
+          lock.Invalidate();
         }
       }
     }
--- a/OrthancStone/Sources/Scene2DViewport/MeasureTool.h	Tue Oct 06 18:34:56 2026 +0200
+++ b/OrthancStone/Sources/Scene2DViewport/MeasureTool.h	Tue Oct 06 20:45:26 2026 +0200
@@ -29,6 +29,7 @@
 #include "../Scene2D/TextSceneLayer.h"
 #include "../Scene2DViewport/PredeclaredTypes.h"
 #include "../Scene2DViewport/ViewportController.h"
+#include "../Viewport/IViewport.h"
 
 #include <boost/weak_ptr.hpp>
 
--- a/OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp	Tue Oct 06 18:34:56 2026 +0200
+++ b/OrthancStone/Sources/Viewport/DefaultViewportInteractor.cpp	Tue Oct 06 20:45:26 2026 +0200
@@ -127,7 +127,7 @@
   }
 
 
-  void DefaultViewportInteractor::HandleMouseHover(IViewport::ILock& viewportLock,
+  void DefaultViewportInteractor::HandleMouseHover(Scene2D& scene,
                                                    const PointerEvent& event)
   {
     // "HasMouseOver()" returns "false"
--- a/OrthancStone/Sources/Viewport/DefaultViewportInteractor.h	Tue Oct 06 18:34:56 2026 +0200
+++ b/OrthancStone/Sources/Viewport/DefaultViewportInteractor.h	Tue Oct 06 20:45:26 2026 +0200
@@ -105,7 +105,7 @@
       return false;
     }
 
-    virtual void HandleMouseHover(IViewport::ILock& viewportLock,
+    virtual void HandleMouseHover(Scene2D& scene,
                                   const PointerEvent& event) ORTHANC_OVERRIDE;
 
     void SetGrayscaleWindowingObserverFactory(GrayscaleWindowingSceneTracker::IObserverFactory* factory /* takes ownership */);
--- a/OrthancStone/Sources/Viewport/IViewportInteractor.h	Tue Oct 06 18:34:56 2026 +0200
+++ b/OrthancStone/Sources/Viewport/IViewportInteractor.h	Tue Oct 06 20:45:26 2026 +0200
@@ -22,7 +22,6 @@
 
 #pragma once
 
-#include "IViewport.h"
 #include "../Scene2DViewport/IFlexiblePointerTracker.h"
 
 namespace OrthancStone
@@ -41,7 +40,8 @@
 
     virtual bool HasMouseHover() const = 0;
 
-    virtual void HandleMouseHover(IViewport::ILock& viewportLock,
-                                  const PointerEvent& event) = 0;  // TODO Refactoring - Should return "true" to invalidate
+    // TODO Refactoring - Could this be called only if change in hover?
+    virtual void HandleMouseHover(Scene2D& scene,
+                                  const PointerEvent& event) = 0;
   };
 }