| 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/core/fwl_widgetmgrimp.h" | 7 #include "xfa/fwl/core/fwl_widgetmgrimp.h" |
| 8 | 8 |
| 9 #include "xfa/fwl/core/cfwl_message.h" | 9 #include "xfa/fwl/core/cfwl_message.h" |
| 10 #include "xfa/fwl/core/fwl_appimp.h" | 10 #include "xfa/fwl/core/fwl_appimp.h" |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 #endif | 36 #endif |
| 37 } | 37 } |
| 38 | 38 |
| 39 IFWL_WidgetMgr* FWL_GetWidgetMgr() { | 39 IFWL_WidgetMgr* FWL_GetWidgetMgr() { |
| 40 IFWL_App* pApp = FWL_GetApp(); | 40 IFWL_App* pApp = FWL_GetApp(); |
| 41 if (!pApp) | 41 if (!pApp) |
| 42 return NULL; | 42 return NULL; |
| 43 return pApp->GetWidgetMgr(); | 43 return pApp->GetWidgetMgr(); |
| 44 } | 44 } |
| 45 | 45 |
| 46 CFWL_WidgetMgr::CFWL_WidgetMgr(CXFA_FFApp* pAdapterNative) : m_dwCapability(0) { | 46 CFWL_WidgetMgr::CFWL_WidgetMgr(CXFA_FFApp* pAdapterNative) |
| 47 m_pDelegate = new CFWL_WidgetMgrDelegate(this); | 47 : m_dwCapability(0), |
| 48 m_pAdapter = pAdapterNative->GetWidgetMgr(m_pDelegate); | 48 m_pDelegate(new CFWL_WidgetMgrDelegate(this)), |
| 49 m_pAdapter(pAdapterNative->GetWidgetMgr(m_pDelegate.get())) { |
| 49 ASSERT(m_pAdapter); | 50 ASSERT(m_pAdapter); |
| 50 CFWL_WidgetMgrItem* pRoot = new CFWL_WidgetMgrItem; | 51 m_mapWidgetItem[nullptr].reset(new CFWL_WidgetMgrItem); |
| 51 m_mapWidgetItem.SetAt(NULL, pRoot); | |
| 52 | |
| 53 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) | 52 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) |
| 54 m_rtScreen.Reset(); | 53 m_rtScreen.Reset(); |
| 55 #endif | 54 #endif |
| 56 } | 55 } |
| 57 | 56 |
| 58 CFWL_WidgetMgr::~CFWL_WidgetMgr() { | 57 CFWL_WidgetMgr::~CFWL_WidgetMgr() {} |
| 59 FX_POSITION ps = m_mapWidgetItem.GetStartPosition(); | |
| 60 while (ps) { | |
| 61 void* pWidget; | |
| 62 CFWL_WidgetMgrItem* pItem; | |
| 63 m_mapWidgetItem.GetNextAssoc(ps, pWidget, (void*&)pItem); | |
| 64 delete pItem; | |
| 65 } | |
| 66 m_mapWidgetItem.RemoveAll(); | |
| 67 delete m_pDelegate; | |
| 68 } | |
| 69 | 58 |
| 70 int32_t CFWL_WidgetMgr::CountWidgets(IFWL_Widget* pParent) { | 59 int32_t CFWL_WidgetMgr::CountWidgets(IFWL_Widget* pParent) { |
| 71 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); | 60 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); |
| 72 return TravelWidgetMgr(pParentItem, NULL, NULL); | 61 return TravelWidgetMgr(pParentItem, NULL, NULL); |
| 73 } | 62 } |
| 74 IFWL_Widget* CFWL_WidgetMgr::GetWidget(int32_t nIndex, IFWL_Widget* pParent) { | 63 IFWL_Widget* CFWL_WidgetMgr::GetWidget(int32_t nIndex, IFWL_Widget* pParent) { |
| 75 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); | 64 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); |
| 76 IFWL_Widget* pWidget = NULL; | 65 IFWL_Widget* pWidget = NULL; |
| 77 TravelWidgetMgr(pParentItem, &nIndex, NULL, &pWidget); | 66 TravelWidgetMgr(pParentItem, &nIndex, NULL, &pWidget); |
| 78 return pWidget; | 67 return pWidget; |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 241 return FWL_Error::Indefinite; | 230 return FWL_Error::Indefinite; |
| 242 pWidget->TransformTo(pNative, rect.left, rect.top); | 231 pWidget->TransformTo(pNative, rect.left, rect.top); |
| 243 } | 232 } |
| 244 AddRedrawCounts(pNative); | 233 AddRedrawCounts(pNative); |
| 245 return m_pAdapter->RepaintWidget(pNative, &rect); | 234 return m_pAdapter->RepaintWidget(pNative, &rect); |
| 246 } | 235 } |
| 247 void CFWL_WidgetMgr::AddWidget(IFWL_Widget* pWidget) { | 236 void CFWL_WidgetMgr::AddWidget(IFWL_Widget* pWidget) { |
| 248 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(NULL); | 237 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(NULL); |
| 249 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); | 238 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
| 250 if (!pItem) { | 239 if (!pItem) { |
| 251 pItem = new CFWL_WidgetMgrItem; | 240 pItem = new CFWL_WidgetMgrItem(pWidget); |
| 252 pItem->pWidget = pWidget; | 241 m_mapWidgetItem[pWidget].reset(pItem); |
| 253 m_mapWidgetItem.SetAt(pWidget, pItem); | |
| 254 } | 242 } |
| 255 if (pItem->pParent && pItem->pParent != pParentItem) { | 243 if (pItem->pParent && pItem->pParent != pParentItem) { |
| 256 if (pItem->pPrevious) { | 244 if (pItem->pPrevious) { |
| 257 pItem->pPrevious->pNext = pItem->pNext; | 245 pItem->pPrevious->pNext = pItem->pNext; |
| 258 } | 246 } |
| 259 if (pItem->pNext) { | 247 if (pItem->pNext) { |
| 260 pItem->pNext->pPrevious = pItem->pPrevious; | 248 pItem->pNext->pPrevious = pItem->pPrevious; |
| 261 } | 249 } |
| 262 if (pItem->pParent->pChild == pItem) { | 250 if (pItem->pParent->pChild == pItem) { |
| 263 pItem->pParent->pChild = pItem->pNext; | 251 pItem->pParent->pChild = pItem->pNext; |
| 264 } | 252 } |
| 265 } | 253 } |
| 266 pItem->pParent = pParentItem; | 254 pItem->pParent = pParentItem; |
| 267 SetWidgetIndex(pWidget, -1); | 255 SetWidgetIndex(pWidget, -1); |
| 268 } | 256 } |
| 269 void CFWL_WidgetMgr::InsertWidget(IFWL_Widget* pParent, | 257 void CFWL_WidgetMgr::InsertWidget(IFWL_Widget* pParent, |
| 270 IFWL_Widget* pChild, | 258 IFWL_Widget* pChild, |
| 271 int32_t nIndex) { | 259 int32_t nIndex) { |
| 272 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); | 260 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); |
| 273 if (!pParentItem) { | 261 if (!pParentItem) { |
| 274 pParentItem = new CFWL_WidgetMgrItem; | 262 pParentItem = new CFWL_WidgetMgrItem(pParent); |
| 275 pParentItem->pWidget = pParent; | 263 m_mapWidgetItem[pParent].reset(pParentItem); |
| 276 m_mapWidgetItem.SetAt(pParent, pParentItem); | 264 pParentItem->pParent = GetWidgetMgrItem(nullptr); |
| 277 CFWL_WidgetMgrItem* pRoot = GetWidgetMgrItem(NULL); | |
| 278 pParentItem->pParent = pRoot; | |
| 279 SetWidgetIndex(pParent, -1); | 265 SetWidgetIndex(pParent, -1); |
| 280 } | 266 } |
| 281 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pChild); | 267 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pChild); |
| 282 if (!pItem) { | 268 if (!pItem) { |
| 283 pItem = new CFWL_WidgetMgrItem; | 269 pItem = new CFWL_WidgetMgrItem(pChild); |
| 284 pItem->pWidget = pChild; | 270 m_mapWidgetItem[pChild].reset(pItem); |
| 285 m_mapWidgetItem.SetAt(pChild, pItem); | |
| 286 } | 271 } |
| 287 if (pItem->pParent && pItem->pParent != pParentItem) { | 272 if (pItem->pParent && pItem->pParent != pParentItem) { |
| 288 if (pItem->pPrevious) { | 273 if (pItem->pPrevious) { |
| 289 pItem->pPrevious->pNext = pItem->pNext; | 274 pItem->pPrevious->pNext = pItem->pNext; |
| 290 } | 275 } |
| 291 if (pItem->pNext) { | 276 if (pItem->pNext) { |
| 292 pItem->pNext->pPrevious = pItem->pPrevious; | 277 pItem->pNext->pPrevious = pItem->pPrevious; |
| 293 } | 278 } |
| 294 if (pItem->pParent->pChild == pItem) { | 279 if (pItem->pParent->pChild == pItem) { |
| 295 pItem->pParent->pChild = pItem->pNext; | 280 pItem->pParent->pChild = pItem->pNext; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 311 } | 296 } |
| 312 if (pItem->pParent && pItem->pParent->pChild == pItem) { | 297 if (pItem->pParent && pItem->pParent->pChild == pItem) { |
| 313 pItem->pParent->pChild = pItem->pNext; | 298 pItem->pParent->pChild = pItem->pNext; |
| 314 } | 299 } |
| 315 CFWL_WidgetMgrItem* pChild = pItem->pChild; | 300 CFWL_WidgetMgrItem* pChild = pItem->pChild; |
| 316 while (pChild) { | 301 while (pChild) { |
| 317 CFWL_WidgetMgrItem* pNext = pChild->pNext; | 302 CFWL_WidgetMgrItem* pNext = pChild->pNext; |
| 318 RemoveWidget(pChild->pWidget); | 303 RemoveWidget(pChild->pWidget); |
| 319 pChild = pNext; | 304 pChild = pNext; |
| 320 } | 305 } |
| 321 m_mapWidgetItem.RemoveKey(pWidget); | 306 m_mapWidgetItem.erase(pWidget); |
| 322 delete pItem; | |
| 323 } | 307 } |
| 324 void CFWL_WidgetMgr::SetOwner(IFWL_Widget* pOwner, IFWL_Widget* pOwned) { | 308 void CFWL_WidgetMgr::SetOwner(IFWL_Widget* pOwner, IFWL_Widget* pOwned) { |
| 325 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pOwner); | 309 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pOwner); |
| 326 if (!pParentItem) { | 310 if (!pParentItem) { |
| 327 pParentItem = new CFWL_WidgetMgrItem; | 311 pParentItem = new CFWL_WidgetMgrItem(pOwner); |
| 328 pParentItem->pWidget = pOwner; | 312 m_mapWidgetItem[pOwner].reset(pParentItem); |
| 329 m_mapWidgetItem.SetAt(pOwner, pParentItem); | 313 pParentItem->pParent = GetWidgetMgrItem(nullptr); |
| 330 CFWL_WidgetMgrItem* pRoot = GetWidgetMgrItem(NULL); | |
| 331 pParentItem->pParent = pRoot; | |
| 332 SetWidgetIndex(pOwner, -1); | 314 SetWidgetIndex(pOwner, -1); |
| 333 } | 315 } |
| 334 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pOwned); | 316 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pOwned); |
| 335 if (!pItem) { | 317 if (!pItem) { |
| 336 pItem = new CFWL_WidgetMgrItem; | 318 pItem = new CFWL_WidgetMgrItem(pOwned); |
| 337 pItem->pWidget = pOwned; | 319 m_mapWidgetItem[pOwned].reset(pItem); |
| 338 m_mapWidgetItem.SetAt(pOwned, pItem); | |
| 339 } | 320 } |
| 340 pItem->pOwner = pParentItem; | 321 pItem->pOwner = pParentItem; |
| 341 } | 322 } |
| 342 void CFWL_WidgetMgr::SetParent(IFWL_Widget* pParent, IFWL_Widget* pChild) { | 323 void CFWL_WidgetMgr::SetParent(IFWL_Widget* pParent, IFWL_Widget* pChild) { |
| 343 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); | 324 CFWL_WidgetMgrItem* pParentItem = GetWidgetMgrItem(pParent); |
| 344 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pChild); | 325 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pChild); |
| 345 if (!pItem) | 326 if (!pItem) |
| 346 return; | 327 return; |
| 347 if (pItem->pParent && pItem->pParent != pParentItem) { | 328 if (pItem->pParent && pItem->pParent != pParentItem) { |
| 348 if (pItem->pPrevious) { | 329 if (pItem->pPrevious) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 376 const CFX_RectF& rect) { | 357 const CFX_RectF& rect) { |
| 377 if (FWL_UseOffscreen(pWidget)) { | 358 if (FWL_UseOffscreen(pWidget)) { |
| 378 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); | 359 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
| 379 pItem->iRedrawCounter++; | 360 pItem->iRedrawCounter++; |
| 380 if (pItem->pOffscreen) { | 361 if (pItem->pOffscreen) { |
| 381 CFX_RenderDevice* pDevice = pItem->pOffscreen->GetRenderDevice(); | 362 CFX_RenderDevice* pDevice = pItem->pOffscreen->GetRenderDevice(); |
| 382 if (pDevice && pDevice->GetBitmap()) { | 363 if (pDevice && pDevice->GetBitmap()) { |
| 383 CFX_DIBitmap* pBitmap = pDevice->GetBitmap(); | 364 CFX_DIBitmap* pBitmap = pDevice->GetBitmap(); |
| 384 if (pBitmap->GetWidth() - rect.width > 1 || | 365 if (pBitmap->GetWidth() - rect.width > 1 || |
| 385 pBitmap->GetHeight() - rect.height > 1) { | 366 pBitmap->GetHeight() - rect.height > 1) { |
| 386 delete pItem->pOffscreen; | 367 pItem->pOffscreen.reset(); |
| 387 pItem->pOffscreen = NULL; | |
| 388 } | 368 } |
| 389 } | 369 } |
| 390 } | 370 } |
| 391 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) | 371 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) |
| 392 pItem->bOutsideChanged = !m_rtScreen.Contains(rect); | 372 pItem->bOutsideChanged = !m_rtScreen.Contains(rect); |
| 393 #endif | 373 #endif |
| 394 } | 374 } |
| 395 return FWL_Error::Succeeded; | 375 return FWL_Error::Succeeded; |
| 396 } | 376 } |
| 397 | 377 |
| (...skipping 24 matching lines...) Expand all Loading... |
| 422 } | 402 } |
| 423 } | 403 } |
| 424 child = GetWidget(child, FWL_WGTRELATION_PriorSibling); | 404 child = GetWidget(child, FWL_WGTRELATION_PriorSibling); |
| 425 } | 405 } |
| 426 return parent; | 406 return parent; |
| 427 } | 407 } |
| 428 | 408 |
| 429 void CFWL_WidgetMgr::NotifySizeChanged(IFWL_Widget* pForm, | 409 void CFWL_WidgetMgr::NotifySizeChanged(IFWL_Widget* pForm, |
| 430 FX_FLOAT fx, | 410 FX_FLOAT fx, |
| 431 FX_FLOAT fy) { | 411 FX_FLOAT fy) { |
| 432 if (!FWL_UseOffscreen(pForm)) | 412 if (FWL_UseOffscreen(pForm)) |
| 433 return; | 413 GetWidgetMgrItem(pForm)->pOffscreen.reset(); |
| 434 | |
| 435 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pForm); | |
| 436 delete pItem->pOffscreen; | |
| 437 pItem->pOffscreen = nullptr; | |
| 438 } | 414 } |
| 439 | 415 |
| 440 IFWL_Widget* CFWL_WidgetMgr::nextTab(IFWL_Widget* parent, | 416 IFWL_Widget* CFWL_WidgetMgr::nextTab(IFWL_Widget* parent, |
| 441 IFWL_Widget* focus, | 417 IFWL_Widget* focus, |
| 442 FX_BOOL& bFind) { | 418 FX_BOOL& bFind) { |
| 443 IFWL_Widget* child = | 419 IFWL_Widget* child = |
| 444 FWL_GetWidgetMgr()->GetWidget(parent, FWL_WGTRELATION_FirstChild); | 420 FWL_GetWidgetMgr()->GetWidget(parent, FWL_WGTRELATION_FirstChild); |
| 445 while (child) { | 421 while (child) { |
| 446 if (focus == child) { | 422 if (focus == child) { |
| 447 bFind = TRUE; | 423 bFind = TRUE; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 534 return NULL; | 510 return NULL; |
| 535 } | 511 } |
| 536 void CFWL_WidgetMgr::AddRedrawCounts(IFWL_Widget* pWidget) { | 512 void CFWL_WidgetMgr::AddRedrawCounts(IFWL_Widget* pWidget) { |
| 537 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); | 513 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
| 538 (pItem->iRedrawCounter)++; | 514 (pItem->iRedrawCounter)++; |
| 539 } | 515 } |
| 540 void CFWL_WidgetMgr::ResetRedrawCounts(IFWL_Widget* pWidget) { | 516 void CFWL_WidgetMgr::ResetRedrawCounts(IFWL_Widget* pWidget) { |
| 541 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); | 517 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); |
| 542 pItem->iRedrawCounter = 0; | 518 pItem->iRedrawCounter = 0; |
| 543 } | 519 } |
| 544 CFWL_WidgetMgrItem* CFWL_WidgetMgr::GetWidgetMgrItem(IFWL_Widget* pWidget) { | 520 CFWL_WidgetMgrItem* CFWL_WidgetMgr::GetWidgetMgrItem( |
| 545 return static_cast<CFWL_WidgetMgrItem*>(m_mapWidgetItem.GetValueAt(pWidget)); | 521 IFWL_Widget* pWidget) const { |
| 522 auto it = m_mapWidgetItem.find(pWidget); |
| 523 return it != m_mapWidgetItem.end() |
| 524 ? static_cast<CFWL_WidgetMgrItem*>(it->second.get()) |
| 525 : nullptr; |
| 546 } | 526 } |
| 547 int32_t CFWL_WidgetMgr::TravelWidgetMgr(CFWL_WidgetMgrItem* pParent, | 527 int32_t CFWL_WidgetMgr::TravelWidgetMgr(CFWL_WidgetMgrItem* pParent, |
| 548 int32_t* pIndex, | 528 int32_t* pIndex, |
| 549 CFWL_WidgetMgrItem* pItem, | 529 CFWL_WidgetMgrItem* pItem, |
| 550 IFWL_Widget** pWidget) { | 530 IFWL_Widget** pWidget) { |
| 551 if (!pParent) { | 531 if (!pParent) { |
| 552 return 0; | 532 return 0; |
| 553 } | 533 } |
| 554 int32_t iCount = 0; | 534 int32_t iCount = 0; |
| 555 CFWL_WidgetMgrItem* pChild = pParent->pChild; | 535 CFWL_WidgetMgrItem* pChild = pParent->pChild; |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 749 | 729 |
| 750 CFX_Graphics* CFWL_WidgetMgrDelegate::DrawWidgetBefore( | 730 CFX_Graphics* CFWL_WidgetMgrDelegate::DrawWidgetBefore( |
| 751 IFWL_Widget* pWidget, | 731 IFWL_Widget* pWidget, |
| 752 CFX_Graphics* pGraphics, | 732 CFX_Graphics* pGraphics, |
| 753 const CFX_Matrix* pMatrix) { | 733 const CFX_Matrix* pMatrix) { |
| 754 if (!FWL_UseOffscreen(pWidget)) | 734 if (!FWL_UseOffscreen(pWidget)) |
| 755 return pGraphics; | 735 return pGraphics; |
| 756 | 736 |
| 757 CFWL_WidgetMgrItem* pItem = m_pWidgetMgr->GetWidgetMgrItem(pWidget); | 737 CFWL_WidgetMgrItem* pItem = m_pWidgetMgr->GetWidgetMgrItem(pWidget); |
| 758 if (!pItem->pOffscreen) { | 738 if (!pItem->pOffscreen) { |
| 759 pItem->pOffscreen = new CFX_Graphics; | 739 pItem->pOffscreen.reset(new CFX_Graphics); |
| 760 CFX_RectF rect; | 740 CFX_RectF rect; |
| 761 pWidget->GetWidgetRect(rect); | 741 pWidget->GetWidgetRect(rect); |
| 762 pItem->pOffscreen->Create((int32_t)rect.width, (int32_t)rect.height, | 742 pItem->pOffscreen->Create((int32_t)rect.width, (int32_t)rect.height, |
| 763 FXDIB_Argb); | 743 FXDIB_Argb); |
| 764 } | 744 } |
| 765 CFX_RectF rect; | 745 CFX_RectF rect; |
| 766 pGraphics->GetClipRect(rect); | 746 pGraphics->GetClipRect(rect); |
| 767 pItem->pOffscreen->SetClipRect(rect); | 747 pItem->pOffscreen->SetClipRect(rect); |
| 768 return pItem->pOffscreen; | 748 return pItem->pOffscreen.get(); |
| 769 } | 749 } |
| 770 | 750 |
| 771 void CFWL_WidgetMgrDelegate::DrawWidgetAfter(IFWL_Widget* pWidget, | 751 void CFWL_WidgetMgrDelegate::DrawWidgetAfter(IFWL_Widget* pWidget, |
| 772 CFX_Graphics* pGraphics, | 752 CFX_Graphics* pGraphics, |
| 773 CFX_RectF& rtClip, | 753 CFX_RectF& rtClip, |
| 774 const CFX_Matrix* pMatrix) { | 754 const CFX_Matrix* pMatrix) { |
| 775 if (FWL_UseOffscreen(pWidget)) { | 755 if (FWL_UseOffscreen(pWidget)) { |
| 776 CFWL_WidgetMgrItem* pItem = m_pWidgetMgr->GetWidgetMgrItem(pWidget); | 756 CFWL_WidgetMgrItem* pItem = m_pWidgetMgr->GetWidgetMgrItem(pWidget); |
| 777 pGraphics->Transfer(pItem->pOffscreen, rtClip.left, rtClip.top, rtClip, | 757 pGraphics->Transfer(pItem->pOffscreen.get(), rtClip.left, rtClip.top, |
| 778 pMatrix); | 758 rtClip, pMatrix); |
| 779 #ifdef _WIN32 | 759 #ifdef _WIN32 |
| 780 pItem->pOffscreen->ClearClip(); | 760 pItem->pOffscreen->ClearClip(); |
| 781 #endif | 761 #endif |
| 782 } | 762 } |
| 783 CFWL_WidgetMgrItem* pItem = m_pWidgetMgr->GetWidgetMgrItem(pWidget); | 763 CFWL_WidgetMgrItem* pItem = m_pWidgetMgr->GetWidgetMgrItem(pWidget); |
| 784 pItem->iRedrawCounter = 0; | 764 pItem->iRedrawCounter = 0; |
| 785 } | 765 } |
| 786 | 766 |
| 787 FX_BOOL CFWL_WidgetMgrDelegate::IsNeedRepaint(IFWL_Widget* pWidget, | 767 FX_BOOL CFWL_WidgetMgrDelegate::IsNeedRepaint(IFWL_Widget* pWidget, |
| 788 CFX_Matrix* pMatrix, | 768 CFX_Matrix* pMatrix, |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 896 temp.Deflate(50, 50); | 876 temp.Deflate(50, 50); |
| 897 if (!temp.Contains(r)) | 877 if (!temp.Contains(r)) |
| 898 return FALSE; | 878 return FALSE; |
| 899 | 879 |
| 900 pItem->bOutsideChanged = FALSE; | 880 pItem->bOutsideChanged = FALSE; |
| 901 } | 881 } |
| 902 #endif | 882 #endif |
| 903 | 883 |
| 904 return pItem->iRedrawCounter == 0; | 884 return pItem->iRedrawCounter == 0; |
| 905 } | 885 } |
| OLD | NEW |