View Issue Details

IDProjectCategoryView StatusLast Update
0013397LazarusWidgetsetpublic2017-07-28 01:03
ReporterTroodon Assigned ToOndrej Pokorny  
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
Product Version0.9.26 
Summary0013397: Lack of preview of minimized window on taskbar icon mouseover
DescriptionOn Windows Vista, upon application window minimization, the icon in the task bar does not show a window preview (dynamic "thumbnail") on mouse over. This is (or should be) the default behaviour on Vista, however, it currently does not seem to work with the Win32 or the Gtk2 widgetsets. It does work as expected with the Qt4 widgetset (using Qt-4.3 for win32 runtime).
Tagspatch, thumbnail, vista, Windows 7
Fixed in Revision
LazTarget-
WidgetsetWin32/Win64
Attached Files

Relationships

related to 0017294 resolvedOndrej Pokorny ShowInTaskBar = stNever does nothing 
child of 0018499 acknowledged Lack of preview of minimized window on Flip3d 

Activities

Paul Ishenin

2009-04-12 15:43

manager   ~0026718

1. Do you know how to enable that thumbnails? I'm trying with windows7 beta and all other application does not have them.
2. Can you attach some thumbnail example?

José Mejuto

2009-04-12 19:38

reporter   ~0026726

Maybe this article will show the "trick":
http://www.installationexcellence.com/articles/VistaWithDelphi/Original/Index.html

Check the "Where’s My Induction (or, Why the Secret Window)?"

This is a common problem with applications that have a hidden window (like Delphi ones).

Tristan Linnell

2010-01-08 17:53

reporter   ~0033516

The technique in that link does not work, as Lazarus does not have the Application.Handle. I am not sure if Lazarus uses the "hidden window" triack that Delphi does, but implementing the solution provided in the link, substituting Application.Hnadle for Self.Handle does not work.

José Mejuto

2010-01-08 19:48

reporter   ~0033517

After a bit of research the problem is how Lazarus handles the main form. In a regular windows application the main form is the main window, meanwhile in Lazarus and Delphi the main form is a hidden window which act as a "father" for all other forms. Once a window is minimized, it is not in fact minimized but hidden, that's the reason that we can not see the minimize effect in WinXP and up. As the window is hidden when Vista/Seven "ask" for the thumbnail inspecting the window it will catch the "hidden" flag and presents the "fancy" no preview thumbnail. So the only one solution is to not hide the main form, but this could end with a bunch of side effects.

Flávio Etrusco

2010-03-13 07:28

developer   ~0035426

I guess (out of my hat) that Windows do the preview by sending a WM_PAINT message with DC; if that's the case maybe you we could redirect it to the main form.

Paul Ishenin

2010-05-04 03:42

manager   ~0037216

Strange, I have preview on my Windows 7.

José Mejuto

2010-05-05 01:19

reporter   ~0037267

@Flávio: The window is hidden, not minimized so I think no paint message is sent at all, at least the form does not receive any LM_PAINT message. So the question is why Win32/64 forms are hidden instead minimized ?

José Mejuto

2010-05-05 23:58

reporter   ~0037312

I had found several reasons to not get the preview when minimized and all work together to get get the "defect".

1) In win32callback.inc in the SC_MINIMIZE handler the window is hidden instead minimized. Using SW_MINIMIZE instead SW_HIDE do not seems to show any problem in a single regular form program.

2) In win32callback.inc in the SC_RESTORE handler the window is restored with SW_SHOWNA, using SW_SHOWNORMAL do not seems to show any problem in a single and regular form application.

3) In Win32WSForms in the CreateHandle function at the lines:

    if ((Application = nil) or (Application.MainForm <> lForm)) and
       ( not (csDesigning in lForm.ComponentState) and
        (lForm.ShowInTaskBar = stAlways)) then
      FlagsEx := FlagsEx or WS_EX_APPWINDOW;
    if lForm.AlphaBlend then
      FlagsEx := FlagsEx or WS_EX_LAYERED;

The WS_EX_APPWINDOW is never applied as Application is not nil and Application.Mainform is always equal to lForm (AWincontrol) and also lForm.ShowInTaskBar should be in that case "<> stNever". I think this piece of code needs a rewrite like:

if (( Application = nil ) or ( Application.MainForm = lForm ) or
   ( lForm.ShowInTaskBar = stAlways )) and
   not ( csDesigning in lForm.ComponentState ) then
       FlagsEx := FlagsEx or WS_EX_APPWINDOW;

Applying this changes a regular form is minimized and maximized as any other windows application and preview is available when minimized. Side effects of this change not checked by now.

Paul Ishenin

2010-07-06 16:25

manager   ~0039076

Moving to 1.2 since requires rather big reimplementation of win32 AppHandle and MainForm usage.

2011-01-25 07:43

 

preview.patch (2,622 bytes)   
Index: lcl/interfaces/win32/win32callback.inc
===================================================================
--- lcl/interfaces/win32/win32callback.inc	(revision 29190)
+++ lcl/interfaces/win32/win32callback.inc	(working copy)
@@ -799,34 +799,27 @@
       SC_MINIMIZE:
         begin
 
-          if (Application <> nil) and (lWinControl <> nil) and
-             (Application.MainForm <> nil) and
-             (Application.MainForm = lWinControl) then
-            Window := TWin32WidgetSet(WidgetSet).AppHandle;//redirection
-
-          if (Window = TWin32WidgetSet(WidgetSet).AppHandle) and
-             (Application <> nil) then
+          if Application <> nil then
           begin
-            if (Application.MainForm <> nil) then
-            begin
-              Windows.SetWindowPos(Window, HWND_TOP,
+            if (lWinControl <> nil) and (Application.MainForm = lWinControl) then begin
+              Windows.SetWindowPos(WidgetSet.AppHandle, HWND_TOP,
                 Application.MainForm.Left, Application.MainForm.Top,
                 Application.MainForm.Width, 0, SWP_NOACTIVATE);
               if Application.MainForm.HandleAllocated then
                 Windows.ShowWindow(Application.MainForm.Handle, SW_HIDE);
+            end else if Window = WidgetSet.AppHandle then
+            begin
+              PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
+              WinProcess := False;
+              Application.IntfAppMinimize;
             end;
-
-            PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
-            WinProcess := False;
-            Application.IntfAppMinimize;
           end;
         end;
 
       SC_RESTORE:
         begin
 
-         if (Window = TWin32WidgetSet(WidgetSet).AppHandle) and
-            (Application <> nil) then
+          if (Window = WidgetSet.AppHandle) and (Application <> nil) then
           begin
             PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
             WinProcess := False;
@@ -2301,14 +2294,6 @@
       begin
         Msg := LM_SIZE;
         SizeType := WParam or Size_SourceIsInterface;
-        if Window = TWin32WidgetSet(WidgetSet).AppHandle then
-        begin
-          if Assigned(Application.MainForm) and Application.MainForm.HandleAllocated then
-          begin
-            lWinControl := Application.MainForm;
-            Window := Application.MainForm.Handle;
-          end;
-        end;
         if IsIconic(Window) then
         begin
           GetWindowPlacement(Window, @WindowPlacement);
preview.patch (2,622 bytes)   

malcome

2011-01-25 07:45

reporter   ~0045462

I created the patch for this issue.

2011-01-26 05:46

 

preview2.patch (4,173 bytes)   
Index: lcl/include/customform.inc
===================================================================
--- lcl/include/customform.inc	(revision 29203)
+++ lcl/include/customform.inc	(working copy)
@@ -632,7 +632,8 @@
   DebugLn(['[TCustomForm.WMSize] ',DbgSName(Self),' Message.SizeType=',Message.SizeType,' Message.Width=',Message.Width,' Message.Height=',Message.Height,' AutoSizeDelayed=',AutoSizeDelayed]);
   {$ENDIF}
 
-  if (Parent=nil) and ((Message.SizeType and SIZE_SourceIsInterface)>0) then
+  if (BoundsLockCount = 0) and
+     (Parent=nil) and ((Message.SizeType and SIZE_SourceIsInterface)>0) then
   begin
     // this is a top level form (constraints depend on window manager)
     // and the widgetset set a size
@@ -644,7 +645,8 @@
   end;
 
   Assert(False, 'Trace:WMSIZE in TCustomForm');
-  if not (csDesigning in ComponentState) then
+  if (BoundsLockCount = 0) and 
+     not (csDesigning in ComponentState) then
   begin
     OldState := FWindowState;
     case (Message.SizeType and not SIZE_SourceIsInterface) of
@@ -675,7 +677,9 @@
     end;
   end;
 
+  BeginUpdateBounds;
   inherited WMSize(Message);
+  EndUpdateBounds;
 
   if (Message.SizeType and Size_Restored)>0 then
   begin
Index: lcl/interfaces/win32/win32callback.inc
===================================================================
--- lcl/interfaces/win32/win32callback.inc	(revision 29203)
+++ lcl/interfaces/win32/win32callback.inc	(working copy)
@@ -799,23 +799,12 @@
       SC_MINIMIZE:
         begin
 
-          if (Application <> nil) and (lWinControl <> nil) and
-             (Application.MainForm <> nil) and
-             (Application.MainForm = lWinControl) then
-            Window := TWin32WidgetSet(WidgetSet).AppHandle;//redirection
-
-          if (Window = TWin32WidgetSet(WidgetSet).AppHandle) and
-             (Application <> nil) then
+          if (Window = WidgetSet.AppHandle) and (Application <> nil) then
           begin
-            if (Application.MainForm <> nil) then
-            begin
-              Windows.SetWindowPos(Window, HWND_TOP,
+            if Application.MainForm <> nil then
+              Windows.SetWindowPos(WidgetSet.AppHandle, HWND_TOP,
                 Application.MainForm.Left, Application.MainForm.Top,
                 Application.MainForm.Width, 0, SWP_NOACTIVATE);
-              if Application.MainForm.HandleAllocated then
-                Windows.ShowWindow(Application.MainForm.Handle, SW_HIDE);
-            end;
-
             PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
             WinProcess := False;
             Application.IntfAppMinimize;
@@ -825,16 +814,10 @@
       SC_RESTORE:
         begin
 
-         if (Window = TWin32WidgetSet(WidgetSet).AppHandle) and
-            (Application <> nil) then
+          if (Window = WidgetSet.AppHandle) and (Application <> nil) then
           begin
             PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
             WinProcess := False;
-            if (Application.MainForm <> nil) and Application.MainForm.HandleAllocated then
-            begin
-              if Application.MainForm.HandleObjectShouldBeVisible then
-                Windows.ShowWindow(Application.MainForm.Handle, SW_SHOWNA);
-            end;
             Application.IntfAppRestore;
           end;
         end;
@@ -2297,18 +2280,15 @@
     end;
     WM_SIZE:
     begin
+      if Window = WidgetSet.AppHandle then
+      begin
+        LMessage.Msg := LM_NULL; // no need to go through delivermessage
+        LMessage.Result := 0;
+      end else
       with TLMSize(LMessage) do
       begin
         Msg := LM_SIZE;
         SizeType := WParam or Size_SourceIsInterface;
-        if Window = TWin32WidgetSet(WidgetSet).AppHandle then
-        begin
-          if Assigned(Application.MainForm) and Application.MainForm.HandleAllocated then
-          begin
-            lWinControl := Application.MainForm;
-            Window := Application.MainForm.Handle;
-          end;
-        end;
         if IsIconic(Window) then
         begin
           GetWindowPlacement(Window, @WindowPlacement);
preview2.patch (4,173 bytes)   

malcome

2011-01-26 05:47

reporter   ~0045482

Last edited: 2011-01-26 05:54

I uploaded preview2.patch.
I fixed a related bug(WMSize raises two times that is cause of IDE does not minimize).

malcome

2011-01-26 07:47

reporter   ~0045484

BeginUpdateBounds and EndUpdateBounds were wrong...
I uploaded preview3.patch.
Please change using global var "flag" to better way. I have no idea.

2011-01-26 07:49

 

preview3.patch (5,107 bytes)   
Index: lcl/include/customform.inc
===================================================================
--- lcl/include/customform.inc	(revision 29203)
+++ lcl/include/customform.inc	(working copy)
@@ -617,6 +617,8 @@
   if Assigned(FOnDeactivate) then FOnDeactivate(Self);
 end;
 
+var
+  flag : boolean;
 {------------------------------------------------------------------------------
   Method: TCustomForm.WMSize
   Params:   Msg: The Size message
@@ -632,7 +634,8 @@
   DebugLn(['[TCustomForm.WMSize] ',DbgSName(Self),' Message.SizeType=',Message.SizeType,' Message.Width=',Message.Width,' Message.Height=',Message.Height,' AutoSizeDelayed=',AutoSizeDelayed]);
   {$ENDIF}
 
-  if (Parent=nil) and ((Message.SizeType and SIZE_SourceIsInterface)>0) then
+  if not flag and
+     (Parent=nil) and ((Message.SizeType and SIZE_SourceIsInterface)>0) then
   begin
     // this is a top level form (constraints depend on window manager)
     // and the widgetset set a size
@@ -644,7 +647,8 @@
   end;
 
   Assert(False, 'Trace:WMSIZE in TCustomForm');
-  if not (csDesigning in ComponentState) then
+  if not flag and
+     not (csDesigning in ComponentState) then
   begin
     OldState := FWindowState;
     case (Message.SizeType and not SIZE_SourceIsInterface) of
@@ -675,7 +679,9 @@
     end;
   end;
 
+  flag := True;
   inherited WMSize(Message);
+  flag := False;
 
   if (Message.SizeType and Size_Restored)>0 then
   begin
Index: lcl/interfaces/win32/win32callback.inc
===================================================================
--- lcl/interfaces/win32/win32callback.inc	(revision 29203)
+++ lcl/interfaces/win32/win32callback.inc	(working copy)
@@ -799,42 +799,33 @@
       SC_MINIMIZE:
         begin
 
-          if (Application <> nil) and (lWinControl <> nil) and
-             (Application.MainForm <> nil) and
-             (Application.MainForm = lWinControl) then
-            Window := TWin32WidgetSet(WidgetSet).AppHandle;//redirection
-
-          if (Window = TWin32WidgetSet(WidgetSet).AppHandle) and
-             (Application <> nil) then
+          if (Window = WidgetSet.AppHandle) and (Application <> nil) then
           begin
-            if (Application.MainForm <> nil) then
-            begin
-              Windows.SetWindowPos(Window, HWND_TOP,
-                Application.MainForm.Left, Application.MainForm.Top,
-                Application.MainForm.Width, 0, SWP_NOACTIVATE);
-              if Application.MainForm.HandleAllocated then
-                Windows.ShowWindow(Application.MainForm.Handle, SW_HIDE);
+            if (Application.MainForm <> nil) and
+               (Application.MainForm.WindowState <> wsMinimized) then begin
+              // Click TaskBar button!
+              PLMsg^.Result := Windows.DefWindowProc(Application.MainForm.Handle, WM_SYSCOMMAND, WParam, LParam);
+              WinProcess := False;
+            end else begin
+              // Click MainForm button!
+              if Application.MainForm <> nil then
+                Windows.SetWindowPos(WidgetSet.AppHandle, HWND_TOP,
+                  Application.MainForm.Left, Application.MainForm.Top,
+                  Application.MainForm.Width, 0, SWP_NOACTIVATE);
+              PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
+              WinProcess := False;
+              Application.IntfAppMinimize;
             end;
-
-            PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
-            WinProcess := False;
-            Application.IntfAppMinimize;
           end;
         end;
 
       SC_RESTORE:
         begin
 
-         if (Window = TWin32WidgetSet(WidgetSet).AppHandle) and
-            (Application <> nil) then
+          if (Window = WidgetSet.AppHandle) and (Application <> nil) then
           begin
             PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
             WinProcess := False;
-            if (Application.MainForm <> nil) and Application.MainForm.HandleAllocated then
-            begin
-              if Application.MainForm.HandleObjectShouldBeVisible then
-                Windows.ShowWindow(Application.MainForm.Handle, SW_SHOWNA);
-            end;
             Application.IntfAppRestore;
           end;
         end;
@@ -2297,18 +2288,15 @@
     end;
     WM_SIZE:
     begin
+      if Window = WidgetSet.AppHandle then
+      begin
+        LMessage.Msg := LM_NULL; // no need to go through delivermessage
+        LMessage.Result := 0;
+      end else
       with TLMSize(LMessage) do
       begin
         Msg := LM_SIZE;
         SizeType := WParam or Size_SourceIsInterface;
-        if Window = TWin32WidgetSet(WidgetSet).AppHandle then
-        begin
-          if Assigned(Application.MainForm) and Application.MainForm.HandleAllocated then
-          begin
-            lWinControl := Application.MainForm;
-            Window := Application.MainForm.Handle;
-          end;
-        end;
         if IsIconic(Window) then
         begin
           GetWindowPlacement(Window, @WindowPlacement);
preview3.patch (5,107 bytes)   

2011-01-28 04:45

 

preview4.patch (4,938 bytes)   
Index: lcl/include/customform.inc
===================================================================
--- lcl/include/customform.inc	(revision 29226)
+++ lcl/include/customform.inc	(working copy)
@@ -617,6 +617,8 @@
   if Assigned(FOnDeactivate) then FOnDeactivate(Self);
 end;
 
+var
+  flag : boolean;
 {------------------------------------------------------------------------------
   Method: TCustomForm.WMSize
   Params:   Msg: The Size message
@@ -632,7 +634,8 @@
   DebugLn(['[TCustomForm.WMSize] ',DbgSName(Self),' Message.SizeType=',Message.SizeType,' Message.Width=',Message.Width,' Message.Height=',Message.Height,' AutoSizeDelayed=',AutoSizeDelayed]);
   {$ENDIF}
 
-  if (Parent=nil) and ((Message.SizeType and SIZE_SourceIsInterface)>0) then
+  if not flag and
+     (Parent=nil) and ((Message.SizeType and SIZE_SourceIsInterface)>0) then
   begin
     // this is a top level form (constraints depend on window manager)
     // and the widgetset set a size
@@ -644,7 +647,8 @@
   end;
 
   Assert(False, 'Trace:WMSIZE in TCustomForm');
-  if not (csDesigning in ComponentState) then
+  if not flag and
+     not (csDesigning in ComponentState) then
   begin
     OldState := FWindowState;
     case (Message.SizeType and not SIZE_SourceIsInterface) of
@@ -675,7 +679,9 @@
     end;
   end;
 
+  flag := True;
   inherited WMSize(Message);
+  flag := False;
 
   if (Message.SizeType and Size_Restored)>0 then
   begin
Index: lcl/interfaces/win32/win32callback.inc
===================================================================
--- lcl/interfaces/win32/win32callback.inc	(revision 29226)
+++ lcl/interfaces/win32/win32callback.inc	(working copy)
@@ -799,34 +799,37 @@
       SC_MINIMIZE:
         begin
 
-          if (Application <> nil) and (lWinControl <> nil) and
-             (Application.MainForm <> nil) and
-             (Application.MainForm = lWinControl) then
-            Window := TWin32WidgetSet(WidgetSet).AppHandle;//redirection
-
-          if (Window = TWin32WidgetSet(WidgetSet).AppHandle) and
-             (Application <> nil) then
+          if (Application <> nil) then
           begin
-            if (Application.MainForm <> nil) then
-            begin
-              Windows.SetWindowPos(Window, HWND_TOP,
-                Application.MainForm.Left, Application.MainForm.Top,
-                Application.MainForm.Width, 0, SWP_NOACTIVATE);
+            if (Application.MainForm = lWinControl) then begin
               if Application.MainForm.HandleAllocated then
                 Windows.ShowWindow(Application.MainForm.Handle, SW_HIDE);
+            end else
+            if (Window = WidgetSet.AppHandle) then
+            begin
+              if (Application.MainForm <> nil) and
+                 (Application.MainForm.WindowState <> wsMinimized) then begin
+                // TaskBar button is clicked!
+                PLMsg^.Result := Windows.DefWindowProc(Application.MainForm.Handle, WM_SYSCOMMAND, WParam, LParam);
+                WinProcess := False;
+              end else begin
+                // MainForm button is clicked!
+                if Application.MainForm <> nil then
+                  Windows.SetWindowPos(WidgetSet.AppHandle, HWND_TOP,
+                    Application.MainForm.Left, Application.MainForm.Top,
+                    Application.MainForm.Width, 0, SWP_NOACTIVATE);
+                PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
+                WinProcess := False;
+                Application.IntfAppMinimize;
+              end;
             end;
-
-            PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
-            WinProcess := False;
-            Application.IntfAppMinimize;
           end;
         end;
 
       SC_RESTORE:
         begin
 
-         if (Window = TWin32WidgetSet(WidgetSet).AppHandle) and
-            (Application <> nil) then
+          if (Window = WidgetSet.AppHandle) and (Application <> nil) then
           begin
             PLMsg^.Result := Windows.DefWindowProc(Window, WM_SYSCOMMAND, WParam, LParam);
             WinProcess := False;
@@ -2297,18 +2300,15 @@
     end;
     WM_SIZE:
     begin
+      if Window = WidgetSet.AppHandle then
+      begin
+        LMessage.Msg := LM_NULL; // no need to go through delivermessage
+        LMessage.Result := 0;
+      end else
       with TLMSize(LMessage) do
       begin
         Msg := LM_SIZE;
         SizeType := WParam or Size_SourceIsInterface;
-        if Window = TWin32WidgetSet(WidgetSet).AppHandle then
-        begin
-          if Assigned(Application.MainForm) and Application.MainForm.HandleAllocated then
-          begin
-            lWinControl := Application.MainForm;
-            Window := Application.MainForm.Handle;
-          end;
-        end;
         if IsIconic(Window) then
         begin
           GetWindowPlacement(Window, @WindowPlacement);
preview4.patch (4,938 bytes)   

malcome

2011-01-28 04:50

reporter   ~0045518

I uploaded preview4.patch.
I fixed a minor bug(minimizing animation on the classic style design).

Paul Ishenin

2011-03-09 05:15

manager   ~0046531

Does Application.MainFormOnTaskbar := True fixes the problems you have?

Tristan Linnell

2012-10-03 12:39

reporter   ~0062846

I have just tested this with a very simple test application, and
Application.MainFormOnTaskbar := True
does not fix the problem.

Juha Manninen

2014-09-16 19:55

developer   ~0077306

This patch has been completely ignored for almost 4 years. Now it cannot be applied any more due to merge conflicts.
This is bad! Even Paul did not test the patch while adding notes.

Could someone please do some digging and make another working patch.
The "flag" variable must be implemented better but that is another issue.

Zeljan Rikalo

2016-03-16 09:51

developer   ~0091110

AFAIR Ondrej fixed issues with Application.MainFormOnTaskbar := True, but let him look into this specific issue about Vista.

Ondrej Pokorny

2016-04-06 13:38

developer   ~0091790

My tests show that previews work now well for MainFormOnTaskbar both True and False. I tested Windows 10 only. I can test Windows 7 as well but not Vista - sorry, I trashed that crap about 1 week after buying a laptop with that OS (already several years ago).

Can anybody reproduce this issue? If not, I'll resolve it.

Ondrej Pokorny

2016-04-11 17:17

developer   ~0091947

Probably fixed in the meantime.

Mike Thompson

2016-04-14 11:07

developer   ~0092027

Works under Windows 7

Issue History

Date Modified Username Field Change
2009-03-25 16:04 Troodon New Issue
2009-03-25 16:04 Troodon Widgetset => Win32
2009-04-12 13:40 Paul Ishenin Tag Attached: vista
2009-04-12 13:40 Paul Ishenin LazTarget => 1.0
2009-04-12 13:40 Paul Ishenin Status new => acknowledged
2009-04-12 13:40 Paul Ishenin Target Version => 1.0.0
2009-04-12 15:43 Paul Ishenin Note Added: 0026718
2009-04-12 15:43 Paul Ishenin Status acknowledged => feedback
2009-04-12 19:38 José Mejuto Note Added: 0026726
2009-09-12 10:53 Paul Ishenin Status feedback => acknowledged
2010-01-08 17:53 Tristan Linnell Note Added: 0033516
2010-01-08 17:58 Tristan Linnell Tag Attached: Windows 7
2010-01-08 17:58 Tristan Linnell Tag Attached: thumbnail
2010-01-08 19:48 José Mejuto Note Added: 0033517
2010-03-13 07:28 Flávio Etrusco Note Added: 0035426
2010-05-04 03:42 Paul Ishenin Note Added: 0037216
2010-05-05 01:19 José Mejuto Note Added: 0037267
2010-05-05 23:58 José Mejuto Note Added: 0037312
2010-07-06 16:25 Paul Ishenin LazTarget 1.0 => 1.2
2010-07-06 16:25 Paul Ishenin Note Added: 0039076
2010-07-06 16:33 Paul Ishenin Target Version 1.0.0 =>
2011-01-25 07:43 malcome File Added: preview.patch
2011-01-25 07:45 malcome Note Added: 0045462
2011-01-26 05:46 malcome File Added: preview2.patch
2011-01-26 05:47 malcome Note Added: 0045482
2011-01-26 05:54 malcome Note Edited: 0045482
2011-01-26 07:47 malcome Note Added: 0045484
2011-01-26 07:49 malcome File Added: preview3.patch
2011-01-27 09:52 Vincent Snijders Relationship added child of 0018499
2011-01-28 04:45 malcome File Added: preview4.patch
2011-01-28 04:50 malcome Note Added: 0045518
2011-03-09 05:15 Paul Ishenin Note Added: 0046531
2011-03-09 05:15 Paul Ishenin Status acknowledged => feedback
2011-10-02 23:06 Felipe Monteiro de Carvalho Relationship added related to 0017294
2012-10-03 12:39 Tristan Linnell Note Added: 0062846
2014-01-14 15:16 Martin Friebe LazTarget 1.2 => 1.4
2014-09-16 12:21 Mike Thompson Tag Attached: patch
2014-09-16 19:55 Juha Manninen Note Added: 0077306
2014-10-09 19:56 Mike Thompson Assigned To => Mike Thompson
2014-10-09 19:56 Mike Thompson Status feedback => assigned
2015-04-27 21:59 Juha Manninen LazTarget 1.4 => -
2016-03-16 09:11 Juha Manninen Assigned To Mike Thompson => Juha Manninen
2016-03-16 09:50 Ondrej Pokorny Assigned To Juha Manninen => Ondrej Pokorny
2016-03-16 09:51 Zeljan Rikalo Note Added: 0091110
2016-04-06 13:38 Ondrej Pokorny Note Added: 0091790
2016-04-11 17:17 Ondrej Pokorny Note Added: 0091947
2016-04-11 17:17 Ondrej Pokorny Status assigned => resolved
2016-04-11 17:17 Ondrej Pokorny Resolution open => fixed
2016-04-14 11:07 Mike Thompson Note Added: 0092027