[vte] terminal: Use an enum class for cursor blink mode
- From: Christian Persch <chpe src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vte] terminal: Use an enum class for cursor blink mode
- Date: Mon, 18 Nov 2019 21:43:25 +0000 (UTC)
commit d6e1b8994e9c2ef96d8b27172b8ceb9f5cc22d7a
Author: Christian Persch <chpe src gnome org>
Date: Mon Nov 18 22:42:22 2019 +0100
terminal: Use an enum class for cursor blink mode
src/vte.cc | 19 ++++++++-----------
src/vtegtk.cc | 4 ++--
src/vteinternal.hh | 20 ++++++++++++++++----
src/widget.hh | 3 +++
4 files changed, 29 insertions(+), 17 deletions(-)
---
diff --git a/src/vte.cc b/src/vte.cc
index bd9607ef..1e07eb5c 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -7892,9 +7892,6 @@ Terminal::Terminal(vte::platform::Widget* w,
/* Cursor shape. */
m_cursor_shape = VTE_CURSOR_SHAPE_BLOCK;
- /* Cursor blinking. */
- m_cursor_blink_mode = VTE_CURSOR_BLINK_SYSTEM;
-
/* Initialize the saved cursor. */
save_cursor(&m_normal_screen);
save_cursor(&m_alternate_screen);
@@ -9766,17 +9763,17 @@ Terminal::update_cursor_blinks()
bool blink = false;
switch (decscusr_cursor_blink()) {
- case VTE_CURSOR_BLINK_SYSTEM:
+ case CursorBlinkMode::eSYSTEM:
gboolean v;
g_object_get(gtk_widget_get_settings(m_widget),
"gtk-cursor-blink",
&v, nullptr);
blink = v != FALSE;
break;
- case VTE_CURSOR_BLINK_ON:
+ case CursorBlinkMode::eON:
blink = true;
break;
- case VTE_CURSOR_BLINK_OFF:
+ case CursorBlinkMode::eOFF:
blink = false;
break;
}
@@ -9789,7 +9786,7 @@ Terminal::update_cursor_blinks()
}
bool
-Terminal::set_cursor_blink_mode(VteCursorBlinkMode mode)
+Terminal::set_cursor_blink_mode(CursorBlinkMode mode)
{
if (mode == m_cursor_blink_mode)
return false;
@@ -9836,8 +9833,8 @@ Terminal::set_cursor_style(CursorStyle style)
*
* Return value: cursor blink mode
*/
-VteCursorBlinkMode
-Terminal::decscusr_cursor_blink()
+Terminal::CursorBlinkMode
+Terminal::decscusr_cursor_blink() const noexcept
{
switch (m_cursor_style) {
default:
@@ -9846,11 +9843,11 @@ Terminal::decscusr_cursor_blink()
case CursorStyle::eBLINK_BLOCK:
case CursorStyle::eBLINK_UNDERLINE:
case CursorStyle::eBLINK_IBEAM:
- return VTE_CURSOR_BLINK_ON;
+ return CursorBlinkMode::eON;
case CursorStyle::eSTEADY_BLOCK:
case CursorStyle::eSTEADY_UNDERLINE:
case CursorStyle::eSTEADY_IBEAM:
- return VTE_CURSOR_BLINK_OFF;
+ return CursorBlinkMode::eOFF;
}
}
diff --git a/src/vtegtk.cc b/src/vtegtk.cc
index 0333218d..62236640 100644
--- a/src/vtegtk.cc
+++ b/src/vtegtk.cc
@@ -3759,7 +3759,7 @@ vte_terminal_get_cursor_blink_mode(VteTerminal *terminal)
{
g_return_val_if_fail(VTE_IS_TERMINAL(terminal), VTE_CURSOR_BLINK_SYSTEM);
- return IMPL(terminal)->m_cursor_blink_mode;
+ return WIDGET(terminal)->cursor_blink_mode();
}
/**
@@ -3777,7 +3777,7 @@ vte_terminal_set_cursor_blink_mode(VteTerminal *terminal,
g_return_if_fail(VTE_IS_TERMINAL(terminal));
g_return_if_fail(mode >= VTE_CURSOR_BLINK_SYSTEM && mode <= VTE_CURSOR_BLINK_OFF);
- if (IMPL(terminal)->set_cursor_blink_mode(mode))
+ if (WIDGET(terminal)->set_cursor_blink_mode(mode))
g_object_notify_by_pspec(G_OBJECT(terminal), pspecs[PROP_CURSOR_BLINK_MODE]);
}
diff --git a/src/vteinternal.hh b/src/vteinternal.hh
index 290ee188..8f62573a 100644
--- a/src/vteinternal.hh
+++ b/src/vteinternal.hh
@@ -304,6 +304,8 @@ class Widget;
namespace terminal {
class Terminal {
+ friend class vte::platform::Widget;
+
private:
/* These correspond to the parameters for DECSCUSR (Set cursor style). */
enum class CursorStyle {
@@ -329,6 +331,15 @@ private:
eSTEADY_IBEAM = 6,
};
+protected:
+
+ /* NOTE: This needs to be kept in sync with the public VteCursorBlinkMode enum */
+ enum class CursorBlinkMode {
+ eSYSTEM,
+ eON,
+ eOFF
+ };
+
public:
Terminal(vte::platform::Widget* w,
VteTerminal *t);
@@ -491,8 +502,8 @@ public:
VteCursorShape m_cursor_shape;
double m_cursor_aspect_ratio{0.04};
- /* Cursor blinking, as set in dconf. */
- VteCursorBlinkMode m_cursor_blink_mode;
+ /* Cursor blinking */
+ CursorBlinkMode m_cursor_blink_mode{CursorBlinkMode::eSYSTEM};
gboolean m_cursor_blink_state;
guint m_cursor_blink_tag{0}; /* cursor blinking timeout ID */
gint m_cursor_blink_cycle; /* gtk-cursor-blink-time / 2 */
@@ -833,7 +844,7 @@ public:
void add_cursor_timeout();
void remove_cursor_timeout();
void update_cursor_blinks();
- VteCursorBlinkMode decscusr_cursor_blink();
+ CursorBlinkMode decscusr_cursor_blink() const noexcept;
VteCursorShape decscusr_cursor_shape();
void remove_text_blink_timeout();
@@ -1280,7 +1291,8 @@ public:
vte::color::rgb const *palette,
gsize palette_size);
void set_colors_default();
- bool set_cursor_blink_mode(VteCursorBlinkMode mode);
+ bool set_cursor_blink_mode(CursorBlinkMode mode);
+ auto cursor_blink_mode() const noexcept { return m_cursor_blink_mode; }
bool set_cursor_shape(VteCursorShape shape);
bool set_cursor_style(CursorStyle style);
bool set_delete_binding(VteEraseBinding binding);
diff --git a/src/widget.hh b/src/widget.hh
index b8c60cd8..53e3d7be 100644
--- a/src/widget.hh
+++ b/src/widget.hh
@@ -105,6 +105,9 @@ public:
auto hscroll_policy() const noexcept { return m_hscroll_policy; }
auto vscroll_policy() const noexcept { return m_vscroll_policy; }
+ bool set_cursor_blink_mode(VteCursorBlinkMode mode) { return
terminal()->set_cursor_blink_mode(vte::terminal::Terminal::CursorBlinkMode(mode)); }
+ auto cursor_blink_mode() const noexcept { return
VteCursorBlinkMode(terminal()->cursor_blink_mode()); }
+
char const* encoding() const noexcept { return m_terminal->encoding(); }
void emit_child_exited(int status) noexcept;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]