MiddleButtonMove event does not work: Difference between revisions

From Liberty BASIC Family
Jump to navigation Jump to search
m (Text replacement - "Bug Tracker Categories" to "Bug Tracker")
 
m (1 revision imported)
 

Latest revision as of 03:03, 11 October 2023

Description

middleButtonMove event does not work.
If you hold middle button and move, mouseMove event will fire instead.
Help file says

Events that can be trapped(...)
(...)
middleButtonMove- the mouse moved while the middle button was down

Example code to demonstrate the bug.

open "middleButtonMove bug" for graphics as #w
  print #w, "when mouseMove [NoMBpaint]"

  print #w, "when middleButtonMove [MMBpaint]"
  print #w, "when middleButtonDown [MMBdown]"
  print #w, "when middleButtonUp [MMBup]"

  print #w, "down"
  print #w, "\"
  print #w, "\Move mouse over window. - "
  print #w, "\Press and hold Middle Mouse Button, "
  print #w, "\  move mouse over window. - "
  print #w, "\Look in the mainwin - "
  print #w, "\  watch for MMBdown, MMBup messages"
  wait

[NoMBpaint]
  print #w, "size 1"
  print #w, "color black; set "; MouseX; " "; MouseY
    aaa =aaa +1
    print ".";
    if aaa mod 30 = 0 then print
  wait

[MMBpaint]
  '!!! WE NEVER GOT HERE - a bug!!!
  print #w, "size 3"
  print #w, "color blue; set "; MouseX; " "; MouseY
    aaa =aaa +1
    print "*";
    if aaa mod 30 = 0 then print
  wait
[MMBdown]
    print "MMBdown"
    wait
[MMBup]
    print "MMBup"
    wait

Workaround:

You can't use middleButtonMove, but:
you can keep middle button status by ourself
and if pressed, process mouseMove as middleButtonMove

open "middleButtonMove workaround" for graphics as #w
  print #w, "when mouseMove [NoMBpaint]"

  print #w, "when middleButtonMove [MMBpaint]"
  print #w, "when middleButtonDown [MMBdown]"
  print #w, "when middleButtonUp [MMBup]"

  print #w, "down"
  print #w, "\"
  print #w, "\Move mouse over window. - "
  print #w, "\Press and hold Middle Mouse Button, "
  print #w, "\  move mouse over window. - "
  print #w, "\Look in the mainwin - "
  print #w, "\  watch for MMBdown, MMBup messages"
  wait

[NoMBpaint]
'Workaround to missing  middleButtonMove event: keep middle button status by ourself
'and if pressed, process  mouseMove as middleButtonMove
if MMBdown = 1 then [MMBpaint]
  print #w, "size 1"
  print #w, "color black; set "; MouseX; " "; MouseY
    aaa =aaa +1
    print ".";
    if aaa mod 30 = 0 then print
  wait

[MMBpaint]
  '!!! WE NEVER GOT HERE (by event handler)- a bug!!!
  print #w, "size 3"
  print #w, "color blue; set "; MouseX; " "; MouseY
    aaa =aaa +1
    print "*";
    if aaa mod 30 = 0 then print
  wait
[MMBdown]
    print "MMBdown"
    MMBdown = 1
    wait
[MMBup]
    print "MMBup"
    MMBdown = 0
    wait