View Issue Details

IDProjectCategoryView StatusLast Update
0030526LazarusLCLpublic2016-09-28 08:39
ReporterChristian DannerAssigned ToBart Broersma 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
PlatformWin32OSWindows 7OS VersionProfessional
Product Version1.7 (SVN)Product Build52880 
Target VersionFixed in Version1.6.2 
Summary0030526: [patch] conditional evaluation bug in TWin32WidgetSet.SetComboMinDropDownSize (win32winapi.inc)
DescriptionThere's a conditional evaluation bug in TWin32WidgetSet.SetComboMinDropDownSize (win32winapi.inc).

| function TWin32WidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth,
| MinItemsHeight, MinItemCount: integer): boolean;
| begin
| Result:= ThemeServices.ThemesEnabled and
| boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0));
| Result := Result and boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0));
| end;

Here a - usually deactivated - complete boolean evaluation is mandatory, as otherwise SendMessage() won't get called with ThemesEnabled returning FALSE.

That problem only becomes apparent in case you try to alter the width of the dropdown part, which is what the TCustomComboBox.AdjustDropDown (customcombobox.inc) patch does by adjusting the box width to the longest text item;

http://danner-net.de/trans/combobox.gif shows a pre/post comparison.

Cheers
TagsNo tags attached.
Fixed in Revisionr53045
LazTarget1.6.2
WidgetsetWin32/Win64
Attached Files
  • patch.diff (4,062 bytes)
    Index: lcl/include/customcombobox.inc
    ===================================================================
    --- lcl/include/customcombobox.inc	(revision 52880)
    +++ lcl/include/customcombobox.inc	(working copy)
    @@ -247,16 +247,70 @@
     
      ------------------------------------------------------------------------------}
     procedure TCustomComboBox.AdjustDropDown;
    +const
    +  MarginRight = 4;
     var
    -  Count, MinItemsWidth, MinItemsHeight: Integer;
    +  Lines, MinItemsHeight, MinItemsWidth,
    +  ActItemPos, ActItemHeight, ActItemWidth: Integer;
    +  ARect: TRect;
    +  ABitMap: TBitMap;
     begin
    +  MinItemsWidth := 0;
    +  MinItemsHeight := 0;
       if (not HandleAllocated) then exit;
    -  Count := Items.Count;
    -  if Count > DropDownCount then Count := DropDownCount;
    -  if Count < 1 then Count := 1;
    -  MinItemsWidth := ItemWidth;
    -  MinItemsHeight := Count * ItemHeight;
    -  SetComboMinDropDownSize(Handle, MinItemsWidth, MinItemsHeight, Count);
    +  if     (0 < DropDownCount)
    +     and (DropDownCount < Items.Count) then
    +    Lines := DropDownCount
    +  else
    +    if 0 < Items.Count then
    +      Lines := Items.Count
    +    else
    +      Lines := 1;
    +  if 0 < ItemWidth then
    +    MinItemsWidth := ItemWidth
    +  else
    +    MinItemsWidth := 0;
    +  if 0 < ItemHeight then
    +    MinItemsHeight := ItemHeight
    +  else
    +    MinItemsHeight := 0;
    +  if    (ItemWidth = 0)
    +     or (ItemHeight = 0) then
    +  // dynamic width only with ItemWidth resp. ItemHeight set to 0
    +  begin
    +    ABitMap := TBitmap.Create;
    +    try
    +      ABitMap.Canvas.Font.Assign(self.Font);
    +      for ActItemPos := 0 to Items.Count - 1 do
    +        begin
    +          if ItemWidth = 0 then
    +            begin
    +              ActItemWidth := ABitMap.Canvas.TextWidth(Items.Strings[ActItemPos]);
    +              if MinItemsWidth < ActItemWidth
    +                then
    +                  MinItemsWidth := ActItemWidth;
    +            end;
    +          if ItemHeight = 0 then
    +            begin
    +              ActItemHeight := ABitMap.Canvas.TextHeight(Items.Strings[ActItemPos]);
    +              if MinItemsHeight < ActItemHeight
    +                then
    +                  MinItemsHeight := ActItemHeight;
    +            end;
    +        end;
    +    finally
    +      ABitMap.Free;
    +    end;
    +  end;
    +  if Lines < Items.Count then
    +    Inc(MinItemsWidth, GetSystemMetrics(SM_CXVSCROLL));
    +  Inc(MinItemsWidth, 2 * GetSystemMetrics(SM_CXEDGE) + 2);
    +  GetWindowRect(self.Handle, ARect);
    +  if Screen.WorkAreaWidth < ARect.Left + MinItemsWidth + MarginRight then
    +    MinItemsWidth := Screen.WorkAreaWidth - ARect.Left - MarginRight;
    +  Inc(MinItemsHeight, GetSystemMetrics(SM_CXEDGE));
    +  MinItemsHeight := Lines * ItemHeight;
    +  SetComboMinDropDownSize(Handle, MinItemsWidth, MinItemsHeight, Lines);
     end;
     
     {------------------------------------------------------------------------------
    Index: lcl/interfaces/win32/win32winapi.inc
    ===================================================================
    --- lcl/interfaces/win32/win32winapi.inc	(revision 52880)
    +++ lcl/interfaces/win32/win32winapi.inc	(working copy)
    @@ -2998,9 +2998,13 @@
     function TWin32WidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth,
       MinItemsHeight, MinItemCount: integer): boolean;
     begin
    -  Result:= ThemeServices.ThemesEnabled and
    -    boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0));
    -  Result := Result and boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0));
    +{$B+}
    +  Result :=     ThemeServices.ThemesEnabled
    +            and boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0)) // width of listbox
    +            and boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, -1, MinItemsHeight div MinItemCount)) // height of selection field
    +            and boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, 0, MinItemsHeight div MinItemCount)) // height of list items
    +            and boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0)); // number of listbox items
    +{$B-}
     end;
     
     {------------------------------------------------------------------------------
    
    patch.diff (4,062 bytes)
  • patch_push.diff (4,044 bytes)
    Index: lcl/include/customcombobox.inc
    ===================================================================
    --- lcl/include/customcombobox.inc	(revision 52880)
    +++ lcl/include/customcombobox.inc	(working copy)
    @@ -247,16 +247,68 @@
     
      ------------------------------------------------------------------------------}
     procedure TCustomComboBox.AdjustDropDown;
    +const
    +  MarginRight = 4;
     var
    -  Count, MinItemsWidth, MinItemsHeight: Integer;
    +  Lines, MinItemsWidth, MinItemsHeight,
    +  ActItemPos, ActItemWidth, ActItemHeight: Integer;
    +  ARect: TRect;
    +  ABitMap: TBitMap;
     begin
    +  MinItemsWidth := 0;
    +  MinItemsHeight := 0;
       if (not HandleAllocated) then exit;
    -  Count := Items.Count;
    -  if Count > DropDownCount then Count := DropDownCount;
    -  if Count < 1 then Count := 1;
    -  MinItemsWidth := ItemWidth;
    -  MinItemsHeight := Count * ItemHeight;
    -  SetComboMinDropDownSize(Handle, MinItemsWidth, MinItemsHeight, Count);
    +  if     (0 < DropDownCount)
    +     and (DropDownCount < Items.Count) then
    +    Lines := DropDownCount
    +  else
    +    if 0 < Items.Count then
    +      Lines := Items.Count
    +    else
    +      Lines := 1;
    +  if 0 < ItemWidth then
    +    MinItemsWidth := ItemWidth
    +  else
    +    MinItemsWidth := 0;
    +  if 0 < ItemHeight then
    +    MinItemsHeight := ItemHeight
    +  else
    +    MinItemsHeight := 0;
    +  if    (ItemWidth = 0)
    +     or (ItemHeight = 0) then
    +    // dynamic width only with ItemWidth resp. ItemHeight set to 0
    +    begin
    +      ABitMap := TBitmap.Create;
    +      try
    +        ABitMap.Canvas.Font.Assign(self.Font);
    +        for ActItemPos := 0 to Items.Count - 1 do
    +          begin
    +            if ItemWidth = 0 then
    +              begin
    +                ActItemWidth := ABitMap.Canvas.TextWidth(Items.Strings[ActItemPos]);
    +                if MinItemsWidth < ActItemWidth then
    +                  MinItemsWidth := ActItemWidth;
    +              end;
    +            if ItemHeight = 0 then
    +              begin
    +                ActItemHeight := ABitMap.Canvas.TextHeight(Items.Strings[ActItemPos]);
    +                if MinItemsHeight < ActItemHeight then
    +                  MinItemsHeight := ActItemHeight;
    +              end;
    +          end;
    +      finally
    +        ABitMap.Free;
    +      end;
    +    end;
    +  if Lines < Items.Count then
    +    Inc(MinItemsWidth, GetSystemMetrics(SM_CXVSCROLL));
    +  Inc(MinItemsWidth, 2 * GetSystemMetrics(SM_CXEDGE) + 2);
    +  GetWindowRect(self.Handle, ARect);
    +  if Screen.WorkAreaWidth < ARect.Left + MinItemsWidth + MarginRight then
    +    MinItemsWidth := Screen.WorkAreaWidth - ARect.Left - MarginRight;
    +  Inc(MinItemsHeight, GetSystemMetrics(SM_CXEDGE));
    +  MinItemsHeight := Lines * ItemHeight;
    +  SetComboMinDropDownSize(Handle, MinItemsWidth, MinItemsHeight, Lines);
     end;
     
     {------------------------------------------------------------------------------
    Index: lcl/interfaces/win32/win32winapi.inc
    ===================================================================
    --- lcl/interfaces/win32/win32winapi.inc	(revision 52880)
    +++ lcl/interfaces/win32/win32winapi.inc	(working copy)
    @@ -2998,9 +2998,13 @@
     function TWin32WidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth,
       MinItemsHeight, MinItemCount: integer): boolean;
     begin
    -  Result:= ThemeServices.ThemesEnabled and
    -    boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0));
    -  Result := Result and boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0));
    +{$PUSH}{$B+}
    +  Result := ThemeServices.ThemesEnabled and
    +    boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0)) and // width of listbox
    +    boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, -1, MinItemsHeight div MinItemCount)) and // height of selection field
    +    boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, 0, MinItemsHeight div MinItemCount)) and // height of list items
    +    boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0)); // number of listbox items
    +{$POP}
     end;
     
     {------------------------------------------------------------------------------
    
    patch_push.diff (4,044 bytes)

Activities

Christian Danner

2016-08-29 15:46

reporter  

patch.diff (4,062 bytes)
Index: lcl/include/customcombobox.inc
===================================================================
--- lcl/include/customcombobox.inc	(revision 52880)
+++ lcl/include/customcombobox.inc	(working copy)
@@ -247,16 +247,70 @@
 
  ------------------------------------------------------------------------------}
 procedure TCustomComboBox.AdjustDropDown;
+const
+  MarginRight = 4;
 var
-  Count, MinItemsWidth, MinItemsHeight: Integer;
+  Lines, MinItemsHeight, MinItemsWidth,
+  ActItemPos, ActItemHeight, ActItemWidth: Integer;
+  ARect: TRect;
+  ABitMap: TBitMap;
 begin
+  MinItemsWidth := 0;
+  MinItemsHeight := 0;
   if (not HandleAllocated) then exit;
-  Count := Items.Count;
-  if Count > DropDownCount then Count := DropDownCount;
-  if Count < 1 then Count := 1;
-  MinItemsWidth := ItemWidth;
-  MinItemsHeight := Count * ItemHeight;
-  SetComboMinDropDownSize(Handle, MinItemsWidth, MinItemsHeight, Count);
+  if     (0 < DropDownCount)
+     and (DropDownCount < Items.Count) then
+    Lines := DropDownCount
+  else
+    if 0 < Items.Count then
+      Lines := Items.Count
+    else
+      Lines := 1;
+  if 0 < ItemWidth then
+    MinItemsWidth := ItemWidth
+  else
+    MinItemsWidth := 0;
+  if 0 < ItemHeight then
+    MinItemsHeight := ItemHeight
+  else
+    MinItemsHeight := 0;
+  if    (ItemWidth = 0)
+     or (ItemHeight = 0) then
+  // dynamic width only with ItemWidth resp. ItemHeight set to 0
+  begin
+    ABitMap := TBitmap.Create;
+    try
+      ABitMap.Canvas.Font.Assign(self.Font);
+      for ActItemPos := 0 to Items.Count - 1 do
+        begin
+          if ItemWidth = 0 then
+            begin
+              ActItemWidth := ABitMap.Canvas.TextWidth(Items.Strings[ActItemPos]);
+              if MinItemsWidth < ActItemWidth
+                then
+                  MinItemsWidth := ActItemWidth;
+            end;
+          if ItemHeight = 0 then
+            begin
+              ActItemHeight := ABitMap.Canvas.TextHeight(Items.Strings[ActItemPos]);
+              if MinItemsHeight < ActItemHeight
+                then
+                  MinItemsHeight := ActItemHeight;
+            end;
+        end;
+    finally
+      ABitMap.Free;
+    end;
+  end;
+  if Lines < Items.Count then
+    Inc(MinItemsWidth, GetSystemMetrics(SM_CXVSCROLL));
+  Inc(MinItemsWidth, 2 * GetSystemMetrics(SM_CXEDGE) + 2);
+  GetWindowRect(self.Handle, ARect);
+  if Screen.WorkAreaWidth < ARect.Left + MinItemsWidth + MarginRight then
+    MinItemsWidth := Screen.WorkAreaWidth - ARect.Left - MarginRight;
+  Inc(MinItemsHeight, GetSystemMetrics(SM_CXEDGE));
+  MinItemsHeight := Lines * ItemHeight;
+  SetComboMinDropDownSize(Handle, MinItemsWidth, MinItemsHeight, Lines);
 end;
 
 {------------------------------------------------------------------------------
Index: lcl/interfaces/win32/win32winapi.inc
===================================================================
--- lcl/interfaces/win32/win32winapi.inc	(revision 52880)
+++ lcl/interfaces/win32/win32winapi.inc	(working copy)
@@ -2998,9 +2998,13 @@
 function TWin32WidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth,
   MinItemsHeight, MinItemCount: integer): boolean;
 begin
-  Result:= ThemeServices.ThemesEnabled and
-    boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0));
-  Result := Result and boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0));
+{$B+}
+  Result :=     ThemeServices.ThemesEnabled
+            and boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0)) // width of listbox
+            and boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, -1, MinItemsHeight div MinItemCount)) // height of selection field
+            and boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, 0, MinItemsHeight div MinItemCount)) // height of list items
+            and boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0)); // number of listbox items
+{$B-}
 end;
 
 {------------------------------------------------------------------------------
patch.diff (4,062 bytes)

Bart Broersma

2016-08-29 18:00

developer   ~0094345

I.o.w. the result should not be dependant on ThemeServices.ThemesEnabled at all?

Note: maybe better use {$PUSH}{$B+} ... {$POP}

Christian Danner

2016-08-29 20:09

reporter  

patch_push.diff (4,044 bytes)
Index: lcl/include/customcombobox.inc
===================================================================
--- lcl/include/customcombobox.inc	(revision 52880)
+++ lcl/include/customcombobox.inc	(working copy)
@@ -247,16 +247,68 @@
 
  ------------------------------------------------------------------------------}
 procedure TCustomComboBox.AdjustDropDown;
+const
+  MarginRight = 4;
 var
-  Count, MinItemsWidth, MinItemsHeight: Integer;
+  Lines, MinItemsWidth, MinItemsHeight,
+  ActItemPos, ActItemWidth, ActItemHeight: Integer;
+  ARect: TRect;
+  ABitMap: TBitMap;
 begin
+  MinItemsWidth := 0;
+  MinItemsHeight := 0;
   if (not HandleAllocated) then exit;
-  Count := Items.Count;
-  if Count > DropDownCount then Count := DropDownCount;
-  if Count < 1 then Count := 1;
-  MinItemsWidth := ItemWidth;
-  MinItemsHeight := Count * ItemHeight;
-  SetComboMinDropDownSize(Handle, MinItemsWidth, MinItemsHeight, Count);
+  if     (0 < DropDownCount)
+     and (DropDownCount < Items.Count) then
+    Lines := DropDownCount
+  else
+    if 0 < Items.Count then
+      Lines := Items.Count
+    else
+      Lines := 1;
+  if 0 < ItemWidth then
+    MinItemsWidth := ItemWidth
+  else
+    MinItemsWidth := 0;
+  if 0 < ItemHeight then
+    MinItemsHeight := ItemHeight
+  else
+    MinItemsHeight := 0;
+  if    (ItemWidth = 0)
+     or (ItemHeight = 0) then
+    // dynamic width only with ItemWidth resp. ItemHeight set to 0
+    begin
+      ABitMap := TBitmap.Create;
+      try
+        ABitMap.Canvas.Font.Assign(self.Font);
+        for ActItemPos := 0 to Items.Count - 1 do
+          begin
+            if ItemWidth = 0 then
+              begin
+                ActItemWidth := ABitMap.Canvas.TextWidth(Items.Strings[ActItemPos]);
+                if MinItemsWidth < ActItemWidth then
+                  MinItemsWidth := ActItemWidth;
+              end;
+            if ItemHeight = 0 then
+              begin
+                ActItemHeight := ABitMap.Canvas.TextHeight(Items.Strings[ActItemPos]);
+                if MinItemsHeight < ActItemHeight then
+                  MinItemsHeight := ActItemHeight;
+              end;
+          end;
+      finally
+        ABitMap.Free;
+      end;
+    end;
+  if Lines < Items.Count then
+    Inc(MinItemsWidth, GetSystemMetrics(SM_CXVSCROLL));
+  Inc(MinItemsWidth, 2 * GetSystemMetrics(SM_CXEDGE) + 2);
+  GetWindowRect(self.Handle, ARect);
+  if Screen.WorkAreaWidth < ARect.Left + MinItemsWidth + MarginRight then
+    MinItemsWidth := Screen.WorkAreaWidth - ARect.Left - MarginRight;
+  Inc(MinItemsHeight, GetSystemMetrics(SM_CXEDGE));
+  MinItemsHeight := Lines * ItemHeight;
+  SetComboMinDropDownSize(Handle, MinItemsWidth, MinItemsHeight, Lines);
 end;
 
 {------------------------------------------------------------------------------
Index: lcl/interfaces/win32/win32winapi.inc
===================================================================
--- lcl/interfaces/win32/win32winapi.inc	(revision 52880)
+++ lcl/interfaces/win32/win32winapi.inc	(working copy)
@@ -2998,9 +2998,13 @@
 function TWin32WidgetSet.SetComboMinDropDownSize(Handle: HWND; MinItemsWidth,
   MinItemsHeight, MinItemCount: integer): boolean;
 begin
-  Result:= ThemeServices.ThemesEnabled and
-    boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0));
-  Result := Result and boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0));
+{$PUSH}{$B+}
+  Result := ThemeServices.ThemesEnabled and
+    boolean(Windows.SendMessage(Handle, CB_SETDROPPEDWIDTH, MinItemsWidth, 0)) and // width of listbox
+    boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, -1, MinItemsHeight div MinItemCount)) and // height of selection field
+    boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, 0, MinItemsHeight div MinItemCount)) and // height of list items
+    boolean(Windows.SendMessage(Handle, CB_SETMINVISIBLE, MinItemCount, 0)); // number of listbox items
+{$POP}
 end;
 
 {------------------------------------------------------------------------------
patch_push.diff (4,044 bytes)

Christian Danner

2016-08-29 20:10

reporter   ~0094346

Correct, I don't see a dependency on themes, tested it without themes activated, which is why I found the problem in the first place. And wouldn't it be syntactically weird to express a dependency this way. ;)

And you're right with $PUSH. I uploaded a corrected patch.

Cheers

Bart Broersma

2016-09-17 14:24

developer   ~0094695

Last edited: 2016-09-17 20:04

View 10 revisions

I don't completely understand your patch.
First of all: the issue is about boolean logic in TWin32WidgetSet.SetComboMinDropDownSize, but most of your patch file then also alters the TCustomComboBox.AdjustDropDown method.

There are either 2 seperate issues here, or your initial description of the issue is wrong.

Then I asked wether the WS implementation should depend on ThemesEnabled, and you replied it did not. But still in the patch you test for that.

The CB_SETMINVISIBLE message can only be used if ComCtlVersion >= ComCtlVersionIE6 (which is set in the manifest (in project options: enable themes)). Checking for this is indeed not always the same as ThemeServices.ThemesEnabled.

I also do not understand why, if any of the SendMessages fail, the others should still be called, but the function result will be False in either case.

[Edit]

As a side note, this is wrong:
boolean(Windows.SendMessage(Handle, CB_SETITEMHEIGHT, 0, MinItemsHeight div MinItemCount))

The result of this message = CB_ERR when it fails, and boolean(CB_ERR) = TRUE, since CB_ERR = -1.

Your patch also involves altering visible ItemHeight, which - if I understand correctly - should only be done if Style is csOwnerDrawFixed or csOwnerDrawVariable.

As such the current patch must be rejected.


References:
CB_SETMINVISIBLE: https://msdn.microsoft.com/en-us/library/windows/desktop/bb775915(v=vs.85).aspx
CB_SETITEMHEIGHT: https://msdn.microsoft.com/en-us/library/windows/desktop/bb775911(v=vs.85).aspx
CB_SETDROPPEDWIDTH: https://msdn.microsoft.com/en-us/library/windows/desktop/bb775901(v=vs.85).aspx

Bart Broersma

2016-09-28 08:39

developer   ~0094844

Fixed the win32 part.
Rejected the LCL part of the issue as explained.

Please test and close if OK.

Issue History

Date Modified Username Field Change
2016-08-29 15:46 Christian Danner New Issue
2016-08-29 15:46 Christian Danner File Added: patch.diff
2016-08-29 18:00 Bart Broersma Note Added: 0094345
2016-08-29 18:01 Bart Broersma LazTarget => -
2016-08-29 18:01 Bart Broersma Status new => feedback
2016-08-29 20:09 Christian Danner File Added: patch_push.diff
2016-08-29 20:10 Christian Danner Note Added: 0094346
2016-08-29 20:10 Christian Danner Status feedback => new
2016-09-17 14:24 Bart Broersma Note Added: 0094695
2016-09-17 14:24 Bart Broersma Status new => feedback
2016-09-17 14:24 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-17 19:15 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-17 19:31 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-17 19:32 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-17 19:33 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-17 19:36 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-17 19:44 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-17 20:02 Bart Broersma Assigned To => Bart Broersma
2016-09-17 20:02 Bart Broersma Status feedback => assigned
2016-09-17 20:03 Bart Broersma Status assigned => feedback
2016-09-17 20:03 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-17 20:04 Bart Broersma Note Edited: 0094695 View Revisions
2016-09-28 08:39 Bart Broersma Fixed in Revision => r53045
2016-09-28 08:39 Bart Broersma LazTarget - => 1.6.2
2016-09-28 08:39 Bart Broersma Note Added: 0094844
2016-09-28 08:39 Bart Broersma Status feedback => resolved
2016-09-28 08:39 Bart Broersma Fixed in Version => 1.6.2
2016-09-28 08:39 Bart Broersma Resolution open => fixed