[Xfce4-commits] r30188 - in terminal/trunk: doc/C terminal

Nick Schermer nick at xfce.org
Fri Jul 3 19:56:21 CEST 2009


Author: nick
Date: 2009-07-03 17:56:21 +0000 (Fri, 03 Jul 2009)
New Revision: 30188

Modified:
   terminal/trunk/doc/C/Terminal.xml.in
   terminal/trunk/terminal/terminal-preferences.c
   terminal/trunk/terminal/terminal-preferences.h
   terminal/trunk/terminal/terminal-screen.c
Log:
Add hidden option MiscCursorShape to set the cursor shape (bug #4602).

This option requires atleast vte version 0.19.1. 


Modified: terminal/trunk/doc/C/Terminal.xml.in
===================================================================
--- terminal/trunk/doc/C/Terminal.xml.in	2009-07-03 15:32:32 UTC (rev 30187)
+++ terminal/trunk/doc/C/Terminal.xml.in	2009-07-03 17:56:21 UTC (rev 30188)
@@ -1314,6 +1314,7 @@
 MiscBell=TRUE
 MiscConfirmClose=FALSE
 MiscCursorBlinks=TRUE
+MiscCursorShape=TERMINAL_CURSOR_SHAPE_BLOCK
 MiscCycleTabs=FALSE
 MiscInheritGeometry=TRUE
 MiscMouseAutohide=FALSE
@@ -1368,6 +1369,19 @@
             </para>
           </listitem>
         </varlistentry>
+        
+        <varlistentry>
+          <term><varname>MiscCursorShape</varname></term>
+          <listitem>
+            <para>
+              Specifies the shape of the cursor in the terminal. This can be either
+              <literal>TERMINAL_CURSOR_SHAPE_BLOCK</literal> (the default), 
+              <literal>TERMINAL_CURSOR_SHAPE_IBEAM</literal> or 
+              <literal>TERMINAL_CURSOR_SHAPE_UNDERLINE</literal>. This option is
+              only available when you compile against VTE 0.19.1 or newer.
+            </para>
+          </listitem>
+        </varlistentry>
 
         <varlistentry>
           <term><varname>MiscCycleTabs</varname></term>

Modified: terminal/trunk/terminal/terminal-preferences.c
===================================================================
--- terminal/trunk/terminal/terminal-preferences.c	2009-07-03 15:32:32 UTC (rev 30187)
+++ terminal/trunk/terminal/terminal-preferences.c	2009-07-03 17:56:21 UTC (rev 30188)
@@ -109,6 +109,7 @@
   PROP_MISC_BELL,
   PROP_MISC_BORDERS_DEFAULT,
   PROP_MISC_CURSOR_BLINKS,
+  PROP_MISC_CURSOR_SHAPE,
   PROP_MISC_DEFAULT_GEOMETRY,
   PROP_MISC_INHERIT_GEOMETRY,
   PROP_MISC_MENUBAR_DEFAULT,
@@ -298,6 +299,8 @@
     g_value_register_transform_func (G_TYPE_STRING, TERMINAL_TYPE_TITLE, transform_string_to_enum);
   if (!g_value_type_transformable (G_TYPE_STRING, TERMINAL_TYPE_ERASE_BINDING))
     g_value_register_transform_func (G_TYPE_STRING, TERMINAL_TYPE_ERASE_BINDING, transform_string_to_enum);
+  if (!g_value_type_transformable (G_TYPE_STRING, TERMINAL_TYPE_CURSOR_SHAPE))
+    g_value_register_transform_func (G_TYPE_STRING, TERMINAL_TYPE_CURSOR_SHAPE, transform_string_to_enum);
 
   /**
    * TerminalPreferences:accel-new-tab:
@@ -1036,6 +1039,18 @@
                                                          EXO_PARAM_READWRITE));
 
   /**
+   * TerminalPreferences:misc-cursor-shape:
+   **/
+  g_object_class_install_property (gobject_class,
+                                   PROP_MISC_CURSOR_SHAPE,
+                                   g_param_spec_enum ("misc-cursor-shape",
+                                                      "misc-cursor-shape",
+                                                      "MiscCursorShape",
+                                                      TERMINAL_TYPE_CURSOR_SHAPE,
+                                                      TERMINAL_CURSOR_SHAPE_BLOCK,
+                                                      EXO_PARAM_READWRITE));
+
+  /**
    * TerminalPreferences:misc-default-geometry:
    **/
   g_object_class_install_property (gobject_class,

Modified: terminal/trunk/terminal/terminal-preferences.h
===================================================================
--- terminal/trunk/terminal/terminal-preferences.h	2009-07-03 15:32:32 UTC (rev 30187)
+++ terminal/trunk/terminal/terminal-preferences.h	2009-07-03 17:56:21 UTC (rev 30188)
@@ -40,7 +40,7 @@
 {
   TERMINAL_SCROLLBAR_NONE,
   TERMINAL_SCROLLBAR_LEFT,
-  TERMINAL_SCROLLBAR_RIGHT,
+  TERMINAL_SCROLLBAR_RIGHT
 } TerminalScrollbar;
 
 typedef enum /*< enum,prefix=TERMINAL_TITLE >*/
@@ -48,14 +48,14 @@
   TERMINAL_TITLE_REPLACE,
   TERMINAL_TITLE_PREPEND,
   TERMINAL_TITLE_APPEND,
-  TERMINAL_TITLE_HIDE,
+  TERMINAL_TITLE_HIDE
 } TerminalTitle;
 
 typedef enum /*< enum,prefix=TERMINAL_BACKGROUND >*/
 {
   TERMINAL_BACKGROUND_SOLID,
   TERMINAL_BACKGROUND_IMAGE,
-  TERMINAL_BACKGROUND_TRANSPARENT,
+  TERMINAL_BACKGROUND_TRANSPARENT
 } TerminalBackground;
 
 typedef enum /*< enum,prefix=TERMINAL_BACKGROUND_STYLE >*/
@@ -63,7 +63,7 @@
   TERMINAL_BACKGROUND_STYLE_TILED,
   TERMINAL_BACKGROUND_STYLE_CENTERED,
   TERMINAL_BACKGROUND_STYLE_SCALED,
-  TERMINAL_BACKGROUND_STYLE_STRETCHED,
+  TERMINAL_BACKGROUND_STYLE_STRETCHED
 } TerminalBackgroundStyle;
 
 typedef enum /*< enum,prefix=TERMINAL_ERASE_BINDING >*/
@@ -71,9 +71,16 @@
   TERMINAL_ERASE_BINDING_AUTO,
   TERMINAL_ERASE_BINDING_ASCII_DELETE,
   TERMINAL_ERASE_BINDING_DELETE_SEQUENCE,
-  TERMINAL_ERASE_BINDING_ASCII_BACKSPACE,
+  TERMINAL_ERASE_BINDING_ASCII_BACKSPACE
 } TerminalEraseBinding;
 
+typedef enum /*< enum,prefix=TERMINAL_CURSOR_SHAPE >*/
+{
+  TERMINAL_CURSOR_SHAPE_BLOCK,
+  TERMINAL_CURSOR_SHAPE_IBEAM,
+  TERMINAL_CURSOR_SHAPE_UNDERLINE
+} TerminalCursorShape;
+
 struct _TerminalPreferencesClass
 {
   GObjectClass __parent__;

Modified: terminal/trunk/terminal/terminal-screen.c
===================================================================
--- terminal/trunk/terminal/terminal-screen.c	2009-07-03 15:32:32 UTC (rev 30187)
+++ terminal/trunk/terminal/terminal-screen.c	2009-07-03 17:56:21 UTC (rev 30188)
@@ -93,6 +93,7 @@
 static void       terminal_screen_update_font                   (TerminalScreen        *screen);
 static void       terminal_screen_update_misc_bell              (TerminalScreen        *screen);
 static void       terminal_screen_update_misc_cursor_blinks     (TerminalScreen        *screen);
+static void       terminal_screen_update_misc_cursor_shape      (TerminalScreen        *screen);
 static void       terminal_screen_update_misc_mouse_autohide    (TerminalScreen        *screen);
 static void       terminal_screen_update_scrolling_bar          (TerminalScreen        *screen);
 static void       terminal_screen_update_scrolling_lines        (TerminalScreen        *screen);
@@ -284,6 +285,7 @@
                     "swapped-signal::notify::font-name", G_CALLBACK (terminal_screen_update_font), screen,
                     "swapped-signal::notify::misc-bell", G_CALLBACK (terminal_screen_update_misc_bell), screen,
                     "swapped-signal::notify::misc-cursor-blinks", G_CALLBACK (terminal_screen_update_misc_cursor_blinks), screen,
+                    "swapped-signal::notify::misc-cursor-shape", G_CALLBACK (terminal_screen_update_misc_cursor_shape), screen,
                     "swapped-signal::notify::misc-mouse-autohide", G_CALLBACK (terminal_screen_update_misc_mouse_autohide), screen,
                     "swapped-signal::notify::scrolling-bar", G_CALLBACK (terminal_screen_update_scrolling_bar), screen,
                     "swapped-signal::notify::scrolling-lines", G_CALLBACK (terminal_screen_update_scrolling_lines), screen,
@@ -301,6 +303,7 @@
   terminal_screen_update_font (screen);
   terminal_screen_update_misc_bell (screen);
   terminal_screen_update_misc_cursor_blinks (screen);
+  terminal_screen_update_misc_cursor_shape (screen);
   terminal_screen_update_misc_mouse_autohide (screen);
   terminal_screen_update_scrolling_bar (screen);
   terminal_screen_update_scrolling_lines (screen);
@@ -713,6 +716,37 @@
 
 
 static void
+terminal_screen_update_misc_cursor_shape (TerminalScreen *screen)
+{
+#if VTE_CHECK_VERSION (0, 19, 1)
+  TerminalCursorShape    val;
+  VteTerminalCursorShape shape = VTE_CURSOR_SHAPE_BLOCK;
+
+  g_object_get (G_OBJECT (screen->preferences), "misc-cursor-shape", &val, NULL);
+
+  switch (val)
+    {
+      case TERMINAL_CURSOR_SHAPE_BLOCK:
+        break;
+
+      case TERMINAL_CURSOR_SHAPE_IBEAM:
+        shape = VTE_CURSOR_SHAPE_IBEAM;
+        break;
+
+      case TERMINAL_CURSOR_SHAPE_UNDERLINE:
+        shape = VTE_CURSOR_SHAPE_UNDERLINE;
+        break;
+
+      default:
+        terminal_assert_not_reached ();
+    }
+
+  vte_terminal_set_cursor_shape (VTE_TERMINAL (screen->terminal), shape);
+#endif
+}
+
+
+static void
 terminal_screen_update_misc_mouse_autohide (TerminalScreen *screen)
 {
   gboolean bval;




More information about the Xfce4-commits mailing list