MCPcopy Create free account
hub / github.com/MyGUI/mygui / updateDrag

Method updateDrag

UnitTests/UnitTest_GraphView/BaseGraphView.h:305–371  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

303 }
304
305 void updateDrag(BaseGraphConnection* _connection) override
306 {
307 if (mIsDrug)
308 {
309 // нод откуда тянется не всегда может быть сендером
310 _connection = mConnectionStart;
311
312 const MyGUI::IntPoint& mouse = MyGUI::InputManager::getInstance().getMousePosition();
313 //const MyGUI::IntCoord& coord = _node->getAbsoluteCoord();
314 mDrugLine.point_end.set(mouse.left - mCanvas->getAbsoluteLeft(), mouse.top - mCanvas->getAbsoluteTop());
315
316 // устанавлваем длинну загиба от дистанции
317 double distance = ((mDrugLine.point_end.left - mDrugLine.point_start.left) *
318 (mDrugLine.point_end.left - mDrugLine.point_start.left)) +
319 ((mDrugLine.point_end.top - mDrugLine.point_start.top) *
320 (mDrugLine.point_end.top - mDrugLine.point_start.top));
321 distance = std::sqrt(distance);
322
323 mDrugLine.start_offset = _connection->getOffset();
324
325 const int offset = 30;
326 distance *= 0.5;
327 if (distance < 1)
328 distance = 1;
329 else if (distance > offset)
330 distance = offset;
331 if (mDrugLine.start_offset.height != 0)
332 {
333 if (mDrugLine.start_offset.height < 0)
334 mDrugLine.start_offset.height = -(int)distance;
335 else
336 mDrugLine.start_offset.height = (int)distance;
337 }
338 if (mDrugLine.start_offset.width != 0)
339 {
340 if (mDrugLine.start_offset.width < 0)
341 mDrugLine.start_offset.width = -(int)distance;
342 else
343 mDrugLine.start_offset.width = (int)distance;
344 }
345
346 // пикаем виджет под нами
347 MyGUI::Widget* widget = MyGUI::LayerManager::getInstance().getWidgetFromPoint(mouse.left, mouse.top);
348 if (widget != nullptr)
349 {
350 BaseGraphConnection** connection = widget->getUserData<BaseGraphConnection*>(false);
351 if (connection != nullptr)
352 {
353 bool accept = requestConnectToPoint(_connection, *connection);
354 if (accept)
355 mDrugLine.colour = MyGUI::Colour::Green;
356 else
357 mDrugLine.colour = MyGUI::Colour::Red;
358 }
359 else
360 {
361 mDrugLine.colour = MyGUI::Colour::White;
362 }

Callers 1

notifyMouseDragMethod · 0.80

Calls 4

getOffsetMethod · 0.80
getWidgetFromPointMethod · 0.80
getMousePositionMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected