Skip to content

Commit a25e798

Browse files
committed
Enable panning during node move interactions.
1 parent 393407e commit a25e798

6 files changed

Lines changed: 161 additions & 13 deletions

Sources/NodeEngineTest/NodeEditorVisualTest.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -600,4 +600,38 @@ TEST (NodeOrderTest)
600600
}
601601
}
602602

603+
TEST (MultiMouseMoveHandlerTest)
604+
{
605+
NodeEditorTestEnv env (GetDefaultSkinParams ());
606+
Point padding (10.0, 10.0);
607+
608+
{ // create two nodes
609+
env.nodeEditor.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L"Number 1"), Point (100.0, 100.0), 0.0, 1.0)));
610+
env.nodeEditor.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L"Number 2"), Point (250.0, 250.0), 0.0, 1.0)));
611+
ASSERT (env.CheckReference (L"MultiMouseMoveHandlerTest_Initial.svg"));
612+
}
613+
614+
Point mousePosition;
615+
{ // start dragging number 2
616+
mousePosition = env.GetNodeRect (env.GetNode (L"Number 2")).GetTopLeft () + padding;
617+
env.nodeEditor.OnMouseDown (EmptyModifierKeys, MouseButton::Left, (int) mousePosition.GetX (), (int) mousePosition.GetY ());
618+
mousePosition = mousePosition + Point (100, 0);
619+
env.nodeEditor.OnMouseMove (EmptyModifierKeys, (int) mousePosition.GetX (), (int) mousePosition.GetY ());
620+
ASSERT (env.CheckReference (L"MultiMouseMoveHandlerTest_Number2Dragging.svg"));
621+
}
622+
623+
{ // start panning the canvas
624+
env.nodeEditor.OnMouseDown (EmptyModifierKeys, MouseButton::Right, (int) mousePosition.GetX (), (int) mousePosition.GetY ());
625+
mousePosition = mousePosition + Point (0, 50);
626+
env.nodeEditor.OnMouseMove (EmptyModifierKeys, (int) mousePosition.GetX (), (int) mousePosition.GetY ());
627+
ASSERT (env.CheckReference (L"MultiMouseMoveHandlerTest_Number2DraggingAndPanning.svg"));
628+
}
629+
630+
{ // release mouse buttons
631+
env.nodeEditor.OnMouseUp (EmptyModifierKeys, MouseButton::Right, (int) mousePosition.GetX (), (int) mousePosition.GetY ());
632+
env.nodeEditor.OnMouseUp (EmptyModifierKeys, MouseButton::Left, (int) mousePosition.GetX (), (int) mousePosition.GetY ());
633+
ASSERT (env.CheckReference (L"MultiMouseMoveHandlerTest_Final.svg"));
634+
}
635+
}
636+
603637
}
Lines changed: 31 additions & 0 deletions
Loading
Lines changed: 31 additions & 0 deletions
Loading
Lines changed: 31 additions & 0 deletions
Loading
Lines changed: 31 additions & 0 deletions
Loading

Sources/NodeUIEngine/NUIE_InteractionHandler.cpp

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,6 @@ class NodeMovingHandler : public MouseMoveHandler
120120

121121
}
122122

123-
virtual bool AreOtherHandlersAllowed () const override
124-
{
125-
return false;
126-
}
127-
128123
virtual void HandleMouseDown (NodeUIEnvironment&, const ModifierKeys&, const Point& position) override
129124
{
130125
const ViewBox& viewBox = uiManager.GetViewBox ();
@@ -195,11 +190,6 @@ class NodeCopyMovingHandler : public MouseMoveHandler
195190
});
196191
}
197192

198-
virtual bool AreOtherHandlersAllowed () const override
199-
{
200-
return false;
201-
}
202-
203193
virtual void HandleMouseDown (NodeUIEnvironment&, const ModifierKeys&, const Point& position) override
204194
{
205195
const ViewBox& viewBox = uiManager.GetViewBox ();
@@ -591,10 +581,10 @@ EventHandlerResult InteractionHandler::HandleMouseDragStart (NodeUIEnvironment&
591581
multiMouseMoveHandler.AddHandler (mouseButton, new PanningHandler (uiManager));
592582
}
593583

594-
multiMouseMoveHandler.EnumerateHandlers ([&] (const std::shared_ptr<MouseMoveHandler>& handler) {
595-
handler->OnMouseDown (uiEnvironment, modifierKeys, position);
584+
if (multiMouseMoveHandler.HasHandler (mouseButton)) {
585+
multiMouseMoveHandler.GetHandler (mouseButton)->OnMouseDown (uiEnvironment, modifierKeys, position);
596586
handlerResult = EventHandlerResult::EventHandled;
597-
});
587+
}
598588

599589
return handlerResult;
600590
}

0 commit comments

Comments
 (0)