35
35
#include < QDebug>
36
36
#include < QMap>
37
37
#include < QWindow>
38
+ #include < QSvgRenderer>
38
39
39
40
#include " DockAreaWidget.h"
40
41
#include " DockAreaTitleBar.h"
@@ -204,6 +205,11 @@ struct DockOverlayCrossPrivate
204
205
{
205
206
QColor borderColor = iconColor (CDockOverlayCross::FrameColor);
206
207
QColor backgroundColor = iconColor (CDockOverlayCross::WindowBackgroundColor);
208
+ QColor overlayColor = iconColor (CDockOverlayCross::OverlayColor);
209
+ if (overlayColor.alpha () == 255 )
210
+ {
211
+ overlayColor.setAlpha (64 );
212
+ }
207
213
208
214
#if QT_VERSION >= 0x050600
209
215
double DevicePixelRatio = _this->window ()->devicePixelRatioF ();
@@ -261,22 +267,25 @@ struct DockOverlayCrossPrivate
261
267
}
262
268
263
269
QSizeF baseSize = baseRect.size ();
264
- if (CDockOverlay::ModeContainerOverlay == Mode && DockWidgetArea != CenterDockWidgetArea)
270
+ bool IsOuterContainerArea = (CDockOverlay::ModeContainerOverlay == Mode)
271
+ && (DockWidgetArea != CenterDockWidgetArea)
272
+ && !internal::isSideBarArea (DockWidgetArea);
273
+
274
+ if (IsOuterContainerArea)
265
275
{
266
276
baseRect = areaRect;
267
277
}
268
278
269
- p.fillRect (baseRect, backgroundColor);
279
+ // if (!internal::isSideBarArea(DockWidgetArea))
280
+ // {
281
+ p.fillRect (baseRect, backgroundColor);
282
+ // }
283
+
270
284
if (areaRect.isValid ())
271
285
{
272
286
pen = p.pen ();
273
287
pen.setColor (borderColor);
274
- QColor Color = iconColor (CDockOverlayCross::OverlayColor);
275
- if (Color.alpha () == 255 )
276
- {
277
- Color.setAlpha (64 );
278
- }
279
- p.setBrush (Color);
288
+ p.setBrush (overlayColor);
280
289
p.setPen (Qt::NoPen);
281
290
p.drawRect (areaRect);
282
291
@@ -289,23 +298,26 @@ struct DockOverlayCrossPrivate
289
298
}
290
299
p.restore ();
291
300
292
- p.save ();
293
- // Draw outer border
294
- pen = p.pen ();
295
- pen.setColor (borderColor);
296
- pen.setWidth (1 );
297
- p.setBrush (Qt::NoBrush);
298
- p.setPen (pen);
299
- p.drawRect (baseRect);
300
-
301
- // draw window title bar
302
- p.setBrush (borderColor);
303
- QRectF FrameRect (baseRect.topLeft (), QSizeF (baseRect.width (), baseSize.height () / 10 ));
304
- p.drawRect (FrameRect);
305
- p.restore ();
301
+ // if (!internal::isSideBarArea(DockWidgetArea))
302
+ // {
303
+ p.save ();
304
+ // Draw outer border
305
+ pen = p.pen ();
306
+ pen.setColor (borderColor);
307
+ pen.setWidth (1 );
308
+ p.setBrush (Qt::NoBrush);
309
+ p.setPen (pen);
310
+ p.drawRect (baseRect);
311
+
312
+ // draw window title bar
313
+ p.setBrush (borderColor);
314
+ QRectF FrameRect (baseRect.topLeft (), QSizeF (baseRect.width (), baseSize.height () / 10 ));
315
+ p.drawRect (FrameRect);
316
+ p.restore ();
317
+ // }
306
318
307
319
// Draw arrow for outer container drop indicators
308
- /* if (CDockOverlay::ModeContainerOverlay == Mode && DockWidgetArea != CenterDockWidgetArea )
320
+ if (IsOuterContainerArea )
309
321
{
310
322
QRectF ArrowRect;
311
323
ArrowRect.setSize (baseSize);
@@ -339,7 +351,37 @@ struct DockOverlayCrossPrivate
339
351
}
340
352
341
353
p.drawPolygon (Arrow);
342
- }*/
354
+ }
355
+
356
+ // Draw the pin icons
357
+ if (internal::isSideBarArea (DockWidgetArea))
358
+ {
359
+ static QIcon PinIcon;
360
+ if (PinIcon.isNull ())
361
+ {
362
+ std::cout << " Initializing pin icon" << std::endl;
363
+ QFile file (" :/ads/images/vs-pin-button.svg" );
364
+ file.open (QIODevice::ReadOnly);
365
+ QByteArray baData = file.readAll ();
366
+ baData.replace (" #000000" , borderColor.name (QColor::HexRgb).toLatin1 ());
367
+ // baData.replace("#ffffff", overlayColor.name(QColor::HexArgb).toLatin1());
368
+ // std::cout << borderColor.name(QColor::HexRgb) << std::endl;
369
+ QSvgRenderer svgRenderer (baData);
370
+ QPixmap pix (svgRenderer.defaultSize ());
371
+ pix.fill (Qt::transparent);
372
+ // create painter to act over pixmap
373
+ QPainter pixPainter (&pix);
374
+ svgRenderer.render (&pixPainter);
375
+ PinIcon = QIcon (pix);
376
+ }
377
+ // p.drawPixmap(0, PinIcon.paint(painter, rect, alignment, mode, state));
378
+ auto Rect = QRect (0 , 0 , 16 , 16 );
379
+ // Rect.setSize(baseRect.size() * 0.8);
380
+ Rect.moveCenter (baseRect.center ().toPoint ());
381
+ PinIcon.paint (&p, Rect, Qt::AlignCenter);
382
+ // auto Pixmap = PinIcon.pixmap(_this->windowHandle(), QSize(16, 16));
383
+ // p.drawPixmap(QPoint(0, 0), Pixmap);
384
+ }
343
385
344
386
pm.setDevicePixelRatio (DevicePixelRatio);
345
387
return pm;
0 commit comments