mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 12:38:12 +00:00
GSlider: Highlight the knob when hovering it. :^)
This commit is contained in:
parent
55d7d4e3d8
commit
87c256a7d5
2 changed files with 20 additions and 1 deletions
|
@ -50,7 +50,7 @@ void GSlider::paint_event(GPaintEvent& event)
|
||||||
track_rect.center_vertically_within(inner_rect());
|
track_rect.center_vertically_within(inner_rect());
|
||||||
|
|
||||||
StylePainter::paint_frame(painter, track_rect, FrameShape::Panel, FrameShadow::Sunken, 1);
|
StylePainter::paint_frame(painter, track_rect, FrameShape::Panel, FrameShadow::Sunken, 1);
|
||||||
StylePainter::paint_button(painter, knob_rect(), ButtonStyle::Normal, false, false);
|
StylePainter::paint_button(painter, knob_rect(), ButtonStyle::Normal, false, m_knob_hovered);
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect GSlider::knob_rect() const
|
Rect GSlider::knob_rect() const
|
||||||
|
@ -84,6 +84,7 @@ void GSlider::mousedown_event(GMouseEvent& event)
|
||||||
|
|
||||||
void GSlider::mousemove_event(GMouseEvent& event)
|
void GSlider::mousemove_event(GMouseEvent& event)
|
||||||
{
|
{
|
||||||
|
set_knob_hovered(knob_rect().contains(event.position()));
|
||||||
if (m_dragging) {
|
if (m_dragging) {
|
||||||
float delta = event.position().x() - m_drag_origin.x();
|
float delta = event.position().x() - m_drag_origin.x();
|
||||||
float scrubbable_range = inner_rect().width();
|
float scrubbable_range = inner_rect().width();
|
||||||
|
@ -104,3 +105,17 @@ void GSlider::mouseup_event(GMouseEvent& event)
|
||||||
|
|
||||||
return GWidget::mouseup_event(event);
|
return GWidget::mouseup_event(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GSlider::leave_event(CEvent& event)
|
||||||
|
{
|
||||||
|
set_knob_hovered(false);
|
||||||
|
GWidget::leave_event(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GSlider::set_knob_hovered(bool hovered)
|
||||||
|
{
|
||||||
|
if (m_knob_hovered == hovered)
|
||||||
|
return;
|
||||||
|
m_knob_hovered = hovered;
|
||||||
|
update(knob_rect());
|
||||||
|
}
|
||||||
|
|
|
@ -28,12 +28,16 @@ protected:
|
||||||
virtual void mousedown_event(GMouseEvent&) override;
|
virtual void mousedown_event(GMouseEvent&) override;
|
||||||
virtual void mousemove_event(GMouseEvent&) override;
|
virtual void mousemove_event(GMouseEvent&) override;
|
||||||
virtual void mouseup_event(GMouseEvent&) override;
|
virtual void mouseup_event(GMouseEvent&) override;
|
||||||
|
virtual void leave_event(CEvent&) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void set_knob_hovered(bool);
|
||||||
|
|
||||||
int m_value { 0 };
|
int m_value { 0 };
|
||||||
int m_min { 0 };
|
int m_min { 0 };
|
||||||
int m_max { 100 };
|
int m_max { 100 };
|
||||||
|
|
||||||
|
bool m_knob_hovered { false };
|
||||||
bool m_dragging { false };
|
bool m_dragging { false };
|
||||||
int m_drag_origin_value { 0 };
|
int m_drag_origin_value { 0 };
|
||||||
Point m_drag_origin;
|
Point m_drag_origin;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue