r5sdk/r5dev/thirdparty/cppnet/cppkore/UIXComboBox.cpp
2022-05-21 19:58:09 +02:00

50 lines
1.3 KiB
C++

#include "stdafx.h"
#include "UIXComboBox.h"
#include "UIXTheme.h"
namespace UIX
{
UIXComboBox::UIXComboBox()
: ComboBox(), _MouseOver(false)
{
this->SetStyle(ControlStyles::AllPaintingInWmPaint | ControlStyles::DoubleBuffer | ControlStyles::UserPaint, true);
auto Renderer = UIXTheme::GetRenderer();
this->SetBackColor(Renderer->GetRenderColor(UIX::UIXRenderColor::BackgroundDefault));
this->SetForeColor(Renderer->GetRenderColor(UIX::UIXRenderColor::TextDefault));
}
void UIXComboBox::OnPaint(const std::unique_ptr<PaintEventArgs>& EventArgs)
{
auto State = UIX::UIXRenderState::Default;
auto Renderer = UIXTheme::GetRenderer();
if (!this->Enabled())
State = UIX::UIXRenderState::Disabled;
else if (_MouseOver)
State = UIX::UIXRenderState::MouseOver;
// Padding for the border
Drawing::Rectangle TextRect(this->ClientRectangle());
TextRect.X = 3;
Renderer->RenderControlButtonBackground(EventArgs, this, State);
Renderer->RenderControlBorder(EventArgs, this, State);
Renderer->RenderControlText(EventArgs, this, State, TextRect, Drawing::ContentAlignment::MiddleLeft);
Renderer->RenderControlGlyph(EventArgs, this, State);
}
void UIXComboBox::OnMouseEnter()
{
ComboBox::OnMouseEnter();
_MouseOver = true;
}
void UIXComboBox::OnMouseLeave()
{
ComboBox::OnMouseLeave();
_MouseOver = false;
}
}