| @@ -2294,32 +2294,32 @@ private: | |||
| uint8 componentTransparency; | |||
| //============================================================================== | |||
| void internalMouseEnter (MouseInputSource& source, const Point<int>& relativePos, const Time& time); | |||
| void internalMouseExit (MouseInputSource& source, const Point<int>& relativePos, const Time& time); | |||
| void internalMouseDown (MouseInputSource& source, const Point<int>& relativePos, const Time& time); | |||
| void internalMouseUp (MouseInputSource& source, const Point<int>& relativePos, const Time& time, const ModifierKeys& oldModifiers); | |||
| void internalMouseDrag (MouseInputSource& source, const Point<int>& relativePos, const Time& time); | |||
| void internalMouseMove (MouseInputSource& source, const Point<int>& relativePos, const Time& time); | |||
| void internalMouseWheel (MouseInputSource& source, const Point<int>& relativePos, const Time& time, float amountX, float amountY); | |||
| void internalMouseEnter (MouseInputSource&, const Point<int>&, const Time&); | |||
| void internalMouseExit (MouseInputSource&, const Point<int>&, const Time&); | |||
| void internalMouseDown (MouseInputSource&, const Point<int>&, const Time&); | |||
| void internalMouseUp (MouseInputSource&, const Point<int>&, const Time&, const ModifierKeys& oldModifiers); | |||
| void internalMouseDrag (MouseInputSource&, const Point<int>&, const Time&); | |||
| void internalMouseMove (MouseInputSource&, const Point<int>&, const Time&); | |||
| void internalMouseWheel (MouseInputSource&, const Point<int>&, const Time&, float amountX, float amountY); | |||
| void internalBroughtToFront(); | |||
| void internalFocusGain (const FocusChangeType cause, const WeakReference<Component>&); | |||
| void internalFocusGain (const FocusChangeType cause); | |||
| void internalFocusLoss (const FocusChangeType cause); | |||
| void internalChildFocusChange (FocusChangeType cause, const WeakReference<Component>&); | |||
| void internalFocusGain (const FocusChangeType, const WeakReference<Component>&); | |||
| void internalFocusGain (const FocusChangeType); | |||
| void internalFocusLoss (const FocusChangeType); | |||
| void internalChildFocusChange (FocusChangeType, const WeakReference<Component>&); | |||
| void internalModalInputAttempt(); | |||
| void internalModifierKeysChanged(); | |||
| void internalChildrenChanged(); | |||
| void internalHierarchyChanged(); | |||
| Component* removeChildComponent (int index, bool sendParentEvents, bool sendChildEvents); | |||
| void moveChildInternal (int sourceIndex, int destIndex); | |||
| void paintComponentAndChildren (Graphics& g); | |||
| void paintComponent (Graphics& g); | |||
| void paintWithinParentContext (Graphics& g); | |||
| void paintComponentAndChildren (Graphics&); | |||
| void paintComponent (Graphics&); | |||
| void paintWithinParentContext (Graphics&); | |||
| void sendMovedResizedMessages (bool wasMoved, bool wasResized); | |||
| void repaintParent(); | |||
| void sendFakeMouseMove() const; | |||
| void takeKeyboardFocus (const FocusChangeType cause); | |||
| void grabFocusInternal (const FocusChangeType cause, bool canTryParent = true); | |||
| void takeKeyboardFocus (const FocusChangeType); | |||
| void grabFocusInternal (const FocusChangeType, bool canTryParent = true); | |||
| static void giveAwayFocus (bool sendFocusLossEvent); | |||
| void sendEnablementChangeMessage(); | |||
| void sendVisibilityChangeMessage(); | |||
| @@ -391,13 +391,13 @@ private: | |||
| int getNumDisplayMonitors() const noexcept; | |||
| const Rectangle<int> getDisplayMonitorCoordinates (int index, bool clippedToWorkArea) const noexcept; | |||
| static void getCurrentMonitorPositions (Array <Rectangle<int> >& monitorCoords, const bool clipToWorkArea); | |||
| static void getCurrentMonitorPositions (Array <Rectangle<int> >&, const bool clipToWorkArea); | |||
| void addDesktopComponent (Component* c); | |||
| void removeDesktopComponent (Component* c); | |||
| void componentBroughtToFront (Component* c); | |||
| void addDesktopComponent (Component*); | |||
| void removeDesktopComponent (Component*); | |||
| void componentBroughtToFront (Component*); | |||
| static void setKioskComponent (Component* kioskModeComponent, bool enableOrDisable, bool allowMenusAndBars); | |||
| static void setKioskComponent (Component*, bool enableOrDisable, bool allowMenusAndBars); | |||
| void triggerFocusCallback(); | |||
| void handleAsyncUpdate(); | |||
| @@ -139,9 +139,9 @@ private: | |||
| friend class OwnedArray <ModalItem>; | |||
| OwnedArray <ModalItem> stack; | |||
| void startModal (Component* component); | |||
| void endModal (Component* component, int returnValue); | |||
| void endModal (Component* component); | |||
| void startModal (Component*); | |||
| void endModal (Component*, int returnValue); | |||
| void endModal (Component*); | |||
| JUCE_DECLARE_NON_COPYABLE (ModalComponentManager); | |||
| }; | |||
| @@ -205,8 +205,11 @@ const File& FileBrowserComponent::getRoot() const | |||
| void FileBrowserComponent::setRoot (const File& newRootDirectory) | |||
| { | |||
| bool callListeners = false; | |||
| if (currentRoot != newRootDirectory) | |||
| { | |||
| callListeners = true; | |||
| fileListComponent->scrollToTop(); | |||
| String path (newRootDirectory.getFullPathName()); | |||
| @@ -246,6 +249,12 @@ void FileBrowserComponent::setRoot (const File& newRootDirectory) | |||
| goUpButton->setEnabled (currentRoot.getParentDirectory().isDirectory() | |||
| && currentRoot.getParentDirectory() != currentRoot); | |||
| if (callListeners) | |||
| { | |||
| Component::BailOutChecker checker (this); | |||
| listeners.callChecked (checker, &FileBrowserListener::browserRootChanged, currentRoot); | |||
| } | |||
| } | |||
| void FileBrowserComponent::resetRecentPaths() | |||
| @@ -367,6 +376,8 @@ void FileBrowserComponent::fileDoubleClicked (const File& f) | |||
| } | |||
| } | |||
| void FileBrowserComponent::browserRootChanged (const File&) {} | |||
| bool FileBrowserComponent::keyPressed (const KeyPress& key) | |||
| { | |||
| (void) key; | |||
| @@ -177,27 +177,29 @@ public: | |||
| /** @internal */ | |||
| void resized(); | |||
| /** @internal */ | |||
| void buttonClicked (Button* b); | |||
| void buttonClicked (Button*); | |||
| /** @internal */ | |||
| void comboBoxChanged (ComboBox*); | |||
| /** @internal */ | |||
| void textEditorTextChanged (TextEditor& editor); | |||
| void textEditorTextChanged (TextEditor&); | |||
| /** @internal */ | |||
| void textEditorReturnKeyPressed (TextEditor& editor); | |||
| void textEditorReturnKeyPressed (TextEditor&); | |||
| /** @internal */ | |||
| void textEditorEscapeKeyPressed (TextEditor& editor); | |||
| void textEditorEscapeKeyPressed (TextEditor&); | |||
| /** @internal */ | |||
| void textEditorFocusLost (TextEditor& editor); | |||
| void textEditorFocusLost (TextEditor&); | |||
| /** @internal */ | |||
| bool keyPressed (const KeyPress& key); | |||
| bool keyPressed (const KeyPress&); | |||
| /** @internal */ | |||
| void selectionChanged(); | |||
| /** @internal */ | |||
| void fileClicked (const File& f, const MouseEvent& e); | |||
| void fileClicked (const File&, const MouseEvent&); | |||
| /** @internal */ | |||
| void fileDoubleClicked (const File& f); | |||
| void fileDoubleClicked (const File&); | |||
| /** @internal */ | |||
| bool isFileSuitable (const File& file) const; | |||
| void browserRootChanged (const File&); | |||
| /** @internal */ | |||
| bool isFileSuitable (const File&) const; | |||
| /** @internal */ | |||
| bool isDirectorySuitable (const File&) const; | |||
| @@ -51,6 +51,9 @@ public: | |||
| /** Callback when the user double-clicks on a file in the browser. */ | |||
| virtual void fileDoubleClicked (const File& file) = 0; | |||
| /** Callback when the browser's root folder changes. */ | |||
| virtual void browserRootChanged (const File& newRoot) = 0; | |||
| }; | |||
| @@ -190,16 +190,15 @@ void FileChooserDialogBox::selectionChanged() | |||
| && content->chooserComponent.getRoot().isDirectory()); | |||
| } | |||
| void FileChooserDialogBox::fileClicked (const File&, const MouseEvent&) | |||
| { | |||
| } | |||
| void FileChooserDialogBox::fileDoubleClicked (const File&) | |||
| { | |||
| selectionChanged(); | |||
| content->okButton.triggerClick(); | |||
| } | |||
| void FileChooserDialogBox::fileClicked (const File&, const MouseEvent&) {} | |||
| void FileChooserDialogBox::browserRootChanged (const File&) {} | |||
| void FileChooserDialogBox::okToOverwriteFileCallback (int result, FileChooserDialogBox* box) | |||
| { | |||
| if (result != 0 && box != nullptr) | |||
| @@ -138,15 +138,17 @@ public: | |||
| //============================================================================== | |||
| /** @internal */ | |||
| void buttonClicked (Button* button); | |||
| void buttonClicked (Button*); | |||
| /** @internal */ | |||
| void closeButtonPressed(); | |||
| /** @internal */ | |||
| void selectionChanged(); | |||
| /** @internal */ | |||
| void fileClicked (const File& file, const MouseEvent& e); | |||
| void fileClicked (const File&, const MouseEvent&); | |||
| /** @internal */ | |||
| void fileDoubleClicked (const File& file); | |||
| void fileDoubleClicked (const File&); | |||
| /** @internal */ | |||
| void browserRootChanged (const File&); | |||
| private: | |||
| class ContentComponent; | |||
| @@ -43,59 +43,33 @@ struct TextEditorKeyMapper | |||
| */ | |||
| static bool invokeKeyFunction (CallbackClass& target, const KeyPress& key) | |||
| { | |||
| const bool isShiftDown = key.getModifiers().isShiftDown(); | |||
| const bool isShiftDown = key.getModifiers().isShiftDown(); | |||
| const bool ctrlOrAltDown = key.getModifiers().isCtrlDown() || key.getModifiers().isAltDown(); | |||
| if (key == KeyPress (KeyPress::downKey, ModifierKeys::ctrlModifier, 0) | |||
| && target.scrollUp()) | |||
| return true; | |||
| if (key == KeyPress (KeyPress::upKey, ModifierKeys::ctrlModifier, 0) | |||
| && target.scrollDown()) | |||
| return true; | |||
| if (key == KeyPress (KeyPress::downKey, ModifierKeys::ctrlModifier, 0) && target.scrollUp()) return true; | |||
| if (key == KeyPress (KeyPress::upKey, ModifierKeys::ctrlModifier, 0) && target.scrollDown()) return true; | |||
| #if JUCE_MAC | |||
| if (key.getModifiers().isCommandDown()) | |||
| { | |||
| if (key.isKeyCode (KeyPress::upKey)) | |||
| return target.moveCaretToTop (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::downKey)) | |||
| return target.moveCaretToEnd (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::leftKey)) | |||
| return target.moveCaretToStartOfLine (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::rightKey)) | |||
| return target.moveCaretToEndOfLine (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::upKey)) return target.moveCaretToTop (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::downKey)) return target.moveCaretToEnd (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::leftKey)) return target.moveCaretToStartOfLine (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::rightKey)) return target.moveCaretToEndOfLine (isShiftDown); | |||
| } | |||
| #endif | |||
| if (key.isKeyCode (KeyPress::upKey)) | |||
| return target.moveCaretUp (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::downKey)) | |||
| return target.moveCaretDown (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::leftKey)) | |||
| return target.moveCaretLeft (ctrlOrAltDown, isShiftDown); | |||
| if (key.isKeyCode (KeyPress::upKey)) return target.moveCaretUp (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::downKey)) return target.moveCaretDown (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::leftKey)) return target.moveCaretLeft (ctrlOrAltDown, isShiftDown); | |||
| if (key.isKeyCode (KeyPress::rightKey)) return target.moveCaretRight (ctrlOrAltDown, isShiftDown); | |||
| if (key.isKeyCode (KeyPress::pageUpKey)) return target.pageUp (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::pageDownKey)) return target.pageDown (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::rightKey)) | |||
| return target.moveCaretRight (ctrlOrAltDown, isShiftDown); | |||
| if (key.isKeyCode (KeyPress::pageUpKey)) | |||
| return target.pageUp (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::pageDownKey)) | |||
| return target.pageDown (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::homeKey)) | |||
| return ctrlOrAltDown ? target.moveCaretToTop (isShiftDown) | |||
| : target.moveCaretToStartOfLine (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::endKey)) | |||
| return ctrlOrAltDown ? target.moveCaretToEnd (isShiftDown) | |||
| : target.moveCaretToEndOfLine (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::homeKey)) return ctrlOrAltDown ? target.moveCaretToTop (isShiftDown) | |||
| : target.moveCaretToStartOfLine (isShiftDown); | |||
| if (key.isKeyCode (KeyPress::endKey)) return ctrlOrAltDown ? target.moveCaretToEnd (isShiftDown) | |||
| : target.moveCaretToEndOfLine (isShiftDown); | |||
| if (key == KeyPress ('c', ModifierKeys::commandModifier, 0) | |||
| || key == KeyPress (KeyPress::insertKey, ModifierKeys::ctrlModifier, 0)) | |||
| @@ -109,11 +83,8 @@ struct TextEditorKeyMapper | |||
| || key == KeyPress (KeyPress::insertKey, ModifierKeys::shiftModifier, 0)) | |||
| return target.pasteFromClipboard(); | |||
| if (key.isKeyCode (KeyPress::backspaceKey)) | |||
| return target.deleteBackwards (ctrlOrAltDown); | |||
| if (key.isKeyCode (KeyPress::deleteKey)) | |||
| return target.deleteForwards (ctrlOrAltDown); | |||
| if (key.isKeyCode (KeyPress::backspaceKey)) return target.deleteBackwards (ctrlOrAltDown); | |||
| if (key.isKeyCode (KeyPress::deleteKey)) return target.deleteForwards (ctrlOrAltDown); | |||
| if (key == KeyPress ('a', ModifierKeys::commandModifier, 0)) | |||
| return target.selectAll(); | |||