1 #ifndef GTK_TEXT_VIEW_H
2 #define GTK_TEXT_VIEW_H
4 #include <gtk/gtkcontainer.h>
5 #include <gtk/gtkimcontext.h>
6 #include <gtk/gtktextbuffer.h>
10 #endif /* __cplusplus */
12 #define GTK_TYPE_TEXT_VIEW (gtk_text_view_get_type())
13 #define GTK_TEXT_VIEW(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_TEXT_VIEW, GtkTextView))
14 #define GTK_TEXT_VIEW_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
15 #define GTK_IS_TEXT_VIEW(obj) (GTK_CHECK_TYPE ((obj), GTK_TYPE_TEXT_VIEW))
16 #define GTK_IS_TEXT_VIEW_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_VIEW))
17 #define GTK_TEXT_VIEW_GET_CLASS(obj) (GTK_CHECK_GET_CLASS ((obj), GTK_TYPE_TEXT_VIEW, GtkTextViewClass))
21 GTK_TEXT_WINDOW_WIDGET,
24 GTK_TEXT_WINDOW_RIGHT,
26 GTK_TEXT_WINDOW_BOTTOM
29 typedef struct _GtkTextView GtkTextView;
30 typedef struct _GtkTextViewClass GtkTextViewClass;
32 /* Internal private type. */
33 typedef struct _GtkTextWindow GtkTextWindow;
36 GtkContainer parent_instance;
38 struct _GtkTextLayout *layout;
39 GtkTextBuffer *buffer;
41 guint selection_drag_handler;
42 guint selection_drag_scan_timeout;
43 gint scrolling_accel_factor;
45 gboolean overwrite_mode;
47 GtkWrapMode wrap_mode; /* Default wrap mode */
49 gboolean editable; /* default editability */
51 gboolean cursor_visible;
53 GtkTextWindow *text_window;
54 GtkTextWindow *left_window;
55 GtkTextWindow *right_window;
56 GtkTextWindow *top_window;
57 GtkTextWindow *bottom_window;
59 GtkAdjustment *hadjustment;
60 GtkAdjustment *vadjustment;
62 gint xoffset; /* Offsets between widget coordinates and buffer coordinates */
64 gint width; /* Width and height of the buffer */
67 /* The virtual cursor position is normally the same as the
68 * actual (strong) cursor position, except in two circumstances:
70 * a) When the cursor is moved vertically with the keyboard
71 * b) When the text view is scrolled with the keyboard
73 * In case a), virtual_cursor_x is preserved, but not virtual_cursor_y
74 * In case b), both virtual_cursor_x and virtual_cursor_y are preserved.
76 gint virtual_cursor_x; /* -1 means use actual cursor position */
77 gint virtual_cursor_y; /* -1 means use actual cursor position */
79 GtkTextMark *first_para_mark; /* Mark at the beginning of the first onscreen paragraph */
80 gint first_para_pixels; /* Offset of top of screen in the first onscreen paragraph */
82 GtkTextMark *dnd_mark;
85 guint first_validate_idle; /* Idle to revalidate onscreen portion, runs before resize */
86 guint incremental_validate_idle; /* Idle to revalidate offscreen portions, runs after redraw */
88 GtkIMContext *im_context;
94 struct _GtkTextViewClass {
95 GtkContainerClass parent_class;
97 /* These are all RUN_ACTION signals for keybindings */
99 /* move insertion point */
100 void (* move) (GtkTextView *text_view, GtkMovementStep step, gint count, gboolean extend_selection);
101 /* move the "anchor" (what Emacs calls the mark) to the cursor position */
102 void (* set_anchor) (GtkTextView *text_view);
104 void (* insert) (GtkTextView *text_view, const gchar *str);
105 void (* delete) (GtkTextView *text_view, GtkDeleteType type, gint count);
107 void (* cut_clipboard) (GtkTextView *text_view);
108 void (* copy_clipboard) (GtkTextView *text_view);
109 void (* paste_clipboard) (GtkTextView *text_view);
111 void (* toggle_overwrite) (GtkTextView *text_view);
112 void (* set_scroll_adjustments) (GtkTextView *text_view,
113 GtkAdjustment *hadjustment,
114 GtkAdjustment *vadjustment);
117 GtkType gtk_text_view_get_type (void) G_GNUC_CONST;
118 GtkWidget * gtk_text_view_new (void);
119 GtkWidget * gtk_text_view_new_with_buffer (GtkTextBuffer *buffer);
120 void gtk_text_view_set_buffer (GtkTextView *text_view,
121 GtkTextBuffer *buffer);
122 GtkTextBuffer *gtk_text_view_get_buffer (GtkTextView *text_view);
123 gboolean gtk_text_view_scroll_to_mark (GtkTextView *text_view,
125 gint mark_within_margin);
126 gboolean gtk_text_view_move_mark_onscreen (GtkTextView *text_view,
128 gboolean gtk_text_view_place_cursor_onscreen (GtkTextView *text_view);
130 void gtk_text_view_get_visible_rect (GtkTextView *text_view,
131 GdkRectangle *visible_rect);
132 void gtk_text_view_set_wrap_mode (GtkTextView *text_view,
133 GtkWrapMode wrap_mode);
134 GtkWrapMode gtk_text_view_get_wrap_mode (GtkTextView *text_view);
136 void gtk_text_view_set_editable (GtkTextView *text_view,
138 gboolean gtk_text_view_get_editable (GtkTextView *text_view);
140 void gtk_text_view_set_cursor_visible (GtkTextView *text_view,
142 gboolean gtk_text_view_get_cursor_visible (GtkTextView *text_view);
144 void gtk_text_view_get_iter_location (GtkTextView *text_view,
145 const GtkTextIter *iter,
146 GdkRectangle *location);
147 void gtk_text_view_get_iter_at_location (GtkTextView *text_view,
151 void gtk_text_view_get_line_yrange (GtkTextView *text_view,
152 const GtkTextIter *iter,
156 void gtk_text_view_get_line_at_y (GtkTextView *text_view,
157 GtkTextIter *target_iter,
161 void gtk_text_view_buffer_to_window_coords (GtkTextView *text_view,
162 GtkTextWindowType win,
167 void gtk_text_view_window_to_buffer_coords (GtkTextView *text_view,
168 GtkTextWindowType win,
174 GdkWindow* gtk_text_view_get_window (GtkTextView *text_view,
175 GtkTextWindowType win);
176 GtkTextWindowType gtk_text_view_get_window_type (GtkTextView *text_view,
179 void gtk_text_view_set_border_window_size (GtkTextView *text_view,
180 GtkTextWindowType type,
182 void gtk_text_view_set_text_window_size (GtkTextView *text_view,
189 #endif /* __cplusplus */
191 #endif /* GTK_TEXT_VIEW_H */