diff options
Diffstat (limited to 'xfa/fwl/cfwl_form.cpp')
-rw-r--r-- | xfa/fwl/cfwl_form.cpp | 299 |
1 files changed, 3 insertions, 296 deletions
diff --git a/xfa/fwl/cfwl_form.cpp b/xfa/fwl/cfwl_form.cpp index 78aba0c6db..75ddf43702 100644 --- a/xfa/fwl/cfwl_form.cpp +++ b/xfa/fwl/cfwl_form.cpp @@ -16,7 +16,6 @@ #include "xfa/fwl/cfwl_messagemouse.h" #include "xfa/fwl/cfwl_notedriver.h" #include "xfa/fwl/cfwl_noteloop.h" -#include "xfa/fwl/cfwl_sysbtn.h" #include "xfa/fwl/cfwl_themebackground.h" #include "xfa/fwl/cfwl_themepart.h" #include "xfa/fwl/cfwl_themetext.h" @@ -24,33 +23,13 @@ #include "xfa/fwl/ifwl_themeprovider.h" #include "xfa/fwl/theme/cfwl_widgettp.h" -namespace { - -const int kSystemButtonSize = 21; -const int kSystemButtonMargin = 5; -const int kSystemButtonSpan = 2; - -} // namespace - CFWL_Form::CFWL_Form(const CFWL_App* app, std::unique_ptr<CFWL_WidgetProperties> properties, CFWL_Widget* pOuter) : CFWL_Widget(app, std::move(properties), pOuter), -#if (_FX_OS_ == _FX_MACOSX_) - m_bMouseIn(false), -#endif - m_pCloseBox(nullptr), - m_pMinBox(nullptr), - m_pMaxBox(nullptr), m_pSubFocus(nullptr), m_fCXBorder(0), - m_fCYBorder(0), - m_iCaptureBtn(-1), - m_iSysBox(0), - m_bLButtonDown(false), - m_bMaximized(false), - m_bSetMaximize(false), - m_bDoModalFlag(false) { + m_fCYBorder(0) { m_rtRelative.Reset(); m_rtRestore.Reset(); @@ -61,7 +40,6 @@ CFWL_Form::CFWL_Form(const CFWL_App* app, CFWL_Form::~CFWL_Form() { UnregisterEventTarget(); UnRegisterForm(); - RemoveSysButtons(); } FWL_Type CFWL_Form::GetClassID() const { @@ -92,17 +70,8 @@ void CFWL_Form::Update() { FWL_WidgetHit CFWL_Form::HitTest(FX_FLOAT fx, FX_FLOAT fy) { GetAvailableTheme(); - if (m_pCloseBox && m_pCloseBox->m_rtBtn.Contains(fx, fy)) - return FWL_WidgetHit::CloseBox; - if (m_pMaxBox && m_pMaxBox->m_rtBtn.Contains(fx, fy)) - return FWL_WidgetHit::MaxBox; - if (m_pMinBox && m_pMinBox->m_rtBtn.Contains(fx, fy)) - return FWL_WidgetHit::MinBox; - CFX_RectF rtCap; - rtCap.Set(m_fCYBorder, m_fCXBorder, - 0 - kSystemButtonSize * m_iSysBox - 2 * m_fCYBorder, - 0 - m_fCXBorder); + rtCap.Set(m_fCYBorder, m_fCXBorder, -2 * m_fCYBorder, 0 - m_fCXBorder); return rtCap.Contains(fx, fy) ? FWL_WidgetHit::Titlebar : FWL_WidgetHit::Client; } @@ -139,65 +108,6 @@ void CFWL_Form::DrawWidget(CFX_Graphics* pGraphics, const CFX_Matrix* pMatrix) { param.m_dwStates = iState; pTheme->DrawBackground(¶m); } - -#if (_FX_OS_ == _FX_MACOSX_) - { - if (m_pCloseBox) { - param.m_iPart = CFWL_Part::CloseBox; - param.m_dwStates = m_pCloseBox->GetPartState(); - if (m_pProperties->m_dwStates & FWL_WGTSTATE_Deactivated) - param.m_dwStates = CFWL_PartState_Disabled; - else if (CFWL_PartState_Normal == param.m_dwStates && m_bMouseIn) - param.m_dwStates = CFWL_PartState_Hovered; - param.m_rtPart = m_pCloseBox->m_rtBtn; - pTheme->DrawBackground(¶m); - } - if (m_pMaxBox) { - param.m_iPart = CFWL_Part::MaximizeBox; - param.m_dwStates = m_pMaxBox->GetPartState(); - if (m_pProperties->m_dwStates & FWL_WGTSTATE_Deactivated) - param.m_dwStates = CFWL_PartState_Disabled; - else if (CFWL_PartState_Normal == param.m_dwStates && m_bMouseIn) - param.m_dwStates = CFWL_PartState_Hovered; - param.m_rtPart = m_pMaxBox->m_rtBtn; - param.m_bMaximize = m_bMaximized; - pTheme->DrawBackground(¶m); - } - if (m_pMinBox) { - param.m_iPart = CFWL_Part::MinimizeBox; - param.m_dwStates = m_pMinBox->GetPartState(); - if (m_pProperties->m_dwStates & FWL_WGTSTATE_Deactivated) - param.m_dwStates = CFWL_PartState_Disabled; - else if (CFWL_PartState_Normal == param.m_dwStates && m_bMouseIn) - param.m_dwStates = CFWL_PartState_Hovered; - param.m_rtPart = m_pMinBox->m_rtBtn; - pTheme->DrawBackground(¶m); - } - m_bMouseIn = false; - } -#else - { - if (m_pCloseBox) { - param.m_iPart = CFWL_Part::CloseBox; - param.m_dwStates = m_pCloseBox->GetPartState(); - param.m_rtPart = m_pCloseBox->m_rtBtn; - pTheme->DrawBackground(¶m); - } - if (m_pMaxBox) { - param.m_iPart = CFWL_Part::MaximizeBox; - param.m_dwStates = m_pMaxBox->GetPartState(); - param.m_rtPart = m_pMaxBox->m_rtBtn; - param.m_bMaximize = m_bMaximized; - pTheme->DrawBackground(¶m); - } - if (m_pMinBox) { - param.m_iPart = CFWL_Part::MinimizeBox; - param.m_dwStates = m_pMinBox->GetPartState(); - param.m_rtPart = m_pMinBox->m_rtBtn; - pTheme->DrawBackground(¶m); - } - } -#endif } CFWL_Widget* CFWL_Form::DoModal() { @@ -213,7 +123,6 @@ CFWL_Widget* CFWL_Form::DoModal() { m_pNoteLoop->SetMainForm(this); pDriver->PushNoteLoop(m_pNoteLoop.get()); - m_bDoModalFlag = true; RemoveStates(FWL_WGTSTATE_Invisible); pDriver->Run(); @@ -229,8 +138,6 @@ void CFWL_Form::EndDoModal() { if (!m_pNoteLoop) return; - m_bDoModalFlag = false; - #if (_FX_OS_ == _FX_MACOSX_) m_pNoteLoop->EndModalLoop(); const CFWL_App* pApp = GetOwnerApp(); @@ -261,60 +168,6 @@ void CFWL_Form::DrawBackground(CFX_Graphics* pGraphics, pTheme->DrawBackground(¶m); } -void CFWL_Form::RemoveSysButtons() { - delete m_pCloseBox; - m_pCloseBox = nullptr; - delete m_pMinBox; - m_pMinBox = nullptr; - delete m_pMaxBox; - m_pMaxBox = nullptr; -} - -CFWL_SysBtn* CFWL_Form::GetSysBtnAtPoint(FX_FLOAT fx, FX_FLOAT fy) { - if (m_pCloseBox && m_pCloseBox->m_rtBtn.Contains(fx, fy)) - return m_pCloseBox; - if (m_pMaxBox && m_pMaxBox->m_rtBtn.Contains(fx, fy)) - return m_pMaxBox; - if (m_pMinBox && m_pMinBox->m_rtBtn.Contains(fx, fy)) - return m_pMinBox; - return nullptr; -} - -CFWL_SysBtn* CFWL_Form::GetSysBtnByState(uint32_t dwState) { - if (m_pCloseBox && (m_pCloseBox->m_dwState & dwState)) - return m_pCloseBox; - if (m_pMaxBox && (m_pMaxBox->m_dwState & dwState)) - return m_pMaxBox; - if (m_pMinBox && (m_pMinBox->m_dwState & dwState)) - return m_pMinBox; - return nullptr; -} - -CFWL_SysBtn* CFWL_Form::GetSysBtnByIndex(int32_t nIndex) { - if (nIndex < 0) - return nullptr; - - CFX_ArrayTemplate<CFWL_SysBtn*> arrBtn; - if (m_pMinBox) - arrBtn.Add(m_pMinBox); - if (m_pMaxBox) - arrBtn.Add(m_pMaxBox); - if (m_pCloseBox) - arrBtn.Add(m_pCloseBox); - return arrBtn[nIndex]; -} - -int32_t CFWL_Form::GetSysBtnIndex(CFWL_SysBtn* pBtn) { - CFX_ArrayTemplate<CFWL_SysBtn*> arrBtn; - if (m_pMinBox) - arrBtn.Add(m_pMinBox); - if (m_pMaxBox) - arrBtn.Add(m_pMaxBox); - if (m_pCloseBox) - arrBtn.Add(m_pCloseBox); - return arrBtn.Find(pBtn); -} - CFX_RectF CFWL_Form::GetEdgeRect() { CFX_RectF rtEdge = m_rtRelative; if (m_pProperties->m_dwStyles & FWL_WGTSTYLE_Border) { @@ -330,8 +183,6 @@ void CFWL_Form::SetWorkAreaRect() { CFWL_WidgetMgr* pWidgetMgr = GetOwnerApp()->GetWidgetMgr(); if (!pWidgetMgr) return; - - m_bSetMaximize = true; RepaintRect(m_rtRelative); } @@ -339,55 +190,11 @@ void CFWL_Form::Layout() { m_rtRelative = GetRelativeRect(); #ifndef FWL_UseMacSystemBorder - ResetSysBtn(); -#endif -} - -void CFWL_Form::ResetSysBtn() { m_fCXBorder = *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::CXBorder)); m_fCYBorder = *static_cast<FX_FLOAT*>(GetThemeCapacity(CFWL_WidgetCapacity::CYBorder)); - RemoveSysButtons(); - - m_iSysBox = 0; - if (m_pProperties->m_dwStyles & FWL_WGTSTYLE_CloseBox) { - m_pCloseBox = new CFWL_SysBtn; - m_pCloseBox->m_rtBtn.Set( - m_rtRelative.right() - kSystemButtonMargin - kSystemButtonSize, - kSystemButtonMargin, kSystemButtonSize, kSystemButtonSize); - m_iSysBox++; - } - if (m_pProperties->m_dwStyles & FWL_WGTSTYLE_MaximizeBox) { - m_pMaxBox = new CFWL_SysBtn; - if (m_pCloseBox) { - m_pMaxBox->m_rtBtn.Set( - m_pCloseBox->m_rtBtn.left - kSystemButtonSpan - kSystemButtonSize, - m_pCloseBox->m_rtBtn.top, kSystemButtonSize, kSystemButtonSize); - } else { - m_pMaxBox->m_rtBtn.Set( - m_rtRelative.right() - kSystemButtonMargin - kSystemButtonSize, - kSystemButtonMargin, kSystemButtonSize, kSystemButtonSize); - } - m_iSysBox++; - } - if (m_pProperties->m_dwStyles & FWL_WGTSTYLE_MinimizeBox) { - m_pMinBox = new CFWL_SysBtn; - if (m_pMaxBox) { - m_pMinBox->m_rtBtn.Set( - m_pMaxBox->m_rtBtn.left - kSystemButtonSpan - kSystemButtonSize, - m_pMaxBox->m_rtBtn.top, kSystemButtonSize, kSystemButtonSize); - } else if (m_pCloseBox) { - m_pMinBox->m_rtBtn.Set( - m_pCloseBox->m_rtBtn.left - kSystemButtonSpan - kSystemButtonSize, - m_pCloseBox->m_rtBtn.top, kSystemButtonSize, kSystemButtonSize); - } else { - m_pMinBox->m_rtBtn.Set( - m_rtRelative.right() - kSystemButtonMargin - kSystemButtonSize, - kSystemButtonMargin, kSystemButtonSize, kSystemButtonSize); - } - m_iSysBox++; - } +#endif } void CFWL_Form::RegisterForm() { @@ -431,12 +238,6 @@ void CFWL_Form::OnProcessMessage(CFWL_Message* pMessage) { case FWL_MouseCommand::LeftButtonUp: OnLButtonUp(pMsg); break; - case FWL_MouseCommand::Move: - OnMouseMove(pMsg); - break; - case FWL_MouseCommand::Leave: - OnMouseLeave(pMsg); - break; default: break; } @@ -455,102 +256,8 @@ void CFWL_Form::OnDrawWidget(CFX_Graphics* pGraphics, void CFWL_Form::OnLButtonDown(CFWL_MessageMouse* pMsg) { SetGrab(true); - m_bLButtonDown = true; - - CFWL_SysBtn* pPressBtn = GetSysBtnAtPoint(pMsg->m_fx, pMsg->m_fy); - m_iCaptureBtn = GetSysBtnIndex(pPressBtn); - - if (!pPressBtn) - return; - - pPressBtn->SetPressed(); - RepaintRect(pPressBtn->m_rtBtn); } void CFWL_Form::OnLButtonUp(CFWL_MessageMouse* pMsg) { SetGrab(false); - m_bLButtonDown = false; - CFWL_SysBtn* pPointBtn = GetSysBtnAtPoint(pMsg->m_fx, pMsg->m_fy); - CFWL_SysBtn* pPressedBtn = GetSysBtnByIndex(m_iCaptureBtn); - if (!pPressedBtn || pPointBtn != pPressedBtn) - return; - if (pPressedBtn == GetSysBtnByState(FWL_SYSBUTTONSTATE_Pressed)) - pPressedBtn->SetNormal(); - if (pPressedBtn == m_pMaxBox) { - if (m_bMaximized) { - SetWidgetRect(m_rtRestore); - Update(); - Repaint(); - } else { - SetWorkAreaRect(); - Update(); - } - m_bMaximized = !m_bMaximized; - } else if (pPressedBtn != m_pMinBox) { - CFWL_Event eClose(CFWL_Event::Type::Close, this); - DispatchEvent(&eClose); - } -} - -void CFWL_Form::OnMouseMove(CFWL_MessageMouse* pMsg) { - if (m_bLButtonDown) - return; - - CFX_RectF rtInvalidate; - rtInvalidate.Reset(); - CFWL_SysBtn* pPointBtn = GetSysBtnAtPoint(pMsg->m_fx, pMsg->m_fy); - CFWL_SysBtn* pOldHover = GetSysBtnByState(FWL_SYSBUTTONSTATE_Hover); - -#if _FX_OS_ == _FX_MACOSX_ - { - if (pOldHover && pPointBtn != pOldHover) - pOldHover->SetNormal(); - if (pPointBtn && pPointBtn != pOldHover) - pPointBtn->SetHover(); - if (m_pCloseBox) - rtInvalidate = m_pCloseBox->m_rtBtn; - if (m_pMaxBox) { - if (rtInvalidate.IsEmpty()) - rtInvalidate = m_pMaxBox->m_rtBtn; - else - rtInvalidate.Union(m_pMaxBox->m_rtBtn); - } - if (m_pMinBox) { - if (rtInvalidate.IsEmpty()) - rtInvalidate = m_pMinBox->m_rtBtn; - else - rtInvalidate.Union(m_pMinBox->m_rtBtn); - } - if (!rtInvalidate.IsEmpty() && - rtInvalidate.Contains(pMsg->m_fx, pMsg->m_fy)) { - m_bMouseIn = true; - } - } -#else - { - if (pOldHover && pPointBtn != pOldHover) { - pOldHover->SetNormal(); - rtInvalidate = pOldHover->m_rtBtn; - } - if (pPointBtn && pPointBtn != pOldHover) { - pPointBtn->SetHover(); - if (rtInvalidate.IsEmpty()) - rtInvalidate = pPointBtn->m_rtBtn; - else - rtInvalidate.Union(pPointBtn->m_rtBtn); - } - } -#endif - - if (!rtInvalidate.IsEmpty()) - RepaintRect(rtInvalidate); -} - -void CFWL_Form::OnMouseLeave(CFWL_MessageMouse* pMsg) { - CFWL_SysBtn* pHover = GetSysBtnByState(FWL_SYSBUTTONSTATE_Hover); - if (!pHover) - return; - - pHover->SetNormal(); - RepaintRect(pHover->m_rtBtn); } |