#include <gdk/gdk.h>
#include <gtk/gtkeditable.h>
#include <gtk/gtkimcontext.h>
+#include <gtk/gtkmenu.h>
#include <pango/pango.h>
#ifdef __cplusplus
#define GTK_TYPE_ENTRY (gtk_entry_get_type ())
-#define GTK_ENTRY(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_ENTRY, GtkEntry))
-#define GTK_ENTRY_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY, GtkEntryClass))
-#define GTK_IS_ENTRY(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_ENTRY))
-#define GTK_IS_ENTRY_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ENTRY))
-#define GTK_ENTRY_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_ENTRY, GtkEntryClass))
+#define GTK_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY, GtkEntry))
+#define GTK_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_ENTRY, GtkEntryClass))
+#define GTK_IS_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_ENTRY))
+#define GTK_IS_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_ENTRY))
+#define GTK_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_ENTRY, GtkEntryClass))
typedef struct _GtkEntry GtkEntry;
guint editable : 1;
guint visible : 1;
guint overwrite_mode : 1;
+ guint in_drag : 1; /* Dragging within the selection */
guint16 text_length; /* length in use, in chars */
guint16 text_max_length;
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 button;
- guint timer;
+ guint blink_timeout;
guint recompute_idle;
gint scroll_offset;
gint ascent; /* font ascent, in pango units */
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 bytes */
+ guint16 preedit_cursor; /* offset of cursor within preedit string, in chars */
+
+ gint dnd_position; /* In chars, -1 == no DND cursor */
+
+ gint drag_start_x;
+ gint drag_start_y;
+
+ gunichar invisible_char;
+
+ gint width_chars;
};
struct _GtkEntryClass
{
GtkWidgetClass parent_class;
-
- /* Notification of changes
- */
- void (* changed) (GtkEntry *entry);
- void (* insert_text) (GtkEntry *entry,
- const gchar *text,
- gint length,
- gint *position);
- void (* delete_text) (GtkEntry *entry,
- gint start_pos,
- gint end_pos);
+ /* Hook to customize right-click popup */
+ void (* populate_popup) (GtkEntry *entry,
+ GtkMenu *menu);
+
/* Action signals
*/
- void (* activate) (GtkEntry *entry);
- void (* move) (GtkEntry *entry,
- GtkMovementStep step,
- gint count,
- gboolean extend_selection);
- void (* insert) (GtkEntry *entry,
- const gchar *str);
- void (* delete) (GtkEntry *entry,
- GtkDeleteType type,
- gint count);
- void (* cut_clipboard) (GtkEntry *entry);
- void (* copy_clipboard) (GtkEntry *entry);
- void (* paste_clipboard) (GtkEntry *entry);
- void (* toggle_overwrite) (GtkEntry *entry);
+ void (* activate) (GtkEntry *entry);
+ void (* move_cursor) (GtkEntry *entry,
+ GtkMovementStep step,
+ gint count,
+ gboolean extend_selection);
+ void (* insert_at_cursor) (GtkEntry *entry,
+ const gchar *str);
+ void (* delete_from_cursor) (GtkEntry *entry,
+ GtkDeleteType type,
+ gint count);
+ void (* cut_clipboard) (GtkEntry *entry);
+ void (* copy_clipboard) (GtkEntry *entry);
+ void (* paste_clipboard) (GtkEntry *entry);
+ void (* toggle_overwrite) (GtkEntry *entry);
+
+ /* Padding for future expansion */
+ void (*_gtk_reserved1) (void);
+ void (*_gtk_reserved2) (void);
+ void (*_gtk_reserved3) (void);
+ void (*_gtk_reserved4) (void);
};
-GtkType gtk_entry_get_type (void) G_GNUC_CONST;
+GType gtk_entry_get_type (void) G_GNUC_CONST;
GtkWidget* gtk_entry_new (void);
void gtk_entry_set_visibility (GtkEntry *entry,
gboolean visible);
-void gtk_entry_set_editable (GtkEntry *entry,
- gboolean editable);
+gboolean gtk_entry_get_visibility (GtkEntry *entry);
+void gtk_entry_set_invisible_char (GtkEntry *entry,
+ gunichar ch);
+gunichar gtk_entry_get_invisible_char (GtkEntry *entry);
+void gtk_entry_set_has_frame (GtkEntry *entry,
+ gboolean setting);
+gboolean gtk_entry_get_has_frame (GtkEntry *entry);
/* text is truncated if needed */
void gtk_entry_set_max_length (GtkEntry *entry,
- guint16 max);
+ gint max);
+gint gtk_entry_get_max_length (GtkEntry *entry);
+void gtk_entry_set_activates_default (GtkEntry *entry,
+ gboolean setting);
+gboolean gtk_entry_get_activates_default (GtkEntry *entry);
+
+void gtk_entry_set_width_chars (GtkEntry *entry,
+ gint n_chars);
+gint gtk_entry_get_width_chars (GtkEntry *entry);
/* Somewhat more convenient than the GtkEditable generic functions
*/
-void gtk_entry_set_text (GtkEntry *entry,
- const gchar *text);
+void gtk_entry_set_text (GtkEntry *entry,
+ const gchar *text);
/* returns a reference to the text */
-gchar* gtk_entry_get_text (GtkEntry *entry);
+G_CONST_RETURN gchar* gtk_entry_get_text (GtkEntry *entry);
+
+PangoLayout* gtk_entry_get_layout (GtkEntry *entry);
+void gtk_entry_get_layout_offsets (GtkEntry *entry,
+ gint *x,
+ gint *y);
/* Deprecated compatibility functions
*/
-GtkWidget* gtk_entry_new_with_max_length (guint16 max);
+
+#ifndef GTK_DISABLE_DEPRECATED
+GtkWidget* gtk_entry_new_with_max_length (gint max);
void gtk_entry_append_text (GtkEntry *entry,
const gchar *text);
void gtk_entry_prepend_text (GtkEntry *entry,
void gtk_entry_select_region (GtkEntry *entry,
gint start,
gint end);
+void gtk_entry_set_editable (GtkEntry *entry,
+ gboolean editable);
+#endif /* GTK_DISABLE_DEPRECATED */
#ifdef __cplusplus
}