* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free
- * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
*
* Original Tk license:
*
#error "You are not supposed to be including this file; the equivalent public API is in gtktextview.h"
#endif
-#include <gtk/gtktextbuffer.h>
-#include <gtk/gtktextiter.h>
+#include <gtk/gtk.h>
G_BEGIN_DECLS
typedef struct _GtkTextLayout GtkTextLayout;
typedef struct _GtkTextLayoutClass GtkTextLayoutClass;
typedef struct _GtkTextLineDisplay GtkTextLineDisplay;
-typedef struct _GtkTextCursorDisplay GtkTextCursorDisplay;
typedef struct _GtkTextAttrAppearance GtkTextAttrAppearance;
struct _GtkTextLayout
PangoAttrList *preedit_attrs;
gint preedit_len;
gint preedit_cursor;
+
+ guint overwrite_mode : 1;
};
struct _GtkTextLayoutClass
PangoAttribute attr;
GtkTextAppearance appearance;
};
-struct _GtkTextCursorDisplay
-{
- gint x;
- gint y;
- gint height;
- guint is_strong : 1;
- guint is_weak : 1;
-};
+
struct _GtkTextLineDisplay
{
PangoLayout *layout;
- GSList *cursors;
- GSList *shaped_objects; /* Only for backwards compatibility */
-
+ GArray *cursors; /* indexes of cursors in the PangoLayout */
+
GtkTextDirection direction;
gint width; /* Width of layout */
gint bottom_margin;
gint insert_index; /* Byte index of insert cursor within para or -1 */
- gboolean size_only;
GtkTextLine *line;
GdkColor *pg_bg_color;
+ GdkRectangle block_cursor;
guint cursors_invalid : 1;
+ guint has_block_cursor : 1;
+ guint cursor_at_line_end : 1;
+ guint size_only : 1;
+
+ GdkRGBA *pg_bg_rgba;
};
-extern PangoAttrType gtk_text_attr_appearance_type;
+#ifdef GTK_COMPILATION
+extern G_GNUC_INTERNAL PangoAttrType gtk_text_attr_appearance_type;
+#endif
GType gtk_text_layout_get_type (void) G_GNUC_CONST;
PangoContext *rtl_context);
void gtk_text_layout_set_cursor_direction (GtkTextLayout *layout,
GtkTextDirection direction);
+void gtk_text_layout_set_overwrite_mode (GtkTextLayout *layout,
+ gboolean overwrite);
void gtk_text_layout_set_keyboard_direction (GtkTextLayout *layout,
GtkTextDirection keyboard_dir);
void gtk_text_layout_default_style_changed (GtkTextLayout *layout);
GtkTextIter *iter,
GdkRectangle *strong_pos,
GdkRectangle *weak_pos);
+gboolean _gtk_text_layout_get_block_cursor (GtkTextLayout *layout,
+ GdkRectangle *pos);
gboolean gtk_text_layout_clamp_iter_to_vrange (GtkTextLayout *layout,
GtkTextIter *iter,
gint top,