diff --git a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp index 6eb64e6ac4..189d39fbb2 100644 --- a/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp +++ b/extras/Introjucer/Source/Project/jucer_ProjectContentComponent.cpp @@ -94,7 +94,7 @@ ProjectContentComponent::ProjectContentComponent() setOpaque (true); setWantsKeyboardFocus (true); - treeSizeConstrainer.setMinimumWidth (100); + treeSizeConstrainer.setMinimumWidth (200); treeSizeConstrainer.setMaximumWidth (500); treeViewTabs.setOutline (0); @@ -203,7 +203,7 @@ void ProjectContentComponent::setProject (Project* newProject) int lastTreeWidth = settings.getValue ("projectTreeviewWidth_" + project->getProjectUID()).getIntValue(); if (lastTreeWidth < 150) - lastTreeWidth = 250; + lastTreeWidth = 240; treeViewTabs.setBounds (0, 0, lastTreeWidth, getHeight()); diff --git a/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp b/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp index 150d96df50..7554f83b8e 100644 --- a/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp +++ b/modules/juce_gui_basics/mouse/juce_MouseInputSource.cpp @@ -64,12 +64,12 @@ public: if (peer != nullptr) { - Component* const comp = peer->getComponent(); - const Point relativePos (comp->getLocalPoint (nullptr, screenPos)); + Component& comp = peer->getComponent(); + const Point relativePos (comp.getLocalPoint (nullptr, screenPos)); // (the contains() call is needed to test for overlapping desktop windows) - if (comp->contains (relativePos)) - return comp->getComponentAt (relativePos); + if (comp.contains (relativePos)) + return comp.getComponentAt (relativePos); } return nullptr; diff --git a/modules/juce_gui_basics/native/juce_android_Windowing.cpp b/modules/juce_gui_basics/native/juce_android_Windowing.cpp index cecc5f2150..199c1adf69 100644 --- a/modules/juce_gui_basics/native/juce_android_Windowing.cpp +++ b/modules/juce_gui_basics/native/juce_android_Windowing.cpp @@ -104,8 +104,8 @@ DECLARE_JNI_CLASS (ComponentPeerView, JUCE_ANDROID_ACTIVITY_CLASSPATH "$Componen class AndroidComponentPeer : public ComponentPeer { public: - AndroidComponentPeer (Component* const component, const int windowStyleFlags) - : ComponentPeer (component, windowStyleFlags), + AndroidComponentPeer (Component& comp, const int windowStyleFlags) + : ComponentPeer (comp, windowStyleFlags), usingAndroidGraphics (false), fullScreen (false), sizeAllocated (0) @@ -113,7 +113,7 @@ public: // NB: must not put this in the initialiser list, as it invokes a callback, // which will fail if the peer is only half-constructed. view = GlobalRef (android.activity.callObjectMethod (JuceAppActivity.createNewView, - component->isOpaque())); + component.isOpaque())); if (isFocused()) handleFocusGain(); @@ -285,7 +285,7 @@ public: if (! r.isEmpty()) setBounds (r.getX(), r.getY(), r.getWidth(), r.getHeight(), shouldBeFullScreen); - component->repaint(); + component.repaint(); } bool isFullScreen() const @@ -300,8 +300,8 @@ public: bool contains (const Point& position, bool trueIfInAChildWindow) const { - return isPositiveAndBelow (position.x, component->getWidth()) - && isPositiveAndBelow (position.y, component->getHeight()) + return isPositiveAndBelow (position.x, component.getWidth()) + && isPositiveAndBelow (position.y, component.getHeight()) && ((! trueIfInAChildWindow) || view.callBooleanMethod (ComponentPeerView.containsPoint, position.x, position.y)); } @@ -406,7 +406,7 @@ public: { { Image temp (new PreallocatedImage (clip.getWidth(), clip.getHeight(), - dest, ! component->isOpaque())); + dest, ! component.isOpaque())); { LowLevelGraphicsSoftwareRenderer g (temp); @@ -563,7 +563,7 @@ JUCE_VIEW_CALLBACK (void, focusChanged, (JNIEnv* env, jobject view, jboolean //============================================================================== ComponentPeer* Component::createNewPeer (int styleFlags, void*) { - return new AndroidComponentPeer (this, styleFlags); + return new AndroidComponentPeer (*this, styleFlags); } jobject createOpenGLView (ComponentPeer* peer) diff --git a/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm index e40d3f940a..806acc4bf9 100644 --- a/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm +++ b/modules/juce_gui_basics/native/juce_ios_UIViewComponentPeer.mm @@ -81,10 +81,7 @@ class UIViewComponentPeer : public ComponentPeer, public FocusChangeListener { public: - UIViewComponentPeer (Component* const component, - const int windowStyleFlags, - UIView* viewToAttachTo); - + UIViewComponentPeer (Component& comp, int windowStyleFlags, UIView* viewToAttachTo); ~UIViewComponentPeer(); //============================================================================== @@ -377,10 +374,8 @@ namespace juce { //============================================================================== -UIViewComponentPeer::UIViewComponentPeer (Component* const component, - const int windowStyleFlags, - UIView* viewToAttachTo) - : ComponentPeer (component, windowStyleFlags), +UIViewComponentPeer::UIViewComponentPeer (Component& comp, const int windowStyleFlags, UIView* viewToAttachTo) + : ComponentPeer (comp, windowStyleFlags), window (nil), view (nil), controller (nil), @@ -388,13 +383,13 @@ UIViewComponentPeer::UIViewComponentPeer (Component* const component, fullScreen (false), insideDrawRect (false) { - CGRect r = convertToCGRect (component->getLocalBounds()); + CGRect r = convertToCGRect (component.getLocalBounds()); view = [[JuceUIView alloc] initWithOwner: this withFrame: r]; view.multipleTouchEnabled = YES; - view.hidden = ! component->isVisible(); - view.opaque = component->isOpaque(); + view.hidden = ! component.isVisible(); + view.opaque = component.isOpaque(); view.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent: 0]; if (isSharedWindow) @@ -407,17 +402,17 @@ UIViewComponentPeer::UIViewComponentPeer (Component* const component, controller = [[JuceUIViewController alloc] init]; controller.view = view; - r = convertToCGRect (rotatedScreenPosToReal (component->getBounds())); + r = convertToCGRect (rotatedScreenPosToReal (component.getBounds())); r.origin.y = [UIScreen mainScreen].bounds.size.height - (r.origin.y + r.size.height); window = [[JuceUIWindow alloc] init]; window.frame = r; - window.opaque = component->isOpaque(); + window.opaque = component.isOpaque(); window.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent: 0]; [((JuceUIWindow*) window) setOwner: this]; - if (component->isAlwaysOnTop()) + if (component.isAlwaysOnTop()) window.windowLevel = UIWindowLevelAlert; [window addSubview: view]; @@ -426,7 +421,7 @@ UIViewComponentPeer::UIViewComponentPeer (Component* const component, window.hidden = view.hidden; } - setTitle (component->getName()); + setTitle (component.getName()); Desktop::getInstance().addFocusChangeListener (this); } @@ -468,12 +463,12 @@ void UIViewComponentPeer::setTitle (const String& title) void UIViewComponentPeer::setPosition (int x, int y) { - setBounds (x, y, component->getWidth(), component->getHeight(), false); + setBounds (x, y, component.getWidth(), component.getHeight(), false); } void UIViewComponentPeer::setSize (int w, int h) { - setBounds (component->getX(), component->getY(), w, h, false); + setBounds (component.getX(), component.getY(), w, h, false); } void UIViewComponentPeer::setBounds (int x, int y, int w, int h, const bool isNowFullScreen) @@ -595,7 +590,7 @@ void UIViewComponentPeer::setFullScreen (bool shouldBeFullScreen) if (! r.isEmpty()) setBounds (r.getX(), r.getY(), r.getWidth(), r.getHeight(), shouldBeFullScreen); - component->repaint(); + component.repaint(); } } @@ -642,7 +637,7 @@ BOOL UIViewComponentPeer::shouldRotate (UIInterfaceOrientation interfaceOrientat void UIViewComponentPeer::displayRotated() { Desktop& desktop = Desktop::getInstance(); - const Rectangle oldArea (component->getBounds()); + const Rectangle oldArea (component.getBounds()); const Rectangle oldDesktop (desktop.getDisplays().getMainDisplay().userArea); const_cast (desktop.getDisplays()).refresh(); @@ -672,8 +667,8 @@ void UIViewComponentPeer::displayRotated() bool UIViewComponentPeer::contains (const Point& position, bool trueIfInAChildWindow) const { - if (! (isPositiveAndBelow (position.getX(), component->getWidth()) - && isPositiveAndBelow (position.getY(), component->getHeight()))) + if (! (isPositiveAndBelow (position.getX(), component.getWidth()) + && isPositiveAndBelow (position.getY(), component.getHeight()))) return false; UIView* v = [view hitTest: CGPointMake ((CGFloat) position.getX(), (CGFloat) position.getY()) @@ -703,7 +698,7 @@ void UIViewComponentPeer::toFront (bool makeActiveWindow) if (isSharedWindow) [[view superview] bringSubviewToFront: view]; - if (window != nil && component->isVisible()) + if (window != nil && component.isVisible()) [window makeKeyAndVisible]; } @@ -876,7 +871,7 @@ void UIViewComponentPeer::globalFocusChanged (Component*) { Component* comp = dynamic_cast (target); - Point pos (component->getLocalPoint (comp, Point())); + Point pos (component.getLocalPoint (comp, Point())); view->hiddenTextView.frame = CGRectMake (pos.getX(), pos.getY(), 0, 0); updateHiddenTextContent (target); @@ -897,7 +892,7 @@ void UIViewComponentPeer::drawRect (CGRect r) CGContextRef cg = UIGraphicsGetCurrentContext(); - if (! component->isOpaque()) + if (! component.isOpaque()) CGContextClearRect (cg, CGContextGetClipBoundingBox (cg)); CGContextConcatCTM (cg, CGAffineTransformMake (1, 0, 0, -1, 0, view.bounds.size.height)); @@ -978,7 +973,7 @@ void UIViewComponentPeer::performAnyPendingRepaintsNow() ComponentPeer* Component::createNewPeer (int styleFlags, void* windowToAttachTo) { - return new UIViewComponentPeer (this, styleFlags, (UIView*) windowToAttachTo); + return new UIViewComponentPeer (*this, styleFlags, (UIView*) windowToAttachTo); } //============================================================================== diff --git a/modules/juce_gui_basics/native/juce_linux_Windowing.cpp b/modules/juce_gui_basics/native/juce_linux_Windowing.cpp index 12652016e7..51ba6e96c9 100644 --- a/modules/juce_gui_basics/native/juce_linux_Windowing.cpp +++ b/modules/juce_gui_basics/native/juce_linux_Windowing.cpp @@ -741,8 +741,8 @@ namespace PixmapHelpers class LinuxComponentPeer : public ComponentPeer { public: - LinuxComponentPeer (Component* const component, const int windowStyleFlags, Window parentToAddTo) - : ComponentPeer (component, windowStyleFlags), + LinuxComponentPeer (Component& comp, const int windowStyleFlags, Window parentToAddTo) + : ComponentPeer (comp, windowStyleFlags), windowH (0), parentWindow (0), fullScreen (false), mapped (false), visual (0), depth (0) @@ -754,7 +754,7 @@ public: createWindow (parentToAddTo); - setTitle (component->getName()); + setTitle (component.getName()); } ~LinuxComponentPeer() @@ -847,7 +847,7 @@ public: { bounds.setBounds (x, y, jmax (1, w), jmax (1, h)); - WeakReference deletionChecker (component); + WeakReference deletionChecker (&component); ScopedXLock xlock; XSizeHints* const hints = XAllocSizeHints(); @@ -964,7 +964,7 @@ public: if (! r.isEmpty()) setBounds (r.getX(), r.getY(), r.getWidth(), r.getHeight(), shouldBeFullScreen); - getComponent()->repaint(); + component.repaint(); } } @@ -1029,7 +1029,7 @@ public: { Component* const c = Desktop::getInstance().getComponent (i); - if (c == getComponent()) + if (c == &component) break; if (c->contains (position + bounds.getPosition() - c->getScreenPosition())) @@ -1089,7 +1089,7 @@ public: XWindowAttributes attr; XGetWindowAttributes (display, windowH, &attr); - if (component->isAlwaysOnTop()) + if (component.isAlwaysOnTop()) XRaiseWindow (display, windowH); XSync (display, False); @@ -1145,7 +1145,7 @@ public: void repaint (const Rectangle& area) { - repainter->repaint (area.getIntersection (getComponent()->getLocalBounds())); + repainter->repaint (area.getIntersection (component.getLocalBounds())); } void performAnyPendingRepaintsNow() @@ -1569,7 +1569,7 @@ public: // if the native title bar is dragged, need to tell any active menus, etc. if ((styleFlags & windowHasTitleBar) != 0 - && component->isCurrentlyBlockedByAnotherModalComponent()) + && component.isCurrentlyBlockedByAnotherModalComponent()) { Component* const currentModalComp = Component::getCurrentlyModalComponent(); @@ -1796,7 +1796,7 @@ private: } { - ScopedPointer context (peer->getComponent()->getLookAndFeel() + ScopedPointer context (peer->component.getLookAndFeel() .createGraphicsContext (image, -totalArea.getPosition(), adjustedList)); peer->handlePaint (*context); } @@ -2081,7 +2081,7 @@ private: if ((styleFlags & windowAppearsOnTaskbar) == 0) netHints [numHints++] = Atoms::getIfExists ("_NET_WM_STATE_SKIP_TASKBAR"); - if (component->isAlwaysOnTop()) + if (component.isAlwaysOnTop()) netHints [numHints++] = Atoms::getIfExists ("_NET_WM_STATE_ABOVE"); if (numHints > 0) @@ -2116,7 +2116,7 @@ private: swa.border_pixel = 0; swa.background_pixmap = None; swa.colormap = colormap; - swa.override_redirect = (getComponent()->isAlwaysOnTop() && (styleFlags & windowIsTemporary) != 0) ? True : False; + swa.override_redirect = (component.isAlwaysOnTop() && (styleFlags & windowIsTemporary) != 0) ? True : False; swa.event_mask = getAllEventsMask(); windowH = XCreateWindow (display, parentToAddTo != 0 ? parentToAddTo : root, @@ -2157,7 +2157,7 @@ private: else addWindowButtons (windowH); - setTitle (getComponent()->getName()); + setTitle (component.getName()); // Associate the PID, allowing to be shut down when something goes wrong unsigned long pid = getpid(); @@ -2594,7 +2594,7 @@ void Desktop::setKioskComponent (Component* kioskModeComponent, bool enableOrDis //============================================================================== ComponentPeer* Component::createNewPeer (int styleFlags, void* nativeWindowToAttachTo) { - return new LinuxComponentPeer (this, styleFlags, (Window) nativeWindowToAttachTo); + return new LinuxComponentPeer (*this, styleFlags, (Window) nativeWindowToAttachTo); } diff --git a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm index 2520e5c242..bfe3d0abdc 100644 --- a/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm +++ b/modules/juce_gui_basics/native/juce_mac_NSViewComponentPeer.mm @@ -46,7 +46,7 @@ namespace juce { class NSViewComponentPeer : public ComponentPeer { public: - NSViewComponentPeer (Component* const comp, const int windowStyleFlags, NSView* viewToAttachTo) + NSViewComponentPeer (Component& comp, const int windowStyleFlags, NSView* viewToAttachTo) : ComponentPeer (comp, windowStyleFlags), window (nil), view (nil), @@ -66,7 +66,7 @@ public: appFocusChangeCallback = appFocusChanged; isEventBlockedByModalComps = checkEventBlockedByModalComps; - NSRect r = NSMakeRect (0, 0, (CGFloat) component->getWidth(), (CGFloat) component->getHeight()); + NSRect r = NSMakeRect (0, 0, (CGFloat) component.getWidth(), (CGFloat) component.getHeight()); view = [createViewInstance() initWithFrame: r]; setOwner (view, this); @@ -95,8 +95,8 @@ public: } else { - r.origin.x = (CGFloat) component->getX(); - r.origin.y = (CGFloat) component->getY(); + r.origin.x = (CGFloat) component.getX(); + r.origin.y = (CGFloat) component.getY(); r.origin.y = [[[NSScreen screens] objectAtIndex: 0] frame].size.height - (r.origin.y + r.size.height); window = [createWindowInstance() initWithContentRect: r @@ -111,10 +111,10 @@ public: #else [window setDelegate: window]; #endif - [window setOpaque: component->isOpaque()]; + [window setOpaque: component.isOpaque()]; [window setHasShadow: ((windowStyleFlags & windowHasDropShadow) != 0)]; - if (component->isAlwaysOnTop()) + if (component.isAlwaysOnTop()) [window setLevel: NSFloatingWindowLevel]; [window setContentView: view]; @@ -135,11 +135,11 @@ public: #endif } - const float alpha = component->getAlpha(); + const float alpha = component.getAlpha(); if (alpha < 1.0f) setAlpha (alpha); - setTitle (component->getName()); + setTitle (component.getName()); } ~NSViewComponentPeer() @@ -190,12 +190,12 @@ public: void setPosition (int x, int y) { - setBounds (x, y, component->getWidth(), component->getHeight(), false); + setBounds (x, y, component.getWidth(), component.getHeight(), false); } void setSize (int w, int h) { - setBounds (component->getX(), component->getY(), w, h, false); + setBounds (component.getX(), component.getY(), w, h, false); } void setBounds (int x, int y, int w, int h, bool isNowFullScreen) @@ -330,10 +330,10 @@ public: else { if (shouldBeFullScreen) - r = component->getParentMonitorArea(); + r = component.getParentMonitorArea(); // (can't call the component's setBounds method because that'll reset our fullscreen flag) - if (r != getComponent()->getBounds() && ! r.isEmpty()) + if (r != component.getBounds() && ! r.isEmpty()) setBounds (r.getX(), r.getY(), r.getWidth(), r.getHeight(), shouldBeFullScreen); } } @@ -347,8 +347,8 @@ public: bool contains (const Point& position, bool trueIfInAChildWindow) const { - if (! (isPositiveAndBelow (position.getX(), component->getWidth()) - && isPositiveAndBelow (position.getY(), component->getHeight()))) + if (! (isPositiveAndBelow (position.getX(), component.getWidth()) + && isPositiveAndBelow (position.getY(), component.getHeight()))) return false; NSRect frameRect = [view frame]; @@ -384,8 +384,8 @@ public: { if (hasNativeTitleBar()) { - const Rectangle screen (getFrameSize().subtractedFrom (component->getParentMonitorArea())); - const Rectangle window (component->getScreenBounds()); + const Rectangle screen (getFrameSize().subtractedFrom (component.getParentMonitorArea())); + const Rectangle window (component.getScreenBounds()); fullScreen = window.expanded (2, 2).contains (screen); } @@ -411,7 +411,7 @@ public: positioned: NSWindowAbove relativeTo: nil]; - if (window != nil && component->isVisible()) + if (window != nil && component.isVisible()) { if (makeActiveWindow) [window makeKeyAndOrderFront: nil]; @@ -681,7 +681,7 @@ public: bool isOpaque() { - return component == nullptr || component->isOpaque(); + return component.isOpaque(); } void drawRect (NSRect r) @@ -691,7 +691,7 @@ public: CGContextRef cg = (CGContextRef) [[NSGraphicsContext currentContext] graphicsPort]; - if (! component->isOpaque()) + if (! component.isOpaque()) CGContextClearRect (cg, CGContextGetClipBoundingBox (cg)); #if USE_COREGRAPHICS_RENDERING @@ -724,11 +724,11 @@ public: if (! clip.isEmpty()) { - Image temp (getComponent()->isOpaque() ? Image::RGB : Image::ARGB, - clipW, clipH, ! getComponent()->isOpaque()); + Image temp (component.isOpaque() ? Image::RGB : Image::ARGB, + clipW, clipH, ! component.isOpaque()); { - ScopedPointer context (component->getLookAndFeel() + ScopedPointer context (component.getLookAndFeel() .createGraphicsContext (temp, Point (xOffset, yOffset), clip)); insideDrawRect = true; @@ -1708,7 +1708,7 @@ private: frameRect = owner->constrainRect (frameRect); if (juce::Component::getCurrentlyModalComponent() != nullptr - && owner->getComponent()->isCurrentlyBlockedByAnotherModalComponent() + && owner->getComponent().isCurrentlyBlockedByAnotherModalComponent() && owner->hasNativeTitleBar()) juce::Component::getCurrentlyModalComponent()->inputAttemptWhenModal(); @@ -1732,7 +1732,7 @@ private: NSViewComponentPeer* const owner = getOwner (self); if (juce::Component::getCurrentlyModalComponent() != nullptr - && owner->getComponent()->isCurrentlyBlockedByAnotherModalComponent() + && owner->getComponent().isCurrentlyBlockedByAnotherModalComponent() && owner->hasNativeTitleBar()) juce::Component::getCurrentlyModalComponent()->inputAttemptWhenModal(); } @@ -1827,7 +1827,7 @@ void Desktop::setKioskComponent (Component* kioskModeComponent, bool enableOrDis if (peer->hasNativeTitleBar()) { [peer->window setStyleMask: (NSViewComponentPeer::getNSWindowStyleMask (peer->getStyleFlags()))]; - peer->setTitle (peer->component->getName()); // required to force the OS to update the title + peer->setTitle (peer->component.getName()); // required to force the OS to update the title } [NSApp setPresentationOptions: NSApplicationPresentationDefault]; @@ -1853,7 +1853,7 @@ void Desktop::setKioskComponent (Component* kioskModeComponent, bool enableOrDis //============================================================================== ComponentPeer* Component::createNewPeer (int styleFlags, void* windowToAttachTo) { - return new NSViewComponentPeer (this, styleFlags, (NSView*) windowToAttachTo); + return new NSViewComponentPeer (*this, styleFlags, (NSView*) windowToAttachTo); } //============================================================================== diff --git a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp index 1d381e9c37..824f10442b 100644 --- a/modules/juce_gui_basics/native/juce_win32_Windowing.cpp +++ b/modules/juce_gui_basics/native/juce_win32_Windowing.cpp @@ -463,10 +463,8 @@ public: }; //============================================================================== - HWNDComponentPeer (Component* const component, - const int windowStyleFlags, - HWND parentToAddTo_) - : ComponentPeer (component, windowStyleFlags), + HWNDComponentPeer (Component& comp, const int windowStyleFlags, HWND parentToAddTo_) + : ComponentPeer (comp, windowStyleFlags), dontRepaint (false), currentRenderingEngine (softwareRenderingEngine), fullScreen (false), @@ -481,15 +479,15 @@ public: { callFunctionIfNotLocked (&createWindowCallback, this); - setTitle (component->getName()); + setTitle (component.getName()); if ((windowStyleFlags & windowHasDropShadow) != 0 && Desktop::canUseSemiTransparentWindows()) { - shadower = component->getLookAndFeel().createDropShadowerForComponent (component); + shadower = component.getLookAndFeel().createDropShadowerForComponent (&component); if (shadower != nullptr) - shadower->setOwner (component); + shadower->setOwner (&component); } } @@ -641,7 +639,7 @@ public: { const uint8 intAlpha = (uint8) jlimit (0, 255, (int) (newAlpha * 255.0f)); - if (component->isOpaque()) + if (component.isOpaque()) { if (newAlpha < 1.0f) { @@ -657,7 +655,7 @@ public: else { updateLayeredWindowAlpha = intAlpha; - component->repaint(); + component.repaint(); } } @@ -683,7 +681,7 @@ public: if (isFullScreen() != shouldBeFullScreen) { fullScreen = shouldBeFullScreen; - const WeakReference deletionChecker (component); + const WeakReference deletionChecker (&component); if (! fullScreen) { @@ -740,8 +738,8 @@ public: bool contains (const Point& position, bool trueIfInAChildWindow) const { - return isPositiveAndBelow (position.x, component->getWidth()) - && isPositiveAndBelow (position.y, component->getHeight()) + return isPositiveAndBelow (position.x, component.getWidth()) + && isPositiveAndBelow (position.y, component.getHeight()) && isWindowAtPoint (position, trueIfInAChildWindow); } @@ -797,12 +795,10 @@ public: // Must be careful not to try to put a topmost window behind a normal one, or Windows // promotes the normal one to be topmost! - if (getComponent()->isAlwaysOnTop() == otherPeer->getComponent()->isAlwaysOnTop()) - SetWindowPos (hwnd, otherPeer->hwnd, 0, 0, 0, 0, - SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOSENDCHANGING); - else if (otherPeer->getComponent()->isAlwaysOnTop()) - SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, - SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOSENDCHANGING); + if (component.isAlwaysOnTop() == otherPeer->component.isAlwaysOnTop()) + SetWindowPos (hwnd, otherPeer->hwnd, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOSENDCHANGING); + else if (otherPeer->component.isAlwaysOnTop()) + SetWindowPos (hwnd, HWND_TOP, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE | SWP_NOSENDCHANGING); } } @@ -847,7 +843,7 @@ public: void performAnyPendingRepaintsNow() { MSG m; - if (component->isVisible() + if (component.isVisible() && (PeekMessage (&m, hwnd, WM_PAINT, WM_PAINT, PM_REMOVE) || isUsingUpdateLayeredWindow())) handlePaintMessage(); } @@ -1308,7 +1304,7 @@ private: // correctly enable the menu items that we specify in the wm_initmenu message. GetSystemMenu (hwnd, false); - const float alpha = component->getAlpha(); + const float alpha = component.getAlpha(); if (alpha < 1.0f) setAlpha (alpha); } @@ -1366,7 +1362,7 @@ private: bool isUsingUpdateLayeredWindow() const { - return ! component->isOpaque(); + return ! component.isOpaque(); } inline bool hasTitleBar() const noexcept { return (styleFlags & windowHasTitleBar) != 0; } @@ -1514,12 +1510,12 @@ private: } // if the component's not opaque, this won't draw properly unless the platform can support this - jassert (Desktop::canUseSemiTransparentWindows() || component->isOpaque()); + jassert (Desktop::canUseSemiTransparentWindows() || component.isOpaque()); updateCurrentModifiers(); { - ScopedPointer context (component->getLookAndFeel() + ScopedPointer context (component.getLookAndFeel() .createGraphicsContext (offscreenImage, Point (-x, -y), contextClip)); handlePaint (*context); } @@ -1579,7 +1575,7 @@ private: { currentRenderingEngine = index == 1 ? direct2DRenderingEngine : softwareRenderingEngine; updateDirect2DContext(); - repaint (component->getLocalBounds()); + repaint (component.getLocalBounds()); } #endif } @@ -2002,7 +1998,7 @@ private: { Rectangle pos (rectangleFromRECT (*r)); - constrainer->checkBounds (pos, windowBorder.addedTo (component->getBounds()), + constrainer->checkBounds (pos, windowBorder.addedTo (component.getBounds()), Desktop::getInstance().getDisplays().getTotalBounds (true), wParam == WMSZ_TOP || wParam == WMSZ_TOPLEFT || wParam == WMSZ_TOPRIGHT, wParam == WMSZ_LEFT || wParam == WMSZ_TOPLEFT || wParam == WMSZ_BOTTOMLEFT, @@ -2025,7 +2021,7 @@ private: && ! Component::isMouseButtonDownAnywhere()) { Rectangle pos (wp->x, wp->y, wp->cx, wp->cy); - const Rectangle current (windowBorder.addedTo (component->getBounds())); + const Rectangle current (windowBorder.addedTo (component.getBounds())); constrainer->checkBounds (pos, current, Desktop::getInstance().getDisplays().getTotalBounds (true), @@ -2050,17 +2046,17 @@ private: if (isMinimised()) { - component->repaint(); + component.repaint(); handleMovedOrResized(); if (! ComponentPeer::isValidPeer (this)) return; } - Component* underMouse = component->getComponentAt (component->getMouseXYRelative()); + Component* underMouse = component.getComponentAt (component.getMouseXYRelative()); if (underMouse == nullptr) - underMouse = component; + underMouse = &component; if (underMouse->isCurrentlyBlockedByAnotherModalComponent()) { @@ -2125,7 +2121,7 @@ private: if (fullScreen && ! isMinimised()) { - const Rectangle r (component->getParentMonitorArea()); + const Rectangle r (component.getParentMonitorArea()); SetWindowPos (hwnd, 0, r.getX(), r.getY(), r.getWidth(), r.getHeight(), SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOZORDER | SWP_NOSENDCHANGING); @@ -2333,7 +2329,7 @@ private: break; case WM_MOUSEACTIVATE: - if (! component->getMouseClickGrabsKeyboardFocus()) + if (! component.getMouseClickGrabsKeyboardFocus()) return MA_NOACTIVATE; break; @@ -2345,7 +2341,7 @@ private: break; case WM_CLOSE: - if (! component->isCurrentlyBlockedByAnotherModalComponent()) + if (! component.isCurrentlyBlockedByAnotherModalComponent()) handleUserClosingWindow(); return 0; @@ -2467,7 +2463,7 @@ private: bool sendInputAttemptWhenModalMessage() { - if (component->isCurrentlyBlockedByAnotherModalComponent()) + if (component.isCurrentlyBlockedByAnotherModalComponent()) { Component* const current = Component::getCurrentlyModalComponent(); @@ -2695,8 +2691,7 @@ private: if (targetComp != nullptr) { - const Rectangle area (peer.getComponent() - ->getLocalArea (targetComp, target->getCaretRectangle())); + const Rectangle area (peer.getComponent().getLocalArea (targetComp, target->getCaretRectangle())); CANDIDATEFORM pos = { 0, CFS_CANDIDATEPOS, { area.getX(), area.getBottom() }, { 0, 0, 0, 0 } }; ImmSetCandidateWindow (hImc, &pos); @@ -2717,12 +2712,14 @@ ModifierKeys HWNDComponentPeer::modifiersAtLastCallback; ComponentPeer* Component::createNewPeer (int styleFlags, void* nativeWindowToAttachTo) { - return new HWNDComponentPeer (this, styleFlags, (HWND) nativeWindowToAttachTo); + return new HWNDComponentPeer (*this, styleFlags, (HWND) nativeWindowToAttachTo); } ComponentPeer* createNonRepaintingEmbeddedWindowsPeer (Component* component, void* parent) { - HWNDComponentPeer* const p = new HWNDComponentPeer (component, ComponentPeer::windowIgnoresMouseClicks, (HWND) parent); + jassert (component != nullptr); + + HWNDComponentPeer* const p = new HWNDComponentPeer (*component, ComponentPeer::windowIgnoresMouseClicks, (HWND) parent); p->dontRepaint = true; return p; } diff --git a/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp b/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp index 9e9d8f1f63..514f76f783 100644 --- a/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp +++ b/modules/juce_gui_basics/windows/juce_ComponentPeer.cpp @@ -30,7 +30,7 @@ static Array heavyweightPeers; static uint32 lastUniqueID = 1; //============================================================================== -ComponentPeer::ComponentPeer (Component* const component_, const int styleFlags_) +ComponentPeer::ComponentPeer (Component& component_, const int styleFlags_) : component (component_), styleFlags (styleFlags_), lastPaintTime (0), @@ -66,7 +66,7 @@ ComponentPeer* ComponentPeer::getPeerFor (const Component* const component) noex { ComponentPeer* const peer = heavyweightPeers.getUnchecked(i); - if (peer->getComponent() == component) + if (&(peer->getComponent()) == component) return peer; } @@ -111,7 +111,7 @@ void ComponentPeer::handlePaint (LowLevelGraphicsContext& contextToPaintTo) JUCE_TRY { - component->paintEntireComponent (g, true); + component.paintEntireComponent (g, true); } JUCE_CATCH_EXCEPTION @@ -135,13 +135,21 @@ void ComponentPeer::handlePaint (LowLevelGraphicsContext& contextToPaintTo) jassert (roundToInt (10.1f) == 10); } +Component* ComponentPeer::getTargetForKeyPress() +{ + Component* c = Component::getCurrentlyFocusedComponent(); + + if (c == nullptr) + c = &component; + + return c; +} + bool ComponentPeer::handleKeyPress (const int keyCode, const juce_wchar textCharacter) { updateCurrentModifiers(); - Component* target = Component::getCurrentlyFocusedComponent() != nullptr - ? Component::getCurrentlyFocusedComponent() - : component; + Component* target = getTargetForKeyPress(); if (target->isCurrentlyBlockedByAnotherModalComponent()) { @@ -206,9 +214,7 @@ bool ComponentPeer::handleKeyUpOrDown (const bool isKeyDown) { updateCurrentModifiers(); - Component* target = Component::getCurrentlyFocusedComponent() != nullptr - ? Component::getCurrentlyFocusedComponent() - : component; + Component* target = getTargetForKeyPress(); if (target->isCurrentlyBlockedByAnotherModalComponent()) { @@ -260,7 +266,7 @@ void ComponentPeer::handleModifierKeysChange() target = Component::getCurrentlyFocusedComponent(); if (target == nullptr) - target = component; + target = &component; if (target != nullptr) target->internalModifierKeysChanged(); @@ -269,7 +275,7 @@ void ComponentPeer::handleModifierKeysChange() TextInputTarget* ComponentPeer::findCurrentTextInputTarget() { Component* const c = Component::getCurrentlyFocusedComponent(); - if (component->isParentOf (c)) + if (component.isParentOf (c)) { TextInputTarget* const ti = dynamic_cast (c); if (ti != nullptr && ti->isTextInputActive()) @@ -287,9 +293,7 @@ void ComponentPeer::dismissPendingTextInput() void ComponentPeer::handleBroughtToFront() { updateCurrentModifiers(); - - if (component != nullptr) - component->internalBroughtToFront(); + component.internalBroughtToFront(); } void ComponentPeer::setConstrainer (ComponentBoundsConstrainer* const newConstrainer) noexcept @@ -303,22 +307,22 @@ void ComponentPeer::handleMovedOrResized() const bool nowMinimised = isMinimised(); - if (component->flags.hasHeavyweightPeerFlag && ! nowMinimised) + if (component.flags.hasHeavyweightPeerFlag && ! nowMinimised) { - const WeakReference deletionChecker (component); + const WeakReference deletionChecker (&component); const Rectangle newBounds (getBounds()); - const bool wasMoved = (component->getPosition() != newBounds.getPosition()); - const bool wasResized = (component->getWidth() != newBounds.getWidth() || component->getHeight() != newBounds.getHeight()); + const bool wasMoved = (component.getPosition() != newBounds.getPosition()); + const bool wasResized = (component.getWidth() != newBounds.getWidth() || component.getHeight() != newBounds.getHeight()); if (wasMoved || wasResized) { - component->bounds = newBounds; + component.bounds = newBounds; if (wasResized) - component->repaint(); + component.repaint(); - component->sendMovedResizedMessages (wasMoved, wasResized); + component.sendMovedResizedMessages (wasMoved, wasResized); if (deletionChecker == nullptr) return; @@ -328,19 +332,19 @@ void ComponentPeer::handleMovedOrResized() if (isWindowMinimised != nowMinimised) { isWindowMinimised = nowMinimised; - component->minimisationStateChanged (nowMinimised); - component->sendVisibilityChangeMessage(); + component.minimisationStateChanged (nowMinimised); + component.sendVisibilityChangeMessage(); } if (! isFullScreen()) - lastNonFullscreenBounds = component->getBounds(); + lastNonFullscreenBounds = component.getBounds(); } void ComponentPeer::handleFocusGain() { updateCurrentModifiers(); - if (component->isParentOf (lastFocusedComponent)) + if (component.isParentOf (lastFocusedComponent)) { Component::currentlyFocusedComponent = lastFocusedComponent; Desktop::getInstance().triggerFocusCallback(); @@ -348,8 +352,8 @@ void ComponentPeer::handleFocusGain() } else { - if (! component->isCurrentlyBlockedByAnotherModalComponent()) - component->grabKeyboardFocus(); + if (! component.isCurrentlyBlockedByAnotherModalComponent()) + component.grabKeyboardFocus(); else ModalComponentManager::getInstance()->bringModalComponentsToFront(); } @@ -359,7 +363,7 @@ void ComponentPeer::handleFocusLoss() { updateCurrentModifiers(); - if (component->hasKeyboardFocus (true)) + if (component.hasKeyboardFocus (true)) { lastFocusedComponent = Component::currentlyFocusedComponent; @@ -374,16 +378,16 @@ void ComponentPeer::handleFocusLoss() Component* ComponentPeer::getLastFocusedSubcomponent() const noexcept { - return (component->isParentOf (lastFocusedComponent) && lastFocusedComponent->isShowing()) + return (component.isParentOf (lastFocusedComponent) && lastFocusedComponent->isShowing()) ? static_cast (lastFocusedComponent) - : component; + : &component; } void ComponentPeer::handleScreenSizeChange() { updateCurrentModifiers(); - component->parentSizeChanged(); + component.parentSizeChanged(); handleMovedOrResized(); } @@ -468,7 +472,7 @@ bool ComponentPeer::handleDragMove (const ComponentPeer::DragInfo& info) { updateCurrentModifiers(); - Component* const compUnderMouse = component->getComponentAt (info.position); + Component* const compUnderMouse = component.getComponentAt (info.position); Component* const lastTarget = dragAndDropTargetComponent.get(); Component* newTarget = nullptr; @@ -493,7 +497,7 @@ bool ComponentPeer::handleDragMove (const ComponentPeer::DragInfo& info) if (DragHelpers::isSuitableTarget (info, newTarget)) { dragAndDropTargetComponent = newTarget; - const Point pos (newTarget->getLocalPoint (component, info.position)); + const Point pos (newTarget->getLocalPoint (&component, info.position)); if (DragHelpers::isFileDrag (info)) dynamic_cast (newTarget)->fileDragEnter (info.files, pos.x, pos.y); @@ -510,7 +514,7 @@ bool ComponentPeer::handleDragMove (const ComponentPeer::DragInfo& info) if (! DragHelpers::isSuitableTarget (info, newTarget)) return false; - const Point pos (newTarget->getLocalPoint (component, info.position)); + const Point pos (newTarget->getLocalPoint (&component, info.position)); if (DragHelpers::isFileDrag (info)) dynamic_cast (newTarget)->fileDragMove (info.files, pos.x, pos.y); @@ -553,7 +557,7 @@ bool ComponentPeer::handleDragDrop (const ComponentPeer::DragInfo& info) } ComponentPeer::DragInfo info2 (info); - info2.position = targetComp->getLocalPoint (component, info.position); + info2.position = targetComp->getLocalPoint (&component, info.position); (new DragHelpers::AsyncDropMessage (targetComp, info2))->post(); return true; @@ -567,7 +571,7 @@ bool ComponentPeer::handleDragDrop (const ComponentPeer::DragInfo& info) void ComponentPeer::handleUserClosingWindow() { updateCurrentModifiers(); - component->userTriedToCloseWindow(); + component.userTriedToCloseWindow(); } //============================================================================== diff --git a/modules/juce_gui_basics/windows/juce_ComponentPeer.h b/modules/juce_gui_basics/windows/juce_ComponentPeer.h index bb7091f6a6..83a7a72d28 100644 --- a/modules/juce_gui_basics/windows/juce_ComponentPeer.h +++ b/modules/juce_gui_basics/windows/juce_ComponentPeer.h @@ -86,14 +86,14 @@ public: The component is the one that we intend to represent, and the style flags are a combination of the values in the StyleFlags enum */ - ComponentPeer (Component* component, int styleFlags); + ComponentPeer (Component& component, int styleFlags); /** Destructor. */ virtual ~ComponentPeer(); //============================================================================== /** Returns the component being represented by this peer. */ - Component* getComponent() const noexcept { return component; } + Component& getComponent() noexcept { return component; } /** Returns the set of style flags that were set when the window was created. @@ -324,10 +324,7 @@ public: //============================================================================== /** Resets the masking region. - - The subclass should call this every time it's about to call the handlePaint - method. - + The subclass should call this every time it's about to call the handlePaint method. @see addMaskedRegion */ void clearMaskedRegion(); @@ -345,19 +342,16 @@ public: //============================================================================== /** Returns the number of currently-active peers. - @see getPeer */ static int getNumPeers() noexcept; /** Returns one of the currently-active peers. - @see getNumPeers */ static ComponentPeer* getPeer (int index) noexcept; /** Checks if this peer object is valid. - @see getNumPeers */ static bool isValidPeer (const ComponentPeer* peer) noexcept; @@ -370,7 +364,7 @@ public: protected: //============================================================================== - Component* const component; + Component& component; const int styleFlags; RectangleList maskedRegion; Rectangle lastNonFullscreenBounds; @@ -388,9 +382,10 @@ private: friend class Component; friend class Desktop; - static ComponentPeer* getPeerFor (const Component* component) noexcept; + static ComponentPeer* getPeerFor (const Component*) noexcept; + Component* getTargetForKeyPress(); - void setLastDragDropTarget (Component* comp); + void setLastDragDropTarget (Component*); bool finishDrag (bool); JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (ComponentPeer); diff --git a/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp b/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp index 1293a6ab4c..55b73fb245 100644 --- a/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp +++ b/modules/juce_gui_extra/native/juce_win32_SystemTrayIcon.cpp @@ -146,7 +146,7 @@ public: if (peer != nullptr) { - SystemTrayIconComponent* const iconComp = dynamic_cast (peer->getComponent()); + SystemTrayIconComponent* const iconComp = dynamic_cast (&(peer->getComponent())); if (iconComp != nullptr) return iconComp->pimpl; diff --git a/modules/juce_opengl/native/juce_OpenGL_ios.h b/modules/juce_opengl/native/juce_OpenGL_ios.h index 54e3c9ccc6..b72378d9b9 100644 --- a/modules/juce_opengl/native/juce_OpenGL_ios.h +++ b/modules/juce_opengl/native/juce_OpenGL_ios.h @@ -55,7 +55,7 @@ public: ComponentPeer* const peer = component.getPeer(); jassert (peer != nullptr); - const Rectangle bounds (peer->getComponent()->getLocalArea (&component, component.getLocalBounds())); + const Rectangle bounds (peer->getComponent().getLocalArea (&component, component.getLocalBounds())); lastWidth = bounds.getWidth(); lastHeight = bounds.getHeight(); diff --git a/modules/juce_opengl/opengl/juce_OpenGLContext.cpp b/modules/juce_opengl/opengl/juce_OpenGLContext.cpp index 8679b1ec56..606193300a 100644 --- a/modules/juce_opengl/opengl/juce_OpenGLContext.cpp +++ b/modules/juce_opengl/opengl/juce_OpenGLContext.cpp @@ -74,7 +74,7 @@ public: ComponentPeer* const peer = component.getPeer(); if (peer != nullptr) - peer->addMaskedRegion (peer->getComponent()->getLocalArea (&component, component.getLocalBounds())); + peer->addMaskedRegion (peer->getComponent().getLocalArea (&component, component.getLocalBounds())); } void invalidateAll()