Bladeren bron

* 1.0.x fixes merged

marco 22 jaren geleden
bovenliggende
commit
138d6ba052
1 gewijzigde bestanden met toevoegingen van 25 en 6 verwijderingen
  1. 25 6
      rtl/unix/mouse.pp

+ 25 - 6
rtl/unix/mouse.pp

@@ -48,9 +48,13 @@ var
 const
   gpm_fs : longint = -1;
 
-
+{$ifndef NOGPM}
 procedure GPMEvent2MouseEvent(const e:TGPMEvent;var mouseevent:tmouseevent);
+var
+  PrevButtons : byte;
+
 begin
+  PrevButtons:=SysLastMouseEvent.Buttons;
   if e.x>0 then
    mouseevent.x:=e.x-1
   else
@@ -80,14 +84,25 @@ begin
       end;
     GPM_UP :
       begin
-        MouseEvent.Action:=MouseActionUp;
+        { gpm apparently sends the button that is left up
+          while mouse unit expects the button state after
+          the button was released PM }
+        if MouseEvent.Buttons<>0 then
+          begin
+            MouseEvent.Buttons:=MouseEvent.Buttons xor PrevButtons;
+            MouseEvent.Action:=MouseActionUp;
+          end
+        { this does probably never happen...
+          but its just a security PM }
+        else
+          MouseEvent.Action:=MouseActionMove;
         WaitMouseMove:=false;
       end;
   else
    MouseEvent.Action:=0;
   end;
 end;
-
+{$ENDIF}
 
 procedure PlaceMouseCur(ofs:longint);
 var
@@ -299,7 +314,8 @@ begin
 {$ifndef NOGPM}
   if PollMouseEvent(ME) then
     begin
-      GetMouseEvent(ME);
+      // why should we remove that event ?? PM
+      // GetMouseEvent(ME);
       SysGetMouseButtons:=ME.buttons
     end
   else
@@ -369,8 +385,8 @@ begin
        SysPollMouseEvent:=false;
    end
   else
+{$endif NOGPM}
    SysPollMouseEvent:=false;
-{$endif ndef NOGPM}
 end;
 
 
@@ -418,7 +434,10 @@ end.
 
 {
   $Log$
-  Revision 1.11  2003-09-16 16:13:56  marco
+  Revision 1.12  2003-10-24 18:09:56  marco
+   * 1.0.x fixes merged
+
+  Revision 1.11  2003/09/16 16:13:56  marco
    * fdset functions renamed to fp<posix name>
 
   Revision 1.10  2003/09/14 20:15:01  marco