From 39ed87570bdb2f86969d4be821c94b722dc71179 Mon Sep 17 00:00:00 2001 From: Joe Ludwig Date: Wed, 26 Jun 2013 15:22:04 -0700 Subject: First version of the SOurce SDK 2013 --- .../vgui_controls/ScrollableEditablePanel.cpp | 86 ++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 mp/src/vgui2/vgui_controls/ScrollableEditablePanel.cpp (limited to 'mp/src/vgui2/vgui_controls/ScrollableEditablePanel.cpp') diff --git a/mp/src/vgui2/vgui_controls/ScrollableEditablePanel.cpp b/mp/src/vgui2/vgui_controls/ScrollableEditablePanel.cpp new file mode 100644 index 00000000..5d753b04 --- /dev/null +++ b/mp/src/vgui2/vgui_controls/ScrollableEditablePanel.cpp @@ -0,0 +1,86 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//============================================================================= + +#include "vgui_controls/ScrollableEditablePanel.h" +#include "vgui_controls/ScrollBar.h" +#include "vgui_controls/ScrollBarSlider.h" +#include "vgui_controls/Button.h" +#include "KeyValues.h" + +// NOTE: This has to be the last file included! +#include "tier0/memdbgon.h" + + +using namespace vgui; + +ScrollableEditablePanel::ScrollableEditablePanel( vgui::Panel *pParent, vgui::EditablePanel *pChild, const char *pName ) : + BaseClass( pParent, pName ) +{ + m_pChild = pChild; + m_pChild->SetParent( this ); + + m_pScrollBar = new vgui::ScrollBar( this, "VerticalScrollBar", true ); + m_pScrollBar->SetWide( 16 ); + m_pScrollBar->SetAutoResize( PIN_TOPRIGHT, AUTORESIZE_DOWN, 0, 0, -16, 0 ); + m_pScrollBar->AddActionSignalTarget( this ); +} + +void ScrollableEditablePanel::ApplySettings( KeyValues *pInResourceData ) +{ + BaseClass::ApplySettings( pInResourceData ); + + KeyValues *pScrollbarKV = pInResourceData->FindKey( "Scrollbar" ); + if ( pScrollbarKV ) + { + m_pScrollBar->ApplySettings( pScrollbarKV ); + } +} + +void ScrollableEditablePanel::PerformLayout() +{ + BaseClass::PerformLayout(); + + m_pChild->SetWide( GetWide() - m_pScrollBar->GetWide() ); + m_pScrollBar->SetRange( 0, m_pChild->GetTall() ); + m_pScrollBar->SetRangeWindow( GetTall() ); + + if ( m_pScrollBar->GetSlider() ) + { + m_pScrollBar->GetSlider()->SetFgColor( GetFgColor() ); + } + if ( m_pScrollBar->GetButton(0) ) + { + m_pScrollBar->GetButton(0)->SetFgColor( GetFgColor() ); + } + if ( m_pScrollBar->GetButton(1) ) + { + m_pScrollBar->GetButton(1)->SetFgColor( GetFgColor() ); + } +} + + +//----------------------------------------------------------------------------- +// Called when the scroll bar moves +//----------------------------------------------------------------------------- +void ScrollableEditablePanel::OnScrollBarSliderMoved() +{ + InvalidateLayout(); + + int nScrollAmount = m_pScrollBar->GetValue(); + m_pChild->SetPos( 0, -nScrollAmount ); +} + +//----------------------------------------------------------------------------- +// respond to mouse wheel events +//----------------------------------------------------------------------------- +void ScrollableEditablePanel::OnMouseWheeled(int delta) +{ + int val = m_pScrollBar->GetValue(); + val -= (delta * 50); + m_pScrollBar->SetValue( val ); +} + -- cgit v1.2.3