View Issue Details

IDProjectCategoryView StatusLast Update
0019918LazarusIDEpublic2014-01-04 16:04
ReporterFlávio Etrusco Assigned ToJuha Manninen  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version0.9.31 (SVN) 
Summary0019918: [patch] ObjectInspector: double-click wrongly triggered when trying to expand ComboBox quickly
DescriptionTrying to pop up the ComboBox quickly after selecting the value/property triggers a double-click.
The following code works for me, but I'm not sure this is the best fix.
The same patch is attached for convenience.

-------------------------- ideintf/objectinspector.pp --------------------------
index 240aa45..4542563 100644
@@ -2012,7 +2012,6 @@ begin
           end;
         end;
 
- SetItemIndexAndFocus(Index);
         SetCaptureControl(Self);
         Column := oipgcValue;
       end;
@@ -2103,6 +2102,8 @@ procedure TOICustomPropertyGrid.MouseUp(Button:TMouseButton; Shift:TShiftState;
 begin
   if FDragging then EndDragSplitter;
   SetCaptureControl(nil);
+ if Button = mbLeft then
+ SetItemIndexAndFocus(MouseToIndex(Y,false));
   inherited MouseUp(Button,Shift,X,Y);
 end;
Tagshas_patch
Fixed in Revisionr43642
LazTarget1.2
WidgetsetWin32/Win64
Attached Files

Relationships

related to 0000794 closedMicha Nelissen Double clicking on a component preoprty 
related to 0025490 closedZeljan Rikalo QT: double-click wrongly triggered in OI when trying to expand ComboBox quickly 

Activities

Flávio Etrusco

2011-08-06 23:19

developer   ~0050572

Last edited: 2011-08-06 23:19

Scrap that. It's not really working.

Max Vlasov

2011-08-29 10:45

reporter   ~0051230

You didn't mention widgetset/platform.
I tried to reproduce it in ubuntu and could not. Is this windows-only problem?

Zeljan Rikalo

2011-08-29 10:54

developer   ~0051231

afaik,it's big problem under carbon.

Max Vlasov

2011-08-29 13:25

reporter   ~0051240

ok, I don't know about carbon, as I see this comes as a double click from the combobox control and I checked in delphi, there's no double click fired for button with arrow. In Ubuntu there's also no double click for combo's button and I think that's the reason while I don't see the bug in linux. Zeljan, can you check combobox in carbon for firing double click on button.

If this firing is made uniform between platforms, this bug will be gone inho

Max Vlasov

2011-08-29 14:31

reporter   ~0051245

Not so simple with windows combobox (simple form with it doesn't reveal singel dblclick to event firing), but at least another bug found. If you keep double clicking the event is really firing for simple test on form. So If you keep double clicking at the arrow for object inspector property dialog, it switches values every next double click (probably due some affection from quad clicks)

2011-08-29 15:06

 

combotest.zip (1,584 bytes)

Max Vlasov

2011-08-29 15:10

reporter   ~0051248

Last edited: 2011-08-29 15:11

Made a reproducible case (attached combotest.zip)
In project does the following steps after "mouse down" at the shape:
- The combo is made visible
- It is made active with ActiveControl:=...

After one double clicks at the right part of the shape, the double click event is always fired.

I did the same test in Delphi and there's no double click after the same actions. So it's something specific to windows lazarus that makes this happen (only after ActiveControl assignment).

Max Vlasov

2011-08-29 19:02

reporter   ~0051256

Found a place where programmatically double click is send on some condition
\lcl\interfaces\win32\win32callback.inc

in WindowProc that changes and reroute messages including mouse-down, double-clicks (possibly for detected tripple and quad clicks not presented on different platforms)

    WM_LBUTTONDOWN:
...
      if (MouseDownFocusStatus = mfFocusChanged) and (MouseDownFocusWindow = Window)
          and (GetTickCount - MouseDownTime <= GetDoubleClickTime)
          and CheckMouseMovement then
      begin
        inc(MouseDownCount);
        PostMessage(Window, WM_LBUTTONDBLCLK, WParam, LParam);
      end


if we add a line in the condition here
...
          and (MouseDownWindow = Window)
...

the problem is solved since the first mouse down with with comparision is done is on the grid and the second - at the just showed combobox. This line should not forbid something important because it makes no sense for double click to be working when the first mousedown on one control and the second - on another.
I tested it both on the test project attached and in lazarus. In lazarus a side effect that if one double clicks at the combobox button area the list toggles (it's ok I think) but left open. This can be annoying possible to those who used to double clicking at random points in the value line.

Interesting, this is my second inquiry about programmatical issues with mouse double-clicks, before it was about double clicking in gtk2 (0019753)

Flávio Etrusco

2011-08-30 04:23

developer   ~0051263

It works for me, too. Thanks, Max!
I don't think the Object Inspector is ok, but it's not caused by your fix either ;-) There's special handling in the OI, on the combo's OnMouseUp. Checking 'not ValueComboBox.DroppedDown' there fixes this :-)

Flávio Etrusco

2011-08-30 04:38

developer   ~0051264

Patches attached with Max's fix and the OI work-around.

Max Vlasov

2011-08-30 09:39

reporter   ~0051268

Great, Flavio, your OI patch works correctly. Seems like the win32 lazarus solution is found. Hope the developers can review it and apply to svn.

Vincent Snijders

2011-08-30 10:15

manager   ~0051270

IIRC, this code is for double clicking on a unfocused control. Does that stil work?

Example: create a form with a TEdit and a TMemo. Add an OnDblClick event to the TEdit and let it write to the TMemo.

Run the application.

Switch to the TMemo, double click the Tedit and verify that the OnDblClick event is raised.

Switch to another application, but keep the test app visible. Now double click the TEdit and verify that the OnDblClick even is raised.

A third test would be, that it still works OK, if you change to another form in the same application.

Max Vlasov

2011-08-30 12:16

reporter   ~0051272

@Vincent, I slightly modified the test app (added an edit that logs after double clicks). Every case you mentioned worked.

Actually, yesterday I already tried to stop in the code that should handle this case (when the condition is true), and I did it without patch (for clearer picture). But it never stopped there, tried everything you mentioned. Maybe finding a revision where these lines changed may help. Also a guess that it can work differently in windows 95/98/ME line.

Flávio Etrusco

2011-08-30 23:28

developer   ~0051297

Blabbering: "me too". I had tested the focus-dblclick stuff, since it was what the comments in the code suggested, but got annoyed by the global vars and got carried away trying do so some cleanups ;-) and forgot to mention the tests here :-$
I think we should at the least use 'GetMessageTime' instead of 'GetTickCount' for MouseDownTime.
The OI change doesn't cause any problem in gtk2 at least.

Flávio Etrusco

2011-08-30 23:41

developer   ~0051299

More blabbering: @Max, not so surprising ;-) The DoubleClick-handling code is plenty of "complexities". But I remember having to deal with so many silly bugs of Windows Controls in Delphi that I didn't even think the bug could in the LCL...

Flávio Etrusco

2011-08-31 01:10

developer   ~0051301

Last edited: 2011-08-31 04:00

(Edit: removed unrelated nitpicking. I'll leave to other bug.)
In Win7, with the PostMessage commented out the DblClick when gaining focus is triggered just the same (tested: TEdit, TMemo, TComboBox and TSynEdit, unfocusing on same form, other form and other app), so it must be some more subtle case.

Flávio Etrusco

2011-08-31 04:32

developer   ~0051304

Last edited: 2011-08-31 04:35

Whoa, this remounts indeed to pre-history! ;-)

The original code was added in:
[svn r7117] send double click to window, if pattern mouse-click, focus-change, mouse-click detected (fixes bug 794)

Let's see bug 0000794 then: it was added seemingly just to implement the behavior we're just trying to fix :-S
I then realize a feature we lose with the patch/removing PostMessage: DblClick in special (DefaultEditor?) editor dialog, like Anchors or a TStrings property.

I'll post a new cleanup patch.

Out of curiosity, the code was originally this, see how far it "evolved" :-o
      // if mouse-click, focus-change, mouse-click, simulate double click
      // assume focus change due to first mouse-click
      if MouseDownFocusChange and (MouseDownWindow = Window)
          and (GetTickCount - MouseDownTime <= GetDoubleClickTime) then
      begin
        PostMessage(Window, WM_LBUTTONDBLCLK, WParam, LParam);
      end;

2011-08-31 06:04

 

ObjectInspector-cleanup-DblClick-r32127.patch (11,201 bytes)   
diff --git ideintf/objectinspector.pp ideintf/objectinspector.pp
index 240aa45..b0b41d3 100644
--- ideintf/objectinspector.pp
+++ ideintf/objectinspector.pp
@@ -294,7 +294,7 @@ type
     FTopY: integer;
     FDrawHorzGridLines: Boolean;
     FActiveRowBmp: TCustomBitmap;
-    FFirstClickTime: TDateTime;
+    FFirstClickTime: DWORD;
 
     // hint stuff
     FHintTimer: TTimer;
@@ -364,9 +364,9 @@ type
     procedure RefreshValueEdit;
     procedure ToggleRow;
     procedure ValueEditDblClick(Sender : TObject);
-    procedure ValueControlMouseDown(Sender: TObject; Button:TMouseButton;
+    procedure ValueEditMouseDown(Sender: TObject; Button:TMouseButton;
       Shift: TShiftState; X,Y:integer);
-    procedure ValueControlMouseMove(Sender: TObject; Shift: TShiftState;
+    procedure ValueEditMouseMove(Sender: TObject; Shift: TShiftState;
       X,Y:integer);
     procedure ValueEditKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
     procedure ValueEditKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
@@ -381,8 +381,6 @@ type
     procedure ValueComboBoxExit(Sender: TObject);
     procedure ValueComboBoxKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
     procedure ValueComboBoxKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
-    procedure ValueComboBoxMouseUp(Sender: TObject; Button: TMouseButton;
-                                   Shift: TShiftState; X, Y: Integer);
     procedure ValueComboBoxCloseUp(Sender: TObject);
     procedure ValueComboBoxGetItems(Sender: TObject);
     procedure ValueButtonClick(Sender: TObject);
@@ -877,8 +875,8 @@ begin
     AutoSize:=false;
     SetBounds(0,-30,80,25); // hidden
     Parent:=Self;
-    OnMouseDown := @ValueControlMouseDown;
-    OnMouseMove := @ValueControlMouseMove;
+    OnMouseDown := @ValueEditMouseDown;
+    OnMouseMove := @ValueEditMouseMove;
     OnDblClick := @ValueEditDblClick;
     OnExit:=@ValueEditExit;
     OnChange:=@ValueEditChange;
@@ -900,15 +898,15 @@ begin
     SetBounds(0,-30,Width,Height); // hidden
     DropDownCount:=20;
     Parent:=Self;
-    OnMouseDown := @ValueControlMouseDown;
-    OnMouseMove := @ValueControlMouseMove;
+    OnMouseDown := @ValueEditMouseDown;
+    OnMouseMove := @ValueEditMouseMove;
     OnDblClick := @ValueEditDblClick;
     OnExit:=@ValueComboBoxExit;
     //OnChange:=@ValueComboBoxChange; the on change event is called even,
                                    // if the user is still editing
     OnKeyDown:=@ValueComboBoxKeyDown;
     OnKeyUp:=@ValueComboBoxKeyUp;
-    OnMouseUp:=@ValueComboBoxMouseUp;
+    OnMouseUp:=@ValueEditMouseUp;
     OnGetItems:=@ValueComboBoxGetItems;
     OnCloseUp:=@ValueComboBoxCloseUp;
     OnMeasureItem:=@ValueComboBoxMeasureItem;
@@ -924,8 +922,8 @@ begin
     Enabled:=false;
     SetBounds(0,-30,Width,Height); // hidden
     Parent:=Self;
-    OnMouseDown := @ValueControlMouseDown;
-    OnMouseMove := @ValueControlMouseMove;
+    OnMouseDown := @ValueEditMouseDown;
+    OnMouseMove := @ValueEditMouseMove;
     OnExit:=@ValueCheckBoxExit;
     OnKeyDown:=@ValueCheckBoxKeyDown;
     OnKeyUp:=@ValueCheckBoxKeyUp;
@@ -1418,8 +1416,15 @@ end;
 procedure TOICustomPropertyGrid.ValueEditMouseUp(Sender: TObject;
   Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
 begin
-  if (Button=mbLeft) and (Shift=[ssCtrl,ssLeft]) then
-    DoCallEdit(oiqeShowValue);
+  if (Button=mbLeft) then begin
+    if (Shift=[ssCtrl,ssLeft]) then
+      DoCallEdit(oiqeShowValue)
+    else if (FFirstClickTime<>0) and (GetTickCount <= FFirstClickTime + GetDoubleClickTime)
+      and (not ValueComboBox.DroppedDown) then
+    begin
+      ValueEditDblClick(Sender);
+    end;
+  end;
 end;
 
 procedure TOICustomPropertyGrid.ValueCheckBoxKeyDown(Sender: TObject;
@@ -1469,17 +1474,6 @@ begin
   HandleKeyUp(Key,Shift);
 end;
 
-procedure TOICustomPropertyGrid.ValueComboBoxMouseUp(Sender: TObject;
-  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-begin
-  if (Button=mbLeft) then begin
-    if (Shift=[ssCtrl,ssLeft]) then
-      DoCallEdit(oiqeShowValue)
-    else if (FFirstClickTime<>0) and (Now-FFirstClickTime<(1/86400*0.4)) then
-      ValueEditDblClick(Sender);
-  end;
-end;
-
 procedure TOICustomPropertyGrid.ValueButtonClick(Sender: TObject);
 begin
   ScrollToActiveItem;
@@ -1990,7 +1984,7 @@ begin
   HideHint;
 
   if Button=mbLeft then begin
-    FFirstClickTime:=Now;
+    FFirstClickTime:=GetTickCount;
     if Cursor=crHSplit then begin
       FDragging:=true;
     end
@@ -3132,14 +3126,14 @@ begin
     FHintWindow.Controls[0].Free;
 end;
 
-procedure TOICustomPropertyGrid.ValueControlMouseDown(Sender : TObject;
+procedure TOICustomPropertyGrid.ValueEditMouseDown(Sender : TObject;
   Button: TMouseButton; Shift: TShiftState; X, Y: integer);
 begin
   HideHint;
   ScrollToActiveItem;
 end;
 
-procedure TOICustomPropertyGrid.ValueControlMouseMove(Sender: TObject;
+procedure TOICustomPropertyGrid.ValueEditMouseMove(Sender: TObject;
   Shift: TShiftState; X, Y: integer);
 begin
   // when the cursor is divider change it to default
diff --git lcl/interfaces/win32/win32callback.inc lcl/interfaces/win32/win32callback.inc
index 637c070..d00d398 100644
--- lcl/interfaces/win32/win32callback.inc
+++ lcl/interfaces/win32/win32callback.inc
@@ -1633,16 +1633,7 @@ begin
     WM_LBUTTONDOWN:
     begin
       if (MouseDownCount < 1) or (MouseDownCount > 4) then MouseDownCount := 1;
-      // if mouse-click, focus-change, mouse-click, cursor hasn't moved:
-      // simulate double click, assume focus change due to first mouse-click
-      if (MouseDownFocusStatus = mfFocusChanged) and (MouseDownFocusWindow = Window)
-          and (GetTickCount - MouseDownTime <= GetDoubleClickTime)
-          and CheckMouseMovement then
-      begin
-        inc(MouseDownCount);
-        PostMessage(Window, WM_LBUTTONDBLCLK, WParam, LParam);
-      end
-      else if (MouseDownWindow = Window)
+      if (MouseDownWindow = Window)
           and (GetTickCount - MouseDownTime <= GetDoubleClickTime)
           and CheckMouseMovement then
         inc(MouseDownCount)
@@ -1651,8 +1642,6 @@ begin
 
       MouseDownTime := GetTickCount;
       MouseDownWindow := Window;
-      MouseDownFocusWindow := 0;
-      MouseDownFocusStatus := mfFocusSense;
       GetCursorPos(MouseDownPos);
       NotifyUserInput := True;
       PLMsg:=@LMMouse;
@@ -1671,8 +1660,6 @@ begin
     end;
     WM_LBUTTONUP:
     begin
-      if (MouseDownWindow = Window) and (MouseDownFocusStatus = mfNone) then
-        MouseDownFocusStatus := mfFocusSense;
       NotifyUserInput := True;
       PLMsg:=@LMMouse;
       with LMMouse Do
@@ -2029,12 +2016,6 @@ begin
         PostMessage(Window, CM_ACTIVATE, 0, 0)
       else
         WindowLastFocused := Window;
-      // handle feature mouse-click, setfocus, mouse-click -> double-click
-      if (Window <> MouseDownWindow) and (MouseDownFocusStatus <> mfNone) then
-      begin
-        MouseDownFocusStatus := mfFocusChanged;
-        MouseDownFocusWindow := Window;
-      end;
       LMessage.Msg := LM_SETFOCUS;
     end;
     WM_SHOWWINDOW:
@@ -2444,11 +2425,6 @@ begin
     end;
   else
     case Msg of
-      WM_LBUTTONDOWN, WM_LBUTTONUP:
-      begin
-        if MouseDownFocusStatus = mfFocusSense then
-          MouseDownFocusStatus := mfNone;
-      end;
       WM_NCDESTROY:
       begin
         // free our own data associated with window
diff --git lcl/interfaces/win32/win32int.pp lcl/interfaces/win32/win32int.pp
index 24b2c03..632b600 100644
--- lcl/interfaces/win32/win32int.pp
+++ lcl/interfaces/win32/win32int.pp
@@ -253,8 +253,6 @@ uses
   Win32Extra, LclProc, LCLMessageGlue;
 
 type
-  TMouseDownFocusStatus = (mfNone, mfFocusSense, mfFocusChanged);
-
   PProcessEvent = ^TProcessEvent;
   TProcessEvent = record
     Handle: THandle;
@@ -268,8 +266,6 @@ var
   MouseDownTime: dword;
   MouseDownPos: TPoint;
   MouseDownWindow: HWND = 0;
-  MouseDownFocusWindow: HWND;
-  MouseDownFocusStatus: TMouseDownFocusStatus = mfNone;
   WindowLastFocused: HWND = 0;
   ComboBoxHandleSizeWindow: HWND = 0;
   IgnoreNextCharWindow: HWND = 0;  // ignore next WM_(SYS)CHAR message
diff --git lcl/interfaces/wince/wincecallback.inc lcl/interfaces/wince/wincecallback.inc
index 93b2a2a..8b6456a 100644
--- lcl/interfaces/wince/wincecallback.inc
+++ lcl/interfaces/wince/wincecallback.inc
@@ -1530,15 +1530,6 @@ begin
     end;
     WM_LBUTTONDOWN:
     begin
-      // if mouse-click, focus-change, mouse-click, cursor hasn't moved:
-      // simulate double click, assume focus change due to first mouse-click
-      if (MouseDownFocusStatus = mfFocusChanged) and (MouseDownFocusWindow = Window)
-          and (GetTickCount - MouseDownTime <= GetDoubleClickTime)
-          and CheckMouseMovement then
-      begin
-        PostMessage(Window, WM_LBUTTONDBLCLK, WParam, LParam);
-      end;
-
       {$ifndef win32}
       // Gesture recognition process to enable popup menus.
       if (lWinControl.PopupMenu <> nil) then
@@ -1555,8 +1546,6 @@ begin
 
       MouseDownTime := GetTickCount;
       MouseDownWindow := Window;
-      MouseDownFocusWindow := 0;
-      MouseDownFocusStatus := mfFocusSense;
       GetCursorPos(MouseDownPos);
       NotifyUserInput := True;
       PLMsg:=@LMMouse;
@@ -1579,8 +1568,6 @@ begin
     end;
     WM_LBUTTONUP:
     begin
-      if (MouseDownWindow = Window) and (MouseDownFocusStatus = mfNone) then
-        MouseDownFocusStatus := mfFocusSense;
       NotifyUserInput := True;
       PLMsg:=@LMMouse;
       with LMMouse Do
@@ -1860,12 +1847,6 @@ begin
 {$ifdef DEBUG_CARET}
       DebugLn('WM_SETFOCUS received for window ', IntToHex(Window, 8));
 {$endif}
-      // handle feature mouse-click, setfocus, mouse-click -> double-click
-      if (Window <> MouseDownWindow) and (MouseDownFocusStatus <> mfNone) then
-      begin
-        MouseDownFocusStatus := mfFocusChanged;
-        MouseDownFocusWindow := Window;
-      end;
       LMessage.Msg := LM_SETFOCUS;
       if (lWinControl <> nil) and (lWinControl.FCompStyle = csEdit) then
         Windows.SendMessage(Window, EM_SETSEL, 0, -1);
@@ -2210,11 +2191,6 @@ begin
 
   else
     case Msg of
-      WM_LBUTTONDOWN, WM_LBUTTONUP:
-      begin
-        if MouseDownFocusStatus = mfFocusSense then
-          MouseDownFocusStatus := mfNone;
-      end;
       WM_NCDESTROY:
       begin
         //roozbeh : test this....
diff --git lcl/interfaces/wince/winceint.pp lcl/interfaces/wince/winceint.pp
index 4f3b63f..46fb73b 100644
--- lcl/interfaces/wince/winceint.pp
+++ lcl/interfaces/wince/winceint.pp
@@ -266,8 +266,6 @@ uses
   Spin, CheckLst, LCLProc, LCLMessageGlue;
 
 type
-  TMouseDownFocusStatus = (mfNone, mfFocusSense, mfFocusChanged);
-
   PProcessEvent = ^TProcessEvent;
   TProcessEvent = record
     Handle: THandle;
@@ -280,8 +278,6 @@ var
   MouseDownTime: dword;
   MouseDownPos: TPoint;
   MouseDownWindow: HWND = 0;
-  MouseDownFocusWindow: HWND;
-  MouseDownFocusStatus: TMouseDownFocusStatus = mfNone;
   ComboBoxHandleSizeWindow: HWND = 0;//just do not know the use yet
   IgnoreNextCharWindow: HWND = 0;  // ignore next WM_(SYS)CHAR message
   OnClipBoardRequest: TClipboardRequestEvent = nil;

Flávio Etrusco

2011-08-31 06:07

developer   ~0051305

New patch attached. Beware that I didn't test the WinCE changes.

Max Vlasov

2011-08-31 06:38

reporter   ~0051306

Flavio, there were impressive results on your side.
btw, while digging into all of this, I tried to test this feature (double clicking in unselected) row and it not always worked, probably the "evolving" you mentioned could affect it in some way. This was both for patched and non-patched lazarus. Anyway, since we found the goal of this code, it would be much better to fix.

Flávio Etrusco

2011-08-31 11:05

developer   ~0051310

Blabbering: since you've found the root cause, I got re-motivated at looking into this issue, so paused my attempt at re-syncing my Mercurial repo (I use the git one ATM). I love removing hacks ;-) (and actually hg helped me, TortoiseHg is so much easier do datamine :-)

I don't fully understand what you mean. Did you have problems even with the latest patch (only) applied or do you mean you've tried other/old revisions? I've tried tens of DblClicks without a problem.

The "evolving" I mentioned (with some irony) is that throughout history people changed the code a lot, adding MouseDownFocusStatus and MouseDownFocusWindow and more complexity probably without knowing what was the original intent or maybe not questioning whether the feature made sense.

Flávio Etrusco

2011-08-31 11:20

developer   ~0051312

Blabblering again: oh, man, seems only now I've read the first replies :-$ (either that or I was to tired to reply and completely forgot about it after sleep :-S)

From the beginning I assumed this bug to be Windows-only (couldn't reproduce on gtk2+Ubuntu) and thought you (both) were already aware of my findings for reproducing it (since this bug only saw any action after I linked it in the ML).

My apologies for the lack of feedback earlier.

Max Vlasov

2011-08-31 11:25

reporter   ~0051313

Flavio, about the problem, right after reading your post, I went to unpatched win32 lazarus and started double-clicking randomly at form boolean properties (r31683, not freshest, but recent more or less). Every double-click without prior selecting of the row. The first worked, every next - not. So it seems the original fix for 0000794 evolved and became unstable (I will probably double-check this). Imho all this double-control double-click is better to be implemented in OI unit, but we have legacy code that we should obey.

Flávio Etrusco

2011-09-06 20:30

developer   ~0051525

Just to acknowledge Max's comment: I don't think we should retain the old behavior. IMO it's simply a feature that was badly implemented and went out of control.

Max Vlasov

2011-09-07 15:58

reporter   ~0051561

Flavio, I'm glad you think the same way. The bad news is that lcl contains many examples of sacrifices for lazarus sake. For example, as I understand, the whole story about >2-clicks (tripple, quad) was implemented for source editor (synedit), for smart selection using tripple and quad clicks. So now every widgetset contains complex code (different for every platform) to implement them. I'm not sure we can easily migrate to a different logic.

Zeljan Rikalo

2012-02-04 12:31

developer   ~0056356

Not blocking issue, postponed since no one assigned it.

Flávio Etrusco

2013-04-30 02:09

developer   ~0067278

I can provide an updated patch, if wanted. ( u-huu, Mantis notified me :D )

Juha Manninen

2013-04-30 08:43

developer   ~0067279

Yes, please. The current patch does not apply because of trunk code changes.
I guess the patch was otherwise a valid fix for the problem. (?) The discussion was so long it was difficult to figure out.

Juha Manninen

2013-05-09 14:55

developer   ~0067614

Flávio Etrusco, ping.

Juha Manninen

2014-01-04 15:19

developer   ~0072202

Got the updated patch from Flávio and applied it. Works well. Thanks!

Issue History

Date Modified Username Field Change
2011-08-06 23:01 Flávio Etrusco New Issue
2011-08-06 23:01 Flávio Etrusco File Added: oi-baddblclick.patch
2011-08-06 23:01 Flávio Etrusco LazTarget => -
2011-08-06 23:19 Flávio Etrusco Note Added: 0050572
2011-08-06 23:19 Flávio Etrusco Note Edited: 0050572
2011-08-29 10:45 Max Vlasov Note Added: 0051230
2011-08-29 10:54 Zeljan Rikalo Note Added: 0051231
2011-08-29 13:25 Max Vlasov Note Added: 0051240
2011-08-29 14:31 Max Vlasov Note Added: 0051245
2011-08-29 15:06 Max Vlasov File Added: combotest.zip
2011-08-29 15:10 Max Vlasov Note Added: 0051248
2011-08-29 15:11 Max Vlasov Note Edited: 0051248
2011-08-29 19:02 Max Vlasov Note Added: 0051256
2011-08-30 04:23 Flávio Etrusco Note Added: 0051263
2011-08-30 04:30 Flávio Etrusco File Added: lcl-win32-invalid-dblclick-in-combobox.patch
2011-08-30 04:30 Flávio Etrusco File Added: object-inspector-fix-undesirable-double-click-in-combobox.patch
2011-08-30 04:32 Flávio Etrusco File Deleted: object-inspector-fix-undesirable-double-click-in-combobox.patch
2011-08-30 04:33 Flávio Etrusco File Deleted: oi-baddblclick.patch
2011-08-30 04:36 Flávio Etrusco File Added: object-inspector-fix-undesirable-double-click-in-combobox.patch
2011-08-30 04:38 Flávio Etrusco Note Added: 0051264
2011-08-30 09:39 Max Vlasov Note Added: 0051268
2011-08-30 10:15 Vincent Snijders Note Added: 0051270
2011-08-30 12:16 Max Vlasov Note Added: 0051272
2011-08-30 23:28 Flávio Etrusco Note Added: 0051297
2011-08-30 23:41 Flávio Etrusco Note Added: 0051299
2011-08-31 01:10 Flávio Etrusco Note Added: 0051301
2011-08-31 02:36 Flávio Etrusco Note Edited: 0051301
2011-08-31 04:00 Flávio Etrusco Note Edited: 0051301
2011-08-31 04:32 Flávio Etrusco Note Added: 0051304
2011-08-31 04:35 Flávio Etrusco Note Edited: 0051304
2011-08-31 06:04 Flávio Etrusco File Added: ObjectInspector-cleanup-DblClick-r32127.patch
2011-08-31 06:06 Flávio Etrusco Relationship added related to 0000794
2011-08-31 06:07 Flávio Etrusco Note Added: 0051305
2011-08-31 06:38 Max Vlasov Note Added: 0051306
2011-08-31 11:05 Flávio Etrusco Note Added: 0051310
2011-08-31 11:13 Flávio Etrusco Widgetset => Win32/Win64
2011-08-31 11:20 Flávio Etrusco Note Added: 0051312
2011-08-31 11:25 Max Vlasov Note Added: 0051313
2011-09-03 01:21 Flávio Etrusco Summary ObjectInspector: annoying double-click detection when trying to expand comboBox quickly => [patch] ObjectInspector: annoying double-click detection when trying to expand comboBox quickly
2011-09-03 01:21 Flávio Etrusco Tag Attached: has_patch
2011-09-05 11:27 Flávio Etrusco File Deleted: lcl-win32-invalid-dblclick-in-combobox.patch
2011-09-05 11:28 Flávio Etrusco File Deleted: object-inspector-fix-undesirable-double-click-in-combobox.patch
2011-09-06 17:37 Felipe Monteiro de Carvalho LazTarget - => 0.99.0
2011-09-06 17:37 Felipe Monteiro de Carvalho Status new => acknowledged
2011-09-06 20:30 Flávio Etrusco Note Added: 0051525
2011-09-07 15:58 Max Vlasov Note Added: 0051561
2012-02-04 12:31 Zeljan Rikalo LazTarget 0.99.0 => 1.2
2012-02-04 12:31 Zeljan Rikalo Note Added: 0056356
2012-04-06 09:04 Flávio Etrusco Summary [patch] ObjectInspector: annoying double-click detection when trying to expand comboBox quickly => [patch] ObjectInspector: double-click wrongly triggered when trying to expand ComboBox quickly
2013-04-30 02:09 Flávio Etrusco Note Added: 0067278
2013-04-30 08:43 Juha Manninen Note Added: 0067279
2013-05-09 14:55 Juha Manninen Note Added: 0067614
2013-12-31 15:39 Juha Manninen Assigned To => Juha Manninen
2013-12-31 15:39 Juha Manninen Status acknowledged => assigned
2013-12-31 15:40 Juha Manninen Status assigned => feedback
2014-01-04 15:19 Juha Manninen Fixed in Revision => r43642
2014-01-04 15:19 Juha Manninen Note Added: 0072202
2014-01-04 15:19 Juha Manninen Status feedback => resolved
2014-01-04 15:19 Juha Manninen Resolution open => fixed
2014-01-04 15:59 Juha Manninen Relationship added related to 0025490