BorderSize<int> ResizableWindow::getBorderThickness() { if (isUsingNativeTitleBar() || isKioskMode()) return {}; return BorderSize<int> ((resizableBorder != nullptr && ! isFullScreen()) ? 4 : 1); }
//============================================================================== void ResizableWindow::setResizable (const bool shouldBeResizable, const bool useBottomRightCornerResizer) { if (shouldBeResizable) { if (useBottomRightCornerResizer) { resizableBorder = nullptr; if (resizableCorner == nullptr) { Component::addChildComponent (resizableCorner = new ResizableCornerComponent (this, constrainer)); resizableCorner->setAlwaysOnTop (true); } } else { resizableCorner = nullptr; if (resizableBorder == nullptr) Component::addChildComponent (resizableBorder = new ResizableBorderComponent (this, constrainer)); } } else { resizableCorner = nullptr; resizableBorder = nullptr; } if (isUsingNativeTitleBar()) recreateDesktopWindow(); childBoundsChanged (contentComponent); resized(); }
void ResizableWindow::resized() { if (resizableBorder != nullptr) { #if JUCE_WINDOWS || JUCE_LINUX // hide the resizable border if the OS already provides one.. resizableBorder->setVisible (! (isFullScreen() || isUsingNativeTitleBar())); #else resizableBorder->setVisible (! isFullScreen()); #endif resizableBorder->setBorderThickness (getBorderThickness()); resizableBorder->setSize (getWidth(), getHeight()); resizableBorder->toBack(); } if (resizableCorner != nullptr) { #if JUCE_MAC // hide the resizable border if the OS already provides one.. resizableCorner->setVisible (! (isFullScreen() || isUsingNativeTitleBar())); #else resizableCorner->setVisible (! isFullScreen()); #endif const int resizerSize = 18; resizableCorner->setBounds (getWidth() - resizerSize, getHeight() - resizerSize, resizerSize, resizerSize); } if (contentComponent != nullptr) { // The window expects to be able to be able to manage the size and position // of its content component, so you can't arbitrarily add a transform to it! jassert (! contentComponent->isTransformed()); contentComponent->setBoundsInset (getContentComponentBorder()); } updateLastPos(); #if JUCE_DEBUG hasBeenResized = true; #endif }
const BorderSize DocumentWindow::getContentComponentBorder() { BorderSize border (getBorderThickness()); border.setTop (border.getTop() + (isUsingNativeTitleBar() ? 0 : titleBarHeight) + (menuBar != 0 ? menuBarHeight : 0)); return border; }
void DocumentWindow::lookAndFeelChanged() { int i; for (i = numElementsInArray (titleBarButtons); --i >= 0;) titleBarButtons[i] = 0; if (! isUsingNativeTitleBar()) { titleBarButtons[0] = ((requiredButtons & minimiseButton) != 0) ? getLookAndFeel().createDocumentWindowButton (minimiseButton) : 0; titleBarButtons[1] = ((requiredButtons & maximiseButton) != 0) ? getLookAndFeel().createDocumentWindowButton (maximiseButton) : 0; titleBarButtons[2] = ((requiredButtons & closeButton) != 0) ? getLookAndFeel().createDocumentWindowButton (closeButton) : 0; for (i = 0; i < 3; ++i) { if (titleBarButtons[i] != 0) { buttonListener.owner = this; titleBarButtons[i]->addButtonListener (&buttonListener); titleBarButtons[i]->setWantsKeyboardFocus (false); // (call the Component method directly to avoid the assertion in ResizableWindow) Component::addAndMakeVisible (titleBarButtons[i]); } } if (getCloseButton() != 0) { #if JUCE_MAC getCloseButton()->addShortcut (KeyPress (T('w'), ModifierKeys::commandModifier, 0)); #else getCloseButton()->addShortcut (KeyPress (KeyPress::F4Key, ModifierKeys::altModifier, 0)); #endif } } activeWindowStatusChanged(); ResizableWindow::lookAndFeelChanged(); }
void ResizableWindow::resized() { const bool resizerHidden = isFullScreen() || isKioskMode() || isUsingNativeTitleBar(); if (resizableBorder != nullptr) { resizableBorder->setVisible (! resizerHidden); resizableBorder->setBorderThickness (getBorderThickness()); resizableBorder->setSize (getWidth(), getHeight()); resizableBorder->toBack(); } if (resizableCorner != nullptr) { resizableCorner->setVisible (! resizerHidden); const int resizerSize = 18; resizableCorner->setBounds (getWidth() - resizerSize, getHeight() - resizerSize, resizerSize, resizerSize); } if (contentComponent != nullptr) { // The window expects to be able to be able to manage the size and position // of its content component, so you can't arbitrarily add a transform to it! jassert (! contentComponent->isTransformed()); contentComponent->setBoundsInset (getContentComponentBorder()); } updateLastPosIfShowing(); #if JUCE_DEBUG hasBeenResized = true; #endif }
BorderSize<int> ResizableWindow::getBorderThickness() { return BorderSize<int> (isUsingNativeTitleBar() ? 0 : ((resizableBorder != nullptr && ! isFullScreen()) ? 5 : 3)); }
int DocumentWindow::getTitleBarHeight() const { return isUsingNativeTitleBar() ? 0 : jmin (titleBarHeight, getHeight() - 4); }
const BorderSize DocumentWindow::getBorderThickness() { return BorderSize ((isFullScreen() || isUsingNativeTitleBar()) ? 0 : (resizableBorder != 0 ? 4 : 1)); }