Browse Source

* Patch for bug #3548 from Peter

armin 20 years ago
parent
commit
c1e71cde91
2 changed files with 17 additions and 12 deletions
  1. 7 4
      rtl/go32v2/mouse.pp
  2. 10 8
      rtl/win32/mouse.pp

+ 7 - 4
rtl/go32v2/mouse.pp

@@ -765,10 +765,10 @@ begin
    MouseEvent.Action:=MouseActionMove;
    MouseEvent.Action:=MouseActionMove;
   if (LastMouseEvent.Buttons<>MouseEvent.Buttons) then
   if (LastMouseEvent.Buttons<>MouseEvent.Buttons) then
    begin
    begin
-     if (LastMouseEvent.Buttons=0) then
-      MouseEvent.Action:=MouseActionDown
+     if (LastMouseEvent.Buttons and MouseEvent.buttons<>LastMouseEvent.Buttons) then
+       MouseEvent.Action:=MouseActionUp
      else
      else
-      MouseEvent.Action:=MouseActionUp;
+       MouseEvent.Action:=MouseActionDown;
    end;
    end;
   LastMouseEvent:=MouseEvent;
   LastMouseEvent:=MouseEvent;
 end;
 end;
@@ -796,7 +796,10 @@ Begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.10  2005-01-03 18:15:34  peter
+  Revision 1.11  2005-01-12 10:25:48  armin
+  * Patch for bug 3548 from Peter
+
+  Revision 1.10  2005/01/03 18:15:34  peter
   save ebx in assembler procs
   save ebx in assembler procs
 
 
   Revision 1.9  2004/12/23 17:27:37  peter
   Revision 1.9  2004/12/23 17:27:37  peter

+ 10 - 8
rtl/win32/mouse.pp

@@ -48,15 +48,14 @@ procedure MouseEventHandler(var ir:INPUT_RECORD);
           if (ir.Event.MouseEvent.dwButtonState and RIGHTMOST_BUTTON_PRESSED<>0) then
           if (ir.Event.MouseEvent.dwButtonState and RIGHTMOST_BUTTON_PRESSED<>0) then
             e.buttons:=e.buttons or MouseRightButton;
             e.buttons:=e.buttons or MouseRightButton;
 
 
-
           if (Lasthandlermouseevent.x<>e.x) or (LasthandlerMouseEvent.y<>e.y) then
           if (Lasthandlermouseevent.x<>e.x) or (LasthandlerMouseEvent.y<>e.y) then
             e.Action:=MouseActionMove;
             e.Action:=MouseActionMove;
           if (LastHandlerMouseEvent.Buttons<>e.Buttons) then
           if (LastHandlerMouseEvent.Buttons<>e.Buttons) then
            begin
            begin
-            if (LasthandlerMouseEvent.Buttons=0) then
-              e.Action:=MouseActionDown
+            if (LasthandlerMouseEvent.Buttons and e.buttons<>LasthandlerMouseEvent.Buttons) then
+              e.Action:=MouseActionUp
             else
             else
-              e.Action:=MouseActionUp;
+              e.Action:=MouseActionDown;
            end;
            end;
 
 
 
 
@@ -158,10 +157,10 @@ begin
    MouseEvent.Action:=MouseActionMove;
    MouseEvent.Action:=MouseActionMove;
   if (LastMouseEvent.Buttons<>MouseEvent.Buttons) then
   if (LastMouseEvent.Buttons<>MouseEvent.Buttons) then
    begin
    begin
-     if (LastMouseEvent.Buttons=0) then
-      MouseEvent.Action:=MouseActionDown
+     if (LastMouseEvent.Buttons and MouseEvent.buttons<>LastMouseEvent.Buttons) then
+       MouseEvent.Action:=MouseActionUp
      else
      else
-      MouseEvent.Action:=MouseActionUp;
+       MouseEvent.Action:=MouseActionDown;
    end;
    end;
   if MouseEvent.action=0 then MousEevent.action:=MouseActionMove; // can sometimes happen due to compression of events.
   if MouseEvent.action=0 then MousEevent.action:=MouseActionMove; // can sometimes happen due to compression of events.
   LastMouseEvent:=MouseEvent;
   LastMouseEvent:=MouseEvent;
@@ -243,7 +242,10 @@ Begin
 end.
 end.
 {
 {
   $Log$
   $Log$
-  Revision 1.8  2004-11-21 15:24:35  marco
+  Revision 1.9  2005-01-12 10:25:48  armin
+  * Patch for bug 3548 from Peter
+
+  Revision 1.8  2004/11/21 15:24:35  marco
    * fix for bug 2246, zero events surpressed by moving compression into handler
    * fix for bug 2246, zero events surpressed by moving compression into handler
 
 
   Revision 1.7  2004/11/04 10:21:07  peter
   Revision 1.7  2004/11/04 10:21:07  peter