@@ -148,6 +148,7 @@ struct DockOverlayPrivate
148
148
QPointer<QWidget> TargetWidget;
149
149
QRect TargetRect;
150
150
DockWidgetArea LastLocation = InvalidDockWidgetArea;
151
+ bool DropPreviewEnabled = true ;
151
152
152
153
/* *
153
154
* Private data constructor
@@ -187,14 +188,16 @@ CDockOverlay::CDockOverlay(QWidget* parent, eMode Mode) :
187
188
{
188
189
d->Cross = new CDockOverlayCross (this );
189
190
setWindowFlags (Qt::Tool | Qt::FramelessWindowHint);
190
- setWindowOpacity (0.2 );
191
+ setWindowOpacity (1 );
191
192
setWindowTitle (" DockOverlay" );
192
193
setAttribute (Qt::WA_NoSystemBackground);
193
194
setAttribute (Qt::WA_TranslucentBackground);
194
195
195
196
QBoxLayout* l = new QBoxLayout (QBoxLayout::TopToBottom);
196
197
l->setSpacing (0 );
197
198
setLayout (l);
199
+ l->setContentsMargins (QMargins (0 , 0 , 0 , 0 ));
200
+ l->addWidget (d->Cross );
198
201
199
202
d->Cross ->setupOverlayCross (Mode);
200
203
d->Cross ->setVisible (false );
@@ -253,7 +256,6 @@ DockWidgetArea CDockOverlay::dropAreaUnderCursor() const
253
256
// ============================================================================
254
257
DockWidgetArea CDockOverlay::showOverlay (QWidget* target)
255
258
{
256
- // std::cout << "CDockOverlay::showDockOverlay(QWidget* target)" << std::endl;
257
259
if (d->TargetWidget == target)
258
260
{
259
261
qInfo () << " _target == target" ;
@@ -274,33 +276,15 @@ DockWidgetArea CDockOverlay::showOverlay(QWidget* target)
274
276
275
277
// Move it over the target.
276
278
resize (target->size ());
277
- move (target->mapToGlobal (target->rect ().topLeft ()));
279
+ QPoint TopLeft = target->mapToGlobal (target->rect ().topLeft ());
280
+ move (TopLeft);
281
+ std::cout << " Overlay top: " << TopLeft.x () << " left: " << TopLeft.y ()
282
+ << std::endl;
278
283
show ();
279
284
return dropAreaUnderCursor ();
280
285
}
281
286
282
287
283
- // ============================================================================
284
- void CDockOverlay::showOverlay (QWidget* target, const QRect& targetAreaRect)
285
- {
286
- qInfo () << " CDockOverlay::showDockOverlay(QWidget* target, const QRect& targetAreaRect)" ;
287
- if (d->TargetWidget == target && d->TargetRect == targetAreaRect)
288
- {
289
- return ;
290
- }
291
- // hideDockOverlay();
292
- d->TargetWidget = target;
293
- d->TargetRect = targetAreaRect;
294
- d->LastLocation = InvalidDockWidgetArea;
295
-
296
- // Move it over the target's area.
297
- resize (targetAreaRect.size ());
298
- move (target->mapToGlobal (QPoint (targetAreaRect.x (), targetAreaRect.y ())));
299
- show ();
300
- return ;
301
- }
302
-
303
-
304
288
// ============================================================================
305
289
void CDockOverlay::hideOverlay ()
306
290
{
@@ -313,12 +297,25 @@ void CDockOverlay::hideOverlay()
313
297
314
298
315
299
// ============================================================================
316
- void CDockOverlay::paintEvent (QPaintEvent*)
300
+ void CDockOverlay::enableDropPreview (bool Enable)
301
+ {
302
+ d->DropPreviewEnabled = Enable;
303
+ update ();
304
+ }
305
+
306
+
307
+ // ============================================================================
308
+ void CDockOverlay::paintEvent (QPaintEvent* event)
317
309
{
318
310
// Draw rect based on location
311
+ if (!d->DropPreviewEnabled )
312
+ {
313
+ return ;
314
+ }
315
+
319
316
QRect r = rect ();
320
317
const DockWidgetArea da = dropAreaUnderCursor ();
321
- std::cout << " CursorLocation: " << dropAreaUnderCursor () << std::endl;
318
+ // std::cout << "CursorLocation: " << dropAreaUnderCursor() << std::endl;
322
319
switch (da)
323
320
{
324
321
case TopDockWidgetArea: r.setHeight (r.height () / 2 ); break ;
@@ -330,9 +327,9 @@ void CDockOverlay::paintEvent(QPaintEvent*)
330
327
}
331
328
QPainter painter (this );
332
329
QColor Color = palette ().color (QPalette::Active, QPalette::Highlight);
333
- painter. fillRect (r, QBrush (Color, Qt::Dense4Pattern) );
334
- painter.setBrush ( QBrush (Color) );
335
- painter.drawRect (r );
330
+ Color. setAlpha ( 64 );
331
+ painter.setPen (Qt::NoPen );
332
+ painter.fillRect (r, Color );
336
333
}
337
334
338
335
@@ -353,23 +350,6 @@ void CDockOverlay::hideEvent(QHideEvent*)
353
350
}
354
351
355
352
356
-
357
- // ============================================================================
358
- void CDockOverlay::resizeEvent (QResizeEvent* e)
359
- {
360
- qInfo () << " CDockOverlay::resizeEvent" << e->size ();
361
- d->Cross ->resize (e->size ());
362
- }
363
-
364
-
365
- // ============================================================================
366
- void CDockOverlay::moveEvent (QMoveEvent* e)
367
- {
368
- qInfo () << " CDockOverlay::moveEvent" << e->pos ();
369
- d->Cross ->move (e->pos ());
370
- }
371
-
372
-
373
353
// ============================================================================
374
354
static int areaAlignment (const DockWidgetArea area)
375
355
{
@@ -568,6 +548,8 @@ void CDockOverlayCross::reset()
568
548
}
569
549
}
570
550
551
+
552
+
571
553
} // namespace ads
572
554
// ----------------------------------------------------------------------------
573
555
0 commit comments