--- a/talkatu/talkatuactiongroup.c Thu May 07 21:32:25 2020 -0500
+++ b/talkatu/talkatuactiongroup.c Thu May 07 21:58:00 2020 -0500
@@ -136,11 +136,9 @@
talkatu_action_group_set_buffer(TalkatuActionGroup *ag, GtkTextBuffer *buffer) {
TalkatuActionGroupPrivate *priv = talkatu_action_group_get_instance_private(ag);
- g_object_unref(priv->buffer);
+ g_return_if_fail(TALKATU_IS_BUFFER(buffer)); - priv->buffer = g_object_ref(buffer);
+ g_set_object(&priv->buffer, buffer); @@ -231,20 +229,23 @@
-talkatu_action_format_toggle(GSimpleAction *action,
+talkatu_action_format_toggle(GSimpleAction *action, GVariant *state, - GtkTextBuffer *buffer = GTK_TEXT_BUFFER(data);
+ TalkatuActionGroup *ag = TALKATU_ACTION_GROUP(data); + TalkatuActionGroupPrivate *priv = NULL; - TalkatuBufferStyle style = talkatu_buffer_get_style(TALKATU_BUFFER(buffer));
+ TalkatuBufferStyle style; + priv = talkatu_action_group_get_instance_private(ag);; + style = talkatu_buffer_get_style(TALKATU_BUFFER(priv->buffer)); if(style == TALKATU_BUFFER_STYLE_WHOLE) {
- gtk_text_buffer_get_bounds(buffer, &start, &end);
+ gtk_text_buffer_get_bounds(priv->buffer, &start, &end); - if(gtk_text_buffer_get_selection_bounds(buffer, &start, &end)) {
+ if(gtk_text_buffer_get_selection_bounds(priv->buffer, &start, &end)) { @@ -259,65 +260,60 @@
- gtk_text_buffer_begin_user_action(buffer);
+ gtk_text_buffer_begin_user_action(priv->buffer); if(g_variant_get_boolean(state)) {
- gtk_text_buffer_apply_tag_by_name(buffer, tag_name, &start, &end);
+ gtk_text_buffer_apply_tag_by_name(priv->buffer, tag_name, &start, &end); - gtk_text_buffer_remove_tag_by_name(buffer, tag_name, &start, &end);
+ gtk_text_buffer_remove_tag_by_name(priv->buffer, tag_name, &start, &end); - gtk_text_buffer_end_user_action(buffer);
+ gtk_text_buffer_end_user_action(priv->buffer); g_simple_action_set_state(action, state);
-talkatu_action_reset_activate(GSimpleAction *act,
+talkatu_action_reset_activate(GSimpleAction *act, GVariant *parameter, - GtkTextBuffer *buffer = GTK_TEXT_BUFFER(data);
- GSimpleActionGroup *ag = NULL;
+ TalkatuActionGroup *ag = TALKATU_ACTION_GROUP(data); + TalkatuActionGroupPrivate *priv = NULL; TalkatuBufferStyle style;
gchar **actions = NULL, **action = NULL;
- g_return_if_fail(TALKATU_IS_BUFFER(buffer));
- style = talkatu_buffer_get_style(TALKATU_BUFFER(buffer));
- ag = talkatu_buffer_get_action_group(TALKATU_BUFFER(buffer));
- g_return_if_fail(TALKATU_IS_ACTION_GROUP(ag));
+ priv = talkatu_action_group_get_instance_private(ag);; + style = talkatu_buffer_get_style(TALKATU_BUFFER(priv->buffer)); /* if there's no selection or this is a whole buffer format, select the
- if(!gtk_text_buffer_get_selection_bounds(buffer, &start, &end) || style == TALKATU_BUFFER_STYLE_WHOLE) {
- gtk_text_buffer_get_bounds(buffer, &start, &end);
- gtk_text_buffer_select_range(buffer, &start, &end);
+ if(!gtk_text_buffer_get_selection_bounds(priv->buffer, &start, &end) || style == TALKATU_BUFFER_STYLE_WHOLE) { + gtk_text_buffer_get_bounds(priv->buffer, &start, &end); + gtk_text_buffer_select_range(priv->buffer, &start, &end); /* run through all of the talkatu tags and remove them from the
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_BOLD, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_ITALIC, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_UNDERLINE, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_STRIKETHROUGH, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_SUBSCRIPT, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_SUPERSCRIPT, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_PRE, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_CODE, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_SEARCH, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_H1, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_H2, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_H3, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_H4, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_H5, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_H6, &start, &end);
- gtk_text_buffer_remove_tag_by_name(buffer, TALKATU_TAG_ANCHOR, &start, &end);
+ gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_BOLD, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_ITALIC, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_UNDERLINE, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_STRIKETHROUGH, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_SUBSCRIPT, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_SUPERSCRIPT, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_PRE, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_CODE, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_SEARCH, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_H1, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_H2, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_H3, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_H4, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_H5, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_H6, &start, &end); + gtk_text_buffer_remove_tag_by_name(priv->buffer, TALKATU_TAG_ANCHOR, &start, &end); /* now run through all the actions and deactive any that are active by
@@ -420,23 +416,25 @@
-talkatu_action_insert_link(GSimpleAction *action,
+talkatu_action_insert_link(GSimpleAction *action, GVariant *parameter, - GtkTextBuffer *buffer = GTK_TEXT_BUFFER(user_data);
+ TalkatuActionGroup *ag = TALKATU_ACTION_GROUP(data); + TalkatuActionGroupPrivate *priv = NULL; GtkWidget *link_dialog = talkatu_link_dialog_new();
+ priv = talkatu_action_group_get_instance_private(ag); if(gtk_dialog_run(GTK_DIALOG(link_dialog)) == GTK_RESPONSE_ACCEPT) {
- GtkTextTagTable *table = gtk_text_buffer_get_tag_table(buffer);
+ GtkTextTagTable *table = gtk_text_buffer_get_tag_table(priv->buffer); GtkTextTag *anchor, *anchor_data;
GtkTextMark *insert_mark = NULL;
gchar *label = NULL, *url = NULL;
/* if any text is selected, delete it */
- if(gtk_text_buffer_get_has_selection(buffer)) {
- gtk_text_buffer_delete_selection(buffer, TRUE, TRUE);
+ if(gtk_text_buffer_get_has_selection(priv->buffer)) { + gtk_text_buffer_delete_selection(priv->buffer, TRUE, TRUE); /* grab our inputs from the dialog */
@@ -455,11 +453,11 @@
g_object_set_data_full(G_OBJECT(anchor_data), "talkatu-anchor-url", url, g_free);
gtk_text_tag_table_add(table, anchor_data);
- insert_mark = gtk_text_buffer_get_insert(buffer);
- gtk_text_buffer_get_iter_at_mark(buffer, &insert, insert_mark);
+ insert_mark = gtk_text_buffer_get_insert(priv->buffer); + gtk_text_buffer_get_iter_at_mark(priv->buffer, &insert, insert_mark); gtk_text_buffer_insert_with_tags(
@@ -517,10 +515,7 @@
talkatu_action_group_finalize(GObject *obj) {
TalkatuActionGroupPrivate *priv = talkatu_action_group_get_instance_private(TALKATU_ACTION_GROUP(obj));
- g_object_unref(priv->buffer);
+ g_clear_object(&priv->buffer);; G_OBJECT_CLASS(talkatu_action_group_parent_class)->finalize(obj);
@@ -528,7 +523,6 @@
talkatu_action_group_constructed(GObject *object) {
TalkatuActionGroup *ag = TALKATU_ACTION_GROUP(object);
- TalkatuActionGroupPrivate *priv = talkatu_action_group_get_instance_private(ag);
GActionEntry entries[] = {
@@ -585,7 +579,8 @@
- g_action_map_add_action_entries(G_ACTION_MAP(ag), entries, G_N_ELEMENTS(entries), priv->buffer);
+ g_action_map_add_action_entries(G_ACTION_MAP(ag), entries, + G_N_ELEMENTS(entries), ag); /* disable all of the actions by default */
for(i = 0; i < G_N_ELEMENTS(entries); i++) {