@@ -148,6 +148,7 @@ struct DockOverlayPrivate
148148 QPointer<QWidget> TargetWidget;
149149 QRect TargetRect;
150150 DockWidgetArea LastLocation = InvalidDockWidgetArea;
151+ bool DropPreviewEnabled = true ;
151152
152153 /* *
153154 * Private data constructor
@@ -187,14 +188,16 @@ CDockOverlay::CDockOverlay(QWidget* parent, eMode Mode) :
187188{
188189 d->Cross = new CDockOverlayCross (this );
189190 setWindowFlags (Qt::Tool | Qt::FramelessWindowHint);
190- setWindowOpacity (0.2 );
191+ setWindowOpacity (1 );
191192 setWindowTitle (" DockOverlay" );
192193 setAttribute (Qt::WA_NoSystemBackground);
193194 setAttribute (Qt::WA_TranslucentBackground);
194195
195196 QBoxLayout* l = new QBoxLayout (QBoxLayout::TopToBottom);
196197 l->setSpacing (0 );
197198 setLayout (l);
199+ l->setContentsMargins (QMargins (0 , 0 , 0 , 0 ));
200+ l->addWidget (d->Cross );
198201
199202 d->Cross ->setupOverlayCross (Mode);
200203 d->Cross ->setVisible (false );
@@ -253,7 +256,6 @@ DockWidgetArea CDockOverlay::dropAreaUnderCursor() const
253256// ============================================================================
254257DockWidgetArea CDockOverlay::showOverlay (QWidget* target)
255258{
256- // std::cout << "CDockOverlay::showDockOverlay(QWidget* target)" << std::endl;
257259 if (d->TargetWidget == target)
258260 {
259261 qInfo () << " _target == target" ;
@@ -274,33 +276,15 @@ DockWidgetArea CDockOverlay::showOverlay(QWidget* target)
274276
275277 // Move it over the target.
276278 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;
278283 show ();
279284 return dropAreaUnderCursor ();
280285}
281286
282287
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-
304288// ============================================================================
305289void CDockOverlay::hideOverlay ()
306290{
@@ -313,12 +297,25 @@ void CDockOverlay::hideOverlay()
313297
314298
315299// ============================================================================
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)
317309{
318310 // Draw rect based on location
311+ if (!d->DropPreviewEnabled )
312+ {
313+ return ;
314+ }
315+
319316 QRect r = rect ();
320317 const DockWidgetArea da = dropAreaUnderCursor ();
321- std::cout << " CursorLocation: " << dropAreaUnderCursor () << std::endl;
318+ // std::cout << "CursorLocation: " << dropAreaUnderCursor() << std::endl;
322319 switch (da)
323320 {
324321 case TopDockWidgetArea: r.setHeight (r.height () / 2 ); break ;
@@ -330,9 +327,9 @@ void CDockOverlay::paintEvent(QPaintEvent*)
330327 }
331328 QPainter painter (this );
332329 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 );
336333}
337334
338335
@@ -353,23 +350,6 @@ void CDockOverlay::hideEvent(QHideEvent*)
353350}
354351
355352
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-
373353// ============================================================================
374354static int areaAlignment (const DockWidgetArea area)
375355{
@@ -568,6 +548,8 @@ void CDockOverlayCross::reset()
568548 }
569549}
570550
551+
552+
571553} // namespace ads
572554// ----------------------------------------------------------------------------
573555
0 commit comments