MiddleButtonMove event does not work

From Liberty BASIC Family
Jump to navigation Jump to search

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