On 11/11/11 16:09, Noel Power wrote:
On 10/11/11 03:02, August Sodora wrote:
Hello,

I've attached a patch that attempts to add line numbers to the basic
ide. I believe it is mostly correct, although I am seeing a couple of
rendering issues that I haven't been able to track down yet. First,
the scrollbar seems to jump around and flicker a lot more than it does
without this patch. Second, typing so that the window has to scroll
horizontally causes the vertical scrollbar to move to a nonsensical
position. If anybody has a moment to take a look at this I would
really appreciate it! This has been bugging me for a while.

There are a couple problems as you mention with this patch, however I do think that this is *really* useful and certainly something that I would have liked to see at times. However sometimes I think the line numbers can just be annoying ;-) so I think definitely this should be configurable :-)

The erratic behaviour of the vertical scrollbar ( note it doesn't respond to clicks ) is I believe due to the fact that you probably don't take into account the reduced size of the editor window ( because now there is the extra width from the window with the line numbers ) and in fact the width of that line-number window is dynamic ( e.g. can change as you are typing when the number of lines increases ). What I suspect is happening is the editor window area extends over where the scrollbar is painted and the 'flicker' and erratic 'positioning' is as a result of the the editor window and scroll bar painting over one another.

given the current state would you consider moving this to a feature branch where perhaps others might be able to check it out and collaborate/help ? Although I am not very familiar with vcl and/or ui stuff, I'd be happy to try and help.

Noel


@@ -1643,11 +1653,14 @@ void ComplexEditorWindow::Resize()
     long nBrkWidth = 20;
     long nSBWidth = aEWVScrollBar.GetSizePixel().Width();

-    Size aBrkSz( Size( nBrkWidth, aSz.Height() ) );
+    Size aBrkSz(nBrkWidth, aSz.Height());
     aBrkWindow.SetPosSizePixel( Point( DWBORDER, DWBORDER ), aBrkSz );

- Size aEWSz( Size( aSz.Width() - nBrkWidth - nSBWidth + 2, aSz.Height() ) ); - aEdtWindow.SetPosSizePixel( Point( DWBORDER+aBrkSz.Width()-1, DWBORDER ), aEWSz );
+    Size aLnSz(aLineNumberWindow.GetWidth(), aSz.Height());
+ aLineNumberWindow.SetPosSizePixel(Point(DWBORDER+aBrkSz.Width() - 1, DWBORDER), aLnSz);
+
+    Size aEWSz(aSz.Width() - nBrkWidth - nSBWidth + 2, aSz.Height());
+ aEdtWindow.SetPosSizePixel( Point( DWBORDER+aBrkSz.Width()+aLnSz.Width()-1, DWBORDER ), aEWSz );

aEWVScrollBar.SetPosSizePixel( Point( aOutSz.Width()-DWBORDER-nSBWidth, DWBORDER ), Size( nSBWidth, aSz.Height() ) );
 }

I think in the hunk above

+    Size aEWSz(aSz.Width() - nBrkWidth - nSBWidth + 2, aSz.Height());

should be

+ Size aEWSz(aSz.Width() - nBrkWidth - aLineNumberWindow.GetWidth() - nSBWidth + 2, aSz.Height());

or at least scroll bar seems to work as expected with that :-)
thanks,

Noel


_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to