#include <gtk/gtkcontainer.h>
#include <gtk/gtkimcontext.h>
#include <gtk/gtktextbuffer.h>
+#include <gtk/gtkmenu.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#define GTK_TYPE_TEXT_VIEW (gtk_text_view_get_type ())
-#define GTK_TEXT_VIEW(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TEXT_VIEW, GtkTextView))
-#define GTK_TEXT_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
-#define GTK_IS_TEXT_VIEW(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TEXT_VIEW))
-#define GTK_IS_TEXT_VIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_VIEW))
-#define GTK_TEXT_VIEW_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
+#define GTK_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT_VIEW, GtkTextView))
+#define GTK_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
+#define GTK_IS_TEXT_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_TEXT_VIEW))
+#define GTK_IS_TEXT_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_VIEW))
+#define GTK_TEXT_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
typedef enum
{
GTK_TEXT_WINDOW_BOTTOM
} GtkTextWindowType;
+#define GTK_TEXT_VIEW_PRIORITY_VALIDATE (GDK_PRIORITY_REDRAW + 5)
+
typedef struct _GtkTextView GtkTextView;
typedef struct _GtkTextViewClass GtkTextViewClass;
-/* Internal private type. */
+/* Internal private types. */
typedef struct _GtkTextWindow GtkTextWindow;
+typedef struct _GtkTextPendingScroll GtkTextPendingScroll;
struct _GtkTextView
{
GtkTextBuffer *buffer;
guint selection_drag_handler;
- guint selection_drag_scan_timeout;
- gint scrolling_accel_factor;
+ guint scroll_timeout;
/* Default style settings */
gint pixels_above_lines;
guint overwrite_mode : 1;
guint cursor_visible : 1;
guint need_im_reset : 1; /* If we have reset the IM since the last character entered */
+ /* just selected a word or line via double/triple click */
+ guint just_selected_element : 1;
+
+ /* disable scrolling to cursor on focus */
+ guint disable_scroll_on_focus : 1;
+
+ /* debug flag - means that we've validated onscreen since the
+ * last "invalidate" signal from the layout
+ */
+ guint onscreen_validated : 1;
+ guint mouse_cursor_obscured : 1;
+
GtkTextWindow *text_window;
GtkTextWindow *left_window;
GtkTextWindow *right_window;
GtkTextMark *dnd_mark;
guint blink_timeout;
- guint preblink_timeout;
guint first_validate_idle; /* Idle to revalidate onscreen portion, runs before resize */
guint incremental_validate_idle; /* Idle to revalidate offscreen portions, runs after redraw */
gint drag_start_y;
GSList *children;
+
+ GtkTextPendingScroll *pending_scroll;
+
+ gint pending_place_cursor_button;
};
struct _GtkTextViewClass
{
GtkContainerClass parent_class;
+ void (* set_scroll_adjustments) (GtkTextView *text_view,
+ GtkAdjustment *hadjustment,
+ GtkAdjustment *vadjustment);
+
+ void (* populate_popup) (GtkTextView *text_view,
+ GtkMenu *menu);
+
/* These are all RUN_ACTION signals for keybindings */
/* move insertion point */
GtkMovementStep step,
gint count,
gboolean extend_selection);
+
+ /* FIXME should be deprecated in favor of adding GTK_MOVEMENT_HORIZONTAL_PAGES
+ * or something in GTK 2.2, was put in to avoid adding enum values during
+ * the freeze.
+ */
+ void (* page_horizontally) (GtkTextView *text_view,
+ gint count,
+ gboolean extend_selection);
+
/* move the "anchor" (what Emacs calls the mark) to the cursor position */
void (* set_anchor) (GtkTextView *text_view);
void (* paste_clipboard) (GtkTextView *text_view);
/* overwrite */
void (* toggle_overwrite) (GtkTextView *text_view);
- void (* set_scroll_adjustments) (GtkTextView *text_view,
- GtkAdjustment *hadjustment,
- GtkAdjustment *vadjustment);
+
+ /* propagates to GtkWindow move_focus */
+ void (* move_focus) (GtkTextView *text_view,
+ GtkDirectionType direction);
+
+
+ /* Padding for future expansion */
+ void (*_gtk_reserved1) (void);
+ void (*_gtk_reserved2) (void);
+ void (*_gtk_reserved3) (void);
+ void (*_gtk_reserved4) (void);
+ void (*_gtk_reserved5) (void);
+ void (*_gtk_reserved6) (void);
+ void (*_gtk_reserved7) (void);
+ void (*_gtk_reserved8) (void);
};
-GtkType gtk_text_view_get_type (void) G_GNUC_CONST;
+GType gtk_text_view_get_type (void) G_GNUC_CONST;
GtkWidget * gtk_text_view_new (void);
GtkWidget * gtk_text_view_new_with_buffer (GtkTextBuffer *buffer);
void gtk_text_view_set_buffer (GtkTextView *text_view,
GtkTextBuffer *buffer);
GtkTextBuffer *gtk_text_view_get_buffer (GtkTextView *text_view);
-gboolean gtk_text_view_scroll_to_mark (GtkTextView *text_view,
+gboolean gtk_text_view_scroll_to_iter (GtkTextView *text_view,
+ GtkTextIter *iter,
+ gdouble within_margin,
+ gboolean use_align,
+ gdouble xalign,
+ gdouble yalign);
+void gtk_text_view_scroll_to_mark (GtkTextView *text_view,
GtkTextMark *mark,
- gint mark_within_margin);
+ gdouble within_margin,
+ gboolean use_align,
+ gdouble xalign,
+ gdouble yalign);
+void gtk_text_view_scroll_mark_onscreen (GtkTextView *text_view,
+ GtkTextMark *mark);
gboolean gtk_text_view_move_mark_onscreen (GtkTextView *text_view,
GtkTextMark *mark);
gboolean gtk_text_view_place_cursor_onscreen (GtkTextView *text_view);
void gtk_text_view_set_border_window_size (GtkTextView *text_view,
GtkTextWindowType type,
gint size);
-void gtk_text_view_set_text_window_size (GtkTextView *text_view,
- gint width,
- gint height);
-
+gint gtk_text_view_get_border_window_size (GtkTextView *text_view,
+ GtkTextWindowType type);
+
+gboolean gtk_text_view_forward_display_line (GtkTextView *text_view,
+ GtkTextIter *iter);
+gboolean gtk_text_view_backward_display_line (GtkTextView *text_view,
+ GtkTextIter *iter);
+gboolean gtk_text_view_forward_display_line_end (GtkTextView *text_view,
+ GtkTextIter *iter);
+gboolean gtk_text_view_backward_display_line_start (GtkTextView *text_view,
+ GtkTextIter *iter);
+gboolean gtk_text_view_starts_display_line (GtkTextView *text_view,
+ const GtkTextIter *iter);
+gboolean gtk_text_view_move_visually (GtkTextView *text_view,
+ GtkTextIter *iter,
+ gint count);
/* Adding child widgets */
void gtk_text_view_add_child_at_anchor (GtkTextView *text_view,
void gtk_text_view_set_tabs (GtkTextView *text_view,
PangoTabArray *tabs);
PangoTabArray* gtk_text_view_get_tabs (GtkTextView *text_view);
-
+/* note that the return value of this changes with the theme */
+GtkTextAttributes* gtk_text_view_get_default_attributes (GtkTextView *text_view);
#ifdef __cplusplus
}