#include <ctype.h>
#include <string.h>
+#include <pango/pango.h>
+
+#define TEXTVIEW_MARGIN 16
+
// workaround for netbeans bug
#define g_object_set g_object_set
#define g_object_get_property g_object_get_property
void editor_init_textview(UiObject *obj, UIWIDGET textview) {
gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview), GTK_WRAP_WORD_CHAR);
- gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), 16);
+ gtk_text_view_set_left_margin(GTK_TEXT_VIEW(textview), TEXTVIEW_MARGIN);
NoteEditor *editor = malloc(sizeof(NoteEditor));
memset(editor, 0, sizeof(NoteEditor));
gtk_text_tag_table_add(table, tag);
tag = gtk_text_tag_new(EDITOR_STYLE_LIST0);
- g_object_set(tag, "left-margin", 60, "right-margin", 60, "ident", 60, NULL);
+ g_object_set(tag, "left-margin", 40 + TEXTVIEW_MARGIN, NULL);
g_object_set_data(G_OBJECT(tag), "set_style", (void*)tagstyle_list0);
gtk_text_tag_table_add(table, tag);
}
void editor_insert_list(UiText *text, UiBool oredered) {
GtkTextBuffer *buffer = text->data1;
NoteEditor *editor = g_object_get_data(text->obj, "editor");
+ GtkTextView *textview = GTK_TEXT_VIEW(editor->textview);
GtkTextMark *cursor = gtk_text_buffer_get_insert(buffer);
if(!cursor) {
gtk_text_buffer_get_iter_at_mark(buffer, &end, cursor);
GtkTextMark *start_mark = gtk_text_buffer_create_mark(buffer, NULL, &end, TRUE);
-
- gtk_text_buffer_insert(buffer, &end, "•", -1);
- gtk_text_buffer_get_iter_at_mark(buffer, &start, start_mark);
-
- gtk_text_buffer_apply_tag_by_name(buffer, EDITOR_STYLE_LIST0, &start, &end);
+ PangoContext *context = gtk_widget_get_pango_context(editor->textview);
+ PangoFontMetrics *metrics = pango_context_get_metrics(context, NULL, NULL);
+
+ //int ascent = pango_font_metrics_get_ascent(metrics) / PANGO_SCALE;
+ int descent = pango_font_metrics_get_descent(metrics) / PANGO_SCALE;
+ int height = pango_font_metrics_get_height(metrics) / PANGO_SCALE;
+
+ //GtkWidget *widget = gtk_label_new("•");
+ GtkWidget *widget = gtk_drawing_area_new(); // •
+ gtk_widget_set_size_request(widget, 40, height);
+ gtk_widget_add_css_class(widget, "ui_test");
+ gtk_widget_set_margin_bottom(widget, -descent);
+ gtk_widget_set_margin_start(widget, -40);
+
+ GtkTextChildAnchor *anchor = gtk_text_buffer_create_child_anchor(buffer, &end);
+ gtk_text_view_add_child_at_anchor(textview, widget, anchor);
+
+ gtk_text_buffer_get_iter_at_mark(buffer, &start, start_mark);
+ gtk_text_buffer_apply_tag_by_name(buffer, EDITOR_STYLE_LIST0, &start, &end);
gtk_text_buffer_delete_mark(buffer, start_mark);
}