Automated merge with ssh://rick@hg.lindenlab.com/rick/viewer-2-0-rickcallum

meow-7.2.2
Rick Pasetto 2010-01-12 14:26:23 -08:00
commit 26e63da8cc
2 changed files with 53 additions and 3 deletions

View File

@ -278,6 +278,8 @@ LLWindowMacOSX::LLWindowMacOSX(LLWindowCallbacks* callbacks,
mMoveEventCampartorUPP = NewEventComparatorUPP(staticMoveEventComparator);
mGlobalHandlerRef = NULL;
mWindowHandlerRef = NULL;
mDragOverrideCursor = -1;
// We're not clipping yet
SetRect( &mOldMouseClip, 0, 0, 0, 0 );
@ -2795,6 +2797,14 @@ void LLWindowMacOSX::setCursor(ECursorType cursor)
{
OSStatus result = noErr;
if (mDragOverrideCursor != -1)
{
// A drag is in progress...remember the requested cursor and we'll
// restore it when it is done
mCurrentCursor = cursor;
return;
}
if (cursor == UI_CURSOR_ARROW
&& mBusyCount > 0)
{
@ -3499,10 +3509,48 @@ OSErr LLWindowMacOSX::handleDragNDrop(DragRef drag, LLWindowCallbacks::DragNDrop
LLWindowCallbacks::DragNDropResult res =
mCallbacks->handleDragNDrop(this, gl_pos, mask, action, url);
if (LLWindowCallbacks::DND_NONE != res)
{
result = noErr;
switch (res) {
case LLWindowCallbacks::DND_NONE: // No drop allowed
if (action == LLWindowCallbacks::DNDA_TRACK)
{
mDragOverrideCursor = kThemeNotAllowedCursor;
}
else {
mDragOverrideCursor = -1;
}
break;
case LLWindowCallbacks::DND_MOVE: // Drop accepted would result in a "move" operation
mDragOverrideCursor = kThemePointingHandCursor;
result = noErr;
break;
case LLWindowCallbacks::DND_COPY: // Drop accepted would result in a "copy" operation
mDragOverrideCursor = kThemeCopyArrowCursor;
result = noErr;
break;
case LLWindowCallbacks::DND_LINK: // Drop accepted would result in a "link" operation:
mDragOverrideCursor = kThemeAliasArrowCursor;
result = noErr;
break;
default:
mDragOverrideCursor = -1;
break;
}
// This overrides the cursor being set by setCursor.
// This is a bit of a hack workaround because lots of areas
// within the viewer just blindly set the cursor.
if (mDragOverrideCursor == -1)
{
// Restore the cursor
ECursorType temp_cursor = mCurrentCursor;
// get around the "setting the same cursor" code in setCursor()
mCurrentCursor = UI_CURSOR_COUNT;
setCursor(temp_cursor);
}
else {
// Override the cursor
SetThemeCursor(mDragOverrideCursor);
}
}
}
}

View File

@ -201,6 +201,8 @@ protected:
U32 mFSAASamples;
BOOL mForceRebuild;
S32 mDragOverrideCursor;
F32 mBounceTime;
NMRec mBounceRec;
LLTimer mBounceTimer;