Re: What can be done about bug #621476 (Graph scroll bars fail with many tags)?
"kaczoroj" <[email protected]>
| Newsgroups | gmane.comp.version-control.cvs.gui.devel |
|---|---|
| Message-ID | <[email protected]> |
Myles, Could this be somehow related to kb166473? PRB: CScrollView Scroll Range Limited to 32K: http://support.microsoft.com/default.aspx?scid=kb;en-us;166473 You could try the "fix" code from there and see if that helps... Best Regards, Jerzy --- In [email protected], "zen_atheist" <mjordan@v...> wrote: > Hi, > > I recently spent some time to figure out what is causing this bug, as > I run into it daily (we have files with hundreds of revisions and > thousands of tags). > > (For more info, see sourceforge bug tracking system, id 621476: > http://sourceforge.net/tracker/index.php? func=detail&aid=621476&group_id=10072&atid=110072) > > It turns out to be caused by an MFC bug. The absolute offset in the > graph view to the visible window is passed through the MFC window > message handler packed in a WORD, but then sign-extended to signed > int. This means that when the offset passes 0x7FFF, it 'becomes' a > negative number, and when it passes 0xFFFF, it will wrap around to zero. > > Unfortunately, when dealing with such large windows, the default > page/line scroll amounts are so large (size/10, size/100 respectively) > that it become impossible to see all revisions (because the window > scrolls by so much even when pressing the down arrow). > > I have come up with a *very* poor workaround, that effictively clips > the line scroll sizes to 100 pixels. The code is provided below, but > it is very certainly not a good way to fix this problem. > > However, not being an MFC programmer myself, I can think of no better > way. Does anybody have any better ideas? > > > myles. > > > > Workaround: (please ignore silly text wrapping) > > Change line 1170-1171 in GraphView.cpp from: > > // Set the scroll size, we add the margin of the start point offset on > each side > SetScrollSizes(MM_TEXT, bounds.Size() + > CSize(startPoint)+CSize(startPoint)+CSize(SHADOW_OFFSET_PT)); > > to: > > // get total size > CSize totalSize = bounds.Size() + > CSize(startPoint)+CSize(startPoint)+CSize(SHADOW_OFFSET_PT); > > // Set the scroll size, we add the margin of the start point offset on > each side > SetScrollSizes(MM_TEXT, totalSize, sizeDefault, ((totalSize.cy/100) > > 100) ? sizeDefault : CSize(0,100) ); To unsubscribe from this group, send an email to: [email protected] Yahoo! Groups Links To visit your group on the web, go to: http://groups.yahoo.com/group/cvsgui-dev/ To unsubscribe from this group, send an email to: [email protected] Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/