void ResizableWindow::setFullScreen (const bool shouldBeFullScreen) { if (shouldBeFullScreen != isFullScreen()) { updateLastPos(); fullscreen = shouldBeFullScreen; if (isOnDesktop()) { if (ComponentPeer* const peer = getPeer()) { // keep a copy of this intact in case the real one gets messed-up while we're un-maximising const Rectangle<int> lastPos (lastNonFullScreenPos); peer->setFullScreen (shouldBeFullScreen); if ((! shouldBeFullScreen) && ! lastPos.isEmpty()) setBounds (lastPos); } else { jassertfalse; } } else { if (shouldBeFullScreen) setBounds (0, 0, getParentWidth(), getParentHeight()); else setBounds (lastNonFullScreenPos); } resized(); } }
void TopLevelWindow::setDropShadowEnabled (const bool useShadow) { useDropShadow = useShadow; if (isOnDesktop()) { shadower = nullptr; Component::addToDesktop (getDesktopWindowStyleFlags()); } else { if (useShadow && isOpaque()) { if (shadower == nullptr) { shadower = getLookAndFeel().createDropShadowerForComponent (this); if (shadower != nullptr) shadower->setOwner (this); } } else { shadower = nullptr; } } }
void TopLevelWindow::recreateDesktopWindow() { if (isOnDesktop()) { Component::addToDesktop (getDesktopWindowStyleFlags()); toFront (true); } }
bool ResizableWindow::isKioskMode() const { if (isOnDesktop()) if (auto* peer = getPeer()) return peer->isKioskMode(); return Desktop::getInstance().getKioskModeComponent() == this; }
void hide() { setVisible(false); if (isOnDesktop()) removeFromDesktop(); clearContentComponent(); }
bool ResizableWindow::restoreWindowStateFromString (const String& s) { StringArray tokens; tokens.addTokens (s, false); tokens.removeEmptyStrings(); tokens.trim(); const bool fs = tokens[0].startsWithIgnoreCase ("fs"); const int firstCoord = fs ? 1 : 0; if (tokens.size() != firstCoord + 4) return false; Rectangle<int> newPos (tokens[firstCoord].getIntValue(), tokens[firstCoord + 1].getIntValue(), tokens[firstCoord + 2].getIntValue(), tokens[firstCoord + 3].getIntValue()); if (newPos.isEmpty()) return false; ComponentPeer* const peer = isOnDesktop() ? getPeer() : nullptr; if (peer != nullptr) peer->getFrameSize().addTo (newPos); { Desktop& desktop = Desktop::getInstance(); RectangleList allMonitors (desktop.getDisplays().getRectangleList (true)); allMonitors.clipTo (newPos); const Rectangle<int> onScreenArea (allMonitors.getBounds()); if (onScreenArea.getWidth() * onScreenArea.getHeight() < 32 * 32) { const Rectangle<int> screen (desktop.getDisplays().getDisplayContaining (newPos.getCentre()).userArea); newPos.setSize (jmin (newPos.getWidth(), screen.getWidth()), jmin (newPos.getHeight(), screen.getHeight())); newPos.setPosition (jlimit (screen.getX(), screen.getRight() - newPos.getWidth(), newPos.getX()), jlimit (screen.getY(), screen.getBottom() - newPos.getHeight(), newPos.getY())); } } if (peer != nullptr) { peer->getFrameSize().subtractFrom (newPos); peer->setNonFullScreenBounds (newPos); } lastNonFullScreenPos = newPos; setFullScreen (fs); if (! fs) setBoundsConstrained (newPos); return true; }
//============================================================================== bool ResizableWindow::isFullScreen() const { if (isOnDesktop()) { ComponentPeer* const peer = getPeer(); return peer != nullptr && peer->isFullScreen(); } return fullscreen; }
void ResizableWindow::lookAndFeelChanged() { resized(); if (isOnDesktop()) { Component::addToDesktop (getDesktopWindowStyleFlags()); updatePeerConstrainer(); } }
void ResizableWindow::lookAndFeelChanged() { resized(); if (isOnDesktop()) { Component::addToDesktop (getDesktopWindowStyleFlags()); if (ComponentPeer* const peer = getPeer()) peer->setConstrainer (constrainer); } }
void ResizableWindow::updatePeerConstrainer() { if (isOnDesktop()) if (auto* peer = getPeer()) peer->setConstrainer (constrainer); }
void ResizableWindow::updatePeerConstrainer() { if (isOnDesktop()) if (ComponentPeer* const peer = getPeer()) peer->setConstrainer (constrainer); }
void AudioProcessorEditor::updatePeer() { if (isOnDesktop()) if (auto* peer = getPeer()) peer->setConstrainer (constrainer); }