##// END OF EJS Templates
Fixed Drag&Drop issue on some platforms and made more consistent plugin install path with Meson...
jeandet -
r1397:348e733132e4
parent child
Show More
@@ -28,9 +28,10 else
28 endif
28 endif
29
29
30 app_libs = []
30 app_libs = []
31
31 cpp_args = []
32 if 'static' == get_option('default_library')
32 if 'static' == get_option('default_library')
33 app_libs = [ sciqlop_amdaplugin, sciqlop_mockplugin]
33 app_libs = [ sciqlop_amdaplugin, sciqlop_mockplugin]
34 cpp_args += ['-DQT_STATICPLUGIN']
34 endif
35 endif
35
36
36 sciqlop_app = executable('sciqlop',
37 sciqlop_app = executable('sciqlop',
@@ -39,7 +40,7 sciqlop_app = executable('sciqlop',
39 rc,
40 rc,
40 include_directories : [ app_inc],
41 include_directories : [ app_inc],
41 link_with: app_libs,
42 link_with: app_libs,
43 cpp_args: cpp_args,
42 dependencies : [sciqlop_gui, sciqlop_core],
44 dependencies : [sciqlop_gui, sciqlop_core],
43 install : true
45 install : true
44 )
46 )
45
@@ -5,7 +5,6 meson --prefix=/usr ..
5 ninja
5 ninja
6 DESTDIR=AppDir ninja install
6 DESTDIR=AppDir ninja install
7 mv AppDir/usr/lib64 AppDir/usr/lib
7 mv AppDir/usr/lib64 AppDir/usr/lib
8 mv AppDir/usr/lib/*plugin.so AppDir/usr/bin/
9 wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage
8 wget https://github.com/probonopd/linuxdeployqt/releases/download/continuous/linuxdeployqt-continuous-x86_64.AppImage
10 chmod +x linuxdeployqt-continuous-x86_64.AppImage && ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract
9 chmod +x linuxdeployqt-continuous-x86_64.AppImage && ./linuxdeployqt-continuous-x86_64.AppImage --appimage-extract
11 LD_LIBRARY_PATH=AppDir/usr/lib64/ ./squashfs-root/AppRun AppDir/usr/share/applications/*.desktop -appimage
10 LD_LIBRARY_PATH=AppDir/usr/lib64/ ./squashfs-root/AppRun AppDir/usr/share/applications/*.desktop -appimage
@@ -16,7 +16,8 Q_LOGGING_CATEGORY(LOG_VisualizationDragDropContainer, "VisualizationDragDropCon
16
16
17 auto DRAGGED_MINIATURE_WIDTH = 200; // in pixels
17 auto DRAGGED_MINIATURE_WIDTH = 200; // in pixels
18
18
19 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate {
19 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate
20 {
20
21
21 QVBoxLayout *m_Layout;
22 QVBoxLayout* m_Layout;
22 QHash<QString, VisualizationDragDropContainer::DropBehavior> m_AcceptedMimeTypes;
23 QHash<QString, VisualizationDragDropContainer::DropBehavior> m_AcceptedMimeTypes;
@@ -40,23 +41,27 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate {
40 bool acceptMimeData(const QMimeData *data) const
41 bool acceptMimeData(const QMimeData* data) const
41 {
42 {
42 auto accepted = false;
43 auto accepted = false;
43 for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd();
44 for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd(); ++it)
44 ++it) {
45 {
45 const auto &type = it.key();
46 const auto& type = it.key();
46 const auto &behavior = it.value();
47 const auto& behavior = it.value();
47
48
48 if (data->hasFormat(type)) {
49 if (data->hasFormat(type))
49 if (behavior != DropBehavior::Forbidden) {
50 {
51 if (behavior != DropBehavior::Forbidden)
52 {
50 accepted = true;
53 accepted = true;
51 }
54 }
52 else {
55 else
56 {
53 accepted = false;
57 accepted = false;
54 break;
58 break;
55 }
59 }
56 }
60 }
57 }
61 }
58
62
59 if (accepted) {
63 if (accepted)
64 {
60 accepted = m_AcceptMimeDataFun(data);
65 accepted = m_AcceptMimeDataFun(data);
61 }
66 }
62
67
@@ -66,17 +71,19 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate {
66 bool allowMergeForMimeData(const QMimeData *data) const
71 bool allowMergeForMimeData(const QMimeData* data) const
67 {
72 {
68 auto result = false;
73 auto result = false;
69 for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd();
74 for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd(); ++it)
70 ++it) {
75 {
71
76
72 if (data->hasFormat(it.key())
77 if (data->hasFormat(it.key())
73 && (it.value() == VisualizationDragDropContainer::DropBehavior::Merged
78 && (it.value() == VisualizationDragDropContainer::DropBehavior::Merged
74 || it.value()
79 || it.value()
75 == VisualizationDragDropContainer::DropBehavior::InsertedAndMerged)) {
80 == VisualizationDragDropContainer::DropBehavior::InsertedAndMerged))
81 {
76 result = true;
82 result = true;
77 }
83 }
78 else if (data->hasFormat(it.key())
84 else if (data->hasFormat(it.key())
79 && it.value() == VisualizationDragDropContainer::DropBehavior::Inserted) {
85 && it.value() == VisualizationDragDropContainer::DropBehavior::Inserted)
86 {
80 // Merge is forbidden if the mime data contain an acceptable type which cannot be
87 // Merge is forbidden if the mime data contain an acceptable type which cannot be
81 // merged
88 // merged
82 result = false;
89 result = false;
@@ -89,12 +96,13 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate {
89
96
90 bool allowInsertForMimeData(const QMimeData *data) const
97 bool allowInsertForMimeData(const QMimeData* data) const
91 {
98 {
92 for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd();
99 for (auto it = m_AcceptedMimeTypes.constBegin(); it != m_AcceptedMimeTypes.constEnd(); ++it)
93 ++it) {
100 {
94 if (data->hasFormat(it.key())
101 if (data->hasFormat(it.key())
95 && (it.value() == VisualizationDragDropContainer::DropBehavior::Inserted
102 && (it.value() == VisualizationDragDropContainer::DropBehavior::Inserted
96 || it.value()
103 || it.value()
97 == VisualizationDragDropContainer::DropBehavior::InsertedAndMerged)) {
104 == VisualizationDragDropContainer::DropBehavior::InsertedAndMerged))
105 {
98 return true;
106 return true;
99 }
107 }
100 }
108 }
@@ -112,10 +120,13 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate {
112 {
120 {
113 VisualizationDragWidget *dragWidget = nullptr;
121 VisualizationDragWidget* dragWidget = nullptr;
114
122
115 for (auto child : parent->children()) {
123 for (auto child : parent->children())
124 {
116 auto widget = qobject_cast<VisualizationDragWidget *>(child);
125 auto widget = qobject_cast<VisualizationDragWidget*>(child);
117 if (widget && widget->isVisible()) {
126 if (widget && widget->isVisible())
118 if (widget->frameGeometry().contains(pos)) {
127 {
128 if (widget->frameGeometry().contains(pos))
129 {
119 dragWidget = widget;
130 dragWidget = widget;
120 break;
131 break;
121 }
132 }
@@ -135,9 +146,12 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate {
135 int countDragWidget(const QWidget *parent, bool onlyVisible = false) const
146 int countDragWidget(const QWidget* parent, bool onlyVisible = false) const
136 {
147 {
137 auto nbGraph = 0;
148 auto nbGraph = 0;
138 for (auto child : parent->children()) {
149 for (auto child : parent->children())
139 if (qobject_cast<VisualizationDragWidget *>(child)) {
150 {
140 if (!onlyVisible || qobject_cast<VisualizationDragWidget *>(child)->isVisible()) {
151 if (qobject_cast<VisualizationDragWidget*>(child))
152 {
153 if (!onlyVisible || qobject_cast<VisualizationDragWidget*>(child)->isVisible())
154 {
141 nbGraph += 1;
155 nbGraph += 1;
142 }
156 }
143 }
157 }
@@ -151,8 +165,8 struct VisualizationDragDropContainer::VisualizationDragDropContainerPrivate {
151 };
165 };
152
166
153 VisualizationDragDropContainer::VisualizationDragDropContainer(QWidget *parent)
167 VisualizationDragDropContainer::VisualizationDragDropContainer(QWidget* parent)
154 : QFrame{parent},
168 : QFrame { parent }
155 impl{spimpl::make_unique_impl<VisualizationDragDropContainerPrivate>(this)}
169 , impl { spimpl::make_unique_impl<VisualizationDragDropContainerPrivate>(this) }
156 {
170 {
157 setAcceptDrops(true);
171 setAcceptDrops(true);
158 }
172 }
@@ -165,8 +179,8 void VisualizationDragDropContainer::addDragWidget(VisualizationDragWidget *drag
165 &VisualizationDragDropContainer::startDrag);
179 &VisualizationDragDropContainer::startDrag);
166 }
180 }
167
181
168 void VisualizationDragDropContainer::insertDragWidget(int index,
182 void VisualizationDragDropContainer::insertDragWidget(
169 VisualizationDragWidget *dragWidget)
183 int index, VisualizationDragWidget* dragWidget)
170 {
184 {
171 impl->m_Layout->insertWidget(index, dragWidget);
185 impl->m_Layout->insertWidget(index, dragWidget);
172 disconnect(dragWidget, &VisualizationDragWidget::dragDetected, nullptr, nullptr);
186 disconnect(dragWidget, &VisualizationDragWidget::dragDetected, nullptr, nullptr);
@@ -197,15 +211,15 void VisualizationDragDropContainer::setAcceptDragWidgetFunction(
197 impl->m_AcceptDragWidgetFun = fun;
211 impl->m_AcceptDragWidgetFun = fun;
198 }
212 }
199
213
200 void VisualizationDragDropContainer::setPlaceHolderType(DragDropGuiController::PlaceHolderType type,
214 void VisualizationDragDropContainer::setPlaceHolderType(
201 const QString &placeHolderText)
215 DragDropGuiController::PlaceHolderType type, const QString& placeHolderText)
202 {
216 {
203 impl->m_PlaceHolderType = type;
217 impl->m_PlaceHolderType = type;
204 impl->m_PlaceHolderText = placeHolderText;
218 impl->m_PlaceHolderText = placeHolderText;
205 }
219 }
206
220
207 void VisualizationDragDropContainer::startDrag(VisualizationDragWidget *dragWidget,
221 void VisualizationDragDropContainer::startDrag(
208 const QPoint &dragPosition)
222 VisualizationDragWidget* dragWidget, const QPoint& dragPosition)
209 {
223 {
210 auto &helper = sqpApp->dragDropGuiController();
224 auto& helper = sqpApp->dragDropGuiController();
211 helper.resetDragAndDrop();
225 helper.resetDragAndDrop();
@@ -217,7 +231,8 void VisualizationDragDropContainer::startDrag(VisualizationDragWidget *dragWidg
217 drag->setMimeData(mimeData);
231 drag->setMimeData(mimeData);
218
232
219 auto pixmap = dragWidget->customDragPixmap(dragPosition);
233 auto pixmap = dragWidget->customDragPixmap(dragPosition);
220 if (pixmap.isNull()) {
234 if (pixmap.isNull())
235 {
221 pixmap = QPixmap{dragWidget->size()};
236 pixmap = QPixmap { dragWidget->size() };
222 dragWidget->render(&pixmap);
237 dragWidget->render(&pixmap);
223 }
238 }
@@ -229,18 +244,22 void VisualizationDragDropContainer::startDrag(VisualizationDragWidget *dragWidg
229 mimeData->setImageData(image);
244 mimeData->setImageData(image);
230 mimeData->setUrls({helper.imageTemporaryUrl(image)});
245 mimeData->setUrls({ helper.imageTemporaryUrl(image) });
231
246
232 if (impl->m_Layout->indexOf(dragWidget) >= 0) {
247 if (impl->m_Layout->indexOf(dragWidget) >= 0)
248 {
233
249
234 if (impl->acceptMimeData(mimeData) && impl->allowInsertForMimeData(mimeData)) {
250 if (impl->acceptMimeData(mimeData) && impl->allowInsertForMimeData(mimeData))
251 {
235 helper.setCurrentDragWidget(dragWidget);
252 helper.setCurrentDragWidget(dragWidget);
236
253
237 if (impl->cursorIsInContainer(this)) {
254 if (impl->cursorIsInContainer(this))
255 {
238 auto dragWidgetIndex = impl->m_Layout->indexOf(dragWidget);
256 auto dragWidgetIndex = impl->m_Layout->indexOf(dragWidget);
239 helper.insertPlaceHolder(impl->m_Layout, dragWidgetIndex, impl->m_PlaceHolderType,
257 helper.insertPlaceHolder(impl->m_Layout, dragWidgetIndex, impl->m_PlaceHolderType,
240 impl->m_PlaceHolderText);
258 impl->m_PlaceHolderText);
241 dragWidget->setVisible(false);
259 dragWidget->setVisible(false);
242 }
260 }
243 else {
261 else
262 {
244 // The drag starts directly outside the drop zone
263 // The drag starts directly outside the drop zone
245 // do not add the placeHolder
264 // do not add the placeHolder
246 }
265 }
@@ -250,7 +269,8 void VisualizationDragDropContainer::startDrag(VisualizationDragWidget *dragWidg
250
269
251 helper.doCloseWidgets();
270 helper.doCloseWidgets();
252 }
271 }
253 else {
272 else
273 {
254 qCWarning(LOG_VisualizationDragDropContainer())
274 qCWarning(LOG_VisualizationDragDropContainer())
255 << tr("VisualizationDragDropContainer::startDrag, drag aborted, the specified "
275 << tr("VisualizationDragDropContainer::startDrag, drag aborted, the specified "
256 "VisualizationDragWidget is not found in this container.");
276 "VisualizationDragWidget is not found in this container.");
@@ -259,36 +279,43 void VisualizationDragDropContainer::startDrag(VisualizationDragWidget *dragWidg
259
279
260 void VisualizationDragDropContainer::dragEnterEvent(QDragEnterEvent *event)
280 void VisualizationDragDropContainer::dragEnterEvent(QDragEnterEvent* event)
261 {
281 {
262 if (impl->acceptMimeData(event->mimeData())) {
282 if (impl->acceptMimeData(event->mimeData()))
283 {
263 event->acceptProposedAction();
284 event->acceptProposedAction();
264
285
265 auto &helper = sqpApp->dragDropGuiController();
286 auto& helper = sqpApp->dragDropGuiController();
266
287
267 if (!impl->hasPlaceHolder()) {
288 if (!impl->hasPlaceHolder())
289 {
268 auto dragWidget = helper.getCurrentDragWidget();
290 auto dragWidget = helper.getCurrentDragWidget();
269
291
270 if (dragWidget) {
292 if (dragWidget)
293 {
271 // If the drag&drop is internal to the visualization, entering the container hide
294 // If the drag&drop is internal to the visualization, entering the container hide
272 // the dragWidget which was made visible by the dragLeaveEvent
295 // the dragWidget which was made visible by the dragLeaveEvent
273 auto parentWidget
296 auto parentWidget
274 = qobject_cast<VisualizationDragDropContainer *>(dragWidget->parentWidget());
297 = qobject_cast<VisualizationDragDropContainer*>(dragWidget->parentWidget());
275 if (parentWidget) {
298 if (parentWidget)
299 {
276 dragWidget->setVisible(false);
300 dragWidget->setVisible(false);
277 }
301 }
278 }
302 }
279
303
280 auto canMerge = impl->allowMergeForMimeData(event->mimeData());
304 auto canMerge = impl->allowMergeForMimeData(event->mimeData());
281 auto canInsert = impl->allowInsertForMimeData(event->mimeData());
305 auto canInsert = impl->allowInsertForMimeData(event->mimeData());
282 if (!impl->findPlaceHolderPosition(event->pos(), event->mimeData(), canInsert, canMerge,
306 if (!impl->findPlaceHolderPosition(
283 this)) {
307 event->pos(), event->mimeData(), canInsert, canMerge, this))
308 {
284 event->ignore();
309 event->ignore();
285 }
310 }
286 }
311 }
287 else {
312 else
313 {
288 // do nothing
314 // do nothing
289 }
315 }
290 }
316 }
291 else {
317 else
318 {
292 event->ignore();
319 event->ignore();
293 }
320 }
294
321
@@ -301,24 +328,28 void VisualizationDragDropContainer::dragLeaveEvent(QDragLeaveEvent *event)
301
328
302 auto &helper = sqpApp->dragDropGuiController();
329 auto& helper = sqpApp->dragDropGuiController();
303
330
304 if (!impl->cursorIsInContainer(this)) {
331 if (!impl->cursorIsInContainer(this))
332 {
305 helper.removePlaceHolder();
333 helper.removePlaceHolder();
306 helper.setHightlightedDragWidget(nullptr);
334 helper.setHightlightedDragWidget(nullptr);
307 impl->m_MinContainerHeight = 0;
335 impl->m_MinContainerHeight = 0;
308
336
309 auto dragWidget = helper.getCurrentDragWidget();
337 auto dragWidget = helper.getCurrentDragWidget();
310 if (dragWidget) {
338 if (dragWidget)
339 {
311 // dragWidget has a value only if the drag is started from the visualization
340 // dragWidget has a value only if the drag is started from the visualization
312 // In that case, shows the drag widget at its original place
341 // In that case, shows the drag widget at its original place
313 // So the drag widget doesn't stay hidden if the drop occurs outside the visualization
342 // So the drag widget doesn't stay hidden if the drop occurs outside the visualization
314 // drop zone (It is not possible to catch a drop event outside of the application)
343 // drop zone (It is not possible to catch a drop event outside of the application)
315
344
316 if (dragWidget) {
345 if (dragWidget)
346 {
317 dragWidget->setVisible(true);
347 dragWidget->setVisible(true);
318 }
348 }
319 }
349 }
320 }
350 }
321 else {
351 else
352 {
322 // Leave event probably received for a child widget.
353 // Leave event probably received for a child widget.
323 // Do nothing.
354 // Do nothing.
324 // Note: The DragLeave event, doesn't have any mean to determine who sent it.
355 // Note: The DragLeave event, doesn't have any mean to determine who sent it.
@@ -329,12 +360,15 void VisualizationDragDropContainer::dragLeaveEvent(QDragLeaveEvent *event)
329
360
330 void VisualizationDragDropContainer::dragMoveEvent(QDragMoveEvent *event)
361 void VisualizationDragDropContainer::dragMoveEvent(QDragMoveEvent* event)
331 {
362 {
332 if (impl->acceptMimeData(event->mimeData())) {
363 if (impl->acceptMimeData(event->mimeData()))
364 {
365 event->acceptProposedAction();
333 auto canMerge = impl->allowMergeForMimeData(event->mimeData());
366 auto canMerge = impl->allowMergeForMimeData(event->mimeData());
334 auto canInsert = impl->allowInsertForMimeData(event->mimeData());
367 auto canInsert = impl->allowInsertForMimeData(event->mimeData());
335 impl->findPlaceHolderPosition(event->pos(), event->mimeData(), canInsert, canMerge, this);
368 impl->findPlaceHolderPosition(event->pos(), event->mimeData(), canInsert, canMerge, this);
336 }
369 }
337 else {
370 else
371 {
338 event->ignore();
372 event->ignore();
339 }
373 }
340
374
@@ -345,18 +379,23 void VisualizationDragDropContainer::dropEvent(QDropEvent *event)
345 {
379 {
346 auto &helper = sqpApp->dragDropGuiController();
380 auto& helper = sqpApp->dragDropGuiController();
347
381
348 if (impl->acceptMimeData(event->mimeData())) {
382 if (impl->acceptMimeData(event->mimeData()))
383 {
349 auto dragWidget = helper.getCurrentDragWidget();
384 auto dragWidget = helper.getCurrentDragWidget();
350 if (impl->hasPlaceHolder()) {
385 if (impl->hasPlaceHolder())
386 {
351 // drop where the placeHolder is located
387 // drop where the placeHolder is located
352
388
353 auto canInsert = impl->allowInsertForMimeData(event->mimeData());
389 auto canInsert = impl->allowInsertForMimeData(event->mimeData());
354 if (canInsert) {
390 if (canInsert)
391 {
355 auto droppedIndex = impl->m_Layout->indexOf(&helper.placeHolder());
392 auto droppedIndex = impl->m_Layout->indexOf(&helper.placeHolder());
356
393
357 if (dragWidget) {
394 if (dragWidget)
395 {
358 auto dragWidgetIndex = impl->m_Layout->indexOf(dragWidget);
396 auto dragWidgetIndex = impl->m_Layout->indexOf(dragWidget);
359 if (dragWidgetIndex >= 0 && dragWidgetIndex < droppedIndex) {
397 if (dragWidgetIndex >= 0 && dragWidgetIndex < droppedIndex)
398 {
360 // Correction of the index if the drop occurs in the same container
399 // Correction of the index if the drop occurs in the same container
361 // and if the drag is started from the visualization (in that case, the
400 // and if the drag is started from the visualization (in that case, the
362 // dragWidget is hidden)
401 // dragWidget is hidden)
@@ -372,22 +411,26 void VisualizationDragDropContainer::dropEvent(QDropEvent *event)
372
411
373 emit dropOccuredInContainer(droppedIndex, event->mimeData());
412 emit dropOccuredInContainer(droppedIndex, event->mimeData());
374 }
413 }
375 else {
414 else
415 {
376 qCWarning(LOG_VisualizationDragDropContainer()) << tr(
416 qCWarning(LOG_VisualizationDragDropContainer()) << tr(
377 "VisualizationDragDropContainer::dropEvent, dropping on the placeHolder, but "
417 "VisualizationDragDropContainer::dropEvent, dropping on the placeHolder, but "
378 "the insertion is forbidden.");
418 "the insertion is forbidden.");
379 Q_ASSERT(false);
419 Q_ASSERT(false);
380 }
420 }
381 }
421 }
382 else if (helper.getHightlightedDragWidget()) {
422 else if (helper.getHightlightedDragWidget())
423 {
383 // drop on the highlighted widget
424 // drop on the highlighted widget
384
425
385 auto canMerge = impl->allowMergeForMimeData(event->mimeData());
426 auto canMerge = impl->allowMergeForMimeData(event->mimeData());
386 if (canMerge) {
427 if (canMerge)
428 {
387 event->acceptProposedAction();
429 event->acceptProposedAction();
388 emit dropOccuredOnWidget(helper.getHightlightedDragWidget(), event->mimeData());
430 emit dropOccuredOnWidget(helper.getHightlightedDragWidget(), event->mimeData());
389 }
431 }
390 else {
432 else
433 {
391 qCWarning(LOG_VisualizationDragDropContainer())
434 qCWarning(LOG_VisualizationDragDropContainer())
392 << tr("VisualizationDragDropContainer::dropEvent, dropping on a widget, but "
435 << tr("VisualizationDragDropContainer::dropEvent, dropping on a widget, but "
393 "the merge is forbidden.");
436 "the merge is forbidden.");
@@ -395,7 +438,8 void VisualizationDragDropContainer::dropEvent(QDropEvent *event)
395 }
438 }
396 }
439 }
397 }
440 }
398 else {
441 else
442 {
399 event->ignore();
443 event->ignore();
400 }
444 }
401
445
@@ -415,15 +459,19 bool VisualizationDragDropContainer::VisualizationDragDropContainerPrivate::find
415 auto absPos = container->mapToGlobal(pos);
459 auto absPos = container->mapToGlobal(pos);
416 auto isOnPlaceHolder = helper.placeHolder().isAncestorOf(sqpApp->widgetAt(absPos));
460 auto isOnPlaceHolder = helper.placeHolder().isAncestorOf(sqpApp->widgetAt(absPos));
417
461
418 if (countDragWidget(container, true) == 0) {
462 if (countDragWidget(container, true) == 0)
463 {
419 // Drop on an empty container, just add the placeHolder at the top
464 // Drop on an empty container, just add the placeHolder at the top
420 helper.insertPlaceHolder(m_Layout, 0, m_PlaceHolderType, m_PlaceHolderText);
465 helper.insertPlaceHolder(m_Layout, 0, m_PlaceHolderType, m_PlaceHolderText);
421 }
466 }
422 else if (!isOnPlaceHolder) {
467 else if (!isOnPlaceHolder)
468 {
423 auto nbDragWidget = countDragWidget(container);
469 auto nbDragWidget = countDragWidget(container);
424 if (nbDragWidget > 0) {
470 if (nbDragWidget > 0)
471 {
425
472
426 if (m_MinContainerHeight == 0) {
473 if (m_MinContainerHeight == 0)
474 {
427 m_MinContainerHeight = container->size().height();
475 m_MinContainerHeight = container->size().height();
428 }
476 }
429
477
@@ -444,14 +492,18 bool VisualizationDragDropContainer::VisualizationDragDropContainerPrivate::find
444
492
445 auto acceptMerge = m_AcceptDragWidgetFun(dragWidgetHovered, mimeData);
493 auto acceptMerge = m_AcceptDragWidgetFun(dragWidgetHovered, mimeData);
446
494
447 if (canInsert && (isOnTop || isOnBottom || !canMerge || !acceptMerge)) {
495 if (canInsert && (isOnTop || isOnBottom || !canMerge || !acceptMerge))
448 if (posY > (dropIndex + 1) * graphHeight - graphHeight / 2.0) {
496 {
497 if (posY > (dropIndex + 1) * graphHeight - graphHeight / 2.0)
498 {
449 dropIndex += 1;
499 dropIndex += 1;
450 }
500 }
451
501
452 if (helper.getCurrentDragWidget()) {
502 if (helper.getCurrentDragWidget())
503 {
453 auto dragWidgetIndex = m_Layout->indexOf(helper.getCurrentDragWidget());
504 auto dragWidgetIndex = m_Layout->indexOf(helper.getCurrentDragWidget());
454 if (dragWidgetIndex >= 0 && dragWidgetIndex <= dropIndex) {
505 if (dragWidgetIndex >= 0 && dragWidgetIndex <= dropIndex)
506 {
455 // Correction of the index if the drop occurs in the same container
507 // Correction of the index if the drop occurs in the same container
456 // and if the drag is started from the visualization (in that case, the
508 // and if the drag is started from the visualization (in that case, the
457 // dragWidget is hidden)
509 // dragWidget is hidden)
@@ -459,35 +511,41 bool VisualizationDragDropContainer::VisualizationDragDropContainerPrivate::find
459 }
511 }
460 }
512 }
461
513
462 if (dropIndex != placeHolderIndex) {
514 if (dropIndex != placeHolderIndex)
463 helper.insertPlaceHolder(m_Layout, dropIndex, m_PlaceHolderType,
515 {
464 m_PlaceHolderText);
516 helper.insertPlaceHolder(
517 m_Layout, dropIndex, m_PlaceHolderType, m_PlaceHolderText);
465 }
518 }
466
519
467 helper.setHightlightedDragWidget(nullptr);
520 helper.setHightlightedDragWidget(nullptr);
468 }
521 }
469 else if (canMerge && dragWidgetHovered) {
522 else if (canMerge && dragWidgetHovered)
523 {
470 // drop on the middle -> merge
524 // drop on the middle -> merge
471 if (hasPlaceHolder()) {
525 if (hasPlaceHolder())
526 {
472 helper.removePlaceHolder();
527 helper.removePlaceHolder();
473 }
528 }
474
529
475 helper.setHightlightedDragWidget(dragWidgetHovered);
530 helper.setHightlightedDragWidget(dragWidgetHovered);
476 }
531 }
477 else {
532 else
533 {
478 qCWarning(LOG_VisualizationDragDropContainer())
534 qCWarning(LOG_VisualizationDragDropContainer())
479 << tr("VisualizationDragDropContainer::findPlaceHolderPosition, no valid drop "
535 << tr("VisualizationDragDropContainer::findPlaceHolderPosition, no valid drop "
480 "action.");
536 "action.");
481 }
537 }
482 }
538 }
483 else {
539 else
540 {
484 qCInfo(LOG_VisualizationDragDropContainer())
541 qCInfo(LOG_VisualizationDragDropContainer())
485 << tr("VisualizationDragDropContainer::findPlaceHolderPosition, no widget "
542 << tr("VisualizationDragDropContainer::findPlaceHolderPosition, no widget "
486 "found in the "
543 "found in the "
487 "container");
544 "container");
488 }
545 }
489 }
546 }
490 else {
547 else
548 {
491 // the mouse is hover the placeHolder
549 // the mouse is hover the placeHolder
492 // Do nothing
550 // Do nothing
493 }
551 }
1 NO CONTENT: modified file
NO CONTENT: modified file
@@ -30,13 +30,21 amdaplugin_prep_files = qt5.preprocess(moc_headers : amdaplugin_moc_headers,
30 qresources : amdaplugin_resources_files,
30 qresources : amdaplugin_resources_files,
31 ui_files : amdaplugin_ui_files)
31 ui_files : amdaplugin_ui_files)
32
32
33 cpp_args = ['-DAMDA_LIB','-DQT_PLUGIN']
34 message('======================='+get_option('default_library')+'==========================')
35 if(get_option('default_library') == 'static')
36 message('building amda plugin as static lib')
37 cpp_args += ['-DQT_STATICPLUGIN']
38 endif
39
33 sciqlop_amdaplugin = library('amdaplugin',
40 sciqlop_amdaplugin = library('amdaplugin',
34 amdaplugin_sources,
41 amdaplugin_sources,
35 amdaplugin_prep_files,
42 amdaplugin_prep_files,
36 cpp_args : ['-DAMDA_LIB','-DQT_PLUGIN'],
43 cpp_args : cpp_args,
37 include_directories : [amdaplugin_inc],
44 include_directories : [amdaplugin_inc],
38 dependencies : [sciqlop_core, sciqlop_gui],
45 dependencies : [sciqlop_core, sciqlop_gui],
39 install : true
46 install : true,
47 install_dir : join_paths(get_option('libdir'), 'SciQLop')
40 )
48 )
41
49
42
50
@@ -22,11 +22,17 gen = generator(moc,
22
22
23 mockplugin_moc_files = gen.process(mockplugin_moc_headers)
23 mockplugin_moc_files = gen.process(mockplugin_moc_headers)
24
24
25 cpp_args = ['-DMOCKPLUGIN_LIB','-DQT_PLUGIN']
26 if(get_option('default_library')=='static')
27 cpp_args += ['-DQT_STATICPLUGIN']
28 endif
29
25 sciqlop_mockplugin = library('mockplugin',
30 sciqlop_mockplugin = library('mockplugin',
26 mockplugin_sources,
31 mockplugin_sources,
27 mockplugin_moc_files,
32 mockplugin_moc_files,
28 cpp_args : '-DMOCKPLUGIN_LIB',
33 cpp_args : cpp_args,
29 include_directories : [mockplugin_inc],
34 include_directories : [mockplugin_inc],
30 dependencies : [sciqlop_core, sciqlop_gui],
35 dependencies : [sciqlop_core, sciqlop_gui],
31 install : true
36 install : true,
37 install_dir : join_paths(get_option('libdir'), 'SciQLop')
32 )
38 )
General Comments 0
You need to be logged in to leave comments. Login now