@@ -1482,6 +1482,12 @@ ASSERT_VALID(pDoc);
1482
1482
CSize sizeTotal;
1483
1483
1484
1484
sizeTotal.cx = sizeTotal.cy = 100 ;
1485
+
1486
+ m_ScrollbarSizeTotal = sizeTotal;
1487
+ m_ScrollbarSizePage = sizeTotal;
1488
+ m_ScrollbarSizeLine = sizeTotal;
1489
+
1490
+ // odd?
1485
1491
SetScrollSizes (sizeTotal, sizeTotal, sizeTotal);
1486
1492
1487
1493
sizewindow ();
@@ -1718,11 +1724,11 @@ int lastline;
1718
1724
1719
1725
lastline = pDoc->GetLastLine ();
1720
1726
1721
- CSize sizeTotal (pDoc->m_nWrapColumn * pDoc->m_FontWidth , lastline * pDoc->m_FontHeight ),
1722
- sizePage (GetOutputWindowWidth () - pDoc->m_iPixelOffset , GetOutputWindowHeight ()),
1723
- sizeLine (pDoc->m_FontWidth , pDoc->m_FontHeight );
1727
+ m_ScrollbarSizeTotal = CSize (pDoc->m_nWrapColumn * pDoc->m_FontWidth , lastline * pDoc->m_FontHeight );
1728
+ m_ScrollbarSizePage = CSize (GetOutputWindowWidth () - pDoc->m_iPixelOffset , GetOutputWindowHeight ());
1729
+ m_ScrollbarSizeLine = CSize (pDoc->m_FontWidth , pDoc->m_FontHeight );
1724
1730
1725
- SetScrollSizes (sizeTotal, sizePage, sizeLine );
1731
+ SetScrollSizes (m_ScrollbarSizeTotal, m_ScrollbarSizePage, m_ScrollbarSizeLine );
1726
1732
1727
1733
pDoc->SendWindowSizes (pDoc->m_nWrapColumn );
1728
1734
@@ -1743,11 +1749,12 @@ int lastline;
1743
1749
1744
1750
lastline = pDoc->GetLastLine ();
1745
1751
1746
- CSize sizeTotal (pDoc->m_nWrapColumn * pDoc->m_FontWidth , lastline * pDoc->m_FontHeight ),
1747
- sizePage (GetOutputWindowWidth () - pDoc->m_iPixelOffset , GetOutputWindowHeight ()),
1748
- sizeLine (pDoc->m_FontWidth , pDoc->m_FontHeight );
1752
+ m_ScrollbarSizeTotal = CSize (pDoc->m_nWrapColumn * pDoc->m_FontWidth , lastline * pDoc->m_FontHeight ),
1753
+ m_ScrollbarSizePage = CSize (GetOutputWindowWidth () - pDoc->m_iPixelOffset , GetOutputWindowHeight ()),
1754
+ m_ScrollbarSizeLine = CSize (pDoc->m_FontWidth , pDoc->m_FontHeight );
1749
1755
1750
- SetScrollSizes (sizeTotal, sizePage, sizeLine);
1756
+ if (pDoc->m_bScrollBarWanted )
1757
+ SetScrollSizes (m_ScrollbarSizeTotal, m_ScrollbarSizePage, m_ScrollbarSizeLine);
1751
1758
1752
1759
// pretend they pressed "End" to force the view to update.
1753
1760
@@ -3276,11 +3283,12 @@ int lastline;
3276
3283
3277
3284
lastline = pDoc->GetLastLine ();
3278
3285
3279
- CSize sizeTotal (pDoc->m_nWrapColumn * pDoc->m_FontWidth , lastline * pDoc->m_FontHeight ),
3280
- sizePage (GetOutputWindowWidth () - pDoc->m_iPixelOffset , GetOutputWindowHeight ()),
3281
- sizeLine (pDoc->m_FontWidth , pDoc->m_FontHeight );
3286
+ m_ScrollbarSizeTotal = CSize (pDoc->m_nWrapColumn * pDoc->m_FontWidth , lastline * pDoc->m_FontHeight );
3287
+ m_ScrollbarSizePage = CSize (GetOutputWindowWidth () - pDoc->m_iPixelOffset , GetOutputWindowHeight ());
3288
+ m_ScrollbarSizeLine = CSize (pDoc->m_FontWidth , pDoc->m_FontHeight );
3282
3289
3283
- SetScrollSizes (sizeTotal, sizePage, sizeLine);
3290
+ if (pDoc->m_bScrollBarWanted )
3291
+ SetScrollSizes (m_ScrollbarSizeTotal, m_ScrollbarSizePage, m_ScrollbarSizeLine);
3284
3292
3285
3293
// very bizarre bug - fixed in 4.39
3286
3294
// we seem to get size messages if we are maximized and in the background
@@ -3345,7 +3353,7 @@ ASSERT_VALID(pDoc);
3345
3353
3346
3354
int iNewPauseStatus = eNotPaused;
3347
3355
3348
- m_bAtBufferEnd = GetScrollPos (SB_VERT) >= GetScrollLimit (SB_VERT );
3356
+ m_bAtBufferEnd = m_ScrollbarPosition. cy >= (m_ScrollbarSizeTotal. cy - m_ScrollbarSizePage. cy );
3349
3357
3350
3358
// calculate pause status
3351
3359
@@ -4647,7 +4655,9 @@ int iDeltaY = m_scroll_position.y - pt.y;
4647
4655
// update scroll bar
4648
4656
GetScrollInfo (SB_VERT, &ScrollInfo, SIF_POS);
4649
4657
ScrollInfo.nPos = m_scroll_position.y ;
4650
- SetScrollInfo (SB_VERT, &ScrollInfo, pDoc->m_bScrollBarWanted );
4658
+ if (pDoc->m_bScrollBarWanted )
4659
+ SetScrollInfo (SB_VERT, &ScrollInfo, pDoc->m_bScrollBarWanted );
4660
+ m_ScrollbarPosition = ScrollInfo.nPos ;
4651
4661
ScrollWindow (0 , iSmoothDelta);
4652
4662
UpdateWindow ();
4653
4663
}
@@ -4680,16 +4690,18 @@ int iDeltaY = m_scroll_position.y - pt.y;
4680
4690
m_scroll_position = pt;
4681
4691
4682
4692
// update scroll bar
4683
- GetScrollInfo (SB_VERT, &ScrollInfo, SIF_POS);
4693
+ GetScrollInfo (SB_VERT, &ScrollInfo, SIF_POS | SIF_ALL );
4684
4694
ScrollInfo.nPos = pt.y ;
4685
4695
SetScrollInfo (SB_VERT, &ScrollInfo, pDoc->m_bScrollBarWanted );
4696
+ m_ScrollbarPosition = ScrollInfo.nPos ;
4697
+
4686
4698
4687
4699
// GetScrollInfo (SB_HORZ, &ScrollInfo, SIF_POS);
4688
4700
// ScrollInfo.nPos = pt.x;
4689
4701
// SetScrollInfo (SB_HORZ, &ScrollInfo, pDoc->m_bScrollBarWanted);
4690
4702
4691
4703
if (pDoc->m_bAutoFreeze )
4692
- m_freeze = GetScrollPos (SB_VERT) < GetScrollLimit (SB_VERT );
4704
+ m_freeze = pt. y < (m_ScrollbarSizeTotal. cy - m_ScrollbarSizePage. cy );
4693
4705
4694
4706
} // end of CMUSHView::ScrollToPosition
4695
4707
@@ -4708,6 +4720,7 @@ SCROLLINFO ScrollInfo;
4708
4720
ScrollInfo.nMax = sizeTotal.cy - 1 ;
4709
4721
ScrollInfo.nPage = sizePage.cy ;
4710
4722
SetScrollInfo (SB_VERT, &ScrollInfo, pDoc->m_bScrollBarWanted );
4723
+ m_ScrollbarPosition = ScrollInfo.nPos ;
4711
4724
4712
4725
/*
4713
4726
GetScrollInfo (SB_HORZ, &ScrollInfo, SIF_ALL);
0 commit comments