OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include "xfa/fwl/basewidget/fwl_editimp.h" | 7 #include "xfa/fwl/basewidget/fwl_editimp.h" |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <vector> | 10 #include <vector> |
(...skipping 11 matching lines...) Expand all Loading... |
22 #include "xfa/fwl/core/cfwl_themepart.h" | 22 #include "xfa/fwl/core/cfwl_themepart.h" |
23 #include "xfa/fwl/core/fwl_appimp.h" | 23 #include "xfa/fwl/core/fwl_appimp.h" |
24 #include "xfa/fwl/core/fwl_noteimp.h" | 24 #include "xfa/fwl/core/fwl_noteimp.h" |
25 #include "xfa/fwl/core/fwl_widgetimp.h" | 25 #include "xfa/fwl/core/fwl_widgetimp.h" |
26 #include "xfa/fwl/core/fwl_widgetmgrimp.h" | 26 #include "xfa/fwl/core/fwl_widgetmgrimp.h" |
27 #include "xfa/fwl/core/ifwl_themeprovider.h" | 27 #include "xfa/fwl/core/ifwl_themeprovider.h" |
28 #include "xfa/fxfa/include/xfa_ffdoc.h" | 28 #include "xfa/fxfa/include/xfa_ffdoc.h" |
29 #include "xfa/fxfa/include/xfa_ffwidget.h" | 29 #include "xfa/fxfa/include/xfa_ffwidget.h" |
30 #include "xfa/fxgraphics/cfx_path.h" | 30 #include "xfa/fxgraphics/cfx_path.h" |
31 | 31 |
| 32 namespace { |
| 33 |
| 34 bool FX_EDIT_ISLATINWORD(FX_WCHAR c) { |
| 35 return c == 0x2D || (c <= 0x005A && c >= 0x0041) || |
| 36 (c <= 0x007A && c >= 0x0061) || (c <= 0x02AF && c >= 0x00C0) || |
| 37 c == 0x0027; |
| 38 } |
| 39 |
| 40 void AddSquigglyPath(CFX_Path* pPathData, |
| 41 FX_FLOAT fStartX, |
| 42 FX_FLOAT fEndX, |
| 43 FX_FLOAT fY, |
| 44 FX_FLOAT fStep) { |
| 45 pPathData->MoveTo(fStartX, fY); |
| 46 int i = 1; |
| 47 for (FX_FLOAT fx = fStartX + fStep; fx < fEndX; fx += fStep, ++i) { |
| 48 pPathData->LineTo(fx, fY + (i & 1) * fStep); |
| 49 } |
| 50 } |
| 51 |
| 52 } // namespace |
| 53 |
32 // static | 54 // static |
33 IFWL_Edit* IFWL_Edit::Create(const CFWL_WidgetImpProperties& properties, | 55 IFWL_Edit* IFWL_Edit::Create(const CFWL_WidgetImpProperties& properties, |
34 IFWL_Widget* pOuter) { | 56 IFWL_Widget* pOuter) { |
35 IFWL_Edit* pEdit = new IFWL_Edit; | 57 IFWL_Edit* pEdit = new IFWL_Edit; |
36 CFWL_EditImp* pEditImpl = new CFWL_EditImp(properties, pOuter); | 58 CFWL_EditImp* pEditImpl = new CFWL_EditImp(properties, pOuter); |
37 pEdit->SetImpl(pEditImpl); | 59 pEdit->SetImpl(pEditImpl); |
38 pEditImpl->SetInterface(pEdit); | 60 pEditImpl->SetInterface(pEdit); |
39 return pEdit; | 61 return pEdit; |
40 } | 62 } |
41 // static | 63 // static |
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
291 Layout(); | 313 Layout(); |
292 if (m_rtClient.IsEmpty()) { | 314 if (m_rtClient.IsEmpty()) { |
293 return FWL_ERR_Indefinite; | 315 return FWL_ERR_Indefinite; |
294 } | 316 } |
295 UpdateEditEngine(); | 317 UpdateEditEngine(); |
296 UpdateVAlignment(); | 318 UpdateVAlignment(); |
297 UpdateScroll(); | 319 UpdateScroll(); |
298 InitCaret(); | 320 InitCaret(); |
299 return FWL_ERR_Succeeded; | 321 return FWL_ERR_Succeeded; |
300 } | 322 } |
| 323 |
301 uint32_t CFWL_EditImp::HitTest(FX_FLOAT fx, FX_FLOAT fy) { | 324 uint32_t CFWL_EditImp::HitTest(FX_FLOAT fx, FX_FLOAT fy) { |
302 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) { | 325 if (m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_OuterScrollbar) { |
303 if (IsShowScrollBar(TRUE)) { | 326 if (IsShowScrollBar(TRUE)) { |
304 CFX_RectF rect; | 327 CFX_RectF rect; |
305 m_pVertScrollBar->GetWidgetRect(rect); | 328 m_pVertScrollBar->GetWidgetRect(rect); |
306 if (rect.Contains(fx, fy)) { | 329 if (rect.Contains(fx, fy)) |
307 return FWL_WGTHITTEST_VScrollBar; | 330 return FWL_WGTHITTEST_VScrollBar; |
308 } | |
309 } | 331 } |
310 if (IsShowScrollBar(FALSE)) { | 332 if (IsShowScrollBar(FALSE)) { |
311 CFX_RectF rect; | 333 CFX_RectF rect; |
312 m_pHorzScrollBar->GetWidgetRect(rect); | 334 m_pHorzScrollBar->GetWidgetRect(rect); |
313 if (rect.Contains(fx, fy)) { | 335 if (rect.Contains(fx, fy)) |
314 return FWL_WGTHITTEST_HScrollBar; | 336 return FWL_WGTHITTEST_HScrollBar; |
315 } | |
316 } | 337 } |
317 } | 338 } |
318 if (m_rtClient.Contains(fx, fy)) { | 339 if (m_rtClient.Contains(fx, fy)) |
319 return FWL_WGTHITTEST_Edit; | 340 return FWL_WGTHITTEST_Edit; |
320 } | |
321 return FWL_WGTHITTEST_Unknown; | 341 return FWL_WGTHITTEST_Unknown; |
322 } | 342 } |
323 #define FX_EDIT_ISLATINWORD(u) \ | 343 |
324 (u == 0x2D || (u <= 0x005A && u >= 0x0041) || \ | |
325 (u <= 0x007A && u >= 0x0061) || (u <= 0x02AF && u >= 0x00C0) || \ | |
326 u == 0x0027) | |
327 static void AddSquigglyPath(CFX_Path& PathData, | |
328 FX_FLOAT fStartX, | |
329 FX_FLOAT fEndX, | |
330 FX_FLOAT fY, | |
331 FX_FLOAT fStep) { | |
332 PathData.MoveTo(fStartX, fY); | |
333 FX_FLOAT fx; | |
334 int32_t i; | |
335 for (i = 1, fx = fStartX + fStep; fx < fEndX; fx += fStep, i++) { | |
336 PathData.LineTo(fx, fY + (i & 1) * fStep); | |
337 } | |
338 } | |
339 void CFWL_EditImp::AddSpellCheckObj(CFX_Path& PathData, | 344 void CFWL_EditImp::AddSpellCheckObj(CFX_Path& PathData, |
340 int32_t nStart, | 345 int32_t nStart, |
341 int32_t nCount, | 346 int32_t nCount, |
342 FX_FLOAT fOffSetX, | 347 FX_FLOAT fOffSetX, |
343 FX_FLOAT fOffSetY) { | 348 FX_FLOAT fOffSetY) { |
344 FX_FLOAT fStartX = 0.0f; | 349 FX_FLOAT fStartX = 0.0f; |
345 FX_FLOAT fEndX = 0.0f; | 350 FX_FLOAT fEndX = 0.0f; |
346 FX_FLOAT fY = 0.0f; | 351 FX_FLOAT fY = 0.0f; |
347 FX_FLOAT fStep = 0.0f; | 352 FX_FLOAT fStep = 0.0f; |
348 IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); | 353 IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
349 CFX_RectFArray rectArray; | 354 CFX_RectFArray rectArray; |
350 CFX_RectF rectText; | 355 CFX_RectF rectText; |
351 const FDE_TXTEDTPARAMS* txtEdtParams = m_pEdtEngine->GetEditParams(); | 356 const FDE_TXTEDTPARAMS* txtEdtParams = m_pEdtEngine->GetEditParams(); |
352 FX_FLOAT fAsent = (FX_FLOAT)txtEdtParams->pFont->GetAscent() * | 357 FX_FLOAT fAsent = (FX_FLOAT)txtEdtParams->pFont->GetAscent() * |
353 txtEdtParams->fFontSize / 1000; | 358 txtEdtParams->fFontSize / 1000; |
354 pPage->CalcRangeRectArray(nStart, nCount, rectArray); | 359 pPage->CalcRangeRectArray(nStart, nCount, rectArray); |
355 for (int i = 0; i < rectArray.GetSize(); i++) { | 360 for (int i = 0; i < rectArray.GetSize(); i++) { |
356 rectText = rectArray.GetAt(i); | 361 rectText = rectArray.GetAt(i); |
357 fY = rectText.top + fAsent + fOffSetY; | 362 fY = rectText.top + fAsent + fOffSetY; |
358 fStep = txtEdtParams->fFontSize / 16.0f; | 363 fStep = txtEdtParams->fFontSize / 16.0f; |
359 fStartX = rectText.left + fOffSetX; | 364 fStartX = rectText.left + fOffSetX; |
360 fEndX = fStartX + rectText.Width(); | 365 fEndX = fStartX + rectText.Width(); |
361 AddSquigglyPath(PathData, fStartX, fEndX, fY, fStep); | 366 AddSquigglyPath(&PathData, fStartX, fEndX, fY, fStep); |
362 } | 367 } |
363 } | 368 } |
364 int32_t CFWL_EditImp::GetWordAtPoint(CFX_PointF pointf, int32_t& nCount) { | 369 int32_t CFWL_EditImp::GetWordAtPoint(CFX_PointF pointf, int32_t& nCount) { |
365 return 0; | 370 return 0; |
366 } | 371 } |
367 FX_BOOL CFWL_EditImp::GetSuggestWords(CFX_PointF pointf, | 372 FX_BOOL CFWL_EditImp::GetSuggestWords(CFX_PointF pointf, |
368 std::vector<CFX_ByteString>& sSuggest) { | 373 std::vector<CFX_ByteString>& sSuggest) { |
369 int32_t nWordCount = 0; | 374 int32_t nWordCount = 0; |
370 int32_t nWordStart = GetWordAtPoint(pointf, nWordCount); | 375 int32_t nWordStart = GetWordAtPoint(pointf, nWordCount); |
371 if (nWordCount < 1) { | 376 if (nWordCount < 1) { |
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1208 CFX_RectF rtCaret; | 1213 CFX_RectF rtCaret; |
1209 m_pEdtEngine->GetCaretRect(rtCaret); | 1214 m_pEdtEngine->GetCaretRect(rtCaret); |
1210 FX_FLOAT fOffSetX = m_rtEngine.left - m_fScrollOffsetX; | 1215 FX_FLOAT fOffSetX = m_rtEngine.left - m_fScrollOffsetX; |
1211 FX_FLOAT fOffSetY = m_rtEngine.top - m_fScrollOffsetY + m_fVAlignOffset; | 1216 FX_FLOAT fOffSetY = m_rtEngine.top - m_fScrollOffsetY + m_fVAlignOffset; |
1212 rtCaret.Offset(fOffSetX, fOffSetY); | 1217 rtCaret.Offset(fOffSetX, fOffSetY); |
1213 const CFX_RectF& rtEidt = m_rtEngine; | 1218 const CFX_RectF& rtEidt = m_rtEngine; |
1214 if (rtEidt.Contains(rtCaret)) { | 1219 if (rtEidt.Contains(rtCaret)) { |
1215 IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); | 1220 IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
1216 if (!pPage) | 1221 if (!pPage) |
1217 return FALSE; | 1222 return FALSE; |
| 1223 |
1218 CFX_RectF rtFDE = pPage->GetContentsBox(); | 1224 CFX_RectF rtFDE = pPage->GetContentsBox(); |
1219 rtFDE.Offset(fOffSetX, fOffSetY); | 1225 rtFDE.Offset(fOffSetX, fOffSetY); |
1220 if (rtFDE.right() < rtEidt.right() && m_fScrollOffsetX > 0) { | 1226 if (rtFDE.right() < rtEidt.right() && m_fScrollOffsetX > 0) { |
1221 m_fScrollOffsetX += rtFDE.right() - rtEidt.right(); | 1227 m_fScrollOffsetX += rtFDE.right() - rtEidt.right(); |
1222 if (m_fScrollOffsetX < 0) { | 1228 m_fScrollOffsetX = std::max(m_fScrollOffsetX, 0.0f); |
1223 m_fScrollOffsetX = 0; | |
1224 } | |
1225 } | 1229 } |
1226 if (rtFDE.bottom() < rtEidt.bottom() && m_fScrollOffsetY > 0) { | 1230 if (rtFDE.bottom() < rtEidt.bottom() && m_fScrollOffsetY > 0) { |
1227 m_fScrollOffsetY += rtFDE.bottom() - rtEidt.bottom(); | 1231 m_fScrollOffsetY += rtFDE.bottom() - rtEidt.bottom(); |
1228 if (m_fScrollOffsetY < 0) { | 1232 m_fScrollOffsetY = std::max(m_fScrollOffsetY, 0.0f); |
1229 m_fScrollOffsetY = 0; | |
1230 } | |
1231 } | 1233 } |
1232 return FALSE; | 1234 return FALSE; |
1233 } else { | |
1234 FX_FLOAT offsetX = 0.0; | |
1235 FX_FLOAT offsetY = 0.0; | |
1236 if (rtCaret.left < rtEidt.left) { | |
1237 offsetX = rtCaret.left - rtEidt.left; | |
1238 } | |
1239 if (rtCaret.right() > rtEidt.right()) { | |
1240 offsetX = rtCaret.right() - rtEidt.right(); | |
1241 } | |
1242 if (rtCaret.top < rtEidt.top) { | |
1243 offsetY = rtCaret.top - rtEidt.top; | |
1244 } | |
1245 if (rtCaret.bottom() > rtEidt.bottom()) { | |
1246 offsetY = rtCaret.bottom() - rtEidt.bottom(); | |
1247 } | |
1248 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_HSelfAdaption)) { | |
1249 m_fScrollOffsetX += offsetX; | |
1250 } | |
1251 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_VSelfAdaption)) { | |
1252 m_fScrollOffsetY += offsetY; | |
1253 } | |
1254 if (m_fFontSize > m_rtEngine.height) { | |
1255 m_fScrollOffsetY = 0; | |
1256 } | |
1257 return TRUE; | |
1258 } | 1235 } |
| 1236 |
| 1237 FX_FLOAT offsetX = 0.0; |
| 1238 FX_FLOAT offsetY = 0.0; |
| 1239 if (rtCaret.left < rtEidt.left) |
| 1240 offsetX = rtCaret.left - rtEidt.left; |
| 1241 if (rtCaret.right() > rtEidt.right()) |
| 1242 offsetX = rtCaret.right() - rtEidt.right(); |
| 1243 if (rtCaret.top < rtEidt.top) |
| 1244 offsetY = rtCaret.top - rtEidt.top; |
| 1245 if (rtCaret.bottom() > rtEidt.bottom()) |
| 1246 offsetY = rtCaret.bottom() - rtEidt.bottom(); |
| 1247 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_HSelfAdaption)) |
| 1248 m_fScrollOffsetX += offsetX; |
| 1249 if (!(m_pProperties->m_dwStyleExes & FWL_STYLEEXT_EDT_VSelfAdaption)) |
| 1250 m_fScrollOffsetY += offsetY; |
| 1251 if (m_fFontSize > m_rtEngine.height) |
| 1252 m_fScrollOffsetY = 0; |
| 1253 return TRUE; |
1259 } | 1254 } |
| 1255 |
1260 FX_BOOL CFWL_EditImp::UpdateOffset(IFWL_ScrollBar* pScrollBar, | 1256 FX_BOOL CFWL_EditImp::UpdateOffset(IFWL_ScrollBar* pScrollBar, |
1261 FX_FLOAT fPosChanged) { | 1257 FX_FLOAT fPosChanged) { |
1262 if (pScrollBar == m_pHorzScrollBar.get()) { | 1258 if (pScrollBar == m_pHorzScrollBar.get()) |
1263 m_fScrollOffsetX += fPosChanged; | 1259 m_fScrollOffsetX += fPosChanged; |
1264 } else { | 1260 else |
1265 m_fScrollOffsetY += fPosChanged; | 1261 m_fScrollOffsetY += fPosChanged; |
1266 } | |
1267 return TRUE; | 1262 return TRUE; |
1268 } | 1263 } |
| 1264 |
1269 void CFWL_EditImp::UpdateVAlignment() { | 1265 void CFWL_EditImp::UpdateVAlignment() { |
1270 IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); | 1266 IFDE_TxtEdtPage* pPage = m_pEdtEngine->GetPage(0); |
1271 if (!pPage) | 1267 if (!pPage) |
1272 return; | 1268 return; |
1273 const CFX_RectF& rtFDE = pPage->GetContentsBox(); | 1269 const CFX_RectF& rtFDE = pPage->GetContentsBox(); |
1274 FX_FLOAT fOffsetY = 0.0f; | 1270 FX_FLOAT fOffsetY = 0.0f; |
1275 FX_FLOAT fSpaceAbove = 0.0f; | 1271 FX_FLOAT fSpaceAbove = 0.0f; |
1276 FX_FLOAT fSpaceBelow = 0.0f; | 1272 FX_FLOAT fSpaceBelow = 0.0f; |
1277 CFX_SizeF* pSpace = static_cast<CFX_SizeF*>( | 1273 CFX_SizeF* pSpace = static_cast<CFX_SizeF*>( |
1278 GetThemeCapacity(CFWL_WidgetCapacity::SpaceAboveBelow)); | 1274 GetThemeCapacity(CFWL_WidgetCapacity::SpaceAboveBelow)); |
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1585 m_pHorzScrollBar->Update(); | 1581 m_pHorzScrollBar->Update(); |
1586 } | 1582 } |
1587 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, FALSE); | 1583 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, FALSE); |
1588 } else if (m_pHorzScrollBar) { | 1584 } else if (m_pHorzScrollBar) { |
1589 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, TRUE); | 1585 m_pHorzScrollBar->SetStates(FWL_WGTSTATE_Invisible, TRUE); |
1590 } | 1586 } |
1591 if (bShowVertScrollbar || bShowHorzScrollbar) { | 1587 if (bShowVertScrollbar || bShowHorzScrollbar) { |
1592 UpdateScroll(); | 1588 UpdateScroll(); |
1593 } | 1589 } |
1594 } | 1590 } |
| 1591 |
1595 void CFWL_EditImp::DeviceToEngine(CFX_PointF& pt) { | 1592 void CFWL_EditImp::DeviceToEngine(CFX_PointF& pt) { |
1596 pt.x += -m_rtEngine.left + m_fScrollOffsetX; | 1593 pt.x += m_fScrollOffsetX - m_rtEngine.left; |
1597 pt.y += -m_rtEngine.top - m_fVAlignOffset + m_fScrollOffsetY; | 1594 pt.y += m_fScrollOffsetY - m_rtEngine.top - m_fVAlignOffset; |
1598 } | 1595 } |
| 1596 |
1599 void CFWL_EditImp::InitScrollBar(FX_BOOL bVert) { | 1597 void CFWL_EditImp::InitScrollBar(FX_BOOL bVert) { |
1600 if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) { | 1598 if ((bVert && m_pVertScrollBar) || (!bVert && m_pHorzScrollBar)) { |
1601 return; | 1599 return; |
1602 } | 1600 } |
1603 CFWL_WidgetImpProperties prop; | 1601 CFWL_WidgetImpProperties prop; |
1604 prop.m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz; | 1602 prop.m_dwStyleExes = bVert ? FWL_STYLEEXT_SCB_Vert : FWL_STYLEEXT_SCB_Horz; |
1605 prop.m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible; | 1603 prop.m_dwStates = FWL_WGTSTATE_Disabled | FWL_WGTSTATE_Invisible; |
1606 prop.m_pParent = m_pInterface; | 1604 prop.m_pParent = m_pInterface; |
1607 prop.m_pThemeProvider = m_pProperties->m_pThemeProvider; | 1605 prop.m_pThemeProvider = m_pProperties->m_pThemeProvider; |
1608 IFWL_ScrollBar* pScrollBar = IFWL_ScrollBar::Create(prop, m_pInterface); | 1606 IFWL_ScrollBar* pScrollBar = IFWL_ScrollBar::Create(prop, m_pInterface); |
1609 pScrollBar->Initialize(); | 1607 pScrollBar->Initialize(); |
1610 (bVert ? &m_pVertScrollBar : &m_pHorzScrollBar)->reset(pScrollBar); | 1608 (bVert ? &m_pVertScrollBar : &m_pHorzScrollBar)->reset(pScrollBar); |
1611 } | 1609 } |
1612 void CFWL_EditImp::InitEngine() { | 1610 void CFWL_EditImp::InitEngine() { |
1613 if (m_pEdtEngine) { | 1611 if (m_pEdtEngine) { |
1614 return; | 1612 return; |
1615 } | 1613 } |
1616 m_pEdtEngine = IFDE_TxtEdtEngine::Create(); | 1614 m_pEdtEngine = IFDE_TxtEdtEngine::Create(); |
1617 } | 1615 } |
1618 | 1616 |
1619 FX_BOOL FWL_ShowCaret(IFWL_Widget* pWidget, | 1617 FX_BOOL FWL_ShowCaret(IFWL_Widget* pWidget, |
1620 FX_BOOL bVisible, | 1618 FX_BOOL bVisible, |
1621 const CFX_RectF* pRtAnchor) { | 1619 const CFX_RectF* pRtAnchor) { |
1622 CXFA_FFWidget* pXFAWidget = (CXFA_FFWidget*)pWidget->GetPrivateData(pWidget); | 1620 CXFA_FFWidget* pXFAWidget = |
1623 if (!pXFAWidget) { | 1621 static_cast<CXFA_FFWidget*>(pWidget->GetPrivateData(pWidget)); |
| 1622 if (!pXFAWidget) |
1624 return FALSE; | 1623 return FALSE; |
1625 } | 1624 |
1626 IXFA_DocProvider* pDocProvider = pXFAWidget->GetDoc()->GetDocProvider(); | 1625 IXFA_DocProvider* pDocProvider = pXFAWidget->GetDoc()->GetDocProvider(); |
1627 if (!pDocProvider) { | 1626 if (!pDocProvider) |
1628 return FALSE; | 1627 return FALSE; |
1629 } | 1628 |
1630 if (bVisible) { | 1629 if (bVisible) { |
1631 CFX_Matrix mt; | 1630 CFX_Matrix mt; |
1632 pXFAWidget->GetRotateMatrix(mt); | 1631 pXFAWidget->GetRotateMatrix(mt); |
1633 CFX_RectF rt(*pRtAnchor); | 1632 CFX_RectF rt(*pRtAnchor); |
1634 mt.TransformRect(rt); | 1633 mt.TransformRect(rt); |
1635 pDocProvider->DisplayCaret(pXFAWidget, bVisible, &rt); | 1634 pDocProvider->DisplayCaret(pXFAWidget, bVisible, &rt); |
1636 return TRUE; | 1635 return TRUE; |
1637 } | 1636 } |
1638 pDocProvider->DisplayCaret(pXFAWidget, bVisible, pRtAnchor); | 1637 pDocProvider->DisplayCaret(pXFAWidget, bVisible, pRtAnchor); |
1639 return TRUE; | 1638 return TRUE; |
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2171 } | 2170 } |
2172 CFX_RectF rect; | 2171 CFX_RectF rect; |
2173 m_pOwner->GetWidgetRect(rect); | 2172 m_pOwner->GetWidgetRect(rect); |
2174 CFX_RectF rtInvalidate; | 2173 CFX_RectF rtInvalidate; |
2175 rtInvalidate.Set(0, 0, rect.width + 2, rect.height + 2); | 2174 rtInvalidate.Set(0, 0, rect.width + 2, rect.height + 2); |
2176 m_pOwner->Repaint(&rtInvalidate); | 2175 m_pOwner->Repaint(&rtInvalidate); |
2177 } | 2176 } |
2178 return TRUE; | 2177 return TRUE; |
2179 } | 2178 } |
2180 void CFWL_EditImpDelegate::DoCursor(CFWL_MsgMouse* pMsg) {} | 2179 void CFWL_EditImpDelegate::DoCursor(CFWL_MsgMouse* pMsg) {} |
OLD | NEW |