110 return c->getProperties() [
"mdiDocumentDelete_"];
114#if JUCE_MODAL_LOOPS_PERMITTED
115bool MultiDocumentPanel::closeAllDocuments (
const bool checkItsOkToCloseFirst)
117 while (! components.isEmpty())
118 if (! closeDocument (components.getLast(), checkItsOkToCloseFirst))
126 bool checkItsOkToCloseFirst,
127 std::function<
void (
bool)>
callback)
129 if (
parent->components.isEmpty())
137 parent->closeDocumentAsync (
parent->components.getLast(),
138 checkItsOkToCloseFirst,
141 if (parent == nullptr)
146 if (callback != nullptr)
161#if JUCE_MODAL_LOOPS_PERMITTED
162bool MultiDocumentPanel::tryToCloseDocument (
Component*)
179 dw->setResizable (
true,
false);
180 dw->setContentNonOwned (component,
true);
181 dw->setName (component->
getName());
189 if (topComp->getX() ==
x && topComp->getY() ==
x)
192 dw->setTopLeftPosition (
x,
x);
195 if (pos.toString().isNotEmpty())
196 dw->restoreWindowStateFromString (pos.toString());
204 const bool deleteWhenRemoved)
287 if (dw->getContentComponent() == component)
289 std::unique_ptr<MultiDocumentPanelWindow> (dw)->clearContentComponent();
298 components.removeFirstMatchingValue (component);
307 dw->clearContentComponent();
334 components.removeFirstMatchingValue (component);
351#if JUCE_MODAL_LOOPS_PERMITTED
352bool MultiDocumentPanel::closeDocument (
Component* component,
353 const bool checkItsOkToCloseFirst)
359 if (component ==
nullptr)
362 if (components.contains (component))
364 if (checkItsOkToCloseFirst && ! tryToCloseDocument (component))
367 closeDocumentInternal (component);
381 const bool checkItsOkToCloseFirst,
382 std::function<
void (
bool)>
callback)
388 if (component ==
nullptr)
398 if (checkItsOkToCloseFirst)
406 if (closedSuccessfully)
407 parent->closeDocumentInternal (component);
445 if (dw->isActiveWindow())
446 return dw->getContentComponent();
454 jassert (component !=
nullptr);
460 if (component !=
nullptr)
504 if (
mode != newLayoutMode)
506 mode = newLayoutMode;
520 dw->getContentComponent()->getProperties().set (
"mdiDocumentPos_", dw->getWindowStateAsString());
521 dw->clearContentComponent();
531 for (
auto*
c : tempComps)
571 if (dw->getContentComponent() ==
c)
584 dw->setName (dw->getContentComponent()->getName());
609 if (
auto* current =
tabComponent->getCurrentContentComponent())
611 components.removeFirstMatchingValue (current);
#define noexcept
Definition DistrhoDefines.h:72
Definition juce_Colour.h:38
bool isOpaque() const noexcept
Definition juce_Colour.cpp:312
uint32 getARGB() const noexcept
Definition juce_Colour.cpp:301
Definition juce_Component.h:2287
Definition juce_Component.h:36
void removeComponentListener(ComponentListener *listenerToRemove)
Definition juce_Component.cpp:2337
int getNumChildComponents() const noexcept
Definition juce_Component.cpp:1643
void grabKeyboardFocus()
Definition juce_Component.cpp:2995
void toFront(bool shouldAlsoGainKeyboardFocus)
Definition juce_Component.cpp:954
void addComponentListener(ComponentListener *newListener)
Definition juce_Component.cpp:2323
void addAndMakeVisible(Component *child, int zOrder=-1)
Definition juce_Component.cpp:1554
void setOpaque(bool shouldBeOpaque)
Definition juce_Component.cpp:829
void repaint()
Definition juce_Component.cpp:1917
Component() noexcept
Definition juce_Component.cpp:517
NamedValueSet & getProperties() noexcept
Definition juce_Component.h:2209
void removeChildComponent(Component *childToRemove)
Definition juce_Component.cpp:1569
Component * getChildComponent(int index) const noexcept
Definition juce_Component.cpp:1648
TargetClass * findParentComponentOfClass() const
Definition juce_Component.h:813
void setWantsKeyboardFocus(bool wantsFocus) noexcept
Definition juce_Component.cpp:2842
Rectangle< int > getLocalBounds() const noexcept
Definition juce_Component.cpp:2283
virtual void broughtToFront()
Definition juce_Component.cpp:2751
const Array< Component * > & getChildren() const noexcept
Definition juce_Component.h:685
String getName() const noexcept
Definition juce_Component.h:76
void activeWindowStatusChanged() override
Definition juce_DocumentWindow.cpp:335
DocumentWindow(const String &name, Colour backgroundColour, int requiredButtons, bool addToDesktop=true)
Definition juce_DocumentWindow.cpp:48
@ closeButton
Definition juce_DocumentWindow.h:66
@ maximiseButton
Definition juce_DocumentWindow.h:65
Definition juce_GraphicsContext.h:45
Definition juce_MultiDocumentPanel.h:90
void setLayoutMode(LayoutMode newLayoutMode)
Definition juce_MultiDocumentPanel.cpp:502
virtual MultiDocumentPanelWindow * createNewDocumentWindow()
Definition juce_MultiDocumentPanel.cpp:170
int numDocsBeforeTabsUsed
Definition juce_MultiDocumentPanel.h:372
void componentNameChanged(Component &) override
Definition juce_MultiDocumentPanel.cpp:578
LayoutMode mode
Definition juce_MultiDocumentPanel.h:368
int maximumNumDocuments
Definition juce_MultiDocumentPanel.h:372
void setMaximumNumDocuments(int maximumNumDocuments)
Definition juce_MultiDocumentPanel.cpp:486
Component * getDocument(int index) const noexcept
Definition juce_MultiDocumentPanel.cpp:434
virtual void tryToCloseDocumentAsync(Component *component, std::function< void(bool)> callback)=0
friend class MultiDocumentPanelWindow
Definition juce_MultiDocumentPanel.h:362
int getNumDocuments() const noexcept
Definition juce_MultiDocumentPanel.cpp:429
void useFullscreenWhenOneDocument(bool shouldUseTabs)
Definition juce_MultiDocumentPanel.cpp:491
void paint(Graphics &) override
Definition juce_MultiDocumentPanel.cpp:549
Colour backgroundColour
Definition juce_MultiDocumentPanel.h:371
Component * getActiveDocument() const noexcept
Definition juce_MultiDocumentPanel.cpp:439
std::unique_ptr< TabbedComponent > tabComponent
Definition juce_MultiDocumentPanel.h:370
MultiDocumentPanel()
Definition juce_MultiDocumentPanel.cpp:93
void setActiveDocument(Component *component)
Definition juce_MultiDocumentPanel.cpp:452
void updateOrder()
Definition juce_MultiDocumentPanel.cpp:593
void setBackgroundColour(Colour newBackgroundColour)
Definition juce_MultiDocumentPanel.cpp:538
void closeDocumentAsync(Component *component, bool checkItsOkToCloseFirst, std::function< void(bool)> callback)
Definition juce_MultiDocumentPanel.cpp:380
void resized() override
Definition juce_MultiDocumentPanel.cpp:554
Array< Component * > components
Definition juce_MultiDocumentPanel.h:369
bool isFullscreenWhenOneDocument() const noexcept
Definition juce_MultiDocumentPanel.cpp:496
LayoutMode
Definition juce_MultiDocumentPanel.h:258
@ FloatingWindows
Definition juce_MultiDocumentPanel.h:259
@ MaximisedWindowsWithTabs
Definition juce_MultiDocumentPanel.h:260
static void closeLastDocumentRecursive(SafePointer< MultiDocumentPanel >, bool, std::function< void(bool)>)
Definition juce_MultiDocumentPanel.cpp:125
bool addDocument(Component *component, Colour backgroundColour, bool deleteWhenRemoved)
Definition juce_MultiDocumentPanel.cpp:202
Component * getContainerComp(Component *) const
Definition juce_MultiDocumentPanel.cpp:565
void closeDocumentInternal(Component *)
Definition juce_MultiDocumentPanel.cpp:269
void addWindow(Component *)
Definition juce_MultiDocumentPanel.cpp:175
~MultiDocumentPanel() override
Definition juce_MultiDocumentPanel.cpp:98
void closeAllDocumentsAsync(bool checkItsOkToCloseFirst, std::function< void(bool)> callback)
Definition juce_MultiDocumentPanel.cpp:156
virtual void activeDocumentChanged()
Definition juce_MultiDocumentPanel.cpp:482
void activeWindowStatusChanged() override
Definition juce_MultiDocumentPanel.cpp:56
MultiDocumentPanel * getOwner() const noexcept
Definition juce_MultiDocumentPanel.cpp:74
void maximiseButtonPressed() override
Definition juce_MultiDocumentPanel.cpp:40
void broughtToFront() override
Definition juce_MultiDocumentPanel.cpp:62
~MultiDocumentPanelWindow() override
Definition juce_MultiDocumentPanel.cpp:35
void updateOrder()
Definition juce_MultiDocumentPanel.cpp:68
void closeButtonPressed() override
Definition juce_MultiDocumentPanel.cpp:48
MultiDocumentPanelWindow(Colour backgroundColour)
Definition juce_MultiDocumentPanel.cpp:29
bool set(const Identifier &name, const var &newValue)
Definition juce_NamedValueSet.cpp:183
bool remove(const Identifier &name)
Definition juce_NamedValueSet.cpp:214
Definition juce_ResizableWindow.h:52
Component * getContentComponent() const noexcept
Definition juce_ResizableWindow.h:239
Definition juce_String.h:53
TabbedComponent(TabbedButtonBar::Orientation orientation)
Definition juce_TabbedComponent.cpp:89
int g
Definition inflate.c:1573
register unsigned i
Definition inflate.c:1575
unsigned x[BMAX+1]
Definition inflate.c:1586
static uintptr_t parent
Definition pugl.h:1644
#define JUCE_BEGIN_IGNORE_WARNINGS_MSVC(warnings)
Definition juce_CompilerWarnings.h:198
#define JUCE_END_IGNORE_WARNINGS_MSVC
Definition juce_CompilerWarnings.h:199
const Colour white
Definition juce_Colours.h:180
Definition juce_MultiDocumentPanel.cpp:107
static bool shouldDeleteComp(Component *const c)
Definition juce_MultiDocumentPanel.cpp:108
Definition carla_juce.cpp:31
unsigned int uint32
Definition juce_MathsFunctions.h:45
#define true
Definition ordinals.h:82
#define false
Definition ordinals.h:83
Definition juce_MultiDocumentPanel.cpp:81
void currentTabChanged(int, const String &) override
Definition juce_MultiDocumentPanel.cpp:84
TabbedComponentInternal()
Definition juce_MultiDocumentPanel.cpp:82
RECT const char void(* callback)(const char *droppath))) SWELL_API_DEFINE(BOOL
Definition swell-functions.h:1004
return c
Definition crypt.c:175
if(GLOBAL(newzip))
Definition crypt.c:475
#define const
Definition zconf.h:137