diff options
3 files changed, 36 insertions, 0 deletions
diff --git a/Userland/Applications/CharacterMap/CharacterMapWidget.cpp b/Userland/Applications/CharacterMap/CharacterMapWidget.cpp index 9c60da89cd..c35e9162f2 100644 --- a/Userland/Applications/CharacterMap/CharacterMapWidget.cpp +++ b/Userland/Applications/CharacterMap/CharacterMapWidget.cpp @@ -14,6 +14,7 @@ #include <LibGUI/Icon.h> #include <LibGUI/Label.h> #include <LibGUI/Menu.h> +#include <LibGUI/TextBox.h> #include <LibGUI/Toolbar.h> #include <LibUnicode/CharacterTypes.h> @@ -24,6 +25,8 @@ CharacterMapWidget::CharacterMapWidget() m_toolbar = find_descendant_of_type_named<GUI::Toolbar>("toolbar"); m_font_name_label = find_descendant_of_type_named<GUI::Label>("font_name"); m_glyph_map = find_descendant_of_type_named<GUI::GlyphMapWidget>("glyph_map"); + m_output_box = find_descendant_of_type_named<GUI::TextBox>("output_box"); + m_copy_output_button = find_descendant_of_type_named<GUI::Button>("copy_output_button"); m_statusbar = find_descendant_of_type_named<GUI::Statusbar>("statusbar"); m_choose_font_action = GUI::Action::create("Choose Font...", Gfx::Bitmap::try_load_from_file("/res/icons/16x16/app-font-editor.png").release_value_but_fixme_should_propagate_errors(), [&](auto&) { @@ -54,6 +57,17 @@ CharacterMapWidget::CharacterMapWidget() update_statusbar(); }; + m_glyph_map->on_glyph_double_clicked = [&](int code_point) { + StringBuilder builder; + builder.append(m_output_box->text()); + builder.append_code_point(code_point); + m_output_box->set_text(builder.string_view()); + }; + + m_copy_output_button->on_click = [&](auto) { + GUI::Clipboard::the().set_plain_text(m_output_box->text()); + }; + did_change_font(); update_statusbar(); } @@ -77,6 +91,7 @@ void CharacterMapWidget::did_change_font() { m_glyph_map->set_font(font()); m_font_name_label->set_text(font().qualified_name()); + m_output_box->set_font(font()); } void CharacterMapWidget::update_statusbar() diff --git a/Userland/Applications/CharacterMap/CharacterMapWidget.h b/Userland/Applications/CharacterMap/CharacterMapWidget.h index bf4e881017..2af5f93c5d 100644 --- a/Userland/Applications/CharacterMap/CharacterMapWidget.h +++ b/Userland/Applications/CharacterMap/CharacterMapWidget.h @@ -27,6 +27,8 @@ private: RefPtr<GUI::Toolbar> m_toolbar; RefPtr<GUI::Label> m_font_name_label; RefPtr<GUI::GlyphMapWidget> m_glyph_map; + RefPtr<GUI::TextBox> m_output_box; + RefPtr<GUI::Button> m_copy_output_button; RefPtr<GUI::Statusbar> m_statusbar; RefPtr<GUI::Action> m_choose_font_action; diff --git a/Userland/Applications/CharacterMap/CharacterMapWindow.gml b/Userland/Applications/CharacterMap/CharacterMapWindow.gml index 3824614848..0b4b211af1 100644 --- a/Userland/Applications/CharacterMap/CharacterMapWindow.gml +++ b/Userland/Applications/CharacterMap/CharacterMapWindow.gml @@ -38,6 +38,25 @@ name: "glyph_map" } + @GUI::Widget { + shrink_to_fit: true + + layout: @GUI::HorizontalBoxLayout { + spacing: 4 + margins: [0, 2, 0, 2] + } + + @GUI::TextBox { + name: "output_box" + } + + @GUI::Button { + name: "copy_output_button" + icon: "/res/icons/16x16/edit-copy.png" + fixed_width: 22 + } + } + @GUI::Statusbar { name: "statusbar" } |