@@ -2294,32 +2294,32 @@ private: | |||||
uint8 componentTransparency; | 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 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 internalModalInputAttempt(); | ||||
void internalModifierKeysChanged(); | void internalModifierKeysChanged(); | ||||
void internalChildrenChanged(); | void internalChildrenChanged(); | ||||
void internalHierarchyChanged(); | void internalHierarchyChanged(); | ||||
Component* removeChildComponent (int index, bool sendParentEvents, bool sendChildEvents); | Component* removeChildComponent (int index, bool sendParentEvents, bool sendChildEvents); | ||||
void moveChildInternal (int sourceIndex, int destIndex); | 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 sendMovedResizedMessages (bool wasMoved, bool wasResized); | ||||
void repaintParent(); | void repaintParent(); | ||||
void sendFakeMouseMove() const; | 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); | static void giveAwayFocus (bool sendFocusLossEvent); | ||||
void sendEnablementChangeMessage(); | void sendEnablementChangeMessage(); | ||||
void sendVisibilityChangeMessage(); | void sendVisibilityChangeMessage(); | ||||
@@ -391,13 +391,13 @@ private: | |||||
int getNumDisplayMonitors() const noexcept; | int getNumDisplayMonitors() const noexcept; | ||||
const Rectangle<int> getDisplayMonitorCoordinates (int index, bool clippedToWorkArea) 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 triggerFocusCallback(); | ||||
void handleAsyncUpdate(); | void handleAsyncUpdate(); | ||||
@@ -139,9 +139,9 @@ private: | |||||
friend class OwnedArray <ModalItem>; | friend class OwnedArray <ModalItem>; | ||||
OwnedArray <ModalItem> stack; | 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); | JUCE_DECLARE_NON_COPYABLE (ModalComponentManager); | ||||
}; | }; | ||||
@@ -205,8 +205,11 @@ const File& FileBrowserComponent::getRoot() const | |||||
void FileBrowserComponent::setRoot (const File& newRootDirectory) | void FileBrowserComponent::setRoot (const File& newRootDirectory) | ||||
{ | { | ||||
bool callListeners = false; | |||||
if (currentRoot != newRootDirectory) | if (currentRoot != newRootDirectory) | ||||
{ | { | ||||
callListeners = true; | |||||
fileListComponent->scrollToTop(); | fileListComponent->scrollToTop(); | ||||
String path (newRootDirectory.getFullPathName()); | String path (newRootDirectory.getFullPathName()); | ||||
@@ -246,6 +249,12 @@ void FileBrowserComponent::setRoot (const File& newRootDirectory) | |||||
goUpButton->setEnabled (currentRoot.getParentDirectory().isDirectory() | goUpButton->setEnabled (currentRoot.getParentDirectory().isDirectory() | ||||
&& currentRoot.getParentDirectory() != currentRoot); | && currentRoot.getParentDirectory() != currentRoot); | ||||
if (callListeners) | |||||
{ | |||||
Component::BailOutChecker checker (this); | |||||
listeners.callChecked (checker, &FileBrowserListener::browserRootChanged, currentRoot); | |||||
} | |||||
} | } | ||||
void FileBrowserComponent::resetRecentPaths() | void FileBrowserComponent::resetRecentPaths() | ||||
@@ -367,6 +376,8 @@ void FileBrowserComponent::fileDoubleClicked (const File& f) | |||||
} | } | ||||
} | } | ||||
void FileBrowserComponent::browserRootChanged (const File&) {} | |||||
bool FileBrowserComponent::keyPressed (const KeyPress& key) | bool FileBrowserComponent::keyPressed (const KeyPress& key) | ||||
{ | { | ||||
(void) key; | (void) key; | ||||
@@ -177,27 +177,29 @@ public: | |||||
/** @internal */ | /** @internal */ | ||||
void resized(); | void resized(); | ||||
/** @internal */ | /** @internal */ | ||||
void buttonClicked (Button* b); | |||||
void buttonClicked (Button*); | |||||
/** @internal */ | /** @internal */ | ||||
void comboBoxChanged (ComboBox*); | void comboBoxChanged (ComboBox*); | ||||
/** @internal */ | /** @internal */ | ||||
void textEditorTextChanged (TextEditor& editor); | |||||
void textEditorTextChanged (TextEditor&); | |||||
/** @internal */ | /** @internal */ | ||||
void textEditorReturnKeyPressed (TextEditor& editor); | |||||
void textEditorReturnKeyPressed (TextEditor&); | |||||
/** @internal */ | /** @internal */ | ||||
void textEditorEscapeKeyPressed (TextEditor& editor); | |||||
void textEditorEscapeKeyPressed (TextEditor&); | |||||
/** @internal */ | /** @internal */ | ||||
void textEditorFocusLost (TextEditor& editor); | |||||
void textEditorFocusLost (TextEditor&); | |||||
/** @internal */ | /** @internal */ | ||||
bool keyPressed (const KeyPress& key); | |||||
bool keyPressed (const KeyPress&); | |||||
/** @internal */ | /** @internal */ | ||||
void selectionChanged(); | void selectionChanged(); | ||||
/** @internal */ | /** @internal */ | ||||
void fileClicked (const File& f, const MouseEvent& e); | |||||
void fileClicked (const File&, const MouseEvent&); | |||||
/** @internal */ | /** @internal */ | ||||
void fileDoubleClicked (const File& f); | |||||
void fileDoubleClicked (const File&); | |||||
/** @internal */ | /** @internal */ | ||||
bool isFileSuitable (const File& file) const; | |||||
void browserRootChanged (const File&); | |||||
/** @internal */ | |||||
bool isFileSuitable (const File&) const; | |||||
/** @internal */ | /** @internal */ | ||||
bool isDirectorySuitable (const File&) const; | bool isDirectorySuitable (const File&) const; | ||||
@@ -51,6 +51,9 @@ public: | |||||
/** Callback when the user double-clicks on a file in the browser. */ | /** Callback when the user double-clicks on a file in the browser. */ | ||||
virtual void fileDoubleClicked (const File& file) = 0; | 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()); | && content->chooserComponent.getRoot().isDirectory()); | ||||
} | } | ||||
void FileChooserDialogBox::fileClicked (const File&, const MouseEvent&) | |||||
{ | |||||
} | |||||
void FileChooserDialogBox::fileDoubleClicked (const File&) | void FileChooserDialogBox::fileDoubleClicked (const File&) | ||||
{ | { | ||||
selectionChanged(); | selectionChanged(); | ||||
content->okButton.triggerClick(); | content->okButton.triggerClick(); | ||||
} | } | ||||
void FileChooserDialogBox::fileClicked (const File&, const MouseEvent&) {} | |||||
void FileChooserDialogBox::browserRootChanged (const File&) {} | |||||
void FileChooserDialogBox::okToOverwriteFileCallback (int result, FileChooserDialogBox* box) | void FileChooserDialogBox::okToOverwriteFileCallback (int result, FileChooserDialogBox* box) | ||||
{ | { | ||||
if (result != 0 && box != nullptr) | if (result != 0 && box != nullptr) | ||||
@@ -138,15 +138,17 @@ public: | |||||
//============================================================================== | //============================================================================== | ||||
/** @internal */ | /** @internal */ | ||||
void buttonClicked (Button* button); | |||||
void buttonClicked (Button*); | |||||
/** @internal */ | /** @internal */ | ||||
void closeButtonPressed(); | void closeButtonPressed(); | ||||
/** @internal */ | /** @internal */ | ||||
void selectionChanged(); | void selectionChanged(); | ||||
/** @internal */ | /** @internal */ | ||||
void fileClicked (const File& file, const MouseEvent& e); | |||||
void fileClicked (const File&, const MouseEvent&); | |||||
/** @internal */ | /** @internal */ | ||||
void fileDoubleClicked (const File& file); | |||||
void fileDoubleClicked (const File&); | |||||
/** @internal */ | |||||
void browserRootChanged (const File&); | |||||
private: | private: | ||||
class ContentComponent; | class ContentComponent; | ||||
@@ -43,59 +43,33 @@ struct TextEditorKeyMapper | |||||
*/ | */ | ||||
static bool invokeKeyFunction (CallbackClass& target, const KeyPress& key) | 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(); | 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 JUCE_MAC | ||||
if (key.getModifiers().isCommandDown()) | 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 | #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) | if (key == KeyPress ('c', ModifierKeys::commandModifier, 0) | ||||
|| key == KeyPress (KeyPress::insertKey, ModifierKeys::ctrlModifier, 0)) | || key == KeyPress (KeyPress::insertKey, ModifierKeys::ctrlModifier, 0)) | ||||
@@ -109,11 +83,8 @@ struct TextEditorKeyMapper | |||||
|| key == KeyPress (KeyPress::insertKey, ModifierKeys::shiftModifier, 0)) | || key == KeyPress (KeyPress::insertKey, ModifierKeys::shiftModifier, 0)) | ||||
return target.pasteFromClipboard(); | 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)) | if (key == KeyPress ('a', ModifierKeys::commandModifier, 0)) | ||||
return target.selectAll(); | return target.selectAll(); | ||||