void ResizableWindow::setContentComponentSize (int width, int height) { jassert (width > 0 && height > 0); // not a great idea to give it a zero size.. auto border = getContentComponentBorder(); setSize (width + border.getLeftAndRight(), height + border.getTopAndBottom()); }
//============================================================================== void ResizableWindow::activeWindowStatusChanged() { auto border = getContentComponentBorder(); auto area = getLocalBounds(); repaint (area.removeFromTop (border.getTop())); repaint (area.removeFromLeft (border.getLeft())); repaint (area.removeFromRight (border.getRight())); repaint (area.removeFromBottom (border.getBottom())); }
void ResizableWindow::childBoundsChanged (Component* child) { if ((child == contentComponent) && (child != nullptr) && resizeToFitContent) { // not going to look very good if this component has a zero size.. jassert (child->getWidth() > 0); jassert (child->getHeight() > 0); auto borders = getContentComponentBorder(); setSize (child->getWidth() + borders.getLeftAndRight(), child->getHeight() + borders.getTopAndBottom()); } }
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 }
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 }