|
@@ -503,11 +503,12 @@ const
|
|
Action : 0;
|
|
Action : 0;
|
|
);
|
|
);
|
|
|
|
|
|
- procedure GenFakeReleaseEvent(MouseEvent : TMouseEvent);
|
|
|
|
|
|
+ procedure GenFakeReleaseEvent(var MouseEvent : TMouseEvent);
|
|
begin
|
|
begin
|
|
MouseEvent.action := MouseActionUp;
|
|
MouseEvent.action := MouseActionUp;
|
|
MouseEvent.buttons := 0;
|
|
MouseEvent.buttons := 0;
|
|
- PutMouseEvent(MouseEvent);
|
|
|
|
|
|
+ { fake event is to decive LastMouseEvent
|
|
|
|
+ PutMouseEvent(MouseEvent); do not make real event }
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure GenMouseEvent;
|
|
procedure GenMouseEvent;
|
|
@@ -650,10 +651,13 @@ const
|
|
end;
|
|
end;
|
|
*)
|
|
*)
|
|
PutMouseEvent(MouseEvent);
|
|
PutMouseEvent(MouseEvent);
|
|
- if (MouseEvent.buttons and (8+16)) <> 0 then // 'M' escape sequence cannot map button 4&5 release, so fake one.
|
|
|
|
|
|
+ if (MouseEvent.buttons and (MouseButton4 or MouseButton5)) <> 0 then
|
|
GenFakeReleaseEvent(MouseEvent);
|
|
GenFakeReleaseEvent(MouseEvent);
|
|
if NeedMouseRelease then
|
|
if NeedMouseRelease then
|
|
|
|
+ begin
|
|
GenFakeReleaseEvent(MouseEvent);
|
|
GenFakeReleaseEvent(MouseEvent);
|
|
|
|
+ PutMouseEvent(MouseEvent); {rxvt bug, need real event here as workaround }
|
|
|
|
+ end;
|
|
{$ifdef DebugMouse}
|
|
{$ifdef DebugMouse}
|
|
if MouseEvent.Action=MouseActionDown then
|
|
if MouseEvent.Action=MouseActionDown then
|
|
Write(system.stderr,'Button down : ')
|
|
Write(system.stderr,'Button down : ')
|
|
@@ -776,11 +780,11 @@ const
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
PutMouseEvent(MouseEvent);
|
|
PutMouseEvent(MouseEvent);
|
|
- if (ButtonMask and (8+16)) <> 0 then // 'M' escape sequence cannot map button 4&5 release, so fake one.
|
|
|
|
|
|
+ if (ButtonMask and (MouseButton4 or MouseButton5)) <> 0 then
|
|
begin
|
|
begin
|
|
- MouseEvent.Action:=MouseActionUp;
|
|
|
|
|
|
+ MouseEvent.Action:=MouseActionUp; {to trick LastMouseEvent pretend that we have MouseActionUp event }
|
|
MouseEvent.Buttons:=LastMouseEvent.Buttons and not ButtonMask;
|
|
MouseEvent.Buttons:=LastMouseEvent.Buttons and not ButtonMask;
|
|
- PutMouseEvent(MouseEvent);
|
|
|
|
|
|
+ {PutMouseEvent(MouseEvent); do not put actual event }
|
|
end;
|
|
end;
|
|
LastMouseEvent:=MouseEvent;
|
|
LastMouseEvent:=MouseEvent;
|
|
end;
|
|
end;
|