defaultcursor problem

Peter M. Brigham pmbrig at gmail.com
Sun Oct 14 09:42:23 EDT 2012


Actually, the whole point of the "defaultcursor" is that it is *not* reset at idle even without it being locked, whereas "the cursor" is reset at idle and must be locked to be persistent. Setting the defaultcursor used to work over an unlocked, editable field, but it doesn't any more. Checking the dictionary for "defaultcursor":

"The defaultCursor is the shape used automatically when the mouse pointer is in a stack window, but not in an editable field."

so apparently the behavior was changed for an editable field in some version <= 4.5 and I only noticed it now. Bummer.

Before I discovered the defaultcursor I did what André Bisseret suggested and had a mousemove handler for locking and setting "the cursor" but I always ran into problems with the cursor staying locked at random points. I always assumed that the engine had missed firing off a mouseleave message -- I had put my "unlock cursor" command in an "on mouseleave" handler. Then I'd be left with a locked cursor and would have to unlock it via the messagebox. I could never pin down a recipe for this.

André's/Eric's solution is similar to what I used before. I'll try it out again and see if over time I still get stray locked cursors.

BTW, the handlers as you posted them, André, have a problem: once you hold down the commandkey while moving over a word and the cursor changes to hand, it won't change back when you lift the commandkey, until you move out of the field. I revised Eric's mousemove handler accordingly (and note the addition of a pass mousemove command at the end, in case individual fields have individual mousemove behaviors):

on mouseMove
   switch
      case "button" is in the target
         ShowHandCursor #
         break
         ---====
      case "field" is in the target
         switch
            case the commandkey is up
               ResetCursor
               break
            case the lockText of the target is false
               if the mousetext = empty then
                  ResetCursor
               else if "link" is in the textStyle of the mouseChunk then
                  ShowHandCursor
               end if
               break
         end switch
         break
      default
         ResetCursor #
   end switch
   pass mousemove
end mouseMove
------------------------------
on mouseLeave
   ResetCursor #
end mouseLeave
------------------------------
on ShowHandCursor
   set the cursor to hand
   lock cursor
end ShowHandCursor
------------------------------
on ResetCursor
   unlock cursor
end ResetCursor

On Oct 12, 2012, at 12:31 PM, Bob Sneidar wrote:

> Lock the cursor first. If you don't, it will revert the first idle it gets. As someone mentioned use the cursor. Locking it will prevent the reversion you are seeing. (It actually is changing but so fast you can't see it.)
> 
> Bob
> 
> 
> On Oct 12, 2012, at 6:06 AM, Peter M. Brigham wrote:
> 
>> Anyone have an idea why this doesn't work? Put the following into the script of an unlocked field:
>> 
>> on mousemove
>>  put the commandkey is down into cmK
>>  if cmK then
>>     set the defaultcursor to hand
>>  else
>>     set the defaultcursor to empty
>>  end if
>> end mousemove
>> 
>> I want the cursor to become "hand" with the commandkey down, but it simply remains a bar over an unlocked field. I swear this used to work, but for some reason it no longer does. 2008 MacBook, OSX 10.7.4 (Lion), Rev Studio 4.5.3, build 1210
>> 
>> -- Peter
>> 
>> Peter M. Brigham
>> pmbrig at gmail.com
>> http://home.comcast.net/~pmbrig
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode at lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode





More information about the use-livecode mailing list