| 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_widgetimp.h" | 7 #include "xfa/fwl/core/fwl_widgetimp.h" |
| 8 | 8 |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 | 10 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 127 return static_cast<CFWL_WidgetImp*>(GetImpl()) | 127 return static_cast<CFWL_WidgetImp*>(GetImpl()) |
| 128 ->SetThemeProvider(pThemeProvider); | 128 ->SetThemeProvider(pThemeProvider); |
| 129 } | 129 } |
| 130 FWL_ERR IFWL_Widget::SetDataProvider(IFWL_DataProvider* pDataProvider) { | 130 FWL_ERR IFWL_Widget::SetDataProvider(IFWL_DataProvider* pDataProvider) { |
| 131 return static_cast<CFWL_WidgetImp*>(GetImpl()) | 131 return static_cast<CFWL_WidgetImp*>(GetImpl()) |
| 132 ->SetDataProvider(pDataProvider); | 132 ->SetDataProvider(pDataProvider); |
| 133 } | 133 } |
| 134 IFWL_WidgetDelegate* IFWL_Widget::SetDelegate(IFWL_WidgetDelegate* pDelegate) { | 134 IFWL_WidgetDelegate* IFWL_Widget::SetDelegate(IFWL_WidgetDelegate* pDelegate) { |
| 135 return static_cast<CFWL_WidgetImp*>(GetImpl())->SetDelegate(pDelegate); | 135 return static_cast<CFWL_WidgetImp*>(GetImpl())->SetDelegate(pDelegate); |
| 136 } | 136 } |
| 137 IFWL_NoteThread* IFWL_Widget::GetOwnerThread() const { | 137 IFWL_Thread* IFWL_Widget::GetOwnerThread() const { |
| 138 return static_cast<CFWL_WidgetImp*>(GetImpl())->GetOwnerThread(); | 138 return static_cast<CFWL_WidgetImp*>(GetImpl())->GetOwnerThread(); |
| 139 } | 139 } |
| 140 CFX_SizeF IFWL_Widget::GetOffsetFromParent(IFWL_Widget* pParent) { | 140 CFX_SizeF IFWL_Widget::GetOffsetFromParent(IFWL_Widget* pParent) { |
| 141 return static_cast<CFWL_WidgetImp*>(GetImpl())->GetOffsetFromParent(pParent); | 141 return static_cast<CFWL_WidgetImp*>(GetImpl())->GetOffsetFromParent(pParent); |
| 142 } | 142 } |
| 143 FWL_ERR CFWL_WidgetImp::Initialize() { | 143 FWL_ERR CFWL_WidgetImp::Initialize() { |
| 144 IFWL_App* pApp = FWL_GetApp(); | 144 IFWL_App* pApp = FWL_GetApp(); |
| 145 if (!pApp) | 145 if (!pApp) |
| 146 return FWL_ERR_Indefinite; | 146 return FWL_ERR_Indefinite; |
| 147 IFWL_AdapterNative* pAdapter = pApp->GetAdapterNative(); | 147 IFWL_AdapterNative* pAdapter = pApp->GetAdapterNative(); |
| 148 if (!pAdapter) | 148 if (!pAdapter) |
| 149 return FWL_ERR_Indefinite; | 149 return FWL_ERR_Indefinite; |
| 150 IFWL_AdapterThreadMgr* pAdapterThread = pAdapter->GetThreadMgr(); | 150 IFWL_AdapterThreadMgr* pAdapterThread = pAdapter->GetThreadMgr(); |
| 151 if (!pAdapterThread) | 151 if (!pAdapterThread) |
| 152 return FWL_ERR_Indefinite; | 152 return FWL_ERR_Indefinite; |
| 153 SetOwnerThread(static_cast<CFWL_NoteThreadImp*>( | 153 SetOwnerThread(static_cast<CFWL_ThreadImp*>( |
| 154 pAdapterThread->GetCurrentThread()->GetImpl())); | 154 pAdapterThread->GetCurrentThread()->GetImpl())); |
| 155 IFWL_Widget* pParent = m_pProperties->m_pParent; | 155 IFWL_Widget* pParent = m_pProperties->m_pParent; |
| 156 m_pWidgetMgr->InsertWidget(pParent, m_pInterface); | 156 m_pWidgetMgr->InsertWidget(pParent, m_pInterface); |
| 157 if (!IsChild()) { | 157 if (!IsChild()) { |
| 158 { | 158 { |
| 159 IFWL_Widget* pOwner = m_pProperties->m_pOwner; | 159 IFWL_Widget* pOwner = m_pProperties->m_pOwner; |
| 160 if (pOwner) { | 160 if (pOwner) { |
| 161 m_pWidgetMgr->SetOwner(pOwner, m_pInterface); | 161 m_pWidgetMgr->SetOwner(pOwner, m_pInterface); |
| 162 } | 162 } |
| 163 } | 163 } |
| (...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 if (!m_pCurDelegate) { | 490 if (!m_pCurDelegate) { |
| 491 m_pCurDelegate = m_pDelegate; | 491 m_pCurDelegate = m_pDelegate; |
| 492 } | 492 } |
| 493 if (!pDelegate) { | 493 if (!pDelegate) { |
| 494 return m_pCurDelegate; | 494 return m_pCurDelegate; |
| 495 } | 495 } |
| 496 IFWL_WidgetDelegate* pOldDelegate = m_pCurDelegate; | 496 IFWL_WidgetDelegate* pOldDelegate = m_pCurDelegate; |
| 497 m_pCurDelegate = pDelegate; | 497 m_pCurDelegate = pDelegate; |
| 498 return pOldDelegate; | 498 return pOldDelegate; |
| 499 } | 499 } |
| 500 IFWL_NoteThread* CFWL_WidgetImp::GetOwnerThread() const { | 500 IFWL_Thread* CFWL_WidgetImp::GetOwnerThread() const { |
| 501 return static_cast<IFWL_NoteThread*>(m_pOwnerThread->GetInterface()); | 501 return static_cast<IFWL_Thread*>(m_pOwnerThread->GetInterface()); |
| 502 } | 502 } |
| 503 FWL_ERR CFWL_WidgetImp::SetOwnerThread(CFWL_NoteThreadImp* pOwnerThread) { | 503 FWL_ERR CFWL_WidgetImp::SetOwnerThread(CFWL_ThreadImp* pOwnerThread) { |
| 504 m_pOwnerThread = pOwnerThread; | 504 m_pOwnerThread = pOwnerThread; |
| 505 return FWL_ERR_Succeeded; | 505 return FWL_ERR_Succeeded; |
| 506 } | 506 } |
| 507 IFWL_Widget* CFWL_WidgetImp::GetInterface() const { | 507 IFWL_Widget* CFWL_WidgetImp::GetInterface() const { |
| 508 return m_pInterface; | 508 return m_pInterface; |
| 509 } | 509 } |
| 510 void CFWL_WidgetImp::SetInterface(IFWL_Widget* pInterface) { | 510 void CFWL_WidgetImp::SetInterface(IFWL_Widget* pInterface) { |
| 511 m_pInterface = pInterface; | 511 m_pInterface = pInterface; |
| 512 } | 512 } |
| 513 CFWL_WidgetImp::CFWL_WidgetImp(const CFWL_WidgetImpProperties& properties, | 513 CFWL_WidgetImp::CFWL_WidgetImp(const CFWL_WidgetImpProperties& properties, |
| (...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 675 CFWL_ThemeText calPart; | 675 CFWL_ThemeText calPart; |
| 676 calPart.m_pWidget = m_pInterface; | 676 calPart.m_pWidget = m_pInterface; |
| 677 calPart.m_wsText = wsText; | 677 calPart.m_wsText = wsText; |
| 678 calPart.m_dwTTOStyles = dwTTOStyles; | 678 calPart.m_dwTTOStyles = dwTTOStyles; |
| 679 calPart.m_iTTOAlign = iTTOAlign; | 679 calPart.m_iTTOAlign = iTTOAlign; |
| 680 pTheme->CalcTextRect(&calPart, rect); | 680 pTheme->CalcTextRect(&calPart, rect); |
| 681 } | 681 } |
| 682 void CFWL_WidgetImp::SetFocus(FX_BOOL bFocus) { | 682 void CFWL_WidgetImp::SetFocus(FX_BOOL bFocus) { |
| 683 if (m_pWidgetMgr->IsFormDisabled()) | 683 if (m_pWidgetMgr->IsFormDisabled()) |
| 684 return; | 684 return; |
| 685 IFWL_NoteThread* pThread = GetOwnerThread(); | 685 IFWL_Thread* pThread = GetOwnerThread(); |
| 686 if (!pThread) | 686 if (!pThread) |
| 687 return; | 687 return; |
| 688 CFWL_NoteDriver* pDriver = | 688 CFWL_NoteDriver* pDriver = |
| 689 static_cast<CFWL_NoteDriver*>(pThread->GetNoteDriver()); | 689 static_cast<CFWL_NoteDriver*>(pThread->GetNoteDriver()); |
| 690 if (!pDriver) | 690 if (!pDriver) |
| 691 return; | 691 return; |
| 692 IFWL_Widget* curFocus = pDriver->GetFocus(); | 692 IFWL_Widget* curFocus = pDriver->GetFocus(); |
| 693 if (bFocus && curFocus != m_pInterface) { | 693 if (bFocus && curFocus != m_pInterface) { |
| 694 pDriver->SetFocus(m_pInterface); | 694 pDriver->SetFocus(m_pInterface); |
| 695 } else if (!bFocus && curFocus == m_pInterface) { | 695 } else if (!bFocus && curFocus == m_pInterface) { |
| 696 pDriver->SetFocus(NULL); | 696 pDriver->SetFocus(NULL); |
| 697 } | 697 } |
| 698 } | 698 } |
| 699 void CFWL_WidgetImp::SetGrab(FX_BOOL bSet) { | 699 void CFWL_WidgetImp::SetGrab(FX_BOOL bSet) { |
| 700 IFWL_NoteThread* pThread = GetOwnerThread(); | 700 IFWL_Thread* pThread = GetOwnerThread(); |
| 701 if (!pThread) | 701 if (!pThread) |
| 702 return; | 702 return; |
| 703 CFWL_NoteDriver* pDriver = | 703 CFWL_NoteDriver* pDriver = |
| 704 static_cast<CFWL_NoteDriver*>(pThread->GetNoteDriver()); | 704 static_cast<CFWL_NoteDriver*>(pThread->GetNoteDriver()); |
| 705 pDriver->SetGrab(m_pInterface, bSet); | 705 pDriver->SetGrab(m_pInterface, bSet); |
| 706 } | 706 } |
| 707 FX_BOOL CFWL_WidgetImp::GetPopupPos(FX_FLOAT fMinHeight, | 707 FX_BOOL CFWL_WidgetImp::GetPopupPos(FX_FLOAT fMinHeight, |
| 708 FX_FLOAT fMaxHeight, | 708 FX_FLOAT fMaxHeight, |
| 709 const CFX_RectF& rtAnchor, | 709 const CFX_RectF& rtAnchor, |
| 710 CFX_RectF& rtPopup) { | 710 CFX_RectF& rtPopup) { |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 rtPopup.height); | 806 rtPopup.height); |
| 807 } | 807 } |
| 808 rtPopup.Offset(fx, fy); | 808 rtPopup.Offset(fx, fy); |
| 809 return TRUE; | 809 return TRUE; |
| 810 } | 810 } |
| 811 FX_BOOL CFWL_WidgetImp::GetScreenSize(FX_FLOAT& fx, FX_FLOAT& fy) { | 811 FX_BOOL CFWL_WidgetImp::GetScreenSize(FX_FLOAT& fx, FX_FLOAT& fy) { |
| 812 return FALSE; | 812 return FALSE; |
| 813 } | 813 } |
| 814 void CFWL_WidgetImp::RegisterEventTarget(IFWL_Widget* pEventSource, | 814 void CFWL_WidgetImp::RegisterEventTarget(IFWL_Widget* pEventSource, |
| 815 uint32_t dwFilter) { | 815 uint32_t dwFilter) { |
| 816 IFWL_NoteThread* pThread = GetOwnerThread(); | 816 IFWL_Thread* pThread = GetOwnerThread(); |
| 817 if (!pThread) | 817 if (!pThread) |
| 818 return; | 818 return; |
| 819 IFWL_NoteDriver* pNoteDriver = pThread->GetNoteDriver(); | 819 IFWL_NoteDriver* pNoteDriver = pThread->GetNoteDriver(); |
| 820 if (!pNoteDriver) | 820 if (!pNoteDriver) |
| 821 return; | 821 return; |
| 822 pNoteDriver->RegisterEventTarget(m_pInterface, pEventSource, dwFilter); | 822 pNoteDriver->RegisterEventTarget(m_pInterface, pEventSource, dwFilter); |
| 823 } | 823 } |
| 824 void CFWL_WidgetImp::UnregisterEventTarget() { | 824 void CFWL_WidgetImp::UnregisterEventTarget() { |
| 825 IFWL_NoteThread* pThread = GetOwnerThread(); | 825 IFWL_Thread* pThread = GetOwnerThread(); |
| 826 if (!pThread) | 826 if (!pThread) |
| 827 return; | 827 return; |
| 828 IFWL_NoteDriver* pNoteDriver = pThread->GetNoteDriver(); | 828 IFWL_NoteDriver* pNoteDriver = pThread->GetNoteDriver(); |
| 829 if (!pNoteDriver) | 829 if (!pNoteDriver) |
| 830 return; | 830 return; |
| 831 pNoteDriver->UnregisterEventTarget(m_pInterface); | 831 pNoteDriver->UnregisterEventTarget(m_pInterface); |
| 832 } | 832 } |
| 833 void CFWL_WidgetImp::DispatchKeyEvent(CFWL_MsgKey* pNote) { | 833 void CFWL_WidgetImp::DispatchKeyEvent(CFWL_MsgKey* pNote) { |
| 834 if (!pNote) | 834 if (!pNote) |
| 835 return; | 835 return; |
| 836 CFWL_EvtKey* pEvent = new CFWL_EvtKey; | 836 CFWL_EvtKey* pEvent = new CFWL_EvtKey; |
| 837 pEvent->m_pSrcTarget = m_pInterface; | 837 pEvent->m_pSrcTarget = m_pInterface; |
| 838 pEvent->m_dwCmd = pNote->m_dwCmd; | 838 pEvent->m_dwCmd = pNote->m_dwCmd; |
| 839 pEvent->m_dwKeyCode = pNote->m_dwKeyCode; | 839 pEvent->m_dwKeyCode = pNote->m_dwKeyCode; |
| 840 pEvent->m_dwFlags = pNote->m_dwFlags; | 840 pEvent->m_dwFlags = pNote->m_dwFlags; |
| 841 DispatchEvent(pEvent); | 841 DispatchEvent(pEvent); |
| 842 pEvent->Release(); | 842 pEvent->Release(); |
| 843 } | 843 } |
| 844 void CFWL_WidgetImp::DispatchEvent(CFWL_Event* pEvent) { | 844 void CFWL_WidgetImp::DispatchEvent(CFWL_Event* pEvent) { |
| 845 if (m_pOuter) { | 845 if (m_pOuter) { |
| 846 IFWL_WidgetDelegate* pDelegate = m_pOuter->SetDelegate(NULL); | 846 IFWL_WidgetDelegate* pDelegate = m_pOuter->SetDelegate(NULL); |
| 847 pDelegate->OnProcessEvent(pEvent); | 847 pDelegate->OnProcessEvent(pEvent); |
| 848 return; | 848 return; |
| 849 } | 849 } |
| 850 IFWL_NoteThread* pThread = GetOwnerThread(); | 850 IFWL_Thread* pThread = GetOwnerThread(); |
| 851 if (!pThread) | 851 if (!pThread) |
| 852 return; | 852 return; |
| 853 IFWL_NoteDriver* pNoteDriver = pThread->GetNoteDriver(); | 853 IFWL_NoteDriver* pNoteDriver = pThread->GetNoteDriver(); |
| 854 if (!pNoteDriver) | 854 if (!pNoteDriver) |
| 855 return; | 855 return; |
| 856 pNoteDriver->SendNote(pEvent); | 856 pNoteDriver->SendNote(pEvent); |
| 857 } | 857 } |
| 858 void CFWL_WidgetImp::Repaint(const CFX_RectF* pRect) { | 858 void CFWL_WidgetImp::Repaint(const CFX_RectF* pRect) { |
| 859 if (pRect) { | 859 if (pRect) { |
| 860 m_pWidgetMgr->RepaintWidget(m_pInterface, pRect); | 860 m_pWidgetMgr->RepaintWidget(m_pInterface, pRect); |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 907 param.m_pWidget = m_pInterface; | 907 param.m_pWidget = m_pInterface; |
| 908 param.m_iPart = iPartEdge; | 908 param.m_iPart = iPartEdge; |
| 909 param.m_pGraphics = pGraphics; | 909 param.m_pGraphics = pGraphics; |
| 910 if (pMatrix) { | 910 if (pMatrix) { |
| 911 param.m_matrix.Concat(*pMatrix, TRUE); | 911 param.m_matrix.Concat(*pMatrix, TRUE); |
| 912 } | 912 } |
| 913 param.m_rtPart = rtEdge; | 913 param.m_rtPart = rtEdge; |
| 914 pTheme->DrawBackground(¶m); | 914 pTheme->DrawBackground(¶m); |
| 915 } | 915 } |
| 916 void CFWL_WidgetImp::NotifyDriver() { | 916 void CFWL_WidgetImp::NotifyDriver() { |
| 917 IFWL_NoteThread* pThread = GetOwnerThread(); | 917 IFWL_Thread* pThread = GetOwnerThread(); |
| 918 if (!pThread) | 918 if (!pThread) |
| 919 return; | 919 return; |
| 920 CFWL_NoteDriver* pDriver = | 920 CFWL_NoteDriver* pDriver = |
| 921 static_cast<CFWL_NoteDriver*>(pThread->GetNoteDriver()); | 921 static_cast<CFWL_NoteDriver*>(pThread->GetNoteDriver()); |
| 922 if (!pDriver) | 922 if (!pDriver) |
| 923 return; | 923 return; |
| 924 pDriver->NotifyTargetDestroy(m_pInterface); | 924 pDriver->NotifyTargetDestroy(m_pInterface); |
| 925 } | 925 } |
| 926 CFX_SizeF CFWL_WidgetImp::GetOffsetFromParent(IFWL_Widget* pParent) { | 926 CFX_SizeF CFWL_WidgetImp::GetOffsetFromParent(IFWL_Widget* pParent) { |
| 927 if (pParent == GetInterface()) | 927 if (pParent == GetInterface()) |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1022 } | 1022 } |
| 1023 FWL_ERR CFWL_WidgetImpDelegate::OnProcessEvent(CFWL_Event* pEvent) { | 1023 FWL_ERR CFWL_WidgetImpDelegate::OnProcessEvent(CFWL_Event* pEvent) { |
| 1024 return FWL_ERR_Succeeded; | 1024 return FWL_ERR_Succeeded; |
| 1025 } | 1025 } |
| 1026 FWL_ERR CFWL_WidgetImpDelegate::OnDrawWidget(CFX_Graphics* pGraphics, | 1026 FWL_ERR CFWL_WidgetImpDelegate::OnDrawWidget(CFX_Graphics* pGraphics, |
| 1027 const CFX_Matrix* pMatrix) { | 1027 const CFX_Matrix* pMatrix) { |
| 1028 CFWL_EvtDraw evt; | 1028 CFWL_EvtDraw evt; |
| 1029 evt.m_pGraphics = pGraphics; | 1029 evt.m_pGraphics = pGraphics; |
| 1030 return FWL_ERR_Succeeded; | 1030 return FWL_ERR_Succeeded; |
| 1031 } | 1031 } |
| OLD | NEW |