https://developer.apple.com/documentati ... 000326-SW7
why doesn't it work in cocoa I-beam cursor? found the reason
Code: Select all
result = CocoaMessage(0, 0, "NSCursor IBeamCursor")
Code: Select all
Global setCursor = #PB_Cursor_Hand
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_MacOS
#kThemeArrowCursor = 0
#kThemeIBeamCursor = 4
#kThemePointingHandCursor = 10
ImportC ""
SetAnimatedThemeCursor(CursorType.i, AnimationStep.i)
SetThemeCursor(CursorType.i)
EndImport
Procedure GetCursor( )
Protected result.i
Select CocoaMessage(0, 0, "NSCursor currentCursor")
Case CocoaMessage(0, 0, "NSCursor arrowCursor") : result = #PB_Cursor_Default
Case CocoaMessage(0, 0, "NSCursor pointingHandCursor") : result = #PB_Cursor_Hand
EndSelect
ProcedureReturn result
EndProcedure
Procedure SetCursor( cursor.i )
Protected result
setCursor = cursor
Select cursor
Case #PB_Cursor_Default : result = CocoaMessage(0, 0, "NSCursor arrowCursor")
Case #PB_Cursor_Busy
SetAnimatedThemeCursor( 7, 0 )
Case #PB_Cursor_IBeam ; : result = CocoaMessage(0, 0, "NSCursor iBeamCursor") ; not work
SetThemeCursor( #kThemeIBeamCursor )
Case #PB_Cursor_Hand : result = CocoaMessage(0, 0, "NSCursor pointingHandCursor")
EndSelect
If result
; SetGadgetAttribute( EventGadget( ), #PB_Canvas_Cursor, cursor )
CocoaMessage(0, result, "set")
EndIf
ProcedureReturn cursor
EndProcedure
CompilerEndSelect
OpenWindow(2, 450, 380, 328, 328, "window_1", #PB_Window_SystemMenu)
Busy = CanvasGadget(#PB_Any, 8, 8, 56, 56)
IBeam = CanvasGadget(#PB_Any, 72, 8, 56, 56)
Hand = CanvasGadget(#PB_Any, 136, 8, 56, 56)
Define dragButtons, getCursor =- 1
Repeat
event = WaitWindowEvent( )
If event = #PB_Event_Gadget
Select EventType( )
Case #PB_EventType_LeftButtonDown
dragButtons = 1
Case #PB_EventType_LeftButtonUp
dragButtons = 0
If GetCursor( ) = setCursor
SetCursor( #PB_Cursor_Default )
EndIf
Case #PB_EventType_MouseMove
;If dragButtons ; GetGadgetAttribute( EventGadget( ), #PB_Canvas_Buttons )
If GetCursor( ) <> setCursor And setCursor <> #PB_Cursor_Busy
Debug " update cursor - "+GetGadgetAttribute( EventGadget( ), #PB_Canvas_Cursor )
; SetGadgetAttribute( EventGadget( ), #PB_Canvas_Cursor, setCursor )
SetCursor( setCursor )
EndIf
;EndIf
Case #PB_EventType_MouseEnter
Select EventGadget( )
Case Busy : SetCursor( #PB_Cursor_Busy )
Case IBeam : SetCursor( #PB_Cursor_IBeam )
Case Hand : SetCursor( #PB_Cursor_Hand )
EndSelect
; SetGadgetAttribute( EventGadget( ), #PB_Canvas_Cursor, setCursor )
Case #PB_EventType_MouseLeave
If Not dragButtons
SetCursor( #PB_Cursor_Default )
EndIf
EndSelect
EndIf
If event =- 1
If getCursor <> GetCursor( )
getCursor = GetCursor( )
Debug " get "+getCursor
EndIf
EndIf
Until event = #PB_Event_CloseWindow