]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkentrybuffer.c
stylecontext: Do invalidation on first resize container
[~andy/gtk] / gtk / gtkentrybuffer.c
index 7c6d2186a552df7533a1964d9674ebde2c621084..2190a10f71a416b9887c8af090eb9289a0f7c030 100644 (file)
@@ -12,9 +12,7 @@
  * Library General Public License for more details.
  *
  * You should have received a copy of the GNU Library General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
  */
 
 #include "config.h"
@@ -69,13 +67,13 @@ static guint signals[LAST_SIGNAL] = { 0 };
 
 struct _GtkEntryBufferPrivate
 {
-  guint  max_length;
-
   /* Only valid if this class is not derived */
   gchar *normal_text;
   gsize  normal_text_size;
   gsize  normal_text_bytes;
   guint  normal_text_chars;
+
+  gint   max_length;
 };
 
 G_DEFINE_TYPE (GtkEntryBuffer, gtk_entry_buffer, G_TYPE_OBJECT);
@@ -131,6 +129,8 @@ gtk_entry_buffer_normal_insert_text (GtkEntryBuffer *buffer,
   /* Need more memory */
   if (n_bytes + pv->normal_text_bytes + 1 > pv->normal_text_size)
     {
+      gchar *et_new;
+
       prev_size = pv->normal_text_size;
 
       /* Calculate our new buffer size */
@@ -157,7 +157,7 @@ gtk_entry_buffer_normal_insert_text (GtkEntryBuffer *buffer,
         }
 
       /* Could be a password, so can't leave stuff in memory. */
-      gchar *et_new = g_malloc (pv->normal_text_size);
+      et_new = g_malloc (pv->normal_text_size);
       memcpy (et_new, pv->normal_text, MIN (prev_size, pv->normal_text_size));
       trash_area (pv->normal_text, prev_size);
       g_free (pv->normal_text);
@@ -285,7 +285,7 @@ gtk_entry_buffer_set_property (GObject      *obj,
       gtk_entry_buffer_set_text (buffer, g_value_get_string (value), -1);
       break;
     case PROP_MAX_LENGTH:
-      gtk_entry_buffer_set_max_length (buffer, g_value_get_uint (value));
+      gtk_entry_buffer_set_max_length (buffer, g_value_get_int (value));
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
@@ -310,7 +310,7 @@ gtk_entry_buffer_get_property (GObject    *obj,
       g_value_set_uint (value, gtk_entry_buffer_get_length (buffer));
       break;
     case PROP_MAX_LENGTH:
-      g_value_set_uint (value, gtk_entry_buffer_get_max_length (buffer));
+      g_value_set_int (value, gtk_entry_buffer_get_max_length (buffer));
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, prop_id, pspec);
@@ -344,10 +344,13 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
    *
    * Since: 2.18
    */
-  g_object_class_install_property (gobject_class, PROP_TEXT,
-                     g_param_spec_string ("text", P_("Text"),
-                                          P_("The contents of the buffer"),
-                                          "", GTK_PARAM_READWRITE));
+  g_object_class_install_property (gobject_class,
+                                   PROP_TEXT,
+                                   g_param_spec_string ("text",
+                                                        P_("Text"),
+                                                        P_("The contents of the buffer"),
+                                                        "",
+                                                        GTK_PARAM_READWRITE));
 
   /**
    * GtkEntryBuffer:length:
@@ -356,10 +359,13 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
    *
    * Since: 2.18
    */
-  g_object_class_install_property (gobject_class, PROP_LENGTH,
-                     g_param_spec_uint ("length", P_("Text length"),
-                                        P_("Length of the text currently in the buffer"),
-                                        0, GTK_ENTRY_BUFFER_MAX_SIZE, 0, GTK_PARAM_READABLE));
+  g_object_class_install_property (gobject_class,
+                                   PROP_LENGTH,
+                                   g_param_spec_uint ("length",
+                                                      P_("Text length"),
+                                                      P_("Length of the text currently in the buffer"),
+                                                      0, GTK_ENTRY_BUFFER_MAX_SIZE, 0,
+                                                      GTK_PARAM_READABLE));
 
   /**
    * GtkEntryBuffer:max-length:
@@ -368,13 +374,16 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
    *
    * Since: 2.18
    */
-  g_object_class_install_property (gobject_class, PROP_MAX_LENGTH,
-                     g_param_spec_uint ("max-length", P_("Maximum length"),
-                                        P_("Maximum number of characters for this entry. Zero if no maximum"),
-                                        0, GTK_ENTRY_BUFFER_MAX_SIZE, 0, GTK_PARAM_READWRITE));
+  g_object_class_install_property (gobject_class,
+                                   PROP_MAX_LENGTH,
+                                   g_param_spec_int ("max-length",
+                                                     P_("Maximum length"),
+                                                     P_("Maximum number of characters for this entry. Zero if no maximum"),
+                                   0, GTK_ENTRY_BUFFER_MAX_SIZE, 0,
+                                   GTK_PARAM_READWRITE));
 
   /**
-   * GtkEntry::inserted-text:
+   * GtkEntryBuffer::inserted-text:
    * @buffer: a #GtkEntryBuffer
    * @position: the position the text was inserted at.
    * @chars: The text that was inserted.
@@ -396,7 +405,7 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
                                          G_TYPE_UINT);
 
   /**
-   * GtkEntry::deleted-text:
+   * GtkEntryBuffer::deleted-text:
    * @buffer: a #GtkEntryBuffer
    * @position: the position the text was deleted at.
    * @n_chars: The number of characters that were deleted.
@@ -422,7 +431,7 @@ gtk_entry_buffer_class_init (GtkEntryBufferClass *klass)
 
 /**
  * gtk_entry_buffer_new:
- * @initial_chars: initial buffer text, or %NULL
+ * @initial_chars: (allow-none): initial buffer text, or %NULL
  * @n_initial_chars: number of characters in @initial_chars, or -1
  *
  * Create a new GtkEntryBuffer object.
@@ -565,12 +574,11 @@ gtk_entry_buffer_set_text (GtkEntryBuffer *buffer,
  **/
 void
 gtk_entry_buffer_set_max_length (GtkEntryBuffer *buffer,
-                                 guint           max_length)
+                                 gint            max_length)
 {
   g_return_if_fail (GTK_IS_ENTRY_BUFFER (buffer));
 
-  if (max_length > GTK_ENTRY_BUFFER_MAX_SIZE)
-    max_length = GTK_ENTRY_BUFFER_MAX_SIZE;
+  max_length = CLAMP (max_length, 0, GTK_ENTRY_BUFFER_MAX_SIZE);
 
   if (max_length > 0 && gtk_entry_buffer_get_length (buffer) > max_length)
     gtk_entry_buffer_delete_text (buffer, max_length, -1);
@@ -590,8 +598,8 @@ gtk_entry_buffer_set_max_length (GtkEntryBuffer *buffer,
  *               in #GtkEntryBuffer, or 0 if there is no maximum.
  *
  * Since: 2.18
- **/
-guint
+ */
+gint
 gtk_entry_buffer_get_max_length (GtkEntryBuffer *buffer)
 {
   g_return_val_if_fail (GTK_IS_ENTRY_BUFFER (buffer), 0);
@@ -738,4 +746,3 @@ gtk_entry_buffer_emit_deleted_text (GtkEntryBuffer *buffer,
   g_return_if_fail (GTK_IS_ENTRY_BUFFER (buffer));
   g_signal_emit (buffer, signals[DELETED_TEXT], 0, position, n_chars);
 }
-