summaryrefslogtreecommitdiff
path: root/Applications
diff options
context:
space:
mode:
authorHüseyin ASLITÜRK <asliturk@hotmail.com>2020-06-12 22:01:09 +0300
committerAndreas Kling <kling@serenityos.org>2020-06-13 12:36:30 +0200
commit3ebdb5ea30e658b145c9bfb4b2837817f947fadc (patch)
treedeec56dba8c1549260b5bdd66999ab9c2dd173c4 /Applications
parent8733da652e0baec609d29a3ca8e2ec8b61d08fe6 (diff)
downloadserenity-3ebdb5ea30e658b145c9bfb4b2837817f947fadc.zip
Application: KeyboardMapper, make button to like a real key
Change key paint to more like a real key :)
Diffstat (limited to 'Applications')
-rw-r--r--Applications/KeyboardMapper/KeyButton.cpp51
-rw-r--r--Applications/KeyboardMapper/KeyButton.h2
2 files changed, 42 insertions, 11 deletions
diff --git a/Applications/KeyboardMapper/KeyButton.cpp b/Applications/KeyboardMapper/KeyButton.cpp
index 6e1219be81..ea342204a1 100644
--- a/Applications/KeyboardMapper/KeyButton.cpp
+++ b/Applications/KeyboardMapper/KeyButton.cpp
@@ -27,6 +27,7 @@
#include "KeyButton.h"
#include <LibGUI/Button.h>
#include <LibGUI/Painter.h>
+#include <LibGUI/Window.h>
#include <LibGfx/Font.h>
#include <LibGfx/Palette.h>
@@ -39,25 +40,30 @@ void KeyButton::paint_event(GUI::PaintEvent& event)
GUI::Painter painter(*this);
painter.add_clip_rect(event.rect());
- auto content_rect = rect().shrunken(5, 5);
+ auto cont_rect = rect();
auto& font = this->font();
- Gfx::StylePainter::paint_button(painter, rect(), palette(), Gfx::ButtonStyle::Normal, is_being_pressed(), is_hovered(), is_checked(), true);
+ Color color;
+ if (m_pressed) {
+ color = Color::Cyan;
+ } else if (!is_enabled()) {
+ color = Color::LightGray;
+ } else {
+ color = Color::White;
+ }
- if (m_pressed)
- painter.fill_rect(content_rect, Color::Cyan);
- else if (!is_enabled())
- painter.fill_rect(content_rect, Color::from_rgb(0x8C7272));
+ painter.fill_rect(cont_rect, Color::Black);
+ painter.fill_rect({ cont_rect.x() + 1, cont_rect.y() + 1, cont_rect.width() - 2, cont_rect.height() - 2 }, Color::from_rgb(0x999999));
+ painter.fill_rect({ cont_rect.x() + 6, cont_rect.y() + 3, cont_rect.width() - 12, cont_rect.height() - 12 }, Color::from_rgb(0x8C7272));
+ painter.fill_rect({ cont_rect.x() + 7, cont_rect.y() + 4, cont_rect.width() - 14, cont_rect.height() - 14 }, color);
if (!text().is_empty()) {
Gfx::IntRect text_rect { 0, 0, font.width(text()), font.glyph_height() };
- text_rect.align_within(content_rect, Gfx::TextAlignment::Center);
-
- auto clipped_rect = rect().intersected(this->rect());
+ text_rect.align_within({ cont_rect.x() + 7, cont_rect.y() + 4, cont_rect.width() - 14, cont_rect.height() - 14 }, Gfx::TextAlignment::Center);
- painter.draw_text(clipped_rect, text(), font, Gfx::TextAlignment::Center, palette().button_text(), Gfx::TextElision::Right);
+ painter.draw_text(text_rect, text(), font, Gfx::TextAlignment::Center, palette().button_text(), Gfx::TextElision::Right);
if (is_focused())
- painter.draw_rect(clipped_rect.inflated(6, 4), palette().focus_outline());
+ painter.draw_rect(text_rect.inflated(6, 4), palette().focus_outline());
}
}
@@ -66,3 +72,26 @@ void KeyButton::click(unsigned)
if (on_click)
on_click();
}
+
+void KeyButton::mousemove_event(GUI::MouseEvent& event)
+{
+ if (!is_enabled())
+ return;
+
+ Gfx::IntRect c = { rect().x() + 7, rect().y() + 4, rect().width() - 14, rect().height() - 14 };
+
+ if (c.contains(event.position())) {
+ window()->set_override_cursor(GUI::StandardCursor::Hand);
+ return;
+ }
+ window()->set_override_cursor(GUI::StandardCursor::Arrow);
+
+ AbstractButton::mousemove_event(event);
+}
+
+void KeyButton::leave_event(Core::Event& event)
+{
+ window()->set_override_cursor(GUI::StandardCursor::Arrow);
+ AbstractButton::leave_event(event);
+}
+
diff --git a/Applications/KeyboardMapper/KeyButton.h b/Applications/KeyboardMapper/KeyButton.h
index 7f1c20f122..afb57033b3 100644
--- a/Applications/KeyboardMapper/KeyButton.h
+++ b/Applications/KeyboardMapper/KeyButton.h
@@ -40,6 +40,8 @@ public:
protected:
virtual void click(unsigned modifiers = 0) override;
+ virtual void leave_event(Core::Event&) override;
+ virtual void mousemove_event(GUI::MouseEvent&) override;
virtual void paint_event(GUI::PaintEvent&) override;
private: