@@ -35,7 +35,7 @@ class QuickTimeWindowWithFileBrowser : public Component, | |||||
public: | public: | ||||
QuickTimeWindowWithFileBrowser() | QuickTimeWindowWithFileBrowser() | ||||
: fileChooser ("movie", File::nonexistent, true, false, false, | : fileChooser ("movie", File::nonexistent, true, false, false, | ||||
"*.*", String::empty, "(choose a video file to play)") | |||||
"*", String::empty, "(choose a video file to play)") | |||||
{ | { | ||||
addAndMakeVisible (&qtComp); | addAndMakeVisible (&qtComp); | ||||
@@ -915,7 +915,7 @@ protected: | |||||
#include <GLUT/glut.h> | #include <GLUT/glut.h> | ||||
#endif | #endif | ||||
#if ! (CGFLOAT_DEFINED || defined (DOXYGEN)) | |||||
#if ! CGFLOAT_DEFINED | |||||
#define CGFloat float | #define CGFloat float | ||||
#endif | #endif | ||||
@@ -1492,60 +1492,18 @@ RelativeTime::~RelativeTime() throw() | |||||
{ | { | ||||
} | } | ||||
const RelativeTime RelativeTime::milliseconds (const int milliseconds) throw() | |||||
{ | |||||
return RelativeTime (milliseconds * 0.001); | |||||
} | |||||
const RelativeTime RelativeTime::milliseconds (const int64 milliseconds) throw() | |||||
{ | |||||
return RelativeTime (milliseconds * 0.001); | |||||
} | |||||
const RelativeTime RelativeTime::minutes (const double numberOfMinutes) throw() | |||||
{ | |||||
return RelativeTime (numberOfMinutes * 60.0); | |||||
} | |||||
const RelativeTime RelativeTime::hours (const double numberOfHours) throw() | |||||
{ | |||||
return RelativeTime (numberOfHours * (60.0 * 60.0)); | |||||
} | |||||
const RelativeTime RelativeTime::days (const double numberOfDays) throw() | |||||
{ | |||||
return RelativeTime (numberOfDays * (60.0 * 60.0 * 24.0)); | |||||
} | |||||
const RelativeTime RelativeTime::weeks (const double numberOfWeeks) throw() | |||||
{ | |||||
return RelativeTime (numberOfWeeks * (60.0 * 60.0 * 24.0 * 7.0)); | |||||
} | |||||
int64 RelativeTime::inMilliseconds() const throw() | |||||
{ | |||||
return (int64) (seconds * 1000.0); | |||||
} | |||||
double RelativeTime::inMinutes() const throw() | |||||
{ | |||||
return seconds / 60.0; | |||||
} | |||||
double RelativeTime::inHours() const throw() | |||||
{ | |||||
return seconds / (60.0 * 60.0); | |||||
} | |||||
const RelativeTime RelativeTime::milliseconds (const int milliseconds) throw() { return RelativeTime (milliseconds * 0.001); } | |||||
const RelativeTime RelativeTime::milliseconds (const int64 milliseconds) throw() { return RelativeTime (milliseconds * 0.001); } | |||||
const RelativeTime RelativeTime::minutes (const double numberOfMinutes) throw() { return RelativeTime (numberOfMinutes * 60.0); } | |||||
const RelativeTime RelativeTime::hours (const double numberOfHours) throw() { return RelativeTime (numberOfHours * (60.0 * 60.0)); } | |||||
const RelativeTime RelativeTime::days (const double numberOfDays) throw() { return RelativeTime (numberOfDays * (60.0 * 60.0 * 24.0)); } | |||||
const RelativeTime RelativeTime::weeks (const double numberOfWeeks) throw() { return RelativeTime (numberOfWeeks * (60.0 * 60.0 * 24.0 * 7.0)); } | |||||
double RelativeTime::inDays() const throw() | |||||
{ | |||||
return seconds / (60.0 * 60.0 * 24.0); | |||||
} | |||||
double RelativeTime::inWeeks() const throw() | |||||
{ | |||||
return seconds / (60.0 * 60.0 * 24.0 * 7.0); | |||||
} | |||||
int64 RelativeTime::inMilliseconds() const throw() { return (int64) (seconds * 1000.0); } | |||||
double RelativeTime::inMinutes() const throw() { return seconds / 60.0; } | |||||
double RelativeTime::inHours() const throw() { return seconds / (60.0 * 60.0); } | |||||
double RelativeTime::inDays() const throw() { return seconds / (60.0 * 60.0 * 24.0); } | |||||
double RelativeTime::inWeeks() const throw() { return seconds / (60.0 * 60.0 * 24.0 * 7.0); } | |||||
const String RelativeTime::getDescription (const String& returnValueForZeroTime) const | const String RelativeTime::getDescription (const String& returnValueForZeroTime) const | ||||
{ | { | ||||
@@ -1553,65 +1511,63 @@ const String RelativeTime::getDescription (const String& returnValueForZeroTime) | |||||
return returnValueForZeroTime; | return returnValueForZeroTime; | ||||
String result; | String result; | ||||
result.preallocateStorage (16); | |||||
if (seconds < 0) | if (seconds < 0) | ||||
result = "-"; | |||||
result << '-'; | |||||
int fieldsShown = 0; | int fieldsShown = 0; | ||||
int n = abs ((int) inWeeks()); | |||||
int n = std::abs ((int) inWeeks()); | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" week ") | |||||
: TRANS(" weeks ")); | |||||
result << n << (n == 1 ? TRANS(" week ") | |||||
: TRANS(" weeks ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
n = abs ((int) inDays()) % 7; | |||||
n = std::abs ((int) inDays()) % 7; | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" day ") | |||||
: TRANS(" days ")); | |||||
result << n << (n == 1 ? TRANS(" day ") | |||||
: TRANS(" days ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
if (fieldsShown < 2) | if (fieldsShown < 2) | ||||
{ | { | ||||
n = abs ((int) inHours()) % 24; | |||||
n = std::abs ((int) inHours()) % 24; | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" hr ") | |||||
: TRANS(" hrs ")); | |||||
result << n << (n == 1 ? TRANS(" hr ") | |||||
: TRANS(" hrs ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
if (fieldsShown < 2) | if (fieldsShown < 2) | ||||
{ | { | ||||
n = abs ((int) inMinutes()) % 60; | |||||
n = std::abs ((int) inMinutes()) % 60; | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" min ") | |||||
: TRANS(" mins ")); | |||||
result << n << (n == 1 ? TRANS(" min ") | |||||
: TRANS(" mins ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
if (fieldsShown < 2) | if (fieldsShown < 2) | ||||
{ | { | ||||
n = abs ((int) inSeconds()) % 60; | |||||
n = std::abs ((int) inSeconds()) % 60; | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" sec ") | |||||
: TRANS(" secs ")); | |||||
result << n << (n == 1 ? TRANS(" sec ") | |||||
: TRANS(" secs ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
if (fieldsShown < 1) | |||||
if (fieldsShown == 0) | |||||
{ | { | ||||
n = abs ((int) inMilliseconds()) % 1000; | |||||
n = std::abs ((int) inMilliseconds()) % 1000; | |||||
if (n > 0) | if (n > 0) | ||||
{ | |||||
result << n << TRANS(" ms"); | result << n << TRANS(" ms"); | ||||
++fieldsShown; | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -1626,33 +1582,6 @@ RelativeTime& RelativeTime::operator= (const RelativeTime& other) throw() | |||||
return *this; | return *this; | ||||
} | } | ||||
bool RelativeTime::operator== (const RelativeTime& other) const throw() { return seconds == other.seconds; } | |||||
bool RelativeTime::operator!= (const RelativeTime& other) const throw() { return seconds != other.seconds; } | |||||
bool RelativeTime::operator> (const RelativeTime& other) const throw() { return seconds > other.seconds; } | |||||
bool RelativeTime::operator< (const RelativeTime& other) const throw() { return seconds < other.seconds; } | |||||
bool RelativeTime::operator>= (const RelativeTime& other) const throw() { return seconds >= other.seconds; } | |||||
bool RelativeTime::operator<= (const RelativeTime& other) const throw() { return seconds <= other.seconds; } | |||||
const RelativeTime RelativeTime::operator+ (const RelativeTime& timeToAdd) const throw() | |||||
{ | |||||
return RelativeTime (seconds + timeToAdd.seconds); | |||||
} | |||||
const RelativeTime RelativeTime::operator- (const RelativeTime& timeToSubtract) const throw() | |||||
{ | |||||
return RelativeTime (seconds - timeToSubtract.seconds); | |||||
} | |||||
const RelativeTime RelativeTime::operator+ (const double secondsToAdd) const throw() | |||||
{ | |||||
return RelativeTime (seconds + secondsToAdd); | |||||
} | |||||
const RelativeTime RelativeTime::operator- (const double secondsToSubtract) const throw() | |||||
{ | |||||
return RelativeTime (seconds - secondsToSubtract); | |||||
} | |||||
const RelativeTime& RelativeTime::operator+= (const RelativeTime& timeToAdd) throw() | const RelativeTime& RelativeTime::operator+= (const RelativeTime& timeToAdd) throw() | ||||
{ | { | ||||
seconds += timeToAdd.seconds; | seconds += timeToAdd.seconds; | ||||
@@ -1677,6 +1606,16 @@ const RelativeTime& RelativeTime::operator-= (const double secondsToSubtract) th | |||||
return *this; | return *this; | ||||
} | } | ||||
bool operator== (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() == t2.inSeconds(); } | |||||
bool operator!= (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() != t2.inSeconds(); } | |||||
bool operator> (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() > t2.inSeconds(); } | |||||
bool operator< (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() < t2.inSeconds(); } | |||||
bool operator>= (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() >= t2.inSeconds(); } | |||||
bool operator<= (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() <= t2.inSeconds(); } | |||||
const RelativeTime operator+ (const RelativeTime& t1, const RelativeTime& t2) throw() { RelativeTime t (t1); return t += t2; } | |||||
const RelativeTime operator- (const RelativeTime& t1, const RelativeTime& t2) throw() { RelativeTime t (t1); return t -= t2; } | |||||
END_JUCE_NAMESPACE | END_JUCE_NAMESPACE | ||||
/*** End of inlined file: juce_RelativeTime.cpp ***/ | /*** End of inlined file: juce_RelativeTime.cpp ***/ | ||||
@@ -2169,6 +2108,21 @@ const String Time::getWeekdayName (int day, const bool threeLetterVersion) | |||||
: longDayNames [day]); | : longDayNames [day]); | ||||
} | } | ||||
Time& Time::operator+= (const RelativeTime& delta) { millisSinceEpoch += delta.inMilliseconds(); return *this; } | |||||
Time& Time::operator-= (const RelativeTime& delta) { millisSinceEpoch -= delta.inMilliseconds(); return *this; } | |||||
const Time operator+ (const Time& time, const RelativeTime& delta) { Time t (time); return t += delta; } | |||||
const Time operator- (const Time& time, const RelativeTime& delta) { Time t (time); return t -= delta; } | |||||
const Time operator+ (const RelativeTime& delta, const Time& time) { Time t (time); return t += delta; } | |||||
const RelativeTime operator- (const Time& time1, const Time& time2) { return RelativeTime::milliseconds (time1.toMilliseconds() - time2.toMilliseconds()); } | |||||
bool operator== (const Time& time1, const Time& time2) { return time1.toMilliseconds() == time2.toMilliseconds(); } | |||||
bool operator!= (const Time& time1, const Time& time2) { return time1.toMilliseconds() != time2.toMilliseconds(); } | |||||
bool operator< (const Time& time1, const Time& time2) { return time1.toMilliseconds() < time2.toMilliseconds(); } | |||||
bool operator> (const Time& time1, const Time& time2) { return time1.toMilliseconds() > time2.toMilliseconds(); } | |||||
bool operator<= (const Time& time1, const Time& time2) { return time1.toMilliseconds() <= time2.toMilliseconds(); } | |||||
bool operator>= (const Time& time1, const Time& time2) { return time1.toMilliseconds() >= time2.toMilliseconds(); } | |||||
END_JUCE_NAMESPACE | END_JUCE_NAMESPACE | ||||
/*** End of inlined file: juce_Time.cpp ***/ | /*** End of inlined file: juce_Time.cpp ***/ | ||||
@@ -30537,12 +30491,12 @@ namespace | |||||
if (fileOrIdentifier.startsWithChar ('/') || fileOrIdentifier[1] == ':') | if (fileOrIdentifier.startsWithChar ('/') || fileOrIdentifier[1] == ':') | ||||
return File (fileOrIdentifier).getLastModificationTime(); | return File (fileOrIdentifier).getLastModificationTime(); | ||||
return Time (0); | |||||
return Time(); | |||||
} | } | ||||
bool timesAreDifferent (const Time& t1, const Time& t2) throw() | bool timesAreDifferent (const Time& t1, const Time& t2) throw() | ||||
{ | { | ||||
return t1 != t2 || t1 == Time (0); | |||||
return t1 != t2 || t1 == Time(); | |||||
} | } | ||||
} | } | ||||
@@ -31548,7 +31502,7 @@ public: | |||||
desc.uid = ((int) componentDesc.componentType) | desc.uid = ((int) componentDesc.componentType) | ||||
^ ((int) componentDesc.componentSubType) | ^ ((int) componentDesc.componentSubType) | ||||
^ ((int) componentDesc.componentManufacturer); | ^ ((int) componentDesc.componentManufacturer); | ||||
desc.lastFileModTime = 0; | |||||
desc.lastFileModTime = Time(); | |||||
desc.pluginFormatName = "AudioUnit"; | desc.pluginFormatName = "AudioUnit"; | ||||
desc.category = getCategory(); | desc.category = getCategory(); | ||||
desc.manufacturerName = manufacturer; | desc.manufacturerName = manufacturer; | ||||
@@ -39723,7 +39677,7 @@ private: | |||||
startThread (7); | startThread (7); | ||||
} | } | ||||
JUCE_DECLARE_NON_COPYABLE (InternalTimerThread); | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InternalTimerThread); | |||||
}; | }; | ||||
InternalTimerThread* InternalTimerThread::instance = 0; | InternalTimerThread* InternalTimerThread::instance = 0; | ||||
@@ -41120,18 +41074,24 @@ Component* Component::removeChildComponent (const int index, bool sendParentEven | |||||
childComponentList_.remove (index); | childComponentList_.remove (index); | ||||
child->parentComponent_ = 0; | child->parentComponent_ = 0; | ||||
// (NB: there are obscure situations where a childShowing = false, but it still has the focus) | |||||
// (NB: there are obscure situations where child->isShowing() = false, but it still has the focus) | |||||
if (currentlyFocusedComponent == child || child->isParentOf (currentlyFocusedComponent)) | if (currentlyFocusedComponent == child || child->isParentOf (currentlyFocusedComponent)) | ||||
{ | { | ||||
const WeakReference<Component> thisPointer (this); | |||||
if (sendParentEvents) | |||||
{ | |||||
const WeakReference<Component> thisPointer (this); | |||||
giveAwayFocus (sendChildEvents || currentlyFocusedComponent != child); | |||||
giveAwayFocus (sendChildEvents || currentlyFocusedComponent != child); | |||||
if (thisPointer == 0) | |||||
return child; | |||||
if (thisPointer == 0) | |||||
return child; | |||||
if (sendParentEvents) | |||||
grabKeyboardFocus(); | grabKeyboardFocus(); | ||||
} | |||||
else | |||||
{ | |||||
giveAwayFocus (sendChildEvents || currentlyFocusedComponent != child); | |||||
} | |||||
} | } | ||||
if (sendChildEvents) | if (sendChildEvents) | ||||
@@ -71191,7 +71151,7 @@ public: | |||||
MouseInputSourceInternal (MouseInputSource& source_, const int index_, const bool isMouseDevice_) | MouseInputSourceInternal (MouseInputSource& source_, const int index_, const bool isMouseDevice_) | ||||
: index (index_), isMouseDevice (isMouseDevice_), source (source_), lastPeer (0), | : index (index_), isMouseDevice (isMouseDevice_), source (source_), lastPeer (0), | ||||
isUnboundedMouseModeOn (false), isCursorVisibleUntilOffscreen (false), currentCursorHandle (0), | isUnboundedMouseModeOn (false), isCursorVisibleUntilOffscreen (false), currentCursorHandle (0), | ||||
mouseEventCounter (0), lastTime (0) | |||||
mouseEventCounter (0) | |||||
{ | { | ||||
} | } | ||||
@@ -71243,50 +71203,50 @@ public: | |||||
: lastScreenPos); | : lastScreenPos); | ||||
} | } | ||||
void sendMouseEnter (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseEnter (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " enter: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " enter: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseEnter (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseEnter (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseExit (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseExit (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " exit: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " exit: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseExit (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseExit (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseMove (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseMove (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " move: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " move: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseMove (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseMove (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseDown (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseDown (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " down: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " down: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseDown (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseDown (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseDrag (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseDrag (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " drag: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " drag: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseDrag (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseDrag (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseUp (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseUp (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " up: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " up: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseUp (source, comp->getLocalPoint (0, screenPos), time, getCurrentModifiers()); | comp->internalMouseUp (source, comp->getLocalPoint (0, screenPos), time, getCurrentModifiers()); | ||||
} | } | ||||
void sendMouseWheel (Component* const comp, const Point<int>& screenPos, const int64 time, float x, float y) | |||||
void sendMouseWheel (Component* const comp, const Point<int>& screenPos, const Time& time, float x, float y) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " wheel: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " wheel: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseWheel (source, comp->getLocalPoint (0, screenPos), time, x, y); | comp->internalMouseWheel (source, comp->getLocalPoint (0, screenPos), time, x, y); | ||||
} | } | ||||
// (returns true if the button change caused a modal event loop) | // (returns true if the button change caused a modal event loop) | ||||
bool setButtons (const Point<int>& screenPos, const int64 time, const ModifierKeys& newButtonState) | |||||
bool setButtons (const Point<int>& screenPos, const Time& time, const ModifierKeys& newButtonState) | |||||
{ | { | ||||
if (buttonState == newButtonState) | if (buttonState == newButtonState) | ||||
return false; | return false; | ||||
@@ -71330,7 +71290,7 @@ public: | |||||
return lastCounter != mouseEventCounter; | return lastCounter != mouseEventCounter; | ||||
} | } | ||||
void setComponentUnderMouse (Component* const newComponent, const Point<int>& screenPos, const int64 time) | |||||
void setComponentUnderMouse (Component* const newComponent, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
Component* current = getComponentUnderMouse(); | Component* current = getComponentUnderMouse(); | ||||
@@ -71357,7 +71317,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void setPeer (ComponentPeer* const newPeer, const Point<int>& screenPos, const int64 time) | |||||
void setPeer (ComponentPeer* const newPeer, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
ModifierKeys::updateCurrentModifiers(); | ModifierKeys::updateCurrentModifiers(); | ||||
@@ -71369,7 +71329,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void setScreenPos (const Point<int>& newScreenPos, const int64 time, const bool forceUpdate) | |||||
void setScreenPos (const Point<int>& newScreenPos, const Time& time, const bool forceUpdate) | |||||
{ | { | ||||
if (! isDragging()) | if (! isDragging()) | ||||
setComponentUnderMouse (findComponentAt (newScreenPos), newScreenPos, time); | setComponentUnderMouse (findComponentAt (newScreenPos), newScreenPos, time); | ||||
@@ -71401,7 +71361,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void handleEvent (ComponentPeer* const newPeer, const Point<int>& positionWithinPeer, const int64 time, const ModifierKeys& newMods) | |||||
void handleEvent (ComponentPeer* const newPeer, const Point<int>& positionWithinPeer, const Time& time, const ModifierKeys& newMods) | |||||
{ | { | ||||
jassert (newPeer != 0); | jassert (newPeer != 0); | ||||
lastTime = time; | lastTime = time; | ||||
@@ -71429,7 +71389,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void handleWheel (ComponentPeer* const peer, const Point<int>& positionWithinPeer, int64 time, float x, float y) | |||||
void handleWheel (ComponentPeer* const peer, const Point<int>& positionWithinPeer, const Time& time, float x, float y) | |||||
{ | { | ||||
jassert (peer != 0); | jassert (peer != 0); | ||||
lastTime = time; | lastTime = time; | ||||
@@ -71462,7 +71422,7 @@ public: | |||||
{ | { | ||||
int numClicks = 0; | int numClicks = 0; | ||||
if (mouseDowns[0].time != 0) | |||||
if (mouseDowns[0].time != Time()) | |||||
{ | { | ||||
if (! mouseMovedSignificantlySincePressed) | if (! mouseMovedSignificantlySincePressed) | ||||
++numClicks; | ++numClicks; | ||||
@@ -71482,7 +71442,7 @@ public: | |||||
bool hasMouseMovedSignificantlySincePressed() const throw() | bool hasMouseMovedSignificantlySincePressed() const throw() | ||||
{ | { | ||||
return mouseMovedSignificantlySincePressed | return mouseMovedSignificantlySincePressed | ||||
|| lastTime > mouseDowns[0].time + 300; | |||||
|| lastTime > mouseDowns[0].time + RelativeTime::milliseconds (300); | |||||
} | } | ||||
void triggerFakeMove() | void triggerFakeMove() | ||||
@@ -71492,7 +71452,7 @@ public: | |||||
void handleAsyncUpdate() | void handleAsyncUpdate() | ||||
{ | { | ||||
setScreenPos (lastScreenPos, jmax (lastTime, Time::currentTimeMillis()), true); | |||||
setScreenPos (lastScreenPos, jmax (lastTime, Time::getCurrentTime()), true); | |||||
} | } | ||||
void enableUnboundedMouseMovement (bool enable, bool keepCursorVisibleUntilOffscreen) | void enableUnboundedMouseMovement (bool enable, bool keepCursorVisibleUntilOffscreen) | ||||
@@ -71585,19 +71545,18 @@ private: | |||||
struct RecentMouseDown | struct RecentMouseDown | ||||
{ | { | ||||
RecentMouseDown() | |||||
: time (0), component (0) | |||||
RecentMouseDown() : component (0) | |||||
{ | { | ||||
} | } | ||||
Point<int> position; | Point<int> position; | ||||
int64 time; | |||||
Time time; | |||||
Component* component; | Component* component; | ||||
ModifierKeys buttons; | ModifierKeys buttons; | ||||
bool canBePartOfMultipleClickWith (const RecentMouseDown& other, const int maxTimeBetween) const | |||||
bool canBePartOfMultipleClickWith (const RecentMouseDown& other, const int maxTimeBetweenMs) const | |||||
{ | { | ||||
return time - other.time < maxTimeBetween | |||||
return time - other.time < RelativeTime::milliseconds (maxTimeBetweenMs) | |||||
&& abs (position.getX() - other.position.getX()) < 8 | && abs (position.getX() - other.position.getX()) < 8 | ||||
&& abs (position.getY() - other.position.getY()) < 8 | && abs (position.getY() - other.position.getY()) < 8 | ||||
&& buttons == other.buttons;; | && buttons == other.buttons;; | ||||
@@ -71606,9 +71565,9 @@ private: | |||||
RecentMouseDown mouseDowns[4]; | RecentMouseDown mouseDowns[4]; | ||||
bool mouseMovedSignificantlySincePressed; | bool mouseMovedSignificantlySincePressed; | ||||
int64 lastTime; | |||||
Time lastTime; | |||||
void registerMouseDown (const Point<int>& screenPos, const int64 time, | |||||
void registerMouseDown (const Point<int>& screenPos, const Time& time, | |||||
Component* const component, const ModifierKeys& modifiers) throw() | Component* const component, const ModifierKeys& modifiers) throw() | ||||
{ | { | ||||
for (int i = numElementsInArray (mouseDowns); --i > 0;) | for (int i = numElementsInArray (mouseDowns); --i > 0;) | ||||
@@ -71663,12 +71622,12 @@ void MouseInputSource::forceMouseCursorUpdate() { pimpl->revealCursor (true); | |||||
void MouseInputSource::handleEvent (ComponentPeer* peer, const Point<int>& positionWithinPeer, const int64 time, const ModifierKeys& mods) | void MouseInputSource::handleEvent (ComponentPeer* peer, const Point<int>& positionWithinPeer, const int64 time, const ModifierKeys& mods) | ||||
{ | { | ||||
pimpl->handleEvent (peer, positionWithinPeer, time, mods.withOnlyMouseButtons()); | |||||
pimpl->handleEvent (peer, positionWithinPeer, Time (time), mods.withOnlyMouseButtons()); | |||||
} | } | ||||
void MouseInputSource::handleWheel (ComponentPeer* const peer, const Point<int>& positionWithinPeer, const int64 time, const float x, const float y) | void MouseInputSource::handleWheel (ComponentPeer* const peer, const Point<int>& positionWithinPeer, const int64 time, const float x, const float y) | ||||
{ | { | ||||
pimpl->handleWheel (peer, positionWithinPeer, time, x, y); | |||||
pimpl->handleWheel (peer, positionWithinPeer, Time (time), x, y); | |||||
} | } | ||||
END_JUCE_NAMESPACE | END_JUCE_NAMESPACE | ||||
@@ -238880,8 +238839,8 @@ public: | |||||
if (isDir != 0) *isDir = ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0); | if (isDir != 0) *isDir = ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0); | ||||
if (isHidden != 0) *isHidden = ((findData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0); | if (isHidden != 0) *isHidden = ((findData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0); | ||||
if (fileSize != 0) *fileSize = findData.nFileSizeLow + (((int64) findData.nFileSizeHigh) << 32); | if (fileSize != 0) *fileSize = findData.nFileSizeLow + (((int64) findData.nFileSizeHigh) << 32); | ||||
if (modTime != 0) *modTime = fileTimeToTime (&findData.ftLastWriteTime); | |||||
if (creationTime != 0) *creationTime = fileTimeToTime (&findData.ftCreationTime); | |||||
if (modTime != 0) *modTime = Time (fileTimeToTime (&findData.ftLastWriteTime)); | |||||
if (creationTime != 0) *creationTime = Time (fileTimeToTime (&findData.ftCreationTime)); | |||||
if (isReadOnly != 0) *isReadOnly = ((findData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) != 0); | if (isReadOnly != 0) *isReadOnly = ((findData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) != 0); | ||||
return true; | return true; | ||||
@@ -239173,11 +239132,6 @@ void NamedPipe::cancelPendingReads() | |||||
#define INTERNET_OPTION_DISABLE_AUTODIAL 70 | #define INTERNET_OPTION_DISABLE_AUTODIAL 70 | ||||
#endif | #endif | ||||
struct ConnectionAndRequestStruct | |||||
{ | |||||
HINTERNET connection, request; | |||||
}; | |||||
static HINTERNET sessionHandle = 0; | static HINTERNET sessionHandle = 0; | ||||
#ifndef WORKAROUND_TIMEOUT_BUG | #ifndef WORKAROUND_TIMEOUT_BUG | ||||
@@ -239437,7 +239391,6 @@ private: | |||||
buffers.lpcszHeader = static_cast <LPCTSTR> (headers); | buffers.lpcszHeader = static_cast <LPCTSTR> (headers); | ||||
buffers.dwHeadersLength = headers.length(); | buffers.dwHeadersLength = headers.length(); | ||||
buffers.dwBufferTotal = (DWORD) postData.getSize(); | buffers.dwBufferTotal = (DWORD) postData.getSize(); | ||||
ConnectionAndRequestStruct* result = 0; | |||||
if (HttpSendRequestEx (request, &buffers, 0, HSR_INITIATE, 0)) | if (HttpSendRequestEx (request, &buffers, 0, HSR_INITIATE, 0)) | ||||
{ | { | ||||
@@ -242257,7 +242210,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void handleTaskBarEvent (const LPARAM lParam, const WPARAM wParam) | |||||
void handleTaskBarEvent (const LPARAM lParam) | |||||
{ | { | ||||
if (component->isCurrentlyBlockedByAnotherModalComponent()) | if (component->isCurrentlyBlockedByAnotherModalComponent()) | ||||
{ | { | ||||
@@ -242282,8 +242235,8 @@ public: | |||||
eventMods = eventMods.withoutMouseButtons(); | eventMods = eventMods.withoutMouseButtons(); | ||||
const MouseEvent e (Desktop::getInstance().getMainMouseSource(), | const MouseEvent e (Desktop::getInstance().getMainMouseSource(), | ||||
Point<int>(), eventMods, component, component, getMouseEventTime(), | |||||
Point<int>(), getMouseEventTime(), 1, false); | |||||
Point<int>(), eventMods, component, component, Time (getMouseEventTime()), | |||||
Point<int>(), Time (getMouseEventTime()), 1, false); | |||||
if (lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN) | if (lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN) | ||||
{ | { | ||||
@@ -243495,7 +243448,7 @@ private: | |||||
return TRUE; | return TRUE; | ||||
case WM_TRAYNOTIFY: | case WM_TRAYNOTIFY: | ||||
handleTaskBarEvent (lParam, wParam); | |||||
handleTaskBarEvent (lParam); | |||||
break; | break; | ||||
case WM_SYNCPAINT: | case WM_SYNCPAINT: | ||||
@@ -253813,6 +253766,24 @@ namespace | |||||
return statfs (f.getFullPathName().toUTF8(), &result) == 0; | return statfs (f.getFullPathName().toUTF8(), &result) == 0; | ||||
} | } | ||||
void updateStatInfoForFile (const String& path, bool* const isDir, int64* const fileSize, | |||||
Time* const modTime, Time* const creationTime, bool* const isReadOnly) | |||||
{ | |||||
if (isDir != 0 || fileSize != 0 || modTime != 0 || creationTime != 0) | |||||
{ | |||||
juce_statStruct info; | |||||
const bool statOk = juce_stat (path, info); | |||||
if (isDir != 0) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||||
if (fileSize != 0) *fileSize = statOk ? info.st_size : 0; | |||||
if (modTime != 0) *modTime = Time (statOk ? (int64) info.st_mtime * 1000 : 0); | |||||
if (creationTime != 0) *creationTime = Time (statOk ? (int64) info.st_ctime * 1000 : 0); | |||||
} | |||||
if (isReadOnly != 0) | |||||
*isReadOnly = access (path.toUTF8(), W_OK) != 0; | |||||
} | |||||
} | } | ||||
bool File::isDirectory() const | bool File::isDirectory() const | ||||
@@ -254519,9 +254490,6 @@ public: | |||||
wildCard (wildCard_), | wildCard (wildCard_), | ||||
dir (opendir (directory.getFullPathName().toUTF8())) | dir (opendir (directory.getFullPathName().toUTF8())) | ||||
{ | { | ||||
if (wildCard == "*.*") | |||||
wildCard = "*"; | |||||
wildcardUTF8 = wildCard.toUTF8(); | wildcardUTF8 = wildCard.toUTF8(); | ||||
} | } | ||||
@@ -254535,41 +254503,30 @@ public: | |||||
bool* const isDir, bool* const isHidden, int64* const fileSize, | bool* const isDir, bool* const isHidden, int64* const fileSize, | ||||
Time* const modTime, Time* const creationTime, bool* const isReadOnly) | Time* const modTime, Time* const creationTime, bool* const isReadOnly) | ||||
{ | { | ||||
if (dir == 0) | |||||
return false; | |||||
for (;;) | |||||
if (dir != 0) | |||||
{ | { | ||||
struct dirent* const de = readdir (dir); | |||||
if (de == 0) | |||||
return false; | |||||
if (fnmatch (wildcardUTF8, de->d_name, FNM_CASEFOLD) == 0) | |||||
for (;;) | |||||
{ | { | ||||
filenameFound = String::fromUTF8 (de->d_name); | |||||
const String path (parentDir + filenameFound); | |||||
struct dirent* const de = readdir (dir); | |||||
if (isDir != 0 || fileSize != 0 || modTime != 0 || creationTime != 0) | |||||
{ | |||||
struct stat info; | |||||
const bool statOk = juce_stat (path, info); | |||||
if (de == 0) | |||||
break; | |||||
if (isDir != 0) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||||
if (fileSize != 0) *fileSize = statOk ? info.st_size : 0; | |||||
if (modTime != 0) *modTime = statOk ? (int64) info.st_mtime * 1000 : 0; | |||||
if (creationTime != 0) *creationTime = statOk ? (int64) info.st_ctime * 1000 : 0; | |||||
} | |||||
if (fnmatch (wildcardUTF8, de->d_name, FNM_CASEFOLD) == 0) | |||||
{ | |||||
filenameFound = String::fromUTF8 (de->d_name); | |||||
if (isHidden != 0) | |||||
*isHidden = filenameFound.startsWithChar ('.'); | |||||
updateStatInfoForFile (parentDir + filenameFound, isDir, fileSize, modTime, creationTime, isReadOnly); | |||||
if (isReadOnly != 0) | |||||
*isReadOnly = access (path.toUTF8(), W_OK) != 0; | |||||
if (isHidden != 0) | |||||
*isHidden = filenameFound.startsWithChar ('.'); | |||||
return true; | |||||
return true; | |||||
} | |||||
} | } | ||||
} | } | ||||
return false; | |||||
} | } | ||||
private: | private: | ||||
@@ -263681,6 +263638,24 @@ namespace | |||||
return statfs (f.getFullPathName().toUTF8(), &result) == 0; | return statfs (f.getFullPathName().toUTF8(), &result) == 0; | ||||
} | } | ||||
void updateStatInfoForFile (const String& path, bool* const isDir, int64* const fileSize, | |||||
Time* const modTime, Time* const creationTime, bool* const isReadOnly) | |||||
{ | |||||
if (isDir != 0 || fileSize != 0 || modTime != 0 || creationTime != 0) | |||||
{ | |||||
juce_statStruct info; | |||||
const bool statOk = juce_stat (path, info); | |||||
if (isDir != 0) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||||
if (fileSize != 0) *fileSize = statOk ? info.st_size : 0; | |||||
if (modTime != 0) *modTime = Time (statOk ? (int64) info.st_mtime * 1000 : 0); | |||||
if (creationTime != 0) *creationTime = Time (statOk ? (int64) info.st_ctime * 1000 : 0); | |||||
} | |||||
if (isReadOnly != 0) | |||||
*isReadOnly = access (path.toUTF8(), W_OK) != 0; | |||||
} | |||||
} | } | ||||
bool File::isDirectory() const | bool File::isDirectory() const | ||||
@@ -264506,24 +264481,11 @@ public: | |||||
continue; | continue; | ||||
const String path (parentDir + filenameFound); | const String path (parentDir + filenameFound); | ||||
if (isDir != 0 || fileSize != 0 || modTime != 0 || creationTime != 0) | |||||
{ | |||||
juce_statStruct info; | |||||
const bool statOk = juce_stat (path, info); | |||||
if (isDir != 0) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||||
if (fileSize != 0) *fileSize = statOk ? info.st_size : 0; | |||||
if (modTime != 0) *modTime = statOk ? (int64) info.st_mtime * 1000 : 0; | |||||
if (creationTime != 0) *creationTime = statOk ? (int64) info.st_ctime * 1000 : 0; | |||||
} | |||||
updateStatInfoForFile (path, isDir, fileSize, modTime, creationTime, isReadOnly); | |||||
if (isHidden != 0) | if (isHidden != 0) | ||||
*isHidden = FileHelpers::isHiddenFile (path); | *isHidden = FileHelpers::isHiddenFile (path); | ||||
if (isReadOnly != 0) | |||||
*isReadOnly = access (path.toUTF8(), W_OK) != 0; | |||||
return true; | return true; | ||||
} | } | ||||
} | } | ||||
@@ -64,7 +64,7 @@ | |||||
*/ | */ | ||||
#define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
#define JUCE_MINOR_VERSION 52 | #define JUCE_MINOR_VERSION 52 | ||||
#define JUCE_BUILDNUMBER 109 | |||||
#define JUCE_BUILDNUMBER 110 | |||||
/** Current Juce version number. | /** Current Juce version number. | ||||
@@ -3296,7 +3296,8 @@ private: | |||||
} | } | ||||
}; | }; | ||||
#if DOXYGEN || (JUCE_CHECK_MEMORY_LEAKS && ! defined (JUCE_LEAK_DETECTOR)) | |||||
#if DOXYGEN || ! defined (JUCE_LEAK_DETECTOR) | |||||
#if (DOXYGEN || JUCE_CHECK_MEMORY_LEAKS) | |||||
/** This macro lets you embed a leak-detecting object inside a class. | /** This macro lets you embed a leak-detecting object inside a class. | ||||
To use it, simply declare a JUCE_LEAK_DETECTOR(YourClassName) inside a private section | To use it, simply declare a JUCE_LEAK_DETECTOR(YourClassName) inside a private section | ||||
@@ -3316,8 +3317,9 @@ private: | |||||
@see JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR, LeakedObjectDetector | @see JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR, LeakedObjectDetector | ||||
*/ | */ | ||||
#define JUCE_LEAK_DETECTOR(OwnerClass) LeakedObjectDetector<OwnerClass> JUCE_JOIN_MACRO (leakDetector, __LINE__); | #define JUCE_LEAK_DETECTOR(OwnerClass) LeakedObjectDetector<OwnerClass> JUCE_JOIN_MACRO (leakDetector, __LINE__); | ||||
#else | |||||
#else | |||||
#define JUCE_LEAK_DETECTOR(OwnerClass) | #define JUCE_LEAK_DETECTOR(OwnerClass) | ||||
#endif | |||||
#endif | #endif | ||||
#endif // __JUCE_LEAKEDOBJECTDETECTOR_JUCEHEADER__ | #endif // __JUCE_LEAKEDOBJECTDETECTOR_JUCEHEADER__ | ||||
@@ -7885,73 +7887,61 @@ public: | |||||
~RelativeTime() throw(); | ~RelativeTime() throw(); | ||||
/** Creates a new RelativeTime object representing a number of milliseconds. | /** Creates a new RelativeTime object representing a number of milliseconds. | ||||
@see minutes, hours, days, weeks | @see minutes, hours, days, weeks | ||||
*/ | */ | ||||
static const RelativeTime milliseconds (int milliseconds) throw(); | static const RelativeTime milliseconds (int milliseconds) throw(); | ||||
/** Creates a new RelativeTime object representing a number of milliseconds. | /** Creates a new RelativeTime object representing a number of milliseconds. | ||||
@see minutes, hours, days, weeks | @see minutes, hours, days, weeks | ||||
*/ | */ | ||||
static const RelativeTime milliseconds (int64 milliseconds) throw(); | static const RelativeTime milliseconds (int64 milliseconds) throw(); | ||||
/** Creates a new RelativeTime object representing a number of minutes. | /** Creates a new RelativeTime object representing a number of minutes. | ||||
@see milliseconds, hours, days, weeks | @see milliseconds, hours, days, weeks | ||||
*/ | */ | ||||
static const RelativeTime minutes (double numberOfMinutes) throw(); | static const RelativeTime minutes (double numberOfMinutes) throw(); | ||||
/** Creates a new RelativeTime object representing a number of hours. | /** Creates a new RelativeTime object representing a number of hours. | ||||
@see milliseconds, minutes, days, weeks | @see milliseconds, minutes, days, weeks | ||||
*/ | */ | ||||
static const RelativeTime hours (double numberOfHours) throw(); | static const RelativeTime hours (double numberOfHours) throw(); | ||||
/** Creates a new RelativeTime object representing a number of days. | /** Creates a new RelativeTime object representing a number of days. | ||||
@see milliseconds, minutes, hours, weeks | @see milliseconds, minutes, hours, weeks | ||||
*/ | */ | ||||
static const RelativeTime days (double numberOfDays) throw(); | static const RelativeTime days (double numberOfDays) throw(); | ||||
/** Creates a new RelativeTime object representing a number of weeks. | /** Creates a new RelativeTime object representing a number of weeks. | ||||
@see milliseconds, minutes, hours, days | @see milliseconds, minutes, hours, days | ||||
*/ | */ | ||||
static const RelativeTime weeks (double numberOfWeeks) throw(); | static const RelativeTime weeks (double numberOfWeeks) throw(); | ||||
/** Returns the number of milliseconds this time represents. | /** Returns the number of milliseconds this time represents. | ||||
@see milliseconds, inSeconds, inMinutes, inHours, inDays, inWeeks | @see milliseconds, inSeconds, inMinutes, inHours, inDays, inWeeks | ||||
*/ | */ | ||||
int64 inMilliseconds() const throw(); | int64 inMilliseconds() const throw(); | ||||
/** Returns the number of seconds this time represents. | /** Returns the number of seconds this time represents. | ||||
@see inMilliseconds, inMinutes, inHours, inDays, inWeeks | @see inMilliseconds, inMinutes, inHours, inDays, inWeeks | ||||
*/ | */ | ||||
double inSeconds() const throw() { return seconds; } | double inSeconds() const throw() { return seconds; } | ||||
/** Returns the number of minutes this time represents. | /** Returns the number of minutes this time represents. | ||||
@see inMilliseconds, inSeconds, inHours, inDays, inWeeks | @see inMilliseconds, inSeconds, inHours, inDays, inWeeks | ||||
*/ | */ | ||||
double inMinutes() const throw(); | double inMinutes() const throw(); | ||||
/** Returns the number of hours this time represents. | /** Returns the number of hours this time represents. | ||||
@see inMilliseconds, inSeconds, inMinutes, inDays, inWeeks | @see inMilliseconds, inSeconds, inMinutes, inDays, inWeeks | ||||
*/ | */ | ||||
double inHours() const throw(); | double inHours() const throw(); | ||||
/** Returns the number of days this time represents. | /** Returns the number of days this time represents. | ||||
@see inMilliseconds, inSeconds, inMinutes, inHours, inWeeks | @see inMilliseconds, inSeconds, inMinutes, inHours, inWeeks | ||||
*/ | */ | ||||
double inDays() const throw(); | double inDays() const throw(); | ||||
/** Returns the number of weeks this time represents. | /** Returns the number of weeks this time represents. | ||||
@see inMilliseconds, inSeconds, inMinutes, inHours, inDays | @see inMilliseconds, inSeconds, inMinutes, inHours, inDays | ||||
*/ | */ | ||||
double inWeeks() const throw(); | double inWeeks() const throw(); | ||||
@@ -7973,30 +7963,6 @@ public: | |||||
*/ | */ | ||||
const String getDescription (const String& returnValueForZeroTime = "0") const; | const String getDescription (const String& returnValueForZeroTime = "0") const; | ||||
/** Compares two RelativeTimes. */ | |||||
bool operator== (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator!= (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator> (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator< (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator>= (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator<= (const RelativeTime& other) const throw(); | |||||
/** Adds another RelativeTime to this one and returns the result. */ | |||||
const RelativeTime operator+ (const RelativeTime& timeToAdd) const throw(); | |||||
/** Subtracts another RelativeTime from this one and returns the result. */ | |||||
const RelativeTime operator- (const RelativeTime& timeToSubtract) const throw(); | |||||
/** Adds a number of seconds to this RelativeTime and returns the result. */ | |||||
const RelativeTime operator+ (double secondsToAdd) const throw(); | |||||
/** Subtracts a number of seconds from this RelativeTime and returns the result. */ | |||||
const RelativeTime operator- (double secondsToSubtract) const throw(); | |||||
/** Adds another RelativeTime to this one. */ | /** Adds another RelativeTime to this one. */ | ||||
const RelativeTime& operator+= (const RelativeTime& timeToAdd) throw(); | const RelativeTime& operator+= (const RelativeTime& timeToAdd) throw(); | ||||
/** Subtracts another RelativeTime from this one. */ | /** Subtracts another RelativeTime from this one. */ | ||||
@@ -8004,7 +7970,6 @@ public: | |||||
/** Adds a number of seconds to this time. */ | /** Adds a number of seconds to this time. */ | ||||
const RelativeTime& operator+= (double secondsToAdd) throw(); | const RelativeTime& operator+= (double secondsToAdd) throw(); | ||||
/** Subtracts a number of seconds from this time. */ | /** Subtracts a number of seconds from this time. */ | ||||
const RelativeTime& operator-= (double secondsToSubtract) throw(); | const RelativeTime& operator-= (double secondsToSubtract) throw(); | ||||
@@ -8013,6 +7978,24 @@ private: | |||||
double seconds; | double seconds; | ||||
}; | }; | ||||
/** Compares two RelativeTimes. */ | |||||
bool operator== (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator!= (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator> (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator< (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator>= (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator<= (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Adds two RelativeTimes together. */ | |||||
const RelativeTime operator+ (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Subtracts two RelativeTimes. */ | |||||
const RelativeTime operator- (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
#endif // __JUCE_RELATIVETIME_JUCEHEADER__ | #endif // __JUCE_RELATIVETIME_JUCEHEADER__ | ||||
/*** End of inlined file: juce_RelativeTime.h ***/ | /*** End of inlined file: juce_RelativeTime.h ***/ | ||||
@@ -8038,9 +8021,6 @@ public: | |||||
*/ | */ | ||||
Time() throw(); | Time() throw(); | ||||
/** Creates a copy of another Time object. */ | |||||
Time (const Time& other) throw(); | |||||
/** Creates a time based on a number of milliseconds. | /** Creates a time based on a number of milliseconds. | ||||
The internal millisecond count is set to 0 (1st January 1970). To create a | The internal millisecond count is set to 0 (1st January 1970). To create a | ||||
@@ -8050,7 +8030,7 @@ public: | |||||
'epoch' (midnight Jan 1st 1970). | 'epoch' (midnight Jan 1st 1970). | ||||
@see getCurrentTime, currentTimeMillis | @see getCurrentTime, currentTimeMillis | ||||
*/ | */ | ||||
Time (int64 millisecondsSinceEpoch) throw(); | |||||
explicit Time (int64 millisecondsSinceEpoch) throw(); | |||||
/** Creates a time from a set of date components. | /** Creates a time from a set of date components. | ||||
@@ -8075,6 +8055,9 @@ public: | |||||
int milliseconds = 0, | int milliseconds = 0, | ||||
bool useLocalTime = true) throw(); | bool useLocalTime = true) throw(); | ||||
/** Creates a copy of another Time object. */ | |||||
Time (const Time& other) throw(); | |||||
/** Destructor. */ | /** Destructor. */ | ||||
~Time() throw(); | ~Time() throw(); | ||||
@@ -8231,32 +8214,10 @@ public: | |||||
*/ | */ | ||||
const String formatted (const String& format) const; | const String formatted (const String& format) const; | ||||
/** Adds a RelativeTime to this time and returns the result. */ | |||||
const Time operator+ (const RelativeTime& delta) const throw() { return Time (millisSinceEpoch + delta.inMilliseconds()); } | |||||
/** Subtracts a RelativeTime from this time and returns the result. */ | |||||
const Time operator- (const RelativeTime& delta) const throw() { return Time (millisSinceEpoch - delta.inMilliseconds()); } | |||||
/** Returns the relative time difference between this time and another one. */ | |||||
const RelativeTime operator- (const Time& other) const throw() { return RelativeTime::milliseconds (millisSinceEpoch - other.millisSinceEpoch); } | |||||
/** Compares two Time objects. */ | |||||
bool operator== (const Time& other) const throw() { return millisSinceEpoch == other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator!= (const Time& other) const throw() { return millisSinceEpoch != other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator< (const Time& other) const throw() { return millisSinceEpoch < other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator<= (const Time& other) const throw() { return millisSinceEpoch <= other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator> (const Time& other) const throw() { return millisSinceEpoch > other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator>= (const Time& other) const throw() { return millisSinceEpoch >= other.millisSinceEpoch; } | |||||
/** Adds a RelativeTime to this time. */ | |||||
Time& operator+= (const RelativeTime& delta); | |||||
/** Subtracts a RelativeTime from this time. */ | |||||
Time& operator-= (const RelativeTime& delta); | |||||
/** Tries to set the computer's clock. | /** Tries to set the computer's clock. | ||||
@@ -8368,6 +8329,29 @@ private: | |||||
int64 millisSinceEpoch; | int64 millisSinceEpoch; | ||||
}; | }; | ||||
/** Adds a RelativeTime to a Time. */ | |||||
const Time operator+ (const Time& time, const RelativeTime& delta); | |||||
/** Adds a RelativeTime to a Time. */ | |||||
const Time operator+ (const RelativeTime& delta, const Time& time); | |||||
/** Subtracts a RelativeTime from a Time. */ | |||||
const Time operator- (const Time& time, const RelativeTime& delta); | |||||
/** Returns the relative time difference between two times. */ | |||||
const RelativeTime operator- (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator== (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator!= (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator< (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator<= (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator> (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator>= (const Time& time1, const Time& time2); | |||||
#endif // __JUCE_TIME_JUCEHEADER__ | #endif // __JUCE_TIME_JUCEHEADER__ | ||||
/*** End of inlined file: juce_Time.h ***/ | /*** End of inlined file: juce_Time.h ***/ | ||||
@@ -17469,7 +17453,7 @@ public: | |||||
/** When evaluating an Expression object, this class is used to resolve symbols and | /** When evaluating an Expression object, this class is used to resolve symbols and | ||||
perform functions that the expression uses. | perform functions that the expression uses. | ||||
*/ | */ | ||||
class EvaluationContext | |||||
class JUCE_API EvaluationContext | |||||
{ | { | ||||
public: | public: | ||||
EvaluationContext(); | EvaluationContext(); | ||||
@@ -19386,6 +19370,7 @@ private: | |||||
const int threadStopTimeout; | const int threadStopTimeout; | ||||
int priority; | int priority; | ||||
class ThreadPoolThread; | class ThreadPoolThread; | ||||
friend class OwnedArray <ThreadPoolThread>; | |||||
OwnedArray <ThreadPoolThread> threads; | OwnedArray <ThreadPoolThread> threads; | ||||
Array <ThreadPoolJob*> jobs; | Array <ThreadPoolJob*> jobs; | ||||
@@ -36591,7 +36576,7 @@ public: | |||||
@see Button::addListener, Button::removeListener | @see Button::addListener, Button::removeListener | ||||
*/ | */ | ||||
class Listener | |||||
class JUCE_API Listener | |||||
{ | { | ||||
public: | public: | ||||
/** Destructor. */ | /** Destructor. */ | ||||
@@ -212,7 +212,7 @@ public: | |||||
desc.uid = ((int) componentDesc.componentType) | desc.uid = ((int) componentDesc.componentType) | ||||
^ ((int) componentDesc.componentSubType) | ^ ((int) componentDesc.componentSubType) | ||||
^ ((int) componentDesc.componentManufacturer); | ^ ((int) componentDesc.componentManufacturer); | ||||
desc.lastFileModTime = 0; | |||||
desc.lastFileModTime = Time(); | |||||
desc.pluginFormatName = "AudioUnit"; | desc.pluginFormatName = "AudioUnit"; | ||||
desc.category = getCategory(); | desc.category = getCategory(); | ||||
desc.manufacturerName = manufacturer; | desc.manufacturerName = manufacturer; | ||||
@@ -100,12 +100,12 @@ namespace | |||||
if (fileOrIdentifier.startsWithChar ('/') || fileOrIdentifier[1] == ':') | if (fileOrIdentifier.startsWithChar ('/') || fileOrIdentifier[1] == ':') | ||||
return File (fileOrIdentifier).getLastModificationTime(); | return File (fileOrIdentifier).getLastModificationTime(); | ||||
return Time (0); | |||||
return Time(); | |||||
} | } | ||||
bool timesAreDifferent (const Time& t1, const Time& t2) throw() | bool timesAreDifferent (const Time& t1, const Time& t2) throw() | ||||
{ | { | ||||
return t1 != t2 || t1 == Time (0); | |||||
return t1 != t2 || t1 == Time(); | |||||
} | } | ||||
} | } | ||||
@@ -47,127 +47,84 @@ RelativeTime::~RelativeTime() throw() | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
const RelativeTime RelativeTime::milliseconds (const int milliseconds) throw() | |||||
{ | |||||
return RelativeTime (milliseconds * 0.001); | |||||
} | |||||
const RelativeTime RelativeTime::milliseconds (const int64 milliseconds) throw() | |||||
{ | |||||
return RelativeTime (milliseconds * 0.001); | |||||
} | |||||
const RelativeTime RelativeTime::minutes (const double numberOfMinutes) throw() | |||||
{ | |||||
return RelativeTime (numberOfMinutes * 60.0); | |||||
} | |||||
const RelativeTime RelativeTime::hours (const double numberOfHours) throw() | |||||
{ | |||||
return RelativeTime (numberOfHours * (60.0 * 60.0)); | |||||
} | |||||
const RelativeTime RelativeTime::days (const double numberOfDays) throw() | |||||
{ | |||||
return RelativeTime (numberOfDays * (60.0 * 60.0 * 24.0)); | |||||
} | |||||
const RelativeTime RelativeTime::weeks (const double numberOfWeeks) throw() | |||||
{ | |||||
return RelativeTime (numberOfWeeks * (60.0 * 60.0 * 24.0 * 7.0)); | |||||
} | |||||
const RelativeTime RelativeTime::milliseconds (const int milliseconds) throw() { return RelativeTime (milliseconds * 0.001); } | |||||
const RelativeTime RelativeTime::milliseconds (const int64 milliseconds) throw() { return RelativeTime (milliseconds * 0.001); } | |||||
const RelativeTime RelativeTime::minutes (const double numberOfMinutes) throw() { return RelativeTime (numberOfMinutes * 60.0); } | |||||
const RelativeTime RelativeTime::hours (const double numberOfHours) throw() { return RelativeTime (numberOfHours * (60.0 * 60.0)); } | |||||
const RelativeTime RelativeTime::days (const double numberOfDays) throw() { return RelativeTime (numberOfDays * (60.0 * 60.0 * 24.0)); } | |||||
const RelativeTime RelativeTime::weeks (const double numberOfWeeks) throw() { return RelativeTime (numberOfWeeks * (60.0 * 60.0 * 24.0 * 7.0)); } | |||||
//============================================================================== | //============================================================================== | ||||
int64 RelativeTime::inMilliseconds() const throw() | |||||
{ | |||||
return (int64) (seconds * 1000.0); | |||||
} | |||||
double RelativeTime::inMinutes() const throw() | |||||
{ | |||||
return seconds / 60.0; | |||||
} | |||||
double RelativeTime::inHours() const throw() | |||||
{ | |||||
return seconds / (60.0 * 60.0); | |||||
} | |||||
double RelativeTime::inDays() const throw() | |||||
{ | |||||
return seconds / (60.0 * 60.0 * 24.0); | |||||
} | |||||
double RelativeTime::inWeeks() const throw() | |||||
{ | |||||
return seconds / (60.0 * 60.0 * 24.0 * 7.0); | |||||
} | |||||
int64 RelativeTime::inMilliseconds() const throw() { return (int64) (seconds * 1000.0); } | |||||
double RelativeTime::inMinutes() const throw() { return seconds / 60.0; } | |||||
double RelativeTime::inHours() const throw() { return seconds / (60.0 * 60.0); } | |||||
double RelativeTime::inDays() const throw() { return seconds / (60.0 * 60.0 * 24.0); } | |||||
double RelativeTime::inWeeks() const throw() { return seconds / (60.0 * 60.0 * 24.0 * 7.0); } | |||||
//============================================================================== | |||||
const String RelativeTime::getDescription (const String& returnValueForZeroTime) const | const String RelativeTime::getDescription (const String& returnValueForZeroTime) const | ||||
{ | { | ||||
if (seconds < 0.001 && seconds > -0.001) | if (seconds < 0.001 && seconds > -0.001) | ||||
return returnValueForZeroTime; | return returnValueForZeroTime; | ||||
String result; | String result; | ||||
result.preallocateStorage (16); | |||||
if (seconds < 0) | if (seconds < 0) | ||||
result = "-"; | |||||
result << '-'; | |||||
int fieldsShown = 0; | int fieldsShown = 0; | ||||
int n = abs ((int) inWeeks()); | |||||
int n = std::abs ((int) inWeeks()); | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" week ") | |||||
: TRANS(" weeks ")); | |||||
result << n << (n == 1 ? TRANS(" week ") | |||||
: TRANS(" weeks ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
n = abs ((int) inDays()) % 7; | |||||
n = std::abs ((int) inDays()) % 7; | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" day ") | |||||
: TRANS(" days ")); | |||||
result << n << (n == 1 ? TRANS(" day ") | |||||
: TRANS(" days ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
if (fieldsShown < 2) | if (fieldsShown < 2) | ||||
{ | { | ||||
n = abs ((int) inHours()) % 24; | |||||
n = std::abs ((int) inHours()) % 24; | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" hr ") | |||||
: TRANS(" hrs ")); | |||||
result << n << (n == 1 ? TRANS(" hr ") | |||||
: TRANS(" hrs ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
if (fieldsShown < 2) | if (fieldsShown < 2) | ||||
{ | { | ||||
n = abs ((int) inMinutes()) % 60; | |||||
n = std::abs ((int) inMinutes()) % 60; | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" min ") | |||||
: TRANS(" mins ")); | |||||
result << n << (n == 1 ? TRANS(" min ") | |||||
: TRANS(" mins ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
if (fieldsShown < 2) | if (fieldsShown < 2) | ||||
{ | { | ||||
n = abs ((int) inSeconds()) % 60; | |||||
n = std::abs ((int) inSeconds()) % 60; | |||||
if (n > 0) | if (n > 0) | ||||
{ | { | ||||
result << n << ((n == 1) ? TRANS(" sec ") | |||||
: TRANS(" secs ")); | |||||
result << n << (n == 1 ? TRANS(" sec ") | |||||
: TRANS(" secs ")); | |||||
++fieldsShown; | ++fieldsShown; | ||||
} | } | ||||
if (fieldsShown < 1) | |||||
if (fieldsShown == 0) | |||||
{ | { | ||||
n = abs ((int) inMilliseconds()) % 1000; | |||||
n = std::abs ((int) inMilliseconds()) % 1000; | |||||
if (n > 0) | if (n > 0) | ||||
{ | |||||
result << n << TRANS(" ms"); | result << n << TRANS(" ms"); | ||||
++fieldsShown; | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -183,34 +140,6 @@ RelativeTime& RelativeTime::operator= (const RelativeTime& other) throw() | |||||
return *this; | return *this; | ||||
} | } | ||||
bool RelativeTime::operator== (const RelativeTime& other) const throw() { return seconds == other.seconds; } | |||||
bool RelativeTime::operator!= (const RelativeTime& other) const throw() { return seconds != other.seconds; } | |||||
bool RelativeTime::operator> (const RelativeTime& other) const throw() { return seconds > other.seconds; } | |||||
bool RelativeTime::operator< (const RelativeTime& other) const throw() { return seconds < other.seconds; } | |||||
bool RelativeTime::operator>= (const RelativeTime& other) const throw() { return seconds >= other.seconds; } | |||||
bool RelativeTime::operator<= (const RelativeTime& other) const throw() { return seconds <= other.seconds; } | |||||
//============================================================================== | |||||
const RelativeTime RelativeTime::operator+ (const RelativeTime& timeToAdd) const throw() | |||||
{ | |||||
return RelativeTime (seconds + timeToAdd.seconds); | |||||
} | |||||
const RelativeTime RelativeTime::operator- (const RelativeTime& timeToSubtract) const throw() | |||||
{ | |||||
return RelativeTime (seconds - timeToSubtract.seconds); | |||||
} | |||||
const RelativeTime RelativeTime::operator+ (const double secondsToAdd) const throw() | |||||
{ | |||||
return RelativeTime (seconds + secondsToAdd); | |||||
} | |||||
const RelativeTime RelativeTime::operator- (const double secondsToSubtract) const throw() | |||||
{ | |||||
return RelativeTime (seconds - secondsToSubtract); | |||||
} | |||||
//============================================================================== | //============================================================================== | ||||
const RelativeTime& RelativeTime::operator+= (const RelativeTime& timeToAdd) throw() | const RelativeTime& RelativeTime::operator+= (const RelativeTime& timeToAdd) throw() | ||||
{ | { | ||||
@@ -236,4 +165,15 @@ const RelativeTime& RelativeTime::operator-= (const double secondsToSubtract) th | |||||
return *this; | return *this; | ||||
} | } | ||||
bool operator== (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() == t2.inSeconds(); } | |||||
bool operator!= (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() != t2.inSeconds(); } | |||||
bool operator> (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() > t2.inSeconds(); } | |||||
bool operator< (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() < t2.inSeconds(); } | |||||
bool operator>= (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() >= t2.inSeconds(); } | |||||
bool operator<= (const RelativeTime& t1, const RelativeTime& t2) throw() { return t1.inSeconds() <= t2.inSeconds(); } | |||||
const RelativeTime operator+ (const RelativeTime& t1, const RelativeTime& t2) throw() { RelativeTime t (t1); return t += t2; } | |||||
const RelativeTime operator- (const RelativeTime& t1, const RelativeTime& t2) throw() { RelativeTime t (t1); return t -= t2; } | |||||
END_JUCE_NAMESPACE | END_JUCE_NAMESPACE |
@@ -59,74 +59,62 @@ public: | |||||
//============================================================================== | //============================================================================== | ||||
/** Creates a new RelativeTime object representing a number of milliseconds. | /** Creates a new RelativeTime object representing a number of milliseconds. | ||||
@see minutes, hours, days, weeks | @see minutes, hours, days, weeks | ||||
*/ | */ | ||||
static const RelativeTime milliseconds (int milliseconds) throw(); | static const RelativeTime milliseconds (int milliseconds) throw(); | ||||
/** Creates a new RelativeTime object representing a number of milliseconds. | /** Creates a new RelativeTime object representing a number of milliseconds. | ||||
@see minutes, hours, days, weeks | @see minutes, hours, days, weeks | ||||
*/ | */ | ||||
static const RelativeTime milliseconds (int64 milliseconds) throw(); | static const RelativeTime milliseconds (int64 milliseconds) throw(); | ||||
/** Creates a new RelativeTime object representing a number of minutes. | /** Creates a new RelativeTime object representing a number of minutes. | ||||
@see milliseconds, hours, days, weeks | @see milliseconds, hours, days, weeks | ||||
*/ | */ | ||||
static const RelativeTime minutes (double numberOfMinutes) throw(); | static const RelativeTime minutes (double numberOfMinutes) throw(); | ||||
/** Creates a new RelativeTime object representing a number of hours. | /** Creates a new RelativeTime object representing a number of hours. | ||||
@see milliseconds, minutes, days, weeks | @see milliseconds, minutes, days, weeks | ||||
*/ | */ | ||||
static const RelativeTime hours (double numberOfHours) throw(); | static const RelativeTime hours (double numberOfHours) throw(); | ||||
/** Creates a new RelativeTime object representing a number of days. | /** Creates a new RelativeTime object representing a number of days. | ||||
@see milliseconds, minutes, hours, weeks | @see milliseconds, minutes, hours, weeks | ||||
*/ | */ | ||||
static const RelativeTime days (double numberOfDays) throw(); | static const RelativeTime days (double numberOfDays) throw(); | ||||
/** Creates a new RelativeTime object representing a number of weeks. | /** Creates a new RelativeTime object representing a number of weeks. | ||||
@see milliseconds, minutes, hours, days | @see milliseconds, minutes, hours, days | ||||
*/ | */ | ||||
static const RelativeTime weeks (double numberOfWeeks) throw(); | static const RelativeTime weeks (double numberOfWeeks) throw(); | ||||
//============================================================================== | //============================================================================== | ||||
/** Returns the number of milliseconds this time represents. | /** Returns the number of milliseconds this time represents. | ||||
@see milliseconds, inSeconds, inMinutes, inHours, inDays, inWeeks | @see milliseconds, inSeconds, inMinutes, inHours, inDays, inWeeks | ||||
*/ | */ | ||||
int64 inMilliseconds() const throw(); | int64 inMilliseconds() const throw(); | ||||
/** Returns the number of seconds this time represents. | /** Returns the number of seconds this time represents. | ||||
@see inMilliseconds, inMinutes, inHours, inDays, inWeeks | @see inMilliseconds, inMinutes, inHours, inDays, inWeeks | ||||
*/ | */ | ||||
double inSeconds() const throw() { return seconds; } | double inSeconds() const throw() { return seconds; } | ||||
/** Returns the number of minutes this time represents. | /** Returns the number of minutes this time represents. | ||||
@see inMilliseconds, inSeconds, inHours, inDays, inWeeks | @see inMilliseconds, inSeconds, inHours, inDays, inWeeks | ||||
*/ | */ | ||||
double inMinutes() const throw(); | double inMinutes() const throw(); | ||||
/** Returns the number of hours this time represents. | /** Returns the number of hours this time represents. | ||||
@see inMilliseconds, inSeconds, inMinutes, inDays, inWeeks | @see inMilliseconds, inSeconds, inMinutes, inDays, inWeeks | ||||
*/ | */ | ||||
double inHours() const throw(); | double inHours() const throw(); | ||||
/** Returns the number of days this time represents. | /** Returns the number of days this time represents. | ||||
@see inMilliseconds, inSeconds, inMinutes, inHours, inWeeks | @see inMilliseconds, inSeconds, inMinutes, inHours, inWeeks | ||||
*/ | */ | ||||
double inDays() const throw(); | double inDays() const throw(); | ||||
/** Returns the number of weeks this time represents. | /** Returns the number of weeks this time represents. | ||||
@see inMilliseconds, inSeconds, inMinutes, inHours, inDays | @see inMilliseconds, inSeconds, inMinutes, inHours, inDays | ||||
*/ | */ | ||||
double inWeeks() const throw(); | double inWeeks() const throw(); | ||||
@@ -148,33 +136,8 @@ public: | |||||
*/ | */ | ||||
const String getDescription (const String& returnValueForZeroTime = "0") const; | const String getDescription (const String& returnValueForZeroTime = "0") const; | ||||
//============================================================================== | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator== (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator!= (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator> (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator< (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator>= (const RelativeTime& other) const throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator<= (const RelativeTime& other) const throw(); | |||||
//============================================================================== | //============================================================================== | ||||
/** Adds another RelativeTime to this one and returns the result. */ | |||||
const RelativeTime operator+ (const RelativeTime& timeToAdd) const throw(); | |||||
/** Subtracts another RelativeTime from this one and returns the result. */ | |||||
const RelativeTime operator- (const RelativeTime& timeToSubtract) const throw(); | |||||
/** Adds a number of seconds to this RelativeTime and returns the result. */ | |||||
const RelativeTime operator+ (double secondsToAdd) const throw(); | |||||
/** Subtracts a number of seconds from this RelativeTime and returns the result. */ | |||||
const RelativeTime operator- (double secondsToSubtract) const throw(); | |||||
/** Adds another RelativeTime to this one. */ | /** Adds another RelativeTime to this one. */ | ||||
const RelativeTime& operator+= (const RelativeTime& timeToAdd) throw(); | const RelativeTime& operator+= (const RelativeTime& timeToAdd) throw(); | ||||
/** Subtracts another RelativeTime from this one. */ | /** Subtracts another RelativeTime from this one. */ | ||||
@@ -182,15 +145,34 @@ public: | |||||
/** Adds a number of seconds to this time. */ | /** Adds a number of seconds to this time. */ | ||||
const RelativeTime& operator+= (double secondsToAdd) throw(); | const RelativeTime& operator+= (double secondsToAdd) throw(); | ||||
/** Subtracts a number of seconds from this time. */ | /** Subtracts a number of seconds from this time. */ | ||||
const RelativeTime& operator-= (double secondsToSubtract) throw(); | const RelativeTime& operator-= (double secondsToSubtract) throw(); | ||||
private: | private: | ||||
//============================================================================== | //============================================================================== | ||||
double seconds; | double seconds; | ||||
}; | }; | ||||
//============================================================================== | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator== (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator!= (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator> (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator< (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator>= (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Compares two RelativeTimes. */ | |||||
bool operator<= (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
//============================================================================== | |||||
/** Adds two RelativeTimes together. */ | |||||
const RelativeTime operator+ (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
/** Subtracts two RelativeTimes. */ | |||||
const RelativeTime operator- (const RelativeTime& t1, const RelativeTime& t2) throw(); | |||||
#endif // __JUCE_RELATIVETIME_JUCEHEADER__ | #endif // __JUCE_RELATIVETIME_JUCEHEADER__ |
@@ -33,7 +33,7 @@ | |||||
*/ | */ | ||||
#define JUCE_MAJOR_VERSION 1 | #define JUCE_MAJOR_VERSION 1 | ||||
#define JUCE_MINOR_VERSION 52 | #define JUCE_MINOR_VERSION 52 | ||||
#define JUCE_BUILDNUMBER 109 | |||||
#define JUCE_BUILDNUMBER 110 | |||||
/** Current Juce version number. | /** Current Juce version number. | ||||
@@ -496,4 +496,21 @@ const String Time::getWeekdayName (int day, const bool threeLetterVersion) | |||||
: longDayNames [day]); | : longDayNames [day]); | ||||
} | } | ||||
//============================================================================== | |||||
Time& Time::operator+= (const RelativeTime& delta) { millisSinceEpoch += delta.inMilliseconds(); return *this; } | |||||
Time& Time::operator-= (const RelativeTime& delta) { millisSinceEpoch -= delta.inMilliseconds(); return *this; } | |||||
const Time operator+ (const Time& time, const RelativeTime& delta) { Time t (time); return t += delta; } | |||||
const Time operator- (const Time& time, const RelativeTime& delta) { Time t (time); return t -= delta; } | |||||
const Time operator+ (const RelativeTime& delta, const Time& time) { Time t (time); return t += delta; } | |||||
const RelativeTime operator- (const Time& time1, const Time& time2) { return RelativeTime::milliseconds (time1.toMilliseconds() - time2.toMilliseconds()); } | |||||
bool operator== (const Time& time1, const Time& time2) { return time1.toMilliseconds() == time2.toMilliseconds(); } | |||||
bool operator!= (const Time& time1, const Time& time2) { return time1.toMilliseconds() != time2.toMilliseconds(); } | |||||
bool operator< (const Time& time1, const Time& time2) { return time1.toMilliseconds() < time2.toMilliseconds(); } | |||||
bool operator> (const Time& time1, const Time& time2) { return time1.toMilliseconds() > time2.toMilliseconds(); } | |||||
bool operator<= (const Time& time1, const Time& time2) { return time1.toMilliseconds() <= time2.toMilliseconds(); } | |||||
bool operator>= (const Time& time1, const Time& time2) { return time1.toMilliseconds() >= time2.toMilliseconds(); } | |||||
END_JUCE_NAMESPACE | END_JUCE_NAMESPACE |
@@ -52,9 +52,6 @@ public: | |||||
*/ | */ | ||||
Time() throw(); | Time() throw(); | ||||
/** Creates a copy of another Time object. */ | |||||
Time (const Time& other) throw(); | |||||
/** Creates a time based on a number of milliseconds. | /** Creates a time based on a number of milliseconds. | ||||
The internal millisecond count is set to 0 (1st January 1970). To create a | The internal millisecond count is set to 0 (1st January 1970). To create a | ||||
@@ -64,7 +61,7 @@ public: | |||||
'epoch' (midnight Jan 1st 1970). | 'epoch' (midnight Jan 1st 1970). | ||||
@see getCurrentTime, currentTimeMillis | @see getCurrentTime, currentTimeMillis | ||||
*/ | */ | ||||
Time (int64 millisecondsSinceEpoch) throw(); | |||||
explicit Time (int64 millisecondsSinceEpoch) throw(); | |||||
/** Creates a time from a set of date components. | /** Creates a time from a set of date components. | ||||
@@ -89,6 +86,9 @@ public: | |||||
int milliseconds = 0, | int milliseconds = 0, | ||||
bool useLocalTime = true) throw(); | bool useLocalTime = true) throw(); | ||||
/** Creates a copy of another Time object. */ | |||||
Time (const Time& other) throw(); | |||||
/** Destructor. */ | /** Destructor. */ | ||||
~Time() throw(); | ~Time() throw(); | ||||
@@ -248,32 +248,10 @@ public: | |||||
const String formatted (const String& format) const; | const String formatted (const String& format) const; | ||||
//============================================================================== | //============================================================================== | ||||
/** Adds a RelativeTime to this time and returns the result. */ | |||||
const Time operator+ (const RelativeTime& delta) const throw() { return Time (millisSinceEpoch + delta.inMilliseconds()); } | |||||
/** Subtracts a RelativeTime from this time and returns the result. */ | |||||
const Time operator- (const RelativeTime& delta) const throw() { return Time (millisSinceEpoch - delta.inMilliseconds()); } | |||||
/** Returns the relative time difference between this time and another one. */ | |||||
const RelativeTime operator- (const Time& other) const throw() { return RelativeTime::milliseconds (millisSinceEpoch - other.millisSinceEpoch); } | |||||
/** Compares two Time objects. */ | |||||
bool operator== (const Time& other) const throw() { return millisSinceEpoch == other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator!= (const Time& other) const throw() { return millisSinceEpoch != other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator< (const Time& other) const throw() { return millisSinceEpoch < other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator<= (const Time& other) const throw() { return millisSinceEpoch <= other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator> (const Time& other) const throw() { return millisSinceEpoch > other.millisSinceEpoch; } | |||||
/** Compares two Time objects. */ | |||||
bool operator>= (const Time& other) const throw() { return millisSinceEpoch >= other.millisSinceEpoch; } | |||||
/** Adds a RelativeTime to this time. */ | |||||
Time& operator+= (const RelativeTime& delta); | |||||
/** Subtracts a RelativeTime from this time. */ | |||||
Time& operator-= (const RelativeTime& delta); | |||||
//============================================================================== | //============================================================================== | ||||
/** Tries to set the computer's clock. | /** Tries to set the computer's clock. | ||||
@@ -390,5 +368,29 @@ private: | |||||
int64 millisSinceEpoch; | int64 millisSinceEpoch; | ||||
}; | }; | ||||
//============================================================================== | |||||
/** Adds a RelativeTime to a Time. */ | |||||
const Time operator+ (const Time& time, const RelativeTime& delta); | |||||
/** Adds a RelativeTime to a Time. */ | |||||
const Time operator+ (const RelativeTime& delta, const Time& time); | |||||
/** Subtracts a RelativeTime from a Time. */ | |||||
const Time operator- (const Time& time, const RelativeTime& delta); | |||||
/** Returns the relative time difference between two times. */ | |||||
const RelativeTime operator- (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator== (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator!= (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator< (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator<= (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator> (const Time& time1, const Time& time2); | |||||
/** Compares two Time objects. */ | |||||
bool operator>= (const Time& time1, const Time& time2); | |||||
#endif // __JUCE_TIME_JUCEHEADER__ | #endif // __JUCE_TIME_JUCEHEADER__ |
@@ -317,7 +317,7 @@ private: | |||||
startThread (7); | startThread (7); | ||||
} | } | ||||
JUCE_DECLARE_NON_COPYABLE (InternalTimerThread); | |||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (InternalTimerThread); | |||||
}; | }; | ||||
InternalTimerThread* InternalTimerThread::instance = 0; | InternalTimerThread* InternalTimerThread::instance = 0; | ||||
@@ -178,7 +178,7 @@ public: | |||||
@see Button::addListener, Button::removeListener | @see Button::addListener, Button::removeListener | ||||
*/ | */ | ||||
class Listener | |||||
class JUCE_API Listener | |||||
{ | { | ||||
public: | public: | ||||
/** Destructor. */ | /** Destructor. */ | ||||
@@ -1368,18 +1368,24 @@ Component* Component::removeChildComponent (const int index, bool sendParentEven | |||||
childComponentList_.remove (index); | childComponentList_.remove (index); | ||||
child->parentComponent_ = 0; | child->parentComponent_ = 0; | ||||
// (NB: there are obscure situations where a childShowing = false, but it still has the focus) | |||||
// (NB: there are obscure situations where child->isShowing() = false, but it still has the focus) | |||||
if (currentlyFocusedComponent == child || child->isParentOf (currentlyFocusedComponent)) | if (currentlyFocusedComponent == child || child->isParentOf (currentlyFocusedComponent)) | ||||
{ | { | ||||
const WeakReference<Component> thisPointer (this); | |||||
if (sendParentEvents) | |||||
{ | |||||
const WeakReference<Component> thisPointer (this); | |||||
giveAwayFocus (sendChildEvents || currentlyFocusedComponent != child); | |||||
giveAwayFocus (sendChildEvents || currentlyFocusedComponent != child); | |||||
if (thisPointer == 0) | |||||
return child; | |||||
if (thisPointer == 0) | |||||
return child; | |||||
if (sendParentEvents) | |||||
grabKeyboardFocus(); | grabKeyboardFocus(); | ||||
} | |||||
else | |||||
{ | |||||
giveAwayFocus (sendChildEvents || currentlyFocusedComponent != child); | |||||
} | |||||
} | } | ||||
if (sendChildEvents) | if (sendChildEvents) | ||||
@@ -44,7 +44,7 @@ public: | |||||
MouseInputSourceInternal (MouseInputSource& source_, const int index_, const bool isMouseDevice_) | MouseInputSourceInternal (MouseInputSource& source_, const int index_, const bool isMouseDevice_) | ||||
: index (index_), isMouseDevice (isMouseDevice_), source (source_), lastPeer (0), | : index (index_), isMouseDevice (isMouseDevice_), source (source_), lastPeer (0), | ||||
isUnboundedMouseModeOn (false), isCursorVisibleUntilOffscreen (false), currentCursorHandle (0), | isUnboundedMouseModeOn (false), isCursorVisibleUntilOffscreen (false), currentCursorHandle (0), | ||||
mouseEventCounter (0), lastTime (0) | |||||
mouseEventCounter (0) | |||||
{ | { | ||||
} | } | ||||
@@ -98,43 +98,43 @@ public: | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
void sendMouseEnter (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseEnter (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " enter: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " enter: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseEnter (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseEnter (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseExit (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseExit (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " exit: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " exit: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseExit (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseExit (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseMove (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseMove (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " move: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " move: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseMove (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseMove (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseDown (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseDown (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " down: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " down: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseDown (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseDown (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseDrag (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseDrag (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " drag: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " drag: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseDrag (source, comp->getLocalPoint (0, screenPos), time); | comp->internalMouseDrag (source, comp->getLocalPoint (0, screenPos), time); | ||||
} | } | ||||
void sendMouseUp (Component* const comp, const Point<int>& screenPos, const int64 time) | |||||
void sendMouseUp (Component* const comp, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " up: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " up: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseUp (source, comp->getLocalPoint (0, screenPos), time, getCurrentModifiers()); | comp->internalMouseUp (source, comp->getLocalPoint (0, screenPos), time, getCurrentModifiers()); | ||||
} | } | ||||
void sendMouseWheel (Component* const comp, const Point<int>& screenPos, const int64 time, float x, float y) | |||||
void sendMouseWheel (Component* const comp, const Point<int>& screenPos, const Time& time, float x, float y) | |||||
{ | { | ||||
//DBG ("Mouse " + String (source.getIndex()) + " wheel: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | //DBG ("Mouse " + String (source.getIndex()) + " wheel: " + comp->getLocalPoint (0, screenPos).toString() + " - Comp: " + String::toHexString ((int) comp)); | ||||
comp->internalMouseWheel (source, comp->getLocalPoint (0, screenPos), time, x, y); | comp->internalMouseWheel (source, comp->getLocalPoint (0, screenPos), time, x, y); | ||||
@@ -142,7 +142,7 @@ public: | |||||
//============================================================================== | //============================================================================== | ||||
// (returns true if the button change caused a modal event loop) | // (returns true if the button change caused a modal event loop) | ||||
bool setButtons (const Point<int>& screenPos, const int64 time, const ModifierKeys& newButtonState) | |||||
bool setButtons (const Point<int>& screenPos, const Time& time, const ModifierKeys& newButtonState) | |||||
{ | { | ||||
if (buttonState == newButtonState) | if (buttonState == newButtonState) | ||||
return false; | return false; | ||||
@@ -186,7 +186,7 @@ public: | |||||
return lastCounter != mouseEventCounter; | return lastCounter != mouseEventCounter; | ||||
} | } | ||||
void setComponentUnderMouse (Component* const newComponent, const Point<int>& screenPos, const int64 time) | |||||
void setComponentUnderMouse (Component* const newComponent, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
Component* current = getComponentUnderMouse(); | Component* current = getComponentUnderMouse(); | ||||
@@ -213,7 +213,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void setPeer (ComponentPeer* const newPeer, const Point<int>& screenPos, const int64 time) | |||||
void setPeer (ComponentPeer* const newPeer, const Point<int>& screenPos, const Time& time) | |||||
{ | { | ||||
ModifierKeys::updateCurrentModifiers(); | ModifierKeys::updateCurrentModifiers(); | ||||
@@ -225,7 +225,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void setScreenPos (const Point<int>& newScreenPos, const int64 time, const bool forceUpdate) | |||||
void setScreenPos (const Point<int>& newScreenPos, const Time& time, const bool forceUpdate) | |||||
{ | { | ||||
if (! isDragging()) | if (! isDragging()) | ||||
setComponentUnderMouse (findComponentAt (newScreenPos), newScreenPos, time); | setComponentUnderMouse (findComponentAt (newScreenPos), newScreenPos, time); | ||||
@@ -258,7 +258,7 @@ public: | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
void handleEvent (ComponentPeer* const newPeer, const Point<int>& positionWithinPeer, const int64 time, const ModifierKeys& newMods) | |||||
void handleEvent (ComponentPeer* const newPeer, const Point<int>& positionWithinPeer, const Time& time, const ModifierKeys& newMods) | |||||
{ | { | ||||
jassert (newPeer != 0); | jassert (newPeer != 0); | ||||
lastTime = time; | lastTime = time; | ||||
@@ -286,7 +286,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void handleWheel (ComponentPeer* const peer, const Point<int>& positionWithinPeer, int64 time, float x, float y) | |||||
void handleWheel (ComponentPeer* const peer, const Point<int>& positionWithinPeer, const Time& time, float x, float y) | |||||
{ | { | ||||
jassert (peer != 0); | jassert (peer != 0); | ||||
lastTime = time; | lastTime = time; | ||||
@@ -320,7 +320,7 @@ public: | |||||
{ | { | ||||
int numClicks = 0; | int numClicks = 0; | ||||
if (mouseDowns[0].time != 0) | |||||
if (mouseDowns[0].time != Time()) | |||||
{ | { | ||||
if (! mouseMovedSignificantlySincePressed) | if (! mouseMovedSignificantlySincePressed) | ||||
++numClicks; | ++numClicks; | ||||
@@ -340,7 +340,7 @@ public: | |||||
bool hasMouseMovedSignificantlySincePressed() const throw() | bool hasMouseMovedSignificantlySincePressed() const throw() | ||||
{ | { | ||||
return mouseMovedSignificantlySincePressed | return mouseMovedSignificantlySincePressed | ||||
|| lastTime > mouseDowns[0].time + 300; | |||||
|| lastTime > mouseDowns[0].time + RelativeTime::milliseconds (300); | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
@@ -351,7 +351,7 @@ public: | |||||
void handleAsyncUpdate() | void handleAsyncUpdate() | ||||
{ | { | ||||
setScreenPos (lastScreenPos, jmax (lastTime, Time::currentTimeMillis()), true); | |||||
setScreenPos (lastScreenPos, jmax (lastTime, Time::getCurrentTime()), true); | |||||
} | } | ||||
//============================================================================== | //============================================================================== | ||||
@@ -447,19 +447,18 @@ private: | |||||
struct RecentMouseDown | struct RecentMouseDown | ||||
{ | { | ||||
RecentMouseDown() | |||||
: time (0), component (0) | |||||
RecentMouseDown() : component (0) | |||||
{ | { | ||||
} | } | ||||
Point<int> position; | Point<int> position; | ||||
int64 time; | |||||
Time time; | |||||
Component* component; | Component* component; | ||||
ModifierKeys buttons; | ModifierKeys buttons; | ||||
bool canBePartOfMultipleClickWith (const RecentMouseDown& other, const int maxTimeBetween) const | |||||
bool canBePartOfMultipleClickWith (const RecentMouseDown& other, const int maxTimeBetweenMs) const | |||||
{ | { | ||||
return time - other.time < maxTimeBetween | |||||
return time - other.time < RelativeTime::milliseconds (maxTimeBetweenMs) | |||||
&& abs (position.getX() - other.position.getX()) < 8 | && abs (position.getX() - other.position.getX()) < 8 | ||||
&& abs (position.getY() - other.position.getY()) < 8 | && abs (position.getY() - other.position.getY()) < 8 | ||||
&& buttons == other.buttons;; | && buttons == other.buttons;; | ||||
@@ -468,9 +467,9 @@ private: | |||||
RecentMouseDown mouseDowns[4]; | RecentMouseDown mouseDowns[4]; | ||||
bool mouseMovedSignificantlySincePressed; | bool mouseMovedSignificantlySincePressed; | ||||
int64 lastTime; | |||||
Time lastTime; | |||||
void registerMouseDown (const Point<int>& screenPos, const int64 time, | |||||
void registerMouseDown (const Point<int>& screenPos, const Time& time, | |||||
Component* const component, const ModifierKeys& modifiers) throw() | Component* const component, const ModifierKeys& modifiers) throw() | ||||
{ | { | ||||
for (int i = numElementsInArray (mouseDowns); --i > 0;) | for (int i = numElementsInArray (mouseDowns); --i > 0;) | ||||
@@ -526,12 +525,12 @@ void MouseInputSource::forceMouseCursorUpdate() { pimpl- | |||||
void MouseInputSource::handleEvent (ComponentPeer* peer, const Point<int>& positionWithinPeer, const int64 time, const ModifierKeys& mods) | void MouseInputSource::handleEvent (ComponentPeer* peer, const Point<int>& positionWithinPeer, const int64 time, const ModifierKeys& mods) | ||||
{ | { | ||||
pimpl->handleEvent (peer, positionWithinPeer, time, mods.withOnlyMouseButtons()); | |||||
pimpl->handleEvent (peer, positionWithinPeer, Time (time), mods.withOnlyMouseButtons()); | |||||
} | } | ||||
void MouseInputSource::handleWheel (ComponentPeer* const peer, const Point<int>& positionWithinPeer, const int64 time, const float x, const float y) | void MouseInputSource::handleWheel (ComponentPeer* const peer, const Point<int>& positionWithinPeer, const int64 time, const float x, const float y) | ||||
{ | { | ||||
pimpl->handleWheel (peer, positionWithinPeer, time, x, y); | |||||
pimpl->handleWheel (peer, positionWithinPeer, Time (time), x, y); | |||||
} | } | ||||
@@ -105,7 +105,7 @@ public: | |||||
/** When evaluating an Expression object, this class is used to resolve symbols and | /** When evaluating an Expression object, this class is used to resolve symbols and | ||||
perform functions that the expression uses. | perform functions that the expression uses. | ||||
*/ | */ | ||||
class EvaluationContext | |||||
class JUCE_API EvaluationContext | |||||
{ | { | ||||
public: | public: | ||||
EvaluationContext(); | EvaluationContext(); | ||||
@@ -107,7 +107,8 @@ private: | |||||
}; | }; | ||||
//============================================================================== | //============================================================================== | ||||
#if DOXYGEN || (JUCE_CHECK_MEMORY_LEAKS && ! defined (JUCE_LEAK_DETECTOR)) | |||||
#if DOXYGEN || ! defined (JUCE_LEAK_DETECTOR) | |||||
#if (DOXYGEN || JUCE_CHECK_MEMORY_LEAKS) | |||||
/** This macro lets you embed a leak-detecting object inside a class. | /** This macro lets you embed a leak-detecting object inside a class. | ||||
To use it, simply declare a JUCE_LEAK_DETECTOR(YourClassName) inside a private section | To use it, simply declare a JUCE_LEAK_DETECTOR(YourClassName) inside a private section | ||||
@@ -127,8 +128,9 @@ private: | |||||
@see JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR, LeakedObjectDetector | @see JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR, LeakedObjectDetector | ||||
*/ | */ | ||||
#define JUCE_LEAK_DETECTOR(OwnerClass) LeakedObjectDetector<OwnerClass> JUCE_JOIN_MACRO (leakDetector, __LINE__); | #define JUCE_LEAK_DETECTOR(OwnerClass) LeakedObjectDetector<OwnerClass> JUCE_JOIN_MACRO (leakDetector, __LINE__); | ||||
#else | |||||
#else | |||||
#define JUCE_LEAK_DETECTOR(OwnerClass) | #define JUCE_LEAK_DETECTOR(OwnerClass) | ||||
#endif | |||||
#endif | #endif | ||||
@@ -250,6 +250,24 @@ namespace | |||||
return statfs (f.getFullPathName().toUTF8(), &result) == 0; | return statfs (f.getFullPathName().toUTF8(), &result) == 0; | ||||
} | } | ||||
void updateStatInfoForFile (const String& path, bool* const isDir, int64* const fileSize, | |||||
Time* const modTime, Time* const creationTime, bool* const isReadOnly) | |||||
{ | |||||
if (isDir != 0 || fileSize != 0 || modTime != 0 || creationTime != 0) | |||||
{ | |||||
juce_statStruct info; | |||||
const bool statOk = juce_stat (path, info); | |||||
if (isDir != 0) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||||
if (fileSize != 0) *fileSize = statOk ? info.st_size : 0; | |||||
if (modTime != 0) *modTime = Time (statOk ? (int64) info.st_mtime * 1000 : 0); | |||||
if (creationTime != 0) *creationTime = Time (statOk ? (int64) info.st_ctime * 1000 : 0); | |||||
} | |||||
if (isReadOnly != 0) | |||||
*isReadOnly = access (path.toUTF8(), W_OK) != 0; | |||||
} | |||||
} | } | ||||
bool File::isDirectory() const | bool File::isDirectory() const | ||||
@@ -236,9 +236,6 @@ public: | |||||
wildCard (wildCard_), | wildCard (wildCard_), | ||||
dir (opendir (directory.getFullPathName().toUTF8())) | dir (opendir (directory.getFullPathName().toUTF8())) | ||||
{ | { | ||||
if (wildCard == "*.*") | |||||
wildCard = "*"; | |||||
wildcardUTF8 = wildCard.toUTF8(); | wildcardUTF8 = wildCard.toUTF8(); | ||||
} | } | ||||
@@ -252,41 +249,30 @@ public: | |||||
bool* const isDir, bool* const isHidden, int64* const fileSize, | bool* const isDir, bool* const isHidden, int64* const fileSize, | ||||
Time* const modTime, Time* const creationTime, bool* const isReadOnly) | Time* const modTime, Time* const creationTime, bool* const isReadOnly) | ||||
{ | { | ||||
if (dir == 0) | |||||
return false; | |||||
for (;;) | |||||
if (dir != 0) | |||||
{ | { | ||||
struct dirent* const de = readdir (dir); | |||||
if (de == 0) | |||||
return false; | |||||
if (fnmatch (wildcardUTF8, de->d_name, FNM_CASEFOLD) == 0) | |||||
for (;;) | |||||
{ | { | ||||
filenameFound = String::fromUTF8 (de->d_name); | |||||
const String path (parentDir + filenameFound); | |||||
struct dirent* const de = readdir (dir); | |||||
if (isDir != 0 || fileSize != 0 || modTime != 0 || creationTime != 0) | |||||
{ | |||||
struct stat info; | |||||
const bool statOk = juce_stat (path, info); | |||||
if (de == 0) | |||||
break; | |||||
if (isDir != 0) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||||
if (fileSize != 0) *fileSize = statOk ? info.st_size : 0; | |||||
if (modTime != 0) *modTime = statOk ? (int64) info.st_mtime * 1000 : 0; | |||||
if (creationTime != 0) *creationTime = statOk ? (int64) info.st_ctime * 1000 : 0; | |||||
} | |||||
if (fnmatch (wildcardUTF8, de->d_name, FNM_CASEFOLD) == 0) | |||||
{ | |||||
filenameFound = String::fromUTF8 (de->d_name); | |||||
if (isHidden != 0) | |||||
*isHidden = filenameFound.startsWithChar ('.'); | |||||
updateStatInfoForFile (parentDir + filenameFound, isDir, fileSize, modTime, creationTime, isReadOnly); | |||||
if (isReadOnly != 0) | |||||
*isReadOnly = access (path.toUTF8(), W_OK) != 0; | |||||
if (isHidden != 0) | |||||
*isHidden = filenameFound.startsWithChar ('.'); | |||||
return true; | |||||
return true; | |||||
} | |||||
} | } | ||||
} | } | ||||
return false; | |||||
} | } | ||||
private: | private: | ||||
@@ -356,24 +356,11 @@ public: | |||||
continue; | continue; | ||||
const String path (parentDir + filenameFound); | const String path (parentDir + filenameFound); | ||||
if (isDir != 0 || fileSize != 0 || modTime != 0 || creationTime != 0) | |||||
{ | |||||
juce_statStruct info; | |||||
const bool statOk = juce_stat (path, info); | |||||
if (isDir != 0) *isDir = statOk && ((info.st_mode & S_IFDIR) != 0); | |||||
if (fileSize != 0) *fileSize = statOk ? info.st_size : 0; | |||||
if (modTime != 0) *modTime = statOk ? (int64) info.st_mtime * 1000 : 0; | |||||
if (creationTime != 0) *creationTime = statOk ? (int64) info.st_ctime * 1000 : 0; | |||||
} | |||||
updateStatInfoForFile (path, isDir, fileSize, modTime, creationTime, isReadOnly); | |||||
if (isHidden != 0) | if (isHidden != 0) | ||||
*isHidden = FileHelpers::isHiddenFile (path); | *isHidden = FileHelpers::isHiddenFile (path); | ||||
if (isReadOnly != 0) | |||||
*isReadOnly = access (path.toUTF8(), W_OK) != 0; | |||||
return true; | return true; | ||||
} | } | ||||
} | } | ||||
@@ -88,7 +88,7 @@ | |||||
#include <GLUT/glut.h> | #include <GLUT/glut.h> | ||||
#endif | #endif | ||||
#if ! (CGFLOAT_DEFINED || defined (DOXYGEN)) | |||||
#if ! CGFLOAT_DEFINED | |||||
#define CGFloat float | #define CGFloat float | ||||
#endif | #endif | ||||
@@ -586,8 +586,8 @@ public: | |||||
if (isDir != 0) *isDir = ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0); | if (isDir != 0) *isDir = ((findData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) != 0); | ||||
if (isHidden != 0) *isHidden = ((findData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0); | if (isHidden != 0) *isHidden = ((findData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) != 0); | ||||
if (fileSize != 0) *fileSize = findData.nFileSizeLow + (((int64) findData.nFileSizeHigh) << 32); | if (fileSize != 0) *fileSize = findData.nFileSizeLow + (((int64) findData.nFileSizeHigh) << 32); | ||||
if (modTime != 0) *modTime = fileTimeToTime (&findData.ftLastWriteTime); | |||||
if (creationTime != 0) *creationTime = fileTimeToTime (&findData.ftCreationTime); | |||||
if (modTime != 0) *modTime = Time (fileTimeToTime (&findData.ftLastWriteTime)); | |||||
if (creationTime != 0) *creationTime = Time (fileTimeToTime (&findData.ftCreationTime)); | |||||
if (isReadOnly != 0) *isReadOnly = ((findData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) != 0); | if (isReadOnly != 0) *isReadOnly = ((findData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) != 0); | ||||
return true; | return true; | ||||
@@ -37,11 +37,6 @@ | |||||
#endif | #endif | ||||
//============================================================================== | //============================================================================== | ||||
struct ConnectionAndRequestStruct | |||||
{ | |||||
HINTERNET connection, request; | |||||
}; | |||||
static HINTERNET sessionHandle = 0; | static HINTERNET sessionHandle = 0; | ||||
#ifndef WORKAROUND_TIMEOUT_BUG | #ifndef WORKAROUND_TIMEOUT_BUG | ||||
@@ -304,7 +299,6 @@ private: | |||||
buffers.lpcszHeader = static_cast <LPCTSTR> (headers); | buffers.lpcszHeader = static_cast <LPCTSTR> (headers); | ||||
buffers.dwHeadersLength = headers.length(); | buffers.dwHeadersLength = headers.length(); | ||||
buffers.dwBufferTotal = (DWORD) postData.getSize(); | buffers.dwBufferTotal = (DWORD) postData.getSize(); | ||||
ConnectionAndRequestStruct* result = 0; | |||||
if (HttpSendRequestEx (request, &buffers, 0, HSR_INITIATE, 0)) | if (HttpSendRequestEx (request, &buffers, 0, HSR_INITIATE, 0)) | ||||
{ | { | ||||
@@ -923,7 +923,7 @@ public: | |||||
} | } | ||||
} | } | ||||
void handleTaskBarEvent (const LPARAM lParam, const WPARAM wParam) | |||||
void handleTaskBarEvent (const LPARAM lParam) | |||||
{ | { | ||||
if (component->isCurrentlyBlockedByAnotherModalComponent()) | if (component->isCurrentlyBlockedByAnotherModalComponent()) | ||||
{ | { | ||||
@@ -948,8 +948,8 @@ public: | |||||
eventMods = eventMods.withoutMouseButtons(); | eventMods = eventMods.withoutMouseButtons(); | ||||
const MouseEvent e (Desktop::getInstance().getMainMouseSource(), | const MouseEvent e (Desktop::getInstance().getMainMouseSource(), | ||||
Point<int>(), eventMods, component, component, getMouseEventTime(), | |||||
Point<int>(), getMouseEventTime(), 1, false); | |||||
Point<int>(), eventMods, component, component, Time (getMouseEventTime()), | |||||
Point<int>(), Time (getMouseEventTime()), 1, false); | |||||
if (lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN) | if (lParam == WM_LBUTTONDOWN || lParam == WM_RBUTTONDOWN) | ||||
{ | { | ||||
@@ -2180,7 +2180,7 @@ private: | |||||
return TRUE; | return TRUE; | ||||
case WM_TRAYNOTIFY: | case WM_TRAYNOTIFY: | ||||
handleTaskBarEvent (lParam, wParam); | |||||
handleTaskBarEvent (lParam); | |||||
break; | break; | ||||
case WM_SYNCPAINT: | case WM_SYNCPAINT: | ||||
@@ -296,6 +296,7 @@ private: | |||||
const int threadStopTimeout; | const int threadStopTimeout; | ||||
int priority; | int priority; | ||||
class ThreadPoolThread; | class ThreadPoolThread; | ||||
friend class OwnedArray <ThreadPoolThread>; | |||||
OwnedArray <ThreadPoolThread> threads; | OwnedArray <ThreadPoolThread> threads; | ||||
Array <ThreadPoolJob*> jobs; | Array <ThreadPoolJob*> jobs; | ||||