Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Side by Side Diff: xfa/fwl/core/fwl_widgetmgrimp.cpp

Issue 1928963004: Cleanup IFWL_Adapter interfaces. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Rebase to master Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fwl/core/fwl_widgetmgrimp.h ('k') | xfa/fwl/core/ifwl_adapternative.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
11 #include "xfa/fwl/core/fwl_noteimp.h" 11 #include "xfa/fwl/core/fwl_noteimp.h"
12 #include "xfa/fwl/core/fwl_widgetimp.h" 12 #include "xfa/fwl/core/fwl_widgetimp.h"
13 #include "xfa/fwl/core/ifwl_adapternative.h"
14 #include "xfa/fwl/core/ifwl_adapterwidgetmgr.h"
15 #include "xfa/fwl/core/ifwl_app.h" 13 #include "xfa/fwl/core/ifwl_app.h"
16 #include "xfa/fwl/core/ifwl_form.h" 14 #include "xfa/fwl/core/ifwl_form.h"
15 #include "xfa/fxfa/app/xfa_fwladapter.h"
16 #include "xfa/fxfa/include/xfa_ffapp.h"
17 17
18 namespace { 18 namespace {
19 19
20 const int kNeedRepaintHitPoints = 12; 20 const int kNeedRepaintHitPoints = 12;
21 const int kNeedRepaintHitPiece = 3; 21 const int kNeedRepaintHitPiece = 3;
22 22
23 struct FWL_NEEDREPAINTHITDATA { 23 struct FWL_NEEDREPAINTHITDATA {
24 CFX_PointF hitPoint; 24 CFX_PointF hitPoint;
25 bool bNotNeedRepaint; 25 bool bNotNeedRepaint;
26 bool bNotContainByDirty; 26 bool bNotContainByDirty;
27 }; 27 };
28 28
29 } // namespace 29 } // namespace
30 30
31 FX_BOOL FWL_UseOffscreen(IFWL_Widget* pWidget) { 31 FX_BOOL FWL_UseOffscreen(IFWL_Widget* pWidget) {
32 #if (_FX_OS_ == _FX_MACOSX_) 32 #if (_FX_OS_ == _FX_MACOSX_)
33 return FALSE; 33 return FALSE;
34 #else 34 #else
35 return pWidget->GetStyles() & FWL_WGTSTYLE_Offscreen; 35 return pWidget->GetStyles() & FWL_WGTSTYLE_Offscreen;
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(IFWL_AdapterNative* pAdapterNative) 46 CFWL_WidgetMgr::CFWL_WidgetMgr(CXFA_FFApp* pAdapterNative) : m_dwCapability(0) {
47 : m_dwCapability(0) {
48 m_pDelegate = new CFWL_WidgetMgrDelegate(this); 47 m_pDelegate = new CFWL_WidgetMgrDelegate(this);
49 m_pAdapter = pAdapterNative->GetWidgetMgr(m_pDelegate); 48 m_pAdapter = pAdapterNative->GetWidgetMgr(m_pDelegate);
50 ASSERT(m_pAdapter); 49 ASSERT(m_pAdapter);
51 CFWL_WidgetMgrItem* pRoot = new CFWL_WidgetMgrItem; 50 CFWL_WidgetMgrItem* pRoot = new CFWL_WidgetMgrItem;
52 m_mapWidgetItem.SetAt(NULL, pRoot); 51 m_mapWidgetItem.SetAt(NULL, pRoot);
53 52
54 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) 53 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
55 m_rtScreen.Reset(); 54 m_rtScreen.Reset();
56 #endif 55 #endif
57 } 56 }
(...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 pItem->pNext->pPrevious = pItem->pPrevious; 352 pItem->pNext->pPrevious = pItem->pPrevious;
354 } 353 }
355 if (pItem->pParent->pChild == pItem) { 354 if (pItem->pParent->pChild == pItem) {
356 pItem->pParent->pChild = pItem->pNext; 355 pItem->pParent->pChild = pItem->pNext;
357 } 356 }
358 pItem->pNext = NULL; 357 pItem->pNext = NULL;
359 pItem->pPrevious = NULL; 358 pItem->pPrevious = NULL;
360 } 359 }
361 pItem->pParent = pParentItem; 360 pItem->pParent = pParentItem;
362 SetWidgetIndex(pChild, -1); 361 SetWidgetIndex(pChild, -1);
363 if (!m_pAdapter)
364 return;
365 m_pAdapter->SetParentWidget(pChild, pParent);
366 } 362 }
363
367 FX_BOOL CFWL_WidgetMgr::IsChild(IFWL_Widget* pChild, IFWL_Widget* pParent) { 364 FX_BOOL CFWL_WidgetMgr::IsChild(IFWL_Widget* pChild, IFWL_Widget* pParent) {
368 IFWL_Widget* pTemp = pChild; 365 IFWL_Widget* pTemp = pChild;
369 do { 366 do {
370 if (pTemp == pParent) { 367 if (pTemp == pParent) {
371 return TRUE; 368 return TRUE;
372 } 369 }
373 pTemp = GetWidget(pTemp, FWL_WGTRELATION_Parent); 370 pTemp = GetWidget(pTemp, FWL_WGTRELATION_Parent);
374 } while (pTemp); 371 } while (pTemp);
375 return FALSE; 372 return FALSE;
376 } 373 }
377 FWL_ERR CFWL_WidgetMgr::CreateWidget_Native(IFWL_Widget* pWidget) {
378 if (!IsAbleNative(pWidget)) {
379 return FWL_ERR_Succeeded;
380 }
381 return m_pAdapter->CreateWidget(pWidget, pWidget->GetOwner());
382 }
383 FWL_ERR CFWL_WidgetMgr::DestroyWidget_Native(IFWL_Widget* pWidget) {
384 if (!IsAbleNative(pWidget)) {
385 return FWL_ERR_Succeeded;
386 }
387 return m_pAdapter->DestroyWidget(pWidget);
388 }
389 FWL_ERR CFWL_WidgetMgr::GetWidgetRect_Native(IFWL_Widget* pWidget,
390 CFX_RectF& rect) {
391 if (!IsAbleNative(pWidget)) {
392 return FWL_ERR_Succeeded;
393 }
394 return m_pAdapter->GetWidgetRect(pWidget, rect);
395 }
396 FWL_ERR CFWL_WidgetMgr::SetWidgetRect_Native(IFWL_Widget* pWidget, 374 FWL_ERR CFWL_WidgetMgr::SetWidgetRect_Native(IFWL_Widget* pWidget,
397 const CFX_RectF& rect) { 375 const CFX_RectF& rect) {
398 if (FWL_UseOffscreen(pWidget)) { 376 if (FWL_UseOffscreen(pWidget)) {
399 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget); 377 CFWL_WidgetMgrItem* pItem = GetWidgetMgrItem(pWidget);
400 pItem->iRedrawCounter++; 378 pItem->iRedrawCounter++;
401 if (pItem->pOffscreen) { 379 if (pItem->pOffscreen) {
402 CFX_RenderDevice* pDevice = pItem->pOffscreen->GetRenderDevice(); 380 CFX_RenderDevice* pDevice = pItem->pOffscreen->GetRenderDevice();
403 if (pDevice && pDevice->GetBitmap()) { 381 if (pDevice && pDevice->GetBitmap()) {
404 CFX_DIBitmap* pBitmap = pDevice->GetBitmap(); 382 CFX_DIBitmap* pBitmap = pDevice->GetBitmap();
405 if (pBitmap->GetWidth() - rect.width > 1 || 383 if (pBitmap->GetWidth() - rect.width > 1 ||
406 pBitmap->GetHeight() - rect.height > 1) { 384 pBitmap->GetHeight() - rect.height > 1) {
407 delete pItem->pOffscreen; 385 delete pItem->pOffscreen;
408 pItem->pOffscreen = NULL; 386 pItem->pOffscreen = NULL;
409 } 387 }
410 } 388 }
411 } 389 }
412 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_) 390 #if (_FX_OS_ == _FX_WIN32_DESKTOP_) || (_FX_OS_ == _FX_WIN64_)
413 pItem->bOutsideChanged = !m_rtScreen.Contains(rect); 391 pItem->bOutsideChanged = !m_rtScreen.Contains(rect);
414 #endif 392 #endif
415 } 393 }
416 return m_pAdapter->SetWidgetRect(pWidget, rect); 394 return FWL_ERR_Succeeded;
417 }
418 FWL_ERR CFWL_WidgetMgr::SetWidgetPosition_Native(IFWL_Widget* pWidget,
419 FX_FLOAT fx,
420 FX_FLOAT fy) {
421 return m_pAdapter->SetWidgetPosition(pWidget, fx, fy);
422 }
423 FWL_ERR CFWL_WidgetMgr::SetWidgetIcon_Native(IFWL_Widget* pWidget,
424 const CFX_DIBitmap* pIcon,
425 FX_BOOL bBig) {
426 return m_pAdapter->SetWidgetIcon(pWidget, pIcon, bBig);
427 }
428 FWL_ERR CFWL_WidgetMgr::SetWidgetCaption_Native(
429 IFWL_Widget* pWidget,
430 const CFX_WideStringC& wsCaption) {
431 return m_pAdapter->SetWidgetCaption(pWidget, wsCaption);
432 }
433 FWL_ERR CFWL_WidgetMgr::SetBorderRegion_Native(IFWL_Widget* pWidget,
434 CFX_Path* pPath) {
435 return m_pAdapter->SetBorderRegion(pWidget, pPath);
436 }
437 FWL_ERR CFWL_WidgetMgr::ShowWidget_Native(IFWL_Widget* pWidget) {
438 return m_pAdapter->ShowWidget(pWidget);
439 }
440 FWL_ERR CFWL_WidgetMgr::HideWidget_Native(IFWL_Widget* pWidget) {
441 return m_pAdapter->HideWidget(pWidget);
442 }
443 FWL_ERR CFWL_WidgetMgr::SetNormal_Native(IFWL_Widget* pWidget) {
444 return m_pAdapter->SetNormal(pWidget);
445 }
446 FWL_ERR CFWL_WidgetMgr::SetMaximize_Native(IFWL_Widget* pWidget) {
447 return m_pAdapter->SetMaximize(pWidget);
448 }
449 FWL_ERR CFWL_WidgetMgr::SetMinimize_Native(IFWL_Widget* pWidget) {
450 return m_pAdapter->SetMinimize(pWidget);
451 }
452 FX_BOOL CFWL_WidgetMgr::CheckMessage_Native() {
453 return m_pAdapter->CheckMessage();
454 }
455 FWL_ERR CFWL_WidgetMgr::DispatchMessage_Native() {
456 return m_pAdapter->DispatchMessage();
457 }
458 FX_BOOL CFWL_WidgetMgr::IsIdleMessage_Native() {
459 return m_pAdapter->IsIdleMessage();
460 }
461 FWL_ERR CFWL_WidgetMgr::Exit_Native(int32_t iExitCode) {
462 return m_pAdapter->Exit(iExitCode);
463 }
464 FWL_ERR CFWL_WidgetMgr::CreateWidgetWithNativeId_Native(IFWL_Widget* pWidget,
465 void* vp) {
466 return m_pAdapter->CreateWidgetWithNativeId(pWidget, vp);
467 } 395 }
468 IFWL_Widget* CFWL_WidgetMgr::GetWidgetAtPoint(IFWL_Widget* parent, 396 IFWL_Widget* CFWL_WidgetMgr::GetWidgetAtPoint(IFWL_Widget* parent,
469 FX_FLOAT x, 397 FX_FLOAT x,
470 FX_FLOAT y) { 398 FX_FLOAT y) {
471 if (!parent) 399 if (!parent)
472 return NULL; 400 return NULL;
473 FX_FLOAT x1; 401 FX_FLOAT x1;
474 FX_FLOAT y1; 402 FX_FLOAT y1;
475 IFWL_Widget* child = GetWidget(parent, FWL_WGTRELATION_LastChild); 403 IFWL_Widget* child = GetWidget(parent, FWL_WGTRELATION_LastChild);
476 while (child) { 404 while (child) {
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 618
691 bool CFWL_WidgetMgr::IsFormDisabled() { 619 bool CFWL_WidgetMgr::IsFormDisabled() {
692 return !!(m_dwCapability & FWL_WGTMGR_DisableForm); 620 return !!(m_dwCapability & FWL_WGTMGR_DisableForm);
693 } 621 }
694 622
695 FX_BOOL CFWL_WidgetMgr::GetAdapterPopupPos(IFWL_Widget* pWidget, 623 FX_BOOL CFWL_WidgetMgr::GetAdapterPopupPos(IFWL_Widget* pWidget,
696 FX_FLOAT fMinHeight, 624 FX_FLOAT fMinHeight,
697 FX_FLOAT fMaxHeight, 625 FX_FLOAT fMaxHeight,
698 const CFX_RectF& rtAnchor, 626 const CFX_RectF& rtAnchor,
699 CFX_RectF& rtPopup) { 627 CFX_RectF& rtPopup) {
700 IFWL_AdapterWidgetMgr* pSDApapter = GetAdapterWidgetMgr(); 628 CXFA_FWLAdapterWidgetMgr* pSDApapter = GetAdapterWidgetMgr();
701 return pSDApapter->GetPopupPos(pWidget, fMinHeight, fMaxHeight, rtAnchor, 629 return pSDApapter->GetPopupPos(pWidget, fMinHeight, fMaxHeight, rtAnchor,
702 rtPopup); 630 rtPopup);
703 } 631 }
704 CFWL_WidgetMgrDelegate::CFWL_WidgetMgrDelegate(CFWL_WidgetMgr* pWidgetMgr) 632 CFWL_WidgetMgrDelegate::CFWL_WidgetMgrDelegate(CFWL_WidgetMgr* pWidgetMgr)
705 : m_pWidgetMgr(pWidgetMgr) {} 633 : m_pWidgetMgr(pWidgetMgr) {}
706 FWL_ERR CFWL_WidgetMgrDelegate::OnSetCapability(uint32_t dwCapability) { 634 FWL_ERR CFWL_WidgetMgrDelegate::OnSetCapability(uint32_t dwCapability) {
707 m_pWidgetMgr->m_dwCapability = dwCapability; 635 m_pWidgetMgr->m_dwCapability = dwCapability;
708 return FWL_ERR_Succeeded; 636 return FWL_ERR_Succeeded;
709 } 637 }
710 int32_t CFWL_WidgetMgrDelegate::OnProcessMessageToForm(CFWL_Message* pMessage) { 638 int32_t CFWL_WidgetMgrDelegate::OnProcessMessageToForm(CFWL_Message* pMessage) {
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
1005 temp.Deflate(50, 50); 933 temp.Deflate(50, 50);
1006 if (!temp.Contains(r)) 934 if (!temp.Contains(r))
1007 return FALSE; 935 return FALSE;
1008 936
1009 pItem->bOutsideChanged = FALSE; 937 pItem->bOutsideChanged = FALSE;
1010 } 938 }
1011 #endif 939 #endif
1012 940
1013 return pItem->iRedrawCounter == 0; 941 return pItem->iRedrawCounter == 0;
1014 } 942 }
OLDNEW
« no previous file with comments | « xfa/fwl/core/fwl_widgetmgrimp.h ('k') | xfa/fwl/core/ifwl_adapternative.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698