1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /*
- GWEN
- Copyright (c) 2010 Facepunch Studios
- See license in Gwen.h
- */
- #include "Gwen/Gwen.h"
- #include "Gwen/Skin.h"
- #include "Gwen/Controls/TabButton.h"
- #include "Gwen/Controls/TabControl.h"
- #include "Gwen/Controls/Highlight.h"
- #include "Gwen/DragAndDrop.h"
- using namespace Gwen;
- using namespace Gwen::Controls;
- GWEN_CONTROL_CONSTRUCTOR( TabButton )
- {
- m_Page = NULL;
- m_Control = NULL;
- SetPadding( Padding( 2, 2, 2, 2 ) );
- DragAndDrop_SetPackage( true, "TabButtonMove" );
- SetAlignment( Pos::Top | Pos::Left );
- SetTextPadding( Padding( 5, 3, 3, 3 ) );
- }
- void TabButton::Render( Skin::Base* skin )
- {
- skin->DrawTabButton( this, m_Page && m_Page->Visible() );
- }
- void TabButton::SetTabControl( TabControl* ctrl )
- {
- if ( m_Control == ctrl ) return;
- if ( m_Control )
- {
- m_Control->OnLoseTab( this );
- }
- m_Control = ctrl;
- }
- bool TabButton::DragAndDrop_ShouldStartDrag()
- {
- return m_Control->DoesAllowDrag();
- }
- bool TabButton::OnKeyUp( bool bDown )
- {
- OnKeyLeft( bDown );
- return true;
- }
- bool TabButton::OnKeyDown( bool bDown )
- {
- OnKeyRight( bDown );
- return true;
- }
- bool TabButton::OnKeyLeft( bool bDown )
- {
- if ( bDown )
- {
- Base::List::reverse_iterator it = std::find( m_Parent->Children.rbegin(), m_Parent->Children.rend(), this );
- if ( it != m_Parent->Children.rend() && (++it != m_Parent->Children.rend()) )
- {
- Base* pNextTab = *it;
- GetTabControl()->OnTabPressed( pNextTab );
- Gwen::KeyboardFocus = pNextTab;
- }
- }
- return true;
- }
- bool TabButton::OnKeyRight( bool bDown )
- {
- if ( bDown )
- {
- Base::List::iterator it = std::find( m_Parent->Children.begin(), m_Parent->Children.end(), this );
- if ( it != m_Parent->Children.end() && (++it != m_Parent->Children.end()) )
- {
- Base* pNextTab = *it;
- GetTabControl()->OnTabPressed( pNextTab );
- Gwen::KeyboardFocus = pNextTab;
- }
- }
- return true;
- }
|