[Wgui-cvs] wgui/src Makefile.am,1.11,1.12 wg_listbox.cpp,1.36,1.37 wg_scrollbar.cpp,1.31,1.32 wg_tex
Status: Beta
Brought to you by:
greenwire
|
From: Rob W. <gre...@us...> - 2004-04-27 18:14:02
|
Update of /cvsroot/wgui/wgui/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv29743/src Modified Files: Makefile.am wg_listbox.cpp wg_scrollbar.cpp wg_textbox.cpp Removed Files: wg_range_control.cpp Log Message: Changed CScrollBar so it inherits from CRangeControl Index: wg_scrollbar.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_scrollbar.cpp,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** wg_scrollbar.cpp 8 Apr 2004 22:02:19 -0000 1.31 --- wg_scrollbar.cpp 27 Apr 2004 18:13:51 -0000 1.32 *************** *** 36,44 **** CScrollBar::CScrollBar(const CRect& WindowRect, CWindow* pParent, EScrollBarType ScrollBarType) : ! CWindow(WindowRect, pParent), m_ScrollBarType(ScrollBarType), - m_iMin(0), - m_iMax(100), - m_iPosition(0), m_iJumpAmount(5), m_bDragging(false) --- 36,41 ---- CScrollBar::CScrollBar(const CRect& WindowRect, CWindow* pParent, EScrollBarType ScrollBarType) : ! CRangeControl<int>(WindowRect, pParent, 0, 100, 1, 0), m_ScrollBarType(ScrollBarType), m_iJumpAmount(5), m_bDragging(false) *************** *** 72,76 **** } m_ThumbRect = GetClientRect(); ! SetPosition(0); CMessageServer::Instance().RegisterMessageClient(this, CMessage::MOUSE_BUTTONUP); CMessageServer::Instance().RegisterMessageClient(this, CMessage::MOUSE_MOVE); --- 69,73 ---- } m_ThumbRect = GetClientRect(); ! RepositionThumb(); CMessageServer::Instance().RegisterMessageClient(this, CMessage::MOUSE_BUTTONUP); CMessageServer::Instance().RegisterMessageClient(this, CMessage::MOUSE_MOVE); *************** *** 85,139 **** ! void CScrollBar::SetLimits(int iMin, int iMax) ! { ! m_iMin = iMin; ! m_iMax = iMax; ! StartDrawProc(); ! } ! ! ! void CScrollBar::SetPosition(int iPosition) { ! m_iPosition = iPosition; ! if (m_iPosition < m_iMin) ! { ! m_iPosition = m_iMin; ! } ! if (m_iPosition > m_iMax) ! { ! m_iPosition = m_iMax; ! } ! if (m_iMin != m_iMax) { ! switch (m_ScrollBarType) ! { ! case VERTICAL: ! { ! int iThumbHeight = GetClientRect().Height() / (m_iMax - m_iMin + 1); ! if (iThumbHeight < 10) ! { ! iThumbHeight = 10; ! } ! m_ThumbRect.SetTop(GetClientRect().Top() + (GetClientRect().Height() - iThumbHeight) * (m_iPosition - m_iMin) / (m_iMax - m_iMin) - 1); ! m_ThumbRect.SetBottom(m_ThumbRect.Top() + iThumbHeight); ! break; ! } ! case HORIZONTAL: ! { ! int iThumbWidth = GetClientRect().Width() / (m_iMax - m_iMin + 1); ! if (iThumbWidth < 10) ! { ! iThumbWidth = 10; ! } ! m_ThumbRect.SetLeft(GetClientRect().Left() + (GetClientRect().Width() - iThumbWidth) * (m_iPosition - m_iMin) / (m_iMax - m_iMin) - 1); ! m_ThumbRect.SetRight(m_ThumbRect.Left() + iThumbWidth); ! break; ! } ! default: ! throw(Wg_Ex_App("CScrollBar::SetPosition: Unrecognized ScrollBar Type.")); ! break; ! } } - StartDrawProc(); } --- 82,93 ---- ! void CScrollBar::SetValue(int iValue, bool bRedraw) // virtual { ! CRangeControl<int>::SetValue(iValue, false); ! RepositionThumb(); ! if (bRedraw) { ! StartDrawProc(); } } *************** *** 144,148 **** CPainter Painter(m_pSDLSurface); ! if (m_iMin != m_iMax) { Painter.DrawRect(m_ThumbRect, false, COLOR_BLACK); --- 98,102 ---- CPainter Painter(m_pSDLSurface); ! if (m_MinLimit != m_MaxLimit) { Painter.DrawRect(m_ThumbRect, false, COLOR_BLACK); *************** *** 160,164 **** CWindow::SetWindowRect(WindowRect); // Resposition the thumb rect and the button controls ! SetPosition(m_iPosition); switch (m_ScrollBarType) { --- 114,118 ---- CWindow::SetWindowRect(WindowRect); // Resposition the thumb rect and the button controls ! SetValue(m_Value); switch (m_ScrollBarType) { *************** *** 209,220 **** if (Button == CMouseMessage::WHEELUP) { ! SetPosition(m_iPosition - 1); ! CMessageServer::Instance().QueueMessage(new TIntMessage(CMessage::CTRL_VALUECHANGE, m_pParentWindow, this, m_iPosition)); bResult = true; } else if (Button == CMouseMessage::WHEELDOWN) { ! SetPosition(m_iPosition + 1); ! CMessageServer::Instance().QueueMessage(new TIntMessage(CMessage::CTRL_VALUECHANGE, m_pParentWindow, this, m_iPosition)); bResult = true; } --- 163,172 ---- if (Button == CMouseMessage::WHEELUP) { ! Decrement(); bResult = true; } else if (Button == CMouseMessage::WHEELDOWN) { ! Increment(); bResult = true; } *************** *** 228,239 **** case CRect::RELPOS_ABOVE: case CRect::RELPOS_LEFT: ! SetPosition(m_iPosition - m_iJumpAmount); break; case CRect::RELPOS_BELOW: case CRect::RELPOS_RIGHT: ! SetPosition(m_iPosition + m_iJumpAmount); break; } - CMessageServer::Instance().QueueMessage(new TIntMessage(CMessage::CTRL_VALUECHANGE, m_pParentWindow, this, m_iPosition)); bResult = true; } --- 180,190 ---- case CRect::RELPOS_ABOVE: case CRect::RELPOS_LEFT: ! SetValue(m_Value - m_iJumpAmount); break; case CRect::RELPOS_BELOW: case CRect::RELPOS_RIGHT: ! SetValue(m_Value + m_iJumpAmount); break; } bResult = true; } *************** *** 258,262 **** { m_bDragging = false; ! CMessageServer::Instance().QueueMessage(new TIntMessage(CMessage::CTRL_VALUECHANGE, m_pParentWindow, this, m_iPosition)); bHandled = true; } --- 209,213 ---- { m_bDragging = false; ! CMessageServer::Instance().QueueMessage(new TIntMessage(CMessage::CTRL_VALUECHANGE, m_pParentWindow, this, m_Value)); bHandled = true; } *************** *** 269,280 **** if (pMouseMessage) { ! int iOldPosition = m_iPosition; switch (m_ScrollBarType) { case VERTICAL: ! SetPosition((pMouseMessage->Point.YPos() - GetClientRect().Top()) * (m_iMax - m_iMin) / GetClientRect().Height() + m_iMin); break; case HORIZONTAL: ! SetPosition((pMouseMessage->Point.XPos() - GetClientRect().Left()) * (m_iMax - m_iMin) / GetClientRect().Width() + m_iMin); break; default: --- 220,233 ---- if (pMouseMessage) { ! int iOldPosition = m_Value; switch (m_ScrollBarType) { case VERTICAL: ! m_Value = ConstrainValue((pMouseMessage->Point.YPos() - GetClientRect().Top()) * ! (m_MaxLimit - m_MinLimit) / GetClientRect().Height() + m_MinLimit); break; case HORIZONTAL: ! m_Value = ConstrainValue((pMouseMessage->Point.XPos() - GetClientRect().Left()) * ! (m_MaxLimit - m_MinLimit) / GetClientRect().Width() + m_MinLimit); break; default: *************** *** 282,288 **** break; } ! if (iOldPosition != m_iPosition) { ! CMessageServer::Instance().QueueMessage(new TIntMessage(CMessage::CTRL_VALUECHANGING, m_pParentWindow, this, m_iPosition)); } } --- 235,243 ---- break; } ! if (iOldPosition != m_Value) { ! CMessageServer::Instance().QueueMessage(new TIntMessage(CMessage::CTRL_VALUECHANGING, m_pParentWindow, this, m_Value)); ! RepositionThumb(); ! StartDrawProc(); } } *************** *** 295,307 **** if (pMessage->Source() == m_pBtnUpLeft) { ! SetPosition(m_iPosition - 1); bHandled = true; } else if (pMessage->Source() == m_pBtnDownRight) { ! SetPosition(m_iPosition + 1); bHandled = true; } - CMessageServer::Instance().QueueMessage(new TIntMessage(CMessage::CTRL_VALUECHANGE, m_pParentWindow, this, m_iPosition)); } break; --- 250,261 ---- if (pMessage->Source() == m_pBtnUpLeft) { ! Decrement(); bHandled = true; } else if (pMessage->Source() == m_pBtnDownRight) { ! Increment(); bHandled = true; } } break; *************** *** 316,319 **** --- 270,309 ---- } + + void CScrollBar::RepositionThumb(void) // virtual + { + if (m_MinLimit != m_MaxLimit) + { + switch (m_ScrollBarType) + { + case VERTICAL: + { + int iThumbHeight = GetClientRect().Height() / (m_MaxLimit - m_MinLimit + 1); + if (iThumbHeight < 10) + { + iThumbHeight = 10; + } + m_ThumbRect.SetTop(GetClientRect().Top() + (GetClientRect().Height() - iThumbHeight) * (m_Value - m_MinLimit) / (m_MaxLimit - m_MinLimit) - 1); + m_ThumbRect.SetBottom(m_ThumbRect.Top() + iThumbHeight); + break; + } + case HORIZONTAL: + { + int iThumbWidth = GetClientRect().Width() / (m_MaxLimit - m_MinLimit + 1); + if (iThumbWidth < 10) + { + iThumbWidth = 10; + } + m_ThumbRect.SetLeft(GetClientRect().Left() + (GetClientRect().Width() - iThumbWidth) * (m_Value - m_MinLimit) / (m_MaxLimit - m_MinLimit) - 1); + m_ThumbRect.SetRight(m_ThumbRect.Left() + iThumbWidth); + break; + } + default: + throw(Wg_Ex_App("CScrollBar::RepositionThumb: Unrecognized ScrollBar Type.")); + break; + } + } + } + } Index: wg_listbox.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_listbox.cpp,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** wg_listbox.cpp 14 Apr 2004 16:21:21 -0000 1.36 --- wg_listbox.cpp 27 Apr 2004 18:13:51 -0000 1.37 *************** *** 53,57 **** m_pVScrollbar = new CScrollBar( CRect(ScrollbarRect.Right() - 12, ScrollbarRect.Top(), ScrollbarRect.Right(), ScrollbarRect.Bottom()) , this, CScrollBar::VERTICAL), ! m_pVScrollbar->SetLimits(0, 0); m_ClientRect = CRect(2, 2, m_WindowRect.Width() - 16, m_WindowRect.Height() - 4); m_BGColor = COLOR_WHITE; --- 53,57 ---- m_pVScrollbar = new CScrollBar( CRect(ScrollbarRect.Right() - 12, ScrollbarRect.Top(), ScrollbarRect.Right(), ScrollbarRect.Bottom()) , this, CScrollBar::VERTICAL), ! m_pVScrollbar->SetMaxLimit(0); m_ClientRect = CRect(2, 2, m_WindowRect.Width() - 16, m_WindowRect.Height() - 4); m_BGColor = COLOR_WHITE; *************** *** 82,86 **** m_RenderedStrings.push_back(CRenderedString(m_pFontEngine, ListItem.sItemText, CRenderedString::VALIGN_TOP, CRenderedString::HALIGN_LEFT)); int iMax = (m_Items.size() - 1) < 0 ? 0 : stdex::safe_static_cast<int>(m_Items.size() - 1); ! m_pVScrollbar->SetLimits(0, iMax); StartDrawProc(); return stdex::safe_static_cast<int>(m_Items.size()); --- 82,86 ---- m_RenderedStrings.push_back(CRenderedString(m_pFontEngine, ListItem.sItemText, CRenderedString::VALIGN_TOP, CRenderedString::HALIGN_LEFT)); int iMax = (m_Items.size() - 1) < 0 ? 0 : stdex::safe_static_cast<int>(m_Items.size() - 1); ! m_pVScrollbar->SetMaxLimit(iMax); StartDrawProc(); return stdex::safe_static_cast<int>(m_Items.size()); *************** *** 95,99 **** m_SelectedItems.erase(m_SelectedItems.begin() + iItemIndex); int iMax = (m_Items.size() - 1) < 0 ? 0 : stdex::safe_static_cast<int>(m_Items.size() - 1); ! m_pVScrollbar->SetLimits(0, iMax); StartDrawProc(); } --- 95,99 ---- m_SelectedItems.erase(m_SelectedItems.begin() + iItemIndex); int iMax = (m_Items.size() - 1) < 0 ? 0 : stdex::safe_static_cast<int>(m_Items.size() - 1); ! m_pVScrollbar->SetMaxLimit(iMax); StartDrawProc(); } *************** *** 105,109 **** m_Items.clear(); m_SelectedItems.clear(); ! m_pVScrollbar->SetLimits(0, 0); StartDrawProc(); } --- 105,109 ---- m_Items.clear(); m_SelectedItems.clear(); ! m_pVScrollbar->SetMaxLimit(0); StartDrawProc(); } *************** *** 133,137 **** Painter.DrawRect(m_WindowRect, false, COLOR_BLACK); CRect ClientRect(GetClientRect()); ! int iStartIndex = m_pVScrollbar->GetPosition(); for (unsigned int i = iStartIndex; i < m_Items.size(); ++i) { --- 133,137 ---- Painter.DrawRect(m_WindowRect, false, COLOR_BLACK); CRect ClientRect(GetClientRect()); ! int iStartIndex = m_pVScrollbar->GetValue(); for (unsigned int i = iStartIndex; i < m_Items.size(); ++i) { *************** *** 185,189 **** { // Prep the new selection ! m_iFocusedItem = (Point.YPos() - ClientRect.Top()) / m_iItemHeight + m_pVScrollbar->GetPosition(); StartDrawProc(); } --- 185,189 ---- { // Prep the new selection ! m_iFocusedItem = (Point.YPos() - ClientRect.Top()) / m_iItemHeight + m_pVScrollbar->GetValue(); StartDrawProc(); } *************** *** 203,207 **** (Button == CMouseMessage::LEFT)) { ! if (m_iFocusedItem == stdex::safe_static_cast<int>((Point.YPos() - ClientRect.Top()) / m_iItemHeight + m_pVScrollbar->GetPosition())) { if (m_bSingleSelection) --- 203,207 ---- (Button == CMouseMessage::LEFT)) { ! if (m_iFocusedItem == stdex::safe_static_cast<int>((Point.YPos() - ClientRect.Top()) / m_iItemHeight + m_pVScrollbar->GetValue())) { if (m_bSingleSelection) *************** *** 245,253 **** { m_iFocusedItem++; ! int diff = m_iFocusedItem - m_pVScrollbar->GetPosition(); CRect ClientRect(GetClientRect()); ! if (m_iItemHeight * (m_pVScrollbar->GetPosition() + diff + 1) > (unsigned int) ClientRect.Height()) { ! m_pVScrollbar->SetPosition(m_pVScrollbar->GetPosition() + 1); } --- 245,253 ---- { m_iFocusedItem++; ! int diff = m_iFocusedItem - m_pVScrollbar->GetValue(); CRect ClientRect(GetClientRect()); ! if (m_iItemHeight * (m_pVScrollbar->GetValue() + diff + 1) > (unsigned int) ClientRect.Height()) { ! m_pVScrollbar->SetValue(m_pVScrollbar->GetValue() + 1); } *************** *** 262,268 **** { m_iFocusedItem--; ! if (m_iFocusedItem < m_pVScrollbar->GetPosition()) { ! m_pVScrollbar->SetPosition(m_pVScrollbar->GetPosition() - 1); } StartDrawProc(); --- 262,268 ---- { m_iFocusedItem--; ! if (m_iFocusedItem < m_pVScrollbar->GetValue()) { ! m_pVScrollbar->SetValue(m_pVScrollbar->GetValue() - 1); } StartDrawProc(); *************** *** 284,288 **** m_iFocusedItem = nSize; } ! m_pVScrollbar->SetPosition(m_iFocusedItem); StartDrawProc(); bHandled=true; --- 284,288 ---- m_iFocusedItem = nSize; } ! m_pVScrollbar->SetValue(m_iFocusedItem); StartDrawProc(); bHandled=true; *************** *** 301,305 **** m_iFocusedItem = 0; } ! m_pVScrollbar->SetPosition(m_iFocusedItem); StartDrawProc(); bHandled=true; --- 301,305 ---- m_iFocusedItem = 0; } ! m_pVScrollbar->SetValue(m_iFocusedItem); StartDrawProc(); bHandled=true; Index: wg_textbox.cpp =================================================================== RCS file: /cvsroot/wgui/wgui/src/wg_textbox.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** wg_textbox.cpp 23 Apr 2004 03:00:14 -0000 1.17 --- wg_textbox.cpp 27 Apr 2004 18:13:51 -0000 1.18 *************** *** 61,67 **** m_pFontEngine = CApplication::Instance()->GetDefaultFontEngine(); } ! m_pDblClickTimer = new CTimer(); ! m_pCursorTimer = new CTimer(this); CRect ScrollbarRect(m_WindowRect); ScrollbarRect.Grow(-1); --- 61,67 ---- m_pFontEngine = CApplication::Instance()->GetDefaultFontEngine(); } ! m_pDblClickTimer = new CTimer(); ! m_pCursorTimer = new CTimer(this); CRect ScrollbarRect(m_WindowRect); ScrollbarRect.Grow(-1); *************** *** 73,77 **** m_ScrollBarVisibilityMap[CScrollBar::HORIZONTAL] = SCROLLBAR_VIS_AUTO; PrepareWindowText(""); ! CMessageServer::Instance().RegisterMessageClient(this, CMessage::KEYBOARD_KEYDOWN); CMessageServer::Instance().RegisterMessageClient(this, CMessage::MOUSE_BUTTONUP); --- 73,77 ---- m_ScrollBarVisibilityMap[CScrollBar::HORIZONTAL] = SCROLLBAR_VIS_AUTO; PrepareWindowText(""); ! CMessageServer::Instance().RegisterMessageClient(this, CMessage::KEYBOARD_KEYDOWN); CMessageServer::Instance().RegisterMessageClient(this, CMessage::MOUSE_BUTTONUP); *************** *** 93,99 **** delete m_pCursorTimer; ! delete m_pDblClickTimer; ! // This shouldn't be necessary, as these are children of the control and should be deleted automatically // delete m_pHorizontalScrollBar; // delete m_pVerticalScrollBar; --- 93,99 ---- delete m_pCursorTimer; ! delete m_pDblClickTimer; ! // This shouldn't be necessary, as these are children of the control and should be deleted automatically // delete m_pHorizontalScrollBar; // delete m_pVerticalScrollBar; *************** *** 155,159 **** UpdateScrollBars(); } ! void CTextBox::Draw(void) const // virtual --- 155,159 ---- UpdateScrollBars(); } ! void CTextBox::Draw(void) const // virtual *************** *** 181,185 **** CPoint SelStartPoint(RowColFromIndex(SelStartNorm)); CPoint SelEndPoint(RowColFromIndex(SelStartNorm + SelLenNorm)); ! std::vector<CPoint> vOffsets; std::vector<CPoint> vBoundingDimensions; --- 181,185 ---- CPoint SelStartPoint(RowColFromIndex(SelStartNorm)); CPoint SelEndPoint(RowColFromIndex(SelStartNorm + SelLenNorm)); ! std::vector<CPoint> vOffsets; std::vector<CPoint> vBoundingDimensions; *************** *** 198,221 **** // move the cursor into view by scrolling if necessary ! int CursorPos = vCharRects[SelStartPoint.YPos()][SelStartPoint.XPos()].Left() + vOffsets[SelStartPoint.YPos()].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10; if (m_bScrollToCursor) { if (CursorPos < TextRect.Left()) { ! m_pHorizontalScrollBar->SetPosition(m_pHorizontalScrollBar->GetPosition() - (TextRect.Left() - CursorPos) / 10 - 1); ! CursorPos = vCharRects[SelStartPoint.YPos()][SelStartPoint.XPos()].Left() + vOffsets[SelStartPoint.YPos()].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10; } if (CursorPos > TextRect.Right()) { ! m_pHorizontalScrollBar->SetPosition(m_pHorizontalScrollBar->GetPosition() + (CursorPos - TextRect.Right()) / 10 + 1); ! CursorPos = vCharRects[SelStartPoint.YPos()][SelStartPoint.XPos()].Left() + vOffsets[SelStartPoint.YPos()].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10; } ! if (SelStartPoint.YPos() < m_pVerticalScrollBar->GetPosition()) { ! m_pVerticalScrollBar->SetPosition(SelStartPoint.YPos()); } ! if (SelStartPoint.YPos() > stdex::safe_static_cast<int>(m_pVerticalScrollBar->GetPosition() + m_ClientRect.Height() / m_iRowHeight)) { ! m_pVerticalScrollBar->SetPosition(SelStartPoint.YPos() - m_ClientRect.Height() / m_iRowHeight); } m_bScrollToCursor = false; --- 198,221 ---- // move the cursor into view by scrolling if necessary ! int CursorPos = vCharRects[SelStartPoint.YPos()][SelStartPoint.XPos()].Left() + vOffsets[SelStartPoint.YPos()].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10; if (m_bScrollToCursor) { if (CursorPos < TextRect.Left()) { ! m_pHorizontalScrollBar->SetValue(m_pHorizontalScrollBar->GetValue() - (TextRect.Left() - CursorPos) / 10 - 1); ! CursorPos = vCharRects[SelStartPoint.YPos()][SelStartPoint.XPos()].Left() + vOffsets[SelStartPoint.YPos()].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10; } if (CursorPos > TextRect.Right()) { ! m_pHorizontalScrollBar->SetValue(m_pHorizontalScrollBar->GetValue() + (CursorPos - TextRect.Right()) / 10 + 1); ! CursorPos = vCharRects[SelStartPoint.YPos()][SelStartPoint.XPos()].Left() + vOffsets[SelStartPoint.YPos()].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10; } ! if (SelStartPoint.YPos() < m_pVerticalScrollBar->GetValue()) { ! m_pVerticalScrollBar->SetValue(SelStartPoint.YPos()); } ! if (SelStartPoint.YPos() > stdex::safe_static_cast<int>(m_pVerticalScrollBar->GetValue() + m_ClientRect.Height() / m_iRowHeight)) { ! m_pVerticalScrollBar->SetValue(SelStartPoint.YPos() - m_ClientRect.Height() / m_iRowHeight); } m_bScrollToCursor = false; *************** *** 223,239 **** // Selection ! if (m_SelLength != 0 && SelEndPoint.YPos() >= m_pVerticalScrollBar->GetPosition()) { for (int CurLine = SelStartPoint.YPos(); CurLine <= SelEndPoint.YPos(); ++CurLine) { ! CPoint TopLeft = TextRect.TopLeft() + CPoint(0, m_iRowHeight * (CurLine - m_pVerticalScrollBar->GetPosition())); CRect SelRect(TopLeft, TopLeft + CPoint(vBoundingDimensions[CurLine].XPos(), m_iRowHeight - 2)); if (CurLine == SelStartPoint.YPos()) { ! SelRect.SetLeft(vCharRects[CurLine][SelStartPoint.XPos()].Left() + vOffsets[CurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10); } if (CurLine == SelEndPoint.YPos()) { ! SelRect.SetRight(vCharRects[CurLine][SelEndPoint.XPos() - 1].Right() + vOffsets[CurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10); } SelRect.ClipTo(TextRect); --- 223,239 ---- // Selection ! if (m_SelLength != 0 && SelEndPoint.YPos() >= m_pVerticalScrollBar->GetValue()) { for (int CurLine = SelStartPoint.YPos(); CurLine <= SelEndPoint.YPos(); ++CurLine) { ! CPoint TopLeft = TextRect.TopLeft() + CPoint(0, m_iRowHeight * (CurLine - m_pVerticalScrollBar->GetValue())); CRect SelRect(TopLeft, TopLeft + CPoint(vBoundingDimensions[CurLine].XPos(), m_iRowHeight - 2)); if (CurLine == SelStartPoint.YPos()) { ! SelRect.SetLeft(vCharRects[CurLine][SelStartPoint.XPos()].Left() + vOffsets[CurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10); } if (CurLine == SelEndPoint.YPos()) { ! SelRect.SetRight(vCharRects[CurLine][SelEndPoint.XPos() - 1].Right() + vOffsets[CurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10); } SelRect.ClipTo(TextRect); *************** *** 242,258 **** } ! if (m_SelLength == 0 && SelStartPoint.YPos() >= m_pVerticalScrollBar->GetPosition() && m_bDrawCursor) { //RenderStringWithCursor if (CursorPos >= TextRect.Left() && CursorPos <= TextRect.Right()) { ! Painter.DrawVLine(TextRect.Top() + m_iRowHeight * (SelStartPoint.YPos() - m_pVerticalScrollBar->GetPosition()) - 1, ! TextRect.Top() + m_iRowHeight * (SelStartPoint.YPos() - m_pVerticalScrollBar->GetPosition() + 1) - 1, CursorPos, COLOR_BLACK); } } } ! CPoint LineOrigin = TextRect.TopLeft() - CPoint(m_pHorizontalScrollBar->GetPosition() * 10, 0); ! for(std::vector<CRenderedString*>::const_iterator iter = m_vpRenderedString.begin() + m_pVerticalScrollBar->GetPosition(); iter != m_vpRenderedString.end() && LineOrigin.YPos() < TextRect.Bottom(); ++iter) { (*iter)->Draw(m_pSDLSurface, TextRect, LineOrigin, FontColor); --- 242,258 ---- } ! if (m_SelLength == 0 && SelStartPoint.YPos() >= m_pVerticalScrollBar->GetValue() && m_bDrawCursor) { //RenderStringWithCursor if (CursorPos >= TextRect.Left() && CursorPos <= TextRect.Right()) { ! Painter.DrawVLine(TextRect.Top() + m_iRowHeight * (SelStartPoint.YPos() - m_pVerticalScrollBar->GetValue()) - 1, ! TextRect.Top() + m_iRowHeight * (SelStartPoint.YPos() - m_pVerticalScrollBar->GetValue() + 1) - 1, CursorPos, COLOR_BLACK); } } } ! CPoint LineOrigin = TextRect.TopLeft() - CPoint(m_pHorizontalScrollBar->GetValue() * 10, 0); ! for(std::vector<CRenderedString*>::const_iterator iter = m_vpRenderedString.begin() + m_pVerticalScrollBar->GetValue(); iter != m_vpRenderedString.end() && LineOrigin.YPos() < TextRect.Bottom(); ++iter) { (*iter)->Draw(m_pSDLSurface, TextRect, LineOrigin, FontColor); *************** *** 303,307 **** fSkipCursorPositioning = true; } ! if (CApplication::Instance()->GetKeyFocus() != this) { --- 303,307 ---- fSkipCursorPositioning = true; } ! if (CApplication::Instance()->GetKeyFocus() != this) { *************** *** 322,328 **** vCharRects.push_back(CharRects); } ! CRect TextRect(GetClientRect()); ! unsigned int iCurLine = (Point.YPos() - TextRect.Top()) / m_iRowHeight + m_pVerticalScrollBar->GetPosition(); if (iCurLine > m_iLineCount) { --- 322,328 ---- vCharRects.push_back(CharRects); } ! CRect TextRect(GetClientRect()); ! unsigned int iCurLine = (Point.YPos() - TextRect.Top()) / m_iRowHeight + m_pVerticalScrollBar->GetValue(); if (iCurLine > m_iLineCount) { *************** *** 333,339 **** for (unsigned int i = 0; i < vCharRects[iCurLine].size(); ++i) { ! if (abs(Point.XPos() - (vCharRects[iCurLine][i].Right() + vOffsets[iCurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10)) < xDelta) { ! xDelta = abs(Point.XPos() - (vCharRects[iCurLine][i].Right() + vOffsets[iCurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10)); m_SelStart = i + 1; } --- 333,339 ---- for (unsigned int i = 0; i < vCharRects[iCurLine].size(); ++i) { ! if (abs(Point.XPos() - (vCharRects[iCurLine][i].Right() + vOffsets[iCurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10)) < xDelta) { ! xDelta = abs(Point.XPos() - (vCharRects[iCurLine][i].Right() + vOffsets[iCurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10)); m_SelStart = i + 1; } *************** *** 344,348 **** } } ! m_DragStart = m_SelStart; m_SelLength = 0; --- 344,348 ---- } } ! m_DragStart = m_SelStart; m_SelLength = 0; *************** *** 353,362 **** if (Button == CMouseMessage::WHEELUP) { ! m_pVerticalScrollBar->SetPosition(m_pVerticalScrollBar->GetPosition() - 1); bResult = true; } else if (Button == CMouseMessage::WHEELDOWN) { ! m_pVerticalScrollBar->SetPosition(m_pVerticalScrollBar->GetPosition() + 1); bResult = true; } --- 353,362 ---- if (Button == CMouseMessage::WHEELUP) { ! m_pVerticalScrollBar->SetValue(m_pVerticalScrollBar->GetValue() - 1); bResult = true; } else if (Button == CMouseMessage::WHEELDOWN) { ! m_pVerticalScrollBar->SetValue(m_pVerticalScrollBar->GetValue() + 1); bResult = true; } *************** *** 385,389 **** bHandled = true; } ! break; case CMessage::MOUSE_BUTTONUP: m_bMouseDown = false; --- 385,389 ---- bHandled = true; } ! break; case CMessage::MOUSE_BUTTONUP: m_bMouseDown = false; *************** *** 428,432 **** if (GetClientRect().HitTest(pMouseMessage->Point) == CRect::RELPOS_INSIDE) { ! iCurLine = (pMouseMessage->Point.YPos() - TextRect.Top()) / m_iRowHeight + m_pVerticalScrollBar->GetPosition(); } else if (GetClientRect().HitTest(pMouseMessage->Point) == CRect::RELPOS_BELOW) --- 428,432 ---- if (GetClientRect().HitTest(pMouseMessage->Point) == CRect::RELPOS_INSIDE) { ! iCurLine = (pMouseMessage->Point.YPos() - TextRect.Top()) / m_iRowHeight + m_pVerticalScrollBar->GetValue(); } else if (GetClientRect().HitTest(pMouseMessage->Point) == CRect::RELPOS_BELOW) *************** *** 438,444 **** for (unsigned int i = 0; i < vCharRects[iCurLine].size(); ++i) { ! if (abs(pMouseMessage->Point.XPos() - (vCharRects[iCurLine][i].Right() + vOffsets[iCurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10)) < xDelta) { ! xDelta = abs(pMouseMessage->Point.XPos() - (vCharRects[iCurLine][i].Right() + vOffsets[iCurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetPosition() * 10)); CursorPos = i + 1; } --- 438,444 ---- for (unsigned int i = 0; i < vCharRects[iCurLine].size(); ++i) { ! if (abs(pMouseMessage->Point.XPos() - (vCharRects[iCurLine][i].Right() + vOffsets[iCurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10)) < xDelta) { ! xDelta = abs(pMouseMessage->Point.XPos() - (vCharRects[iCurLine][i].Right() + vOffsets[iCurLine].XPos() + TextRect.Left() - m_pHorizontalScrollBar->GetValue() * 10)); CursorPos = i + 1; } *************** *** 819,823 **** delete *iter; m_vpRenderedString.clear(); ! m_iLineCount = 0; std::string::size_type start = 0; --- 819,823 ---- delete *iter; m_vpRenderedString.clear(); ! m_iLineCount = 0; std::string::size_type start = 0; *************** *** 847,853 **** { m_ClientRect = CRect(3, 3, m_WindowRect.Width() - 5, m_WindowRect.Height() - 5); ! bool bVertVisible = m_ScrollBarVisibilityMap[CScrollBar::VERTICAL] == SCROLLBAR_VIS_ALWAYS || (m_ScrollBarVisibilityMap[CScrollBar::VERTICAL] == SCROLLBAR_VIS_AUTO && m_iLineCount > (m_ClientRect.Height() - 12) / m_iRowHeight); ! bool bHorzVisible = m_ScrollBarVisibilityMap[CScrollBar::HORIZONTAL] == SCROLLBAR_VIS_ALWAYS || (m_ScrollBarVisibilityMap[CScrollBar::HORIZONTAL] == SCROLLBAR_VIS_AUTO && stdex::safe_static_cast<int>(m_iMaxWidth) > (m_ClientRect.Width() - 12)); int iMaxHorzLimit = (stdex::safe_static_cast<int>(m_iMaxWidth) - (m_ClientRect.Width() - 12)) / 10; --- 847,853 ---- { m_ClientRect = CRect(3, 3, m_WindowRect.Width() - 5, m_WindowRect.Height() - 5); ! bool bVertVisible = m_ScrollBarVisibilityMap[CScrollBar::VERTICAL] == SCROLLBAR_VIS_ALWAYS || (m_ScrollBarVisibilityMap[CScrollBar::VERTICAL] == SCROLLBAR_VIS_AUTO && m_iLineCount > (m_ClientRect.Height() - 12) / m_iRowHeight); ! bool bHorzVisible = m_ScrollBarVisibilityMap[CScrollBar::HORIZONTAL] == SCROLLBAR_VIS_ALWAYS || (m_ScrollBarVisibilityMap[CScrollBar::HORIZONTAL] == SCROLLBAR_VIS_AUTO && stdex::safe_static_cast<int>(m_iMaxWidth) > (m_ClientRect.Width() - 12)); int iMaxHorzLimit = (stdex::safe_static_cast<int>(m_iMaxWidth) - (m_ClientRect.Width() - 12)) / 10; *************** *** 856,860 **** iMaxHorzLimit = 0; } ! m_pVerticalScrollBar->SetVisible(bVertVisible); m_pHorizontalScrollBar->SetVisible(bHorzVisible); --- 856,860 ---- iMaxHorzLimit = 0; } ! m_pVerticalScrollBar->SetVisible(bVertVisible); m_pHorizontalScrollBar->SetVisible(bHorzVisible); *************** *** 865,872 **** } m_ClientRect.SetRight(m_WindowRect.Width() - 17); ! m_pVerticalScrollBar->SetLimits(0, iLastLine); ! if (m_pVerticalScrollBar->GetPosition() > iLastLine) { ! m_pVerticalScrollBar->SetPosition(iLastLine); } int iBottom = m_WindowRect.Bottom() - 1; --- 865,872 ---- } m_ClientRect.SetRight(m_WindowRect.Width() - 17); ! m_pVerticalScrollBar->SetMaxLimit(iLastLine); ! if (m_pVerticalScrollBar->GetValue() > iLastLine) { ! m_pVerticalScrollBar->SetValue(iLastLine); } int iBottom = m_WindowRect.Bottom() - 1; *************** *** 877,884 **** m_pVerticalScrollBar->SetWindowRect(CRect(m_WindowRect.Right() - 13, m_WindowRect.Top() + 1, m_WindowRect.Right() - 1, iBottom)); m_ClientRect.SetBottom(m_WindowRect.Height() - 17); ! m_pHorizontalScrollBar->SetLimits(0, iMaxHorzLimit); ! if (m_pHorizontalScrollBar->GetPosition() > iMaxHorzLimit) { ! m_pHorizontalScrollBar->SetPosition(iMaxHorzLimit); } int iRight = m_WindowRect.Right() - 1; --- 877,884 ---- m_pVerticalScrollBar->SetWindowRect(CRect(m_WindowRect.Right() - 13, m_WindowRect.Top() + 1, m_WindowRect.Right() - 1, iBottom)); m_ClientRect.SetBottom(m_WindowRect.Height() - 17); ! m_pHorizontalScrollBar->SetMaxLimit(iMaxHorzLimit); ! if (m_pHorizontalScrollBar->GetValue() > iMaxHorzLimit) { ! m_pHorizontalScrollBar->SetValue(iMaxHorzLimit); } int iRight = m_WindowRect.Right() - 1; *************** *** 889,893 **** m_pHorizontalScrollBar->SetWindowRect(CRect(m_WindowRect.Left() + 1, m_WindowRect.Bottom() - 13, iRight, m_WindowRect.Bottom() - 1)); } ! CPoint CTextBox::RowColFromIndex(std::string::size_type Index) const --- 889,893 ---- m_pHorizontalScrollBar->SetWindowRect(CRect(m_WindowRect.Left() + 1, m_WindowRect.Bottom() - 13, iRight, m_WindowRect.Bottom() - 1)); } ! CPoint CTextBox::RowColFromIndex(std::string::size_type Index) const Index: Makefile.am =================================================================== RCS file: /cvsroot/wgui/wgui/src/Makefile.am,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** Makefile.am 26 Apr 2004 22:38:00 -0000 1.11 --- Makefile.am 27 Apr 2004 18:13:51 -0000 1.12 *************** *** 30,34 **** wg_point.cpp \ wg_progress.cpp \ - wg_range_control.cpp \ wg_rect.cpp \ wg_renderedstring.cpp \ --- 30,33 ---- --- wg_range_control.cpp DELETED --- |