Skip to content

Commit b9257bb

Browse files
author
Uwe Kindler
committed
Some small fixes to ignore title bar docking if we are over a container drop indicator - this caused come confusion during docking
1 parent 52c23da commit b9257bb

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

.settings/language.settings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<project>
33
<configuration id="cdt.managedbuild.toolchain.gnu.mingw.base.1119687795" name="Default">
44
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
5-
<provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="-445604897520096165" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD -std=c++14 &quot;${INPUTS}&quot;" prefer-non-shared="true">
5+
<provider class="org.eclipse.cdt.managedbuilder.internal.language.settings.providers.GCCBuiltinSpecsDetectorMinGW" console="false" env-hash="-633788812842026300" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetectorMinGW" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings MinGW" parameter="${COMMAND} ${FLAGS} -E -P -v -dD -std=c++14 &quot;${INPUTS}&quot;" prefer-non-shared="true">
66
<language-scope id="org.eclipse.cdt.core.gcc"/>
77
<language-scope id="org.eclipse.cdt.core.g++"/>
88
</provider>

src/DockContainerWidget.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -785,11 +785,17 @@ void CDockContainerWidget::dropFloatingWidget(CFloatingDockContainer* FloatingWi
785785
qDebug() << "CDockContainerWidget::dropFloatingWidget";
786786
CDockAreaWidget* DockArea = dockAreaAt(TargetPos);
787787
auto dropArea = InvalidDockWidgetArea;
788+
auto ContainerDropArea = d->DockManager->containerOverlay()->dropAreaUnderCursor();
788789
if (DockArea)
789790
{
790791
auto dropOverlay = d->DockManager->dockAreaOverlay();
791792
dropOverlay->setAllowedAreas(AllDockAreas);
792793
dropArea = dropOverlay->showOverlay(DockArea);
794+
if ((ContainerDropArea != InvalidDockWidgetArea) && (dropArea == CenterDockWidgetArea))
795+
{
796+
dropArea = InvalidDockWidgetArea;
797+
}
798+
793799
if (dropArea != InvalidDockWidgetArea)
794800
{
795801
qDebug() << "Dock Area Drop Content: " << dropArea;
@@ -800,7 +806,7 @@ void CDockContainerWidget::dropFloatingWidget(CFloatingDockContainer* FloatingWi
800806
// mouse is over container
801807
if (InvalidDockWidgetArea == dropArea)
802808
{
803-
dropArea = d->DockManager->containerOverlay()->dropAreaUnderCursor();
809+
dropArea = ContainerDropArea;
804810
qDebug() << "Container Drop Content: " << dropArea;
805811
if (dropArea != InvalidDockWidgetArea)
806812
{

src/DockWidgetTitleBar.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,6 @@ void CDockWidgetTitleBar::mouseReleaseEvent(QMouseEvent* ev)
265265
//============================================================================
266266
void CDockWidgetTitleBar::mouseMoveEvent(QMouseEvent* ev)
267267
{
268-
/*std::cout << "CDockWidgetTitleBar::mouseMoveEventmouseMoveEvent DragState "
269-
<< d->DragState << std::endl;*/
270268
if (!(ev->buttons() & Qt::LeftButton) || d->isDraggingState(DraggingInactive))
271269
{
272270
d->DragState = DraggingInactive;
@@ -276,7 +274,6 @@ void CDockWidgetTitleBar::mouseMoveEvent(QMouseEvent* ev)
276274

277275
if (d->isDraggingState(DraggingFloatingWidget))
278276
{
279-
//std::cout << "DraggingFloatingWidget" << std::endl;
280277
d->FloatingWidget->moveFloating();
281278
QFrame::mouseMoveEvent(ev);
282279
return;

src/FloatingDockContainer.cpp

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,15 +157,29 @@ void FloatingDockContainerPrivate::updateDropOverlays(const QPoint& GlobalPos)
157157
int VisibleDockAreas = TopContainer->visibleDockAreaCount();
158158
ContainerOverlay->setAllowedAreas(VisibleDockAreas > 1 ?
159159
OuterDockAreas : AllDockAreas);
160-
ContainerOverlay->showOverlay(TopContainer);
160+
DockWidgetArea ContainerArea = ContainerOverlay->showOverlay(TopContainer);
161161

162162
auto DockArea = TopContainer->dockAreaAt(GlobalPos);
163163
if (DockArea && DockArea->isVisible() && VisibleDockAreas > 0)
164164
{
165+
DockAreaOverlay->enableDropPreview(true);
165166
DockAreaOverlay->setAllowedAreas((VisibleDockAreas == 1) ?
166167
NoDockWidgetArea : AllDockAreas);
167168
DockWidgetArea Area = DockAreaOverlay->showOverlay(DockArea);
168-
ContainerOverlay->enableDropPreview(InvalidDockWidgetArea == Area);
169+
170+
// A CenterDockWidgetArea for the dockAreaOverlay() indicates that
171+
// the mouse is in the title bar. If the ContainerArea is valid
172+
// then we ignore the dock area of the dockAreaOverlay() and disable
173+
// the drop preview
174+
if ((Area == CenterDockWidgetArea) && (ContainerArea != InvalidDockWidgetArea))
175+
{
176+
DockAreaOverlay->enableDropPreview(false);
177+
ContainerOverlay->enableDropPreview(true);
178+
}
179+
else
180+
{
181+
ContainerOverlay->enableDropPreview(InvalidDockWidgetArea == Area);
182+
}
169183
}
170184
else
171185
{

0 commit comments

Comments
 (0)