[vte] terminal: Use an enum class for erase bindings



commit b99ba4e12989d492005859a55b804bc2d4242f72
Author: Christian Persch <chpe src gnome org>
Date:   Mon Nov 18 22:42:22 2019 +0100

    terminal: Use an enum class for erase bindings

 src/vte.cc         | 28 ++++++++++++----------------
 src/vtegtk.cc      |  8 ++++----
 src/vteinternal.hh | 19 +++++++++++++++----
 src/widget.hh      |  6 ++++++
 4 files changed, 37 insertions(+), 24 deletions(-)
---
diff --git a/src/vte.cc b/src/vte.cc
index 5e329230..86eae869 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -4716,23 +4716,23 @@ Terminal::widget_key_press(GdkEventKey *event)
                switch (keyval) {
                case GDK_KEY_BackSpace:
                        switch (m_backspace_binding) {
-                       case VTE_ERASE_ASCII_BACKSPACE:
+                       case EraseMode::eASCII_BACKSPACE:
                                normal = g_strdup("");
                                normal_length = 1;
                                suppress_meta_esc = FALSE;
                                break;
-                       case VTE_ERASE_ASCII_DELETE:
+                       case EraseMode::eASCII_DELETE:
                                normal = g_strdup("");
                                normal_length = 1;
                                suppress_meta_esc = FALSE;
                                break;
-                       case VTE_ERASE_DELETE_SEQUENCE:
+                       case EraseMode::eDELETE_SEQUENCE:
                                 normal = g_strdup("\e[3~");
                                 normal_length = 4;
                                 add_modifiers = TRUE;
                                suppress_meta_esc = TRUE;
                                break;
-                       case VTE_ERASE_TTY:
+                       case EraseMode::eTTY:
                                if (pty() &&
                                    tcgetattr(pty()->fd(), &tio) != -1)
                                {
@@ -4741,7 +4741,7 @@ Terminal::widget_key_press(GdkEventKey *event)
                                }
                                suppress_meta_esc = FALSE;
                                break;
-                       case VTE_ERASE_AUTO:
+                       case EraseMode::eAUTO:
                        default:
 #ifndef _POSIX_VDISABLE
 #define _POSIX_VDISABLE '\0'
@@ -4774,15 +4774,15 @@ Terminal::widget_key_press(GdkEventKey *event)
                case GDK_KEY_KP_Delete:
                case GDK_KEY_Delete:
                        switch (m_delete_binding) {
-                       case VTE_ERASE_ASCII_BACKSPACE:
+                       case EraseMode::eASCII_BACKSPACE:
                                normal = g_strdup("\010");
                                normal_length = 1;
                                break;
-                       case VTE_ERASE_ASCII_DELETE:
+                       case EraseMode::eASCII_DELETE:
                                normal = g_strdup("\177");
                                normal_length = 1;
                                break;
-                       case VTE_ERASE_TTY:
+                       case EraseMode::eTTY:
                                if (pty() &&
                                    tcgetattr(pty()->fd(), &tio) != -1)
                                {
@@ -4791,8 +4791,8 @@ Terminal::widget_key_press(GdkEventKey *event)
                                }
                                suppress_meta_esc = FALSE;
                                break;
-                       case VTE_ERASE_DELETE_SEQUENCE:
-                       case VTE_ERASE_AUTO:
+                       case EraseMode::eDELETE_SEQUENCE:
+                       case EraseMode::eAUTO:
                        default:
                                 normal = g_strdup("\e[3~");
                                 normal_length = 4;
@@ -7873,10 +7873,6 @@ Terminal::Terminal(vte::platform::Widget* w,
         m_selection_owned[VTE_SELECTION_PRIMARY] = false;
         m_selection_owned[VTE_SELECTION_CLIPBOARD] = false;
 
-       /* Miscellaneous options. */
-       set_backspace_binding(VTE_ERASE_AUTO);
-       set_delete_binding(VTE_ERASE_AUTO);
-
         /* Initialize the saved cursor. */
         save_cursor(&m_normal_screen);
         save_cursor(&m_alternate_screen);
@@ -9922,7 +9918,7 @@ Terminal::set_scrollback_lines(long lines)
 }
 
 bool
-Terminal::set_backspace_binding(VteEraseBinding binding)
+Terminal::set_backspace_binding(EraseMode binding)
 {
         if (binding == m_backspace_binding)
                 return false;
@@ -9932,7 +9928,7 @@ Terminal::set_backspace_binding(VteEraseBinding binding)
 }
 
 bool
-Terminal::set_delete_binding(VteEraseBinding binding)
+Terminal::set_delete_binding(EraseMode binding)
 {
         if (binding == m_delete_binding)
                 return false;
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index efb6456f..82f715ee 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -465,7 +465,7 @@ vte_terminal_get_property (GObject *object,
                         g_value_set_boolean (value, vte_terminal_get_audible_bell (terminal));
                         break;
                 case PROP_BACKSPACE_BINDING:
-                        g_value_set_enum (value, impl->m_backspace_binding);
+                        g_value_set_enum (value, widget->backspace_binding());
                         break;
                 case PROP_BOLD_IS_BRIGHT:
                         g_value_set_boolean (value, vte_terminal_get_bold_is_bright (terminal));
@@ -492,7 +492,7 @@ vte_terminal_get_property (GObject *object,
                         g_value_set_enum (value, vte_terminal_get_cursor_shape (terminal));
                         break;
                 case PROP_DELETE_BINDING:
-                        g_value_set_enum (value, impl->m_delete_binding);
+                        g_value_set_enum (value, widget->delete_binding());
                         break;
                 case PROP_ENABLE_BIDI:
                         g_value_set_boolean (value, vte_terminal_get_enable_bidi (terminal));
@@ -3360,7 +3360,7 @@ vte_terminal_set_backspace_binding(VteTerminal *terminal,
        g_return_if_fail(VTE_IS_TERMINAL(terminal));
         g_return_if_fail(binding >= VTE_ERASE_AUTO && binding <= VTE_ERASE_TTY);
 
-        if (IMPL(terminal)->set_backspace_binding(binding))
+        if (WIDGET(terminal)->set_backspace_binding(binding))
                 g_object_notify_by_pspec(G_OBJECT(terminal), pspecs[PROP_BACKSPACE_BINDING]);
 }
 
@@ -3830,7 +3830,7 @@ vte_terminal_set_delete_binding(VteTerminal *terminal,
        g_return_if_fail(VTE_IS_TERMINAL(terminal));
         g_return_if_fail(binding >= VTE_ERASE_AUTO && binding <= VTE_ERASE_TTY);
 
-        if (IMPL(terminal)->set_delete_binding(binding))
+        if (WIDGET(terminal)->set_delete_binding(binding))
                 g_object_notify_by_pspec(G_OBJECT(terminal), pspecs[PROP_DELETE_BINDING]);
 }
 
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 48b72c4a..404b7226 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -348,6 +348,15 @@ protected:
                 eUNDERLINE
         };
 
+        /* NOTE: This needs to be kept in sync with the public VteEraseMode enum */
+        enum EraseMode {
+                eAUTO,
+                eASCII_BACKSPACE,
+                eASCII_DELETE,
+                eDELETE_SEQUENCE,
+                eTTY,
+        };
+
         /* NOTE: This needs to be kept in sync with the public VteTextBlinkMode enum */
         enum class TextBlinkMode {
                 eNEVER     = 0,
@@ -494,8 +503,8 @@ public:
         ClipboardTextRequestGtk<Terminal> m_paste_request;
 
        /* Miscellaneous options. */
-        VteEraseBinding m_backspace_binding;
-        VteEraseBinding m_delete_binding;
+        EraseMode m_backspace_binding{EraseMode::eAUTO};
+        EraseMode m_delete_binding{EraseMode::eAUTO};
         bool m_audible_bell{true};
         bool m_allow_bold{true};
         bool m_bold_is_bright{false};
@@ -1283,7 +1292,8 @@ public:
         auto text_blink_mode() const noexcept { return m_text_blink_mode; }
         bool set_allow_bold(bool setting);
         bool set_allow_hyperlink(bool setting);
-        bool set_backspace_binding(VteEraseBinding binding);
+        bool set_backspace_binding(EraseMode binding);
+        auto backspace_binding() const noexcept { return m_backspace_binding; }
         bool set_background_alpha(double alpha);
         bool set_bold_is_bright(bool setting);
         bool set_cell_height_scale(double scale);
@@ -1311,7 +1321,8 @@ public:
         bool set_cursor_shape(CursorShape shape);
         auto cursor_shape() const noexcept { return m_cursor_shape; }
         bool set_cursor_style(CursorStyle style);
-        bool set_delete_binding(VteEraseBinding binding);
+        bool set_delete_binding(EraseMode binding);
+        auto delete_binding() const noexcept { return m_delete_binding; }
         bool set_enable_bidi(bool setting);
         bool set_enable_shaping(bool setting);
         bool set_encoding(char const* codeset,
diff --git a/src/widget.hh b/src/widget.hh
index 6d17b0cb..023e5e36 100644
--- a/src/widget.hh
+++ b/src/widget.hh
@@ -111,6 +111,12 @@ public:
         bool set_cursor_shape(VteCursorShape shape) { return 
terminal()->set_cursor_shape(vte::terminal::Terminal::CursorShape(shape)); }
         auto cursor_shape() const noexcept { return VteCursorShape(terminal()->cursor_shape()); }
 
+        bool set_backspace_binding(VteEraseBinding mode) { return 
terminal()->set_backspace_binding(vte::terminal::Terminal::EraseMode(mode)); }
+        auto backspace_binding() const noexcept { return VteEraseBinding(terminal()->backspace_binding()); }
+
+        bool set_delete_binding(VteEraseBinding mode) { return 
terminal()->set_delete_binding(vte::terminal::Terminal::EraseMode(mode)); }
+        auto delete_binding() const noexcept { return VteEraseBinding(terminal()->delete_binding()); }
+
         bool set_text_blink_mode(VteTextBlinkMode mode) { return 
terminal()->set_text_blink_mode(vte::terminal::Terminal::TextBlinkMode(mode)); }
         auto text_blink_mode() const noexcept { return VteTextBlinkMode(terminal()->text_blink_mode()); }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]