void CSplitterWnd::StopTracking(BOOL bAccept)<br />{<br /> ASSERT_VALID(this);<br /><br /> if (!m_bTracking)<br /> return;<br /><br /> ReleaseCapture();<br /><br /> // erase tracker rectangle<br /> OnInvertTracker(m_rectTracker);<br /> if (m_bTracking2)<br /> OnInvertTracker(m_rectTracker2);<br /> m_bTracking = m_bTracking2 = FALSE;<br /><br /> // save old active view<br /> CWnd* pOldActiveView = GetActivePane();<br /><br /> // m_rectTracker is set to the new splitter position (without border)<br /> // (so, adjust relative to where the border will be)<br /> m_rectTracker.OffsetRect(-CX_BORDER , -CY_BORDER);<br /> m_rectTracker2.OffsetRect(-CX_BORDER, -CY_BORDER);<br /><br /> if (bAccept)<br /> {<br /> if (m_htTrack == vSplitterBox)<br /> {<br /> SplitRow(m_rectTracker.top);<br /> }<br /> else if (m_htTrack >= vSplitterBar1 && m_htTrack <= vSplitterBar15)<br /> {<br /> // set row height<br /> TrackRowSize(m_rectTracker.top, m_htTrack - vSplitterBar1);<br /> RecalcLayout();<br /> }<br /> else if (m_htTrack == hSplitterBox)<br /> {<br /> SplitColumn(m_rectTracker.left);<br /> }<br /> else if (m_htTrack >= hSplitterBar1 && m_htTrack <= hSplitterBar15)<br /> {<br /> // set column width<br /> TrackColumnSize(m_rectTracker.left, m_htTrack - hSplitterBar1);<br /> RecalcLayout();<br /> }<br /> else if (m_htTrack >= splitterIntersection1 &&<br /> m_htTrack <= splitterIntersection225)<br /> {<br /> // set row height and column width<br /> int row = (m_htTrack - splitterIntersection1) / 15;<br /> int col = (m_htTrack - splitterIntersection1) % 15;<br /><br /> TrackRowSize(m_rectTracker.top, row);<br /> TrackColumnSize(m_rectTracker2.left, col);<br /> RecalcLayout();<br /> }<br /> else if (m_htTrack == bothSplitterBox)<br /> {<br /> // rectTracker is vSplitter (splits rows)<br /> // rectTracker2 is hSplitter (splits cols)<br /> SplitRow(m_rectTracker.top);<br /> SplitColumn(m_rectTracker2.left);<br /> }<br /> }<br /><br /> if (pOldActiveView == GetActivePane())<br /> {<br /> if (pOldActiveView != NULL)<br /> {<br /> SetActivePane(-1, -1, pOldActiveView); // re-activate<br /> pOldActiveView->SetFocus(); // make sure focus is restored<br /> }<br /> }<br />}<br />
|