View Issue Details

IDProjectCategoryView StatusLast Update
0000019Double CommanderViewerpublic2012-10-24 14:26
ReporterAssigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
ProjectionnoneETAnone 
Summary0000019: Смотрелка
Description1. Растягивается все подряд и большие файлы и маленькие иконки
2. Нет прокрутки горизонтальной для текстовых файлов
3. При просмотре больших изображений без масштаба, показывается пустая область после рисунка если прокручиваешь как по горизонтали так и по вертикали... а если ползунок до конца, то вообще часть изображения пропадает
4. Не просматриваются некоторые jpeg
5. Вообще не просматривается gif
Additional Informationhttp://sourceforge.net/support/tracker.php?aid=2691604
TagsNo tags attached.
Attached Files
build_4961M.JPG (101,557 bytes)   
build_4961M.JPG (101,557 bytes)   
build_4993.JPG (105,573 bytes)   
build_4993.JPG (105,573 bytes)   
fviewer.pas.patch (2,836 bytes)   
Index: fviewer.pas
===================================================================
--- fviewer.pas	(revision 4996)
+++ fviewer.pas	(working copy)
@@ -695,7 +695,7 @@
             UndoEY:=Y;
           end;
         end;
-      if not (gboxHightlight.Visible) and not (gboxPaint.Visible) then
+      if not (gboxHightlight.Visible) and not (gboxPaint.Visible) and (sboxImage.AutoScroll) then
     begin
       sboxImage.VertScrollBar.Position:=sboxImage.VertScrollBar.Position+tmpY-y;
       sboxImage.HorzScrollBar.Position:=sboxImage.HorzScrollBar.Position+tmpX-x;
@@ -1336,16 +1336,28 @@
 procedure TfrmViewer.miStretchClick(Sender: TObject);
 begin
   miStretch.Checked:= not miStretch.Checked;
-  Image.Stretch:= miStretch.Checked;
-  Image.AutoSize:= not Image.Stretch;
-  Image.Proportional:= Image.Stretch;
   if gboxHightlight.Visible then UndoTmp;
   if miStretch.Checked then
     begin
+      sboxImage.AutoScroll:=false;
+      sboxImage.HorzScrollBar.Visible:=false;
+      sboxImage.VertScrollBar.Visible:=false;
+      sboxImage.HorzScrollBar.Position:=0;
+      sboxImage.VertScrollBar.Position:=0;
+
       gboxPaint.Visible:=false;
       gboxHightlight.Visible:=false;
       gboxView.Visible:=true;
+    end
+  else
+    begin
+      sboxImage.HorzScrollBar.Visible:=true;
+      sboxImage.VertScrollBar.Visible:=true;
+      sboxImage.AutoScroll:=true;
     end;
+  Image.Stretch:= miStretch.Checked;
+  Image.AutoSize:= not Image.Stretch;
+  Image.Proportional:= Image.Stretch;
   AdjustImageSize;
 end;
 
@@ -1723,19 +1735,16 @@
 begin
   if miStretch.Checked then
      begin
-       Image.Stretch:=true;
-       Image.AutoSize := true;
        //if gboxHightlight.Visible or gboxPaint.Visible then Image.Center:=false else Image.Center:=true;
        Image.Center:=true;
        if (Image.Picture.Width > sboxImage.ClientWidth) or  (Image.Picture.Height > sboxImage.ClientHeight) then
          begin
+           Image.Stretch:=true;
+           Image.AutoSize:=false;
            Image.Left:= 0;
            Image.Top:= 0;
-           Image.AutoSize := false;
            Image.Width:= sboxImage.ClientWidth;
            Image.Height:= sboxImage.ClientHeight;
-           sboxImage.HorzScrollBar.Visible:=false;
-           sboxImage.VertScrollBar.Visible:=false;
            // show image resolution and scale
            if Image.Picture.Width < Image.Width then
              begin
@@ -1758,6 +1767,8 @@
          end
        else
          begin
+           Image.Stretch:=false;
+           Image.AutoSize:=true;
            Image.Left:= (sboxImage.ClientWidth-Image.Picture.Width) div 2;        //move image to center
            Image.Top:=  (sboxImage.ClientHeight-Image.Picture.Height) div 2;
            sResolution:= IntToStr(Image.Picture.Width) + 'x' + IntToStr(Image.Picture.Height);
fviewer.pas.patch (2,836 bytes)   
Fixed in Revision
Operating system
Widgetset
Architecture

Activities

klepa83

2012-10-20 10:37

reporter   ~0000961

Last edited: 2012-10-20 10:44

Похоже, что все перечисленные баги исправлены, поэтому думаю логичней было бы закрыть данный вопрос, чтобы он среди нерешённых не валялся, чем меньше красного (тем более неактуального) - тем позитивней :) Если поддержите данную инициативу, попробую поискать и другие подобные.
Хотя небольшой баг в смотрелке всё-таки есть (билд 4993 самосбор в режиме nightly) - если включить растягивание (stretch), просмотрщик эту опцию запоминает и при открытии следующего изображения, соответственно применяет к нему. Баг заключается в том, что при этом появляются полосы прокрутки и, соответственно, часть изображения не видно. Интересно то, что в билде 4961M было несколько по-другому - изображение показывалось полностью, но ниже и правее него были белые полосы шириной с полосы прокрутки, похоже что-то с того билда подкорректировали, да только не очень удачно. Сейчас попробую скриншоты прикрепить.

klepa83

2012-10-20 10:55

reporter   ~0000962

На всякий случай:
Windows XP SP3 32bit
На скриншотах просмотрщик развернут во весь экран

klepa83

2012-10-24 14:03

reporter   ~0000964

Если в билде 4996 несколько раз изменить размер окна с помощью стандартной кнопки Windows "Развернуть/Восстановить", то полосы прокрутки то появляются, то пропадают, причём когда они появляются, часть изображения не видно, пока его не прокрутишь. То же самое наблюдается, если ресайзить окно просмотрщика с помощью мыши (тянуть за правый нижний угол). Посмотрел по коду - проблема в том, что почему-то размер клиентской области sboxImage в процедуре TfrmViewer.AdjustImageSize не постоянен, он то равен размеру sboxImage, то на 4 пикселя меньше. Когда он меньше - то полос прокруток нет, а когда равен - соответственно они появляются. Странное поведение, мне непонятное, вроде код из раза в раз один и тот же выполняется, а результат разный. В FPC и Delphi я новичек, может в этом дело, а может просто баг компилятора. В общем решить проблему смог, насколько коряво - судить вам, может решите её проще, но в принципе решение рабочее. Приложил патч fviewer.pas.patch

klepa83

2012-10-24 14:10

reporter   ~0000965

Странно, в вашей сборке 4961М проблемы с "Развернуть/Восстановить" нет, но остальные присутствуют, но выглядят немного по-другому... Код вроде не менялся с этого билда, компилятор у меня тоже 2.6.0, разве что версия lazarus другая - 1.0.2. Похоже различия из-за лазаруса?
Fullscreen оказывается тоже багнутый, надо его тоже править.

Alexx2000

2012-10-24 14:26

administrator   ~0000966

-> разве что версия lazarus другая - 1.0.2. Похоже различия из-за лазаруса?

Именно, скорее всего что-то поломали в Лазарус

Issue History

Date Modified Username Field Change
2011-10-23 12:04 Alexx2000 New Issue
2012-10-20 10:37 klepa83 Note Added: 0000961
2012-10-20 10:41 klepa83 File Added: build_4961M.JPG
2012-10-20 10:42 klepa83 File Added: build_4993.JPG
2012-10-20 10:44 klepa83 Note Edited: 0000961
2012-10-20 10:55 klepa83 Note Added: 0000962
2012-10-24 14:03 klepa83 Note Added: 0000964
2012-10-24 14:04 klepa83 File Added: fviewer.pas.patch
2012-10-24 14:10 klepa83 Note Added: 0000965
2012-10-24 14:26 Alexx2000 Note Added: 0000966