From fa94978a7e47bd30f4d6c11e25466338d7c1c62c Mon Sep 17 00:00:00 2001 From: scwfri Date: Wed, 8 Dec 2021 16:26:20 -0600 Subject: [PATCH] LibGUI: Add EngineType to EditingEngine classes This will allow users of EditingEngine classes to determine current type of EditingEngine (currently either vim or regular). --- Userland/Libraries/LibGUI/EditingEngine.h | 10 ++++++++++ Userland/Libraries/LibGUI/RegularEditingEngine.h | 1 + Userland/Libraries/LibGUI/VimEditingEngine.h | 2 ++ 3 files changed, 13 insertions(+) diff --git a/Userland/Libraries/LibGUI/EditingEngine.h b/Userland/Libraries/LibGUI/EditingEngine.h index 0885ae8805..a7588191b7 100644 --- a/Userland/Libraries/LibGUI/EditingEngine.h +++ b/Userland/Libraries/LibGUI/EditingEngine.h @@ -17,6 +17,11 @@ enum CursorWidth { WIDE }; +enum EngineType { + Regular, + Vim, +}; + class EditingEngine { AK_MAKE_NONCOPYABLE(EditingEngine); AK_MAKE_NONMOVABLE(EditingEngine); @@ -37,6 +42,9 @@ public: virtual bool on_key(const KeyEvent& event); + bool is_regular() const { return engine_type() == EngineType::Regular; } + bool is_vim() const { return engine_type() == EngineType::Vim; } + protected: EditingEngine() { } @@ -73,6 +81,8 @@ protected: void delete_line(); void delete_char(); + virtual EngineType engine_type() const = 0; + private: void move_selected_lines_up(); void move_selected_lines_down(); diff --git a/Userland/Libraries/LibGUI/RegularEditingEngine.h b/Userland/Libraries/LibGUI/RegularEditingEngine.h index af07dc35c6..308bb353bc 100644 --- a/Userland/Libraries/LibGUI/RegularEditingEngine.h +++ b/Userland/Libraries/LibGUI/RegularEditingEngine.h @@ -19,6 +19,7 @@ public: private: void sort_selected_lines(); + virtual EngineType engine_type() const override { return EngineType::Regular; } }; } diff --git a/Userland/Libraries/LibGUI/VimEditingEngine.h b/Userland/Libraries/LibGUI/VimEditingEngine.h index 02652f8967..8be34cfbbd 100644 --- a/Userland/Libraries/LibGUI/VimEditingEngine.h +++ b/Userland/Libraries/LibGUI/VimEditingEngine.h @@ -187,6 +187,8 @@ private: bool on_key_in_insert_mode(const KeyEvent& event); bool on_key_in_normal_mode(const KeyEvent& event); bool on_key_in_visual_mode(const KeyEvent& event); + + virtual EngineType engine_type() const override { return EngineType::Vim; } }; }