gtk+ r20534 - trunk/gtk



Author: timj
Date: Fri Jun 20 11:01:56 2008
New Revision: 20534
URL: http://svn.gnome.org/viewvc/gtk+?rev=20534&view=rev

Log:
Seal GtkEntry


Modified:
   trunk/gtk/gtkentry.c
   trunk/gtk/gtkentry.h

Modified: trunk/gtk/gtkentry.c
==============================================================================
--- trunk/gtk/gtkentry.c	(original)
+++ trunk/gtk/gtkentry.c	Fri Jun 20 11:01:56 2008
@@ -133,7 +133,9 @@
   PROP_TEXT,
   PROP_XALIGN,
   PROP_TRUNCATE_MULTILINE,
-  PROP_SHADOW_TYPE
+  PROP_SHADOW_TYPE,
+  PROP_OVERWRITE_MODE,
+  PROP_TEXT_LENGTH
 };
 
 static guint signals[LAST_SIGNAL] = { 0 };
@@ -632,6 +634,37 @@
                                                       GTK_SHADOW_IN,
                                                       GTK_PARAM_READWRITE));
 
+  /**
+   * GtkEntry:overwrite-mode:
+   *
+   * If text is overwritten when typing in the #GtkEntry.
+   *
+   * Since: 2.14
+   */
+  g_object_class_install_property (gobject_class,
+                                   PROP_OVERWRITE_MODE,
+                                   g_param_spec_boolean ("overwrite-mode",
+                                                         P_("Overwrite mode"),
+                                                         P_("Whether new text overwrites existing text"),
+                                                         FALSE,
+                                                         GTK_PARAM_READWRITE));
+  /**
+   * GtkEntry:text-length:
+   *
+   * The length of the text in the #GtkEntry.
+   *
+   * Since: 2.14
+   */
+  g_object_class_install_property (gobject_class,
+                                   PROP_TEXT_LENGTH,
+                                   g_param_spec_uint ("text-length",
+                                                      P_("Text length"),
+                                                      P_("Length of the text currently in the entry"),
+                                                      0, 
+                                                      G_MAXUINT16,
+                                                      0,
+                                                      GTK_PARAM_READABLE));
+
   signals[POPULATE_POPUP] =
     g_signal_new (I_("populate_popup"),
 		  G_OBJECT_CLASS_TYPE (gobject_class),
@@ -1026,6 +1059,10 @@
       priv->shadow_type = g_value_get_enum (value);
       break;
 
+    case PROP_OVERWRITE_MODE:
+      gtk_entry_set_overwrite_mode (entry, g_value_get_boolean (value));
+      break;
+
     case PROP_SCROLL_OFFSET:
     case PROP_CURSOR_POSITION:
     default:
@@ -1090,6 +1127,12 @@
     case PROP_SHADOW_TYPE:
       g_value_set_enum (value, priv->shadow_type);
       break;
+    case PROP_OVERWRITE_MODE:
+      g_value_set_boolean (value, entry->overwrite_mode);
+      break;
+    case PROP_TEXT_LENGTH:
+      g_value_set_boolean (value, entry->text_length);
+      break;
 
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -4630,6 +4673,43 @@
 }
 
 /**
+ * gtk_entry_set_overwrite_mode:
+ * @entry: a #GtkEntry
+ * @setting: new value
+ * 
+ * Sets whether the text is overwritten when typing in the #GtkEntry.
+ **/
+void
+gtk_entry_set_overwrite_mode (GtkEntry *entry,
+                              gboolean  setting)
+{
+  g_return_if_fail (GTK_IS_ENTRY (entry));
+  
+  if (entry->overwrite_mode == setting) 
+    return;
+  
+  gtk_entry_toggle_overwrite (entry);
+
+  g_object_notify (G_OBJECT (entry), "overwrite-mode");
+}
+
+/**
+ * gtk_entry_get_overwrite_mode:
+ * @entry: a #GtkEntry
+ * 
+ * Gets the value set by gtk_entry_set_overwrite_mode().
+ * 
+ * Return value: whether the text is overwritten when typing.
+ **/
+gboolean
+gtk_entry_get_overwrite_mode (GtkEntry *entry)
+{
+  g_return_val_if_fail (GTK_IS_ENTRY (entry), FALSE);
+
+  return entry->overwrite_mode;
+}
+
+/**
  * gtk_entry_get_text:
  * @entry: a #GtkEntry
  *
@@ -4716,6 +4796,24 @@
 }
 
 /**
+ * gtk_entry_get_text_length:
+ * @entry: a #GtkEntry
+ *
+ * Retrieves the current length of the text in
+ * @entry. 
+ *
+ * Return value: the current number of characters
+ *               in #GtkEntry, or 0 if there are none.
+ **/
+guint16
+gtk_entry_get_text_length (GtkEntry *entry)
+{
+  g_return_val_if_fail (GTK_IS_ENTRY (entry), 0);
+
+  return entry->text_length;
+}
+
+/**
  * gtk_entry_set_activates_default:
  * @entry: a #GtkEntry
  * @setting: %TRUE to activate window's default widget on Enter keypress

Modified: trunk/gtk/gtkentry.h
==============================================================================
--- trunk/gtk/gtkentry.h	(original)
+++ trunk/gtk/gtkentry.h	Fri Jun 20 11:01:56 2008
@@ -56,61 +56,62 @@
 {
   GtkWidget  widget;
 
-  gchar     *text;
+  gchar       *GSEAL (text);
 
-  guint      editable : 1;
-  guint      visible  : 1;
-  guint      overwrite_mode : 1;
-  guint      in_drag : 1;	/* Dragging within the selection */
+  guint        GSEAL (editable) : 1;
+  guint        GSEAL (visible)  : 1;
+  guint        GSEAL (overwrite_mode) : 1;
+  guint        GSEAL (in_drag) : 1;	            /* FIXME: Should be private?
+                                                       Dragging within the selection */
 
-  guint16 text_length;	/* length in use, in chars */
-  guint16 text_max_length;
+  guint16      GSEAL (text_length);	            /* length in use, in chars */
+  guint16      GSEAL (text_max_length);
 
   /*< private >*/
-  GdkWindow *text_area;
-  GtkIMContext *im_context;
-  GtkWidget   *popup_menu;
-
-  gint         current_pos;
-  gint         selection_bound;
-
-  PangoLayout *cached_layout;
-
-  guint        cache_includes_preedit : 1;
-  guint        need_im_reset          : 1;
-  guint        has_frame              : 1;
-  guint        activates_default      : 1;
-  guint        cursor_visible         : 1;
-  guint        in_click               : 1;	/* Flag so we don't select all when clicking in entry to focus in */
-  guint        is_cell_renderer       : 1;
-  guint        editing_canceled       : 1; /* Only used by GtkCellRendererText */
-  guint        mouse_cursor_obscured  : 1;
-  guint        select_words           : 1;
-  guint        select_lines           : 1;
-  guint        resolved_dir           : 4; /* PangoDirection */
-  guint        truncate_multiline     : 1;
-
-  guint   button;
-  guint   blink_timeout;
-  guint   recompute_idle;
-  gint    scroll_offset;
-  gint    ascent;	/* font ascent, in pango units  */
-  gint    descent;	/* font descent, in pango units  */
-
-  guint16 text_size;	/* allocated size, in bytes */
-  guint16 n_bytes;	/* length in use, in bytes */
-
-  guint16 preedit_length;	/* length of preedit string, in bytes */
-  guint16 preedit_cursor;	/* offset of cursor within preedit string, in chars */
+  GdkWindow    *GSEAL (text_area);
+  GtkIMContext *GSEAL (im_context);
+  GtkWidget    *GSEAL (popup_menu);
+
+  gint          GSEAL (current_pos);
+  gint          GSEAL (selection_bound);
+
+  PangoLayout  *GSEAL (cached_layout);
+
+  guint         GSEAL (cache_includes_preedit) : 1;
+  guint         GSEAL (need_im_reset)          : 1;
+  guint         GSEAL (has_frame)              : 1;
+  guint         GSEAL (activates_default)      : 1;
+  guint         GSEAL (cursor_visible)         : 1;
+  guint         GSEAL (in_click)               : 1; /* Flag so we don't select all when clicking in entry to focus in */
+  guint         GSEAL (is_cell_renderer)       : 1;
+  guint         GSEAL (editing_canceled)       : 1; /* Only used by GtkCellRendererText */ 
+  guint         GSEAL (mouse_cursor_obscured)  : 1;
+  guint         GSEAL (select_words)           : 1;
+  guint         GSEAL (select_lines)           : 1;
+  guint         GSEAL (resolved_dir)           : 4; /* PangoDirection */
+  guint         GSEAL (truncate_multiline)     : 1;
+
+  guint         GSEAL (button);
+  guint         GSEAL (blink_timeout);
+  guint         GSEAL (recompute_idle);
+  gint          GSEAL (scroll_offset);
+  gint          GSEAL (ascent);	                    /* font ascent in pango units  */
+  gint          GSEAL (descent);	            /* font descent in pango units */
+
+  guint16       GSEAL (text_size);	            /* allocated size, in bytes */
+  guint16       GSEAL (n_bytes);	            /* length in use, in bytes */
+
+  guint16       GSEAL (preedit_length);	            /* length of preedit string, in bytes */
+  guint16       GSEAL (preedit_cursor);	            /* offset of cursor within preedit string, in chars */
 
-  gint dnd_position;		/* In chars, -1 == no DND cursor */
+  gint          GSEAL (dnd_position);		    /* In chars, -1 == no DND cursor */
 
-  gint drag_start_x;
-  gint drag_start_y;
+  gint          GSEAL (drag_start_x);
+  gint          GSEAL (drag_start_y);
 
-  gunichar invisible_char;
+  gunichar      GSEAL (invisible_char);
 
-  gint width_chars;
+  gint          GSEAL (width_chars);
 };
 
 struct _GtkEntryClass
@@ -165,10 +166,14 @@
 void       gtk_entry_set_inner_border                (GtkEntry        *entry,
                                                       const GtkBorder *border);
 G_CONST_RETURN GtkBorder* gtk_entry_get_inner_border (GtkEntry        *entry);
+void       gtk_entry_set_overwrite_mode         (GtkEntry      *entry,
+                                                 gboolean       overwrite);
+gboolean   gtk_entry_get_overwrite_mode         (GtkEntry      *entry);
 /* text is truncated if needed */
 void       gtk_entry_set_max_length 		(GtkEntry      *entry,
 						 gint           max);
 gint       gtk_entry_get_max_length             (GtkEntry      *entry);
+guint16    gtk_entry_get_text_length            (GtkEntry      *entry);
 void       gtk_entry_set_activates_default      (GtkEntry      *entry,
                                                  gboolean       setting);
 gboolean   gtk_entry_get_activates_default      (GtkEntry      *entry);



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