GiveFeedback support, Cursor Extension
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19439 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
7541150812
commit
da804130ba
@ -246,9 +246,10 @@ bool wxDropTarget::GetData()
|
|||||||
// drag request
|
// drag request
|
||||||
|
|
||||||
wxDropSource::wxDropSource(wxWindow *win,
|
wxDropSource::wxDropSource(wxWindow *win,
|
||||||
const wxIcon &iconCopy,
|
const wxCursor &cursorCopy,
|
||||||
const wxIcon &iconMove,
|
const wxCursor &cursorMove,
|
||||||
const wxIcon &iconNone)
|
const wxCursor &cursorStop)
|
||||||
|
: wxDropSourceBase(cursorCopy, cursorMove, cursorStop)
|
||||||
{
|
{
|
||||||
wxMacEnsureTrackingHandlersInstalled() ;
|
wxMacEnsureTrackingHandlersInstalled() ;
|
||||||
m_window = win;
|
m_window = win;
|
||||||
@ -256,9 +257,10 @@ wxDropSource::wxDropSource(wxWindow *win,
|
|||||||
|
|
||||||
wxDropSource::wxDropSource(wxDataObject& data,
|
wxDropSource::wxDropSource(wxDataObject& data,
|
||||||
wxWindow *win,
|
wxWindow *win,
|
||||||
const wxIcon &iconCopy,
|
const wxCursor &cursorCopy,
|
||||||
const wxIcon &iconMove,
|
const wxCursor &cursorMove,
|
||||||
const wxIcon &iconNone)
|
const wxCursor &cursorStop)
|
||||||
|
: wxDropSourceBase(cursorCopy, cursorMove, cursorStop)
|
||||||
{
|
{
|
||||||
wxMacEnsureTrackingHandlersInstalled() ;
|
wxMacEnsureTrackingHandlersInstalled() ;
|
||||||
SetData( data );
|
SetData( data );
|
||||||
@ -383,6 +385,21 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags))
|
|||||||
return wxDragCopy ;
|
return wxDragCopy ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxDropSource::MacInstallDefaultCursor(wxDragResult effect)
|
||||||
|
{
|
||||||
|
const wxCursor& cursor = GetCursor(effect);
|
||||||
|
if ( cursor.Ok() )
|
||||||
|
{
|
||||||
|
cursor.MacInstall() ;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool gTrackingGlobalsInstalled = false ;
|
bool gTrackingGlobalsInstalled = false ;
|
||||||
|
|
||||||
// passing the globals via refcon is not needed by the CFM and later architectures anymore
|
// passing the globals via refcon is not needed by the CFM and later architectures anymore
|
||||||
@ -464,11 +481,44 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind
|
|||||||
// this window is entered
|
// this window is entered
|
||||||
trackingGlobals->m_currentTargetWindow = win ;
|
trackingGlobals->m_currentTargetWindow = win ;
|
||||||
trackingGlobals->m_currentTarget = win->GetDropTarget() ;
|
trackingGlobals->m_currentTarget = win->GetDropTarget() ;
|
||||||
|
{
|
||||||
|
wxDragResult result = wxDragNone ;
|
||||||
if ( trackingGlobals->m_currentTarget )
|
if ( trackingGlobals->m_currentTarget )
|
||||||
{
|
{
|
||||||
trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ) ;
|
trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ) ;
|
||||||
if ( trackingGlobals->m_currentTarget->OnEnter(
|
result = trackingGlobals->m_currentTarget->OnEnter(
|
||||||
localx , localy , wxDragCopy ) != wxDragNone )
|
localx , localy , wxDragCopy ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( trackingGlobals->m_currentSource && trackingGlobals->m_currentSource->GiveFeedback( result ) == FALSE )
|
||||||
|
{
|
||||||
|
if ( trackingGlobals->m_currentSource->MacInstallDefaultCursor( result ) == FALSE )
|
||||||
|
{
|
||||||
|
switch( result )
|
||||||
|
{
|
||||||
|
case wxDragCopy :
|
||||||
|
{
|
||||||
|
wxCursor cursor(wxCURSOR_COPY_ARROW) ;
|
||||||
|
cursor.MacInstall() ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
case wxDragMove :
|
||||||
|
{
|
||||||
|
wxCursor cursor(wxCURSOR_ARROW) ;
|
||||||
|
cursor.MacInstall() ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
case wxDragNone :
|
||||||
|
{
|
||||||
|
wxCursor cursor(wxCURSOR_NO_ENTRY) ;
|
||||||
|
cursor.MacInstall() ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( result != wxDragNone )
|
||||||
{
|
{
|
||||||
int x , y ;
|
int x , y ;
|
||||||
x = y = 0 ;
|
x = y = 0 ;
|
||||||
|
@ -246,9 +246,10 @@ bool wxDropTarget::GetData()
|
|||||||
// drag request
|
// drag request
|
||||||
|
|
||||||
wxDropSource::wxDropSource(wxWindow *win,
|
wxDropSource::wxDropSource(wxWindow *win,
|
||||||
const wxIcon &iconCopy,
|
const wxCursor &cursorCopy,
|
||||||
const wxIcon &iconMove,
|
const wxCursor &cursorMove,
|
||||||
const wxIcon &iconNone)
|
const wxCursor &cursorStop)
|
||||||
|
: wxDropSourceBase(cursorCopy, cursorMove, cursorStop)
|
||||||
{
|
{
|
||||||
wxMacEnsureTrackingHandlersInstalled() ;
|
wxMacEnsureTrackingHandlersInstalled() ;
|
||||||
m_window = win;
|
m_window = win;
|
||||||
@ -256,9 +257,10 @@ wxDropSource::wxDropSource(wxWindow *win,
|
|||||||
|
|
||||||
wxDropSource::wxDropSource(wxDataObject& data,
|
wxDropSource::wxDropSource(wxDataObject& data,
|
||||||
wxWindow *win,
|
wxWindow *win,
|
||||||
const wxIcon &iconCopy,
|
const wxCursor &cursorCopy,
|
||||||
const wxIcon &iconMove,
|
const wxCursor &cursorMove,
|
||||||
const wxIcon &iconNone)
|
const wxCursor &cursorStop)
|
||||||
|
: wxDropSourceBase(cursorCopy, cursorMove, cursorStop)
|
||||||
{
|
{
|
||||||
wxMacEnsureTrackingHandlersInstalled() ;
|
wxMacEnsureTrackingHandlersInstalled() ;
|
||||||
SetData( data );
|
SetData( data );
|
||||||
@ -383,6 +385,21 @@ wxDragResult wxDropSource::DoDragDrop(int WXUNUSED(flags))
|
|||||||
return wxDragCopy ;
|
return wxDragCopy ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool wxDropSource::MacInstallDefaultCursor(wxDragResult effect)
|
||||||
|
{
|
||||||
|
const wxCursor& cursor = GetCursor(effect);
|
||||||
|
if ( cursor.Ok() )
|
||||||
|
{
|
||||||
|
cursor.MacInstall() ;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool gTrackingGlobalsInstalled = false ;
|
bool gTrackingGlobalsInstalled = false ;
|
||||||
|
|
||||||
// passing the globals via refcon is not needed by the CFM and later architectures anymore
|
// passing the globals via refcon is not needed by the CFM and later architectures anymore
|
||||||
@ -464,11 +481,44 @@ pascal OSErr wxMacWindowDragTrackingHandler(DragTrackingMessage theMessage, Wind
|
|||||||
// this window is entered
|
// this window is entered
|
||||||
trackingGlobals->m_currentTargetWindow = win ;
|
trackingGlobals->m_currentTargetWindow = win ;
|
||||||
trackingGlobals->m_currentTarget = win->GetDropTarget() ;
|
trackingGlobals->m_currentTarget = win->GetDropTarget() ;
|
||||||
|
{
|
||||||
|
wxDragResult result = wxDragNone ;
|
||||||
if ( trackingGlobals->m_currentTarget )
|
if ( trackingGlobals->m_currentTarget )
|
||||||
{
|
{
|
||||||
trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ) ;
|
trackingGlobals->m_currentTarget->SetCurrentDrag( theDrag ) ;
|
||||||
if ( trackingGlobals->m_currentTarget->OnEnter(
|
result = trackingGlobals->m_currentTarget->OnEnter(
|
||||||
localx , localy , wxDragCopy ) != wxDragNone )
|
localx , localy , wxDragCopy ) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( trackingGlobals->m_currentSource && trackingGlobals->m_currentSource->GiveFeedback( result ) == FALSE )
|
||||||
|
{
|
||||||
|
if ( trackingGlobals->m_currentSource->MacInstallDefaultCursor( result ) == FALSE )
|
||||||
|
{
|
||||||
|
switch( result )
|
||||||
|
{
|
||||||
|
case wxDragCopy :
|
||||||
|
{
|
||||||
|
wxCursor cursor(wxCURSOR_COPY_ARROW) ;
|
||||||
|
cursor.MacInstall() ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
case wxDragMove :
|
||||||
|
{
|
||||||
|
wxCursor cursor(wxCURSOR_ARROW) ;
|
||||||
|
cursor.MacInstall() ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
case wxDragNone :
|
||||||
|
{
|
||||||
|
wxCursor cursor(wxCURSOR_NO_ENTRY) ;
|
||||||
|
cursor.MacInstall() ;
|
||||||
|
}
|
||||||
|
break ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( result != wxDragNone )
|
||||||
{
|
{
|
||||||
int x , y ;
|
int x , y ;
|
||||||
x = y = 0 ;
|
x = y = 0 ;
|
||||||
|
Loading…
Reference in New Issue
Block a user