Skip to content

Commit 82c5f8b

Browse files
author
alcomposer
committed
Open quickcanvas as a tab if scroll-up on an active quickcanvas
1 parent 3309f9b commit 82c5f8b

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

Source/CanvasViewport.h

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -396,13 +396,19 @@ class CanvasViewport : public Viewport
396396

397397
//removeMouseListener(cnv->quickCanvas.get());
398398
cnv->quickCanvas.reset();
399+
editor->getTabComponent().repaint();
399400
}
400401
}
401402
cnv->repaint();
402403
if (cnv->quickCanvas) {
403404
cnv->quickCanvas->repaint();
404405
}
405406
} break;
407+
case Timers::QuickCanvasBlock: {
408+
quickCanvasBlocked = false;
409+
stopTimer(Timers::QuickCanvasBlock);
410+
411+
} break;
406412
}
407413
}
408414

@@ -491,7 +497,16 @@ class CanvasViewport : public Viewport
491497
quickCanvasShowingOrHiding = true;
492498
}
493499
if (cnv->quickCanvas && quickCanvasShowingOrHiding) {
494-
// TODO: Enter quick canvas, replace the current canvas with the quick canvas completely
500+
if (quickCanvasBlocked) {
501+
startTimer(Timers::QuickCanvasBlock, 1000 / 5);
502+
quickCanvasBlocked = true;
503+
quickCanvasTimerCount = 0;
504+
return;
505+
}
506+
editor->getTabComponent().openPatch(cnv->quickCanvas->patch);
507+
cnv->quickCanvas.reset();
508+
editor->getTabComponent().repaint();
509+
return;
495510
}
496511
if (!cnv->quickCanvas && quickCanvasShowingOrHiding) {
497512
for (auto obj: cnv->objects) {
@@ -518,6 +533,9 @@ class CanvasViewport : public Viewport
518533
cnv->quickCanvas->grabKeyboardFocus();
519534

520535
cnv->resized();
536+
editor->getTabComponent().repaint();
537+
startTimer(Timers::QuickCanvasBlock, 1000 / 5);
538+
quickCanvasBlocked = true;
521539
return;
522540
}
523541
}
@@ -669,9 +687,10 @@ class CanvasViewport : public Viewport
669687
std::function<void()> onScroll = []() { };
670688

671689
private:
672-
enum Timers { ResizeTimer, AnimationTimer, QuickCanvasTimer, QuickCanvasAnimationTimer };
690+
enum Timers { ResizeTimer, AnimationTimer, QuickCanvasTimer, QuickCanvasAnimationTimer, QuickCanvasBlock };
673691
int quickCanvasTimerCount = 0;
674692
bool quickCanvasShowingOrHiding = false;
693+
bool quickCanvasBlocked = false;
675694

676695
Point<int> startPos;
677696
Point<int> targetPos;

Source/TabComponent.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,10 +167,13 @@ class TabComponent : public Component
167167
g.setGradientFill(ColourGradient(textColour, fadeX - 18, area.getY(), Colours::transparentBlack, fadeX, area.getY(), false));
168168

169169
if (cnv) {
170+
auto quickCanvasText = cnv->quickCanvas ? cnv->quickCanvas->patch.getTitle() + (cnv->quickCanvas->patch.isDirty() ? String("*") : String()) : String();
170171
auto text = cnv->patch.getTitle() + (cnv->patch.isDirty() ? String("*") : String());
171172

173+
auto formatedText = text + (quickCanvasText.isNotEmpty() ? String(" > ") + quickCanvasText : "");
174+
172175
g.setFont(Fonts::getCurrentFont().withHeight(14.0f));
173-
g.drawText(text, area.reduced(4, 0), Justification::centred, false);
176+
g.drawText(formatedText, area.reduced(4, 0), Justification::centred, false);
174177
}
175178
}
176179

0 commit comments

Comments
 (0)