* 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"
#include "gtkmarshalers.h"
#include "gtkprivate.h"
#include "gtkwidget.h"
-#include "gtkalias.h"
#include <gdk/gdk.h>
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);
/* 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 */
}
/* 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);
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);
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);
*
* 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:
*
* 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:
*
* 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.
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.
/**
* 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.
**/
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);
* 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);
g_return_if_fail (GTK_IS_ENTRY_BUFFER (buffer));
g_signal_emit (buffer, signals[DELETED_TEXT], 0, position, n_chars);
}
-
-#define __GTK_ENTRY_BUFFER_C__
-#include "gtkaliasdef.c"