--- a/talkatu/talkatuactiongroup.c Mon Jan 31 22:50:03 2022 -0600
+++ b/talkatu/talkatuactiongroup.c Mon Jan 31 23:23:28 2022 -0600
@@ -347,7 +347,7 @@
/* we call this separately for GTK_RESPONSE_CANCEL because
* GTK_RESPONSE_DELETE_EVENT already destroys the dialog.
- gtk_widget_destroy(GTK_WIDGET(dialog));
+ gtk_window_destroy(GTK_WINDOW(dialog)); } else if(response == GTK_RESPONSE_ACCEPT) {
TalkatuActionGroup *ag = TALKATU_ACTION_GROUP(data);
TalkatuActionGroupPrivate *priv = NULL;
@@ -369,29 +369,28 @@
talkatu_input_send_message(priv->input);
- gtk_widget_destroy(GTK_WIDGET(dialog));
+ gtk_window_destroy(GTK_WINDOW(dialog)); + g_object_unref(dialog); talkatu_action_attach_file_response_cb(GtkDialog *dialog, gint response,
- if(response == GTK_RESPONSE_CANCEL) {
- /* we call this separately for GTK_RESPONSE_CANCEL because
- * GTK_RESPONSE_DELETE_EVENT already destroys the dialog.
- gtk_widget_destroy(GTK_WIDGET(dialog));
- } else if(response == GTK_RESPONSE_ACCEPT) {
+ if(response == GTK_RESPONSE_ACCEPT) { TalkatuActionGroup *ag = TALKATU_ACTION_GROUP(data);
TalkatuActionGroupPrivate *priv = NULL;
TalkatuAttachment *attachment = NULL;
GtkWidget *attach_dialog = NULL;
gchar *filename = NULL, *content_type = NULL, *comment = NULL;
priv = talkatu_action_group_get_instance_private(ag);
- filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ file = gtk_file_chooser_get_file(GTK_FILE_CHOOSER(dialog)); + filename = g_file_get_path(file); content_type = g_content_type_guess(filename, NULL, 0, NULL);
attachment = talkatu_simple_attachment_new(G_GUINT64_CONSTANT(0),
@@ -400,8 +399,7 @@
talkatu_attachment_set_local_uri(attachment, filename);
- gtk_widget_destroy(GTK_WIDGET(dialog));
comment = talkatu_markup_get_html(priv->buffer, NULL);
attach_dialog = talkatu_attachment_dialog_new(attachment, comment);
@@ -410,8 +408,11 @@
g_signal_connect(G_OBJECT(attach_dialog), "response",
G_CALLBACK(talkatu_action_attach_file_attach_response_cb),
- gtk_widget_show_all(attach_dialog);
+ gtk_widget_show(attach_dialog); + gtk_native_dialog_destroy(GTK_NATIVE_DIALOG(dialog)); + g_object_unref(dialog); @@ -420,34 +421,32 @@
TalkatuActionGroup *ag = TALKATU_ACTION_GROUP(data);
TalkatuActionGroupPrivate *priv = NULL;
- GtkWidget *dialog = NULL;
+ GtkFileChooserNative *dialog = NULL; priv = talkatu_action_group_get_instance_private(ag);
g_return_if_fail(TALKATU_IS_INPUT(priv->input));
- dialog = gtk_file_chooser_dialog_new(_("Attach file..."),
+ dialog = gtk_file_chooser_native_new(_("Attach file..."), GTK_FILE_CHOOSER_ACTION_OPEN,
- _("Cancel"), GTK_RESPONSE_CANCEL,
- _("Open"), GTK_RESPONSE_ACCEPT,
g_signal_connect(G_OBJECT(dialog), "response",
G_CALLBACK(talkatu_action_attach_file_response_cb),
- gtk_widget_show_all(dialog);
+ gtk_native_dialog_show(GTK_NATIVE_DIALOG(dialog)); -talkatu_action_insert_link(GSimpleAction *action, GVariant *parameter,
+talkatu_action_insert_link_response_cb(GtkDialog *dialog, gint response, 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) {
+ if(response == GTK_RESPONSE_ACCEPT) { GtkTextTagTable *table = gtk_text_buffer_get_tag_table(priv->buffer);
GtkTextTag *anchor, *anchor_data;
GtkTextMark *insert_mark = NULL;
@@ -460,8 +459,8 @@
/* grab our inputs from the dialog */
- url = talkatu_link_dialog_get_url(TALKATU_LINK_DIALOG(link_dialog));
- label = talkatu_link_dialog_get_display_text(TALKATU_LINK_DIALOG(link_dialog));
+ url = talkatu_link_dialog_get_url(TALKATU_LINK_DIALOG(dialog)); + label = talkatu_link_dialog_get_display_text(TALKATU_LINK_DIALOG(dialog)); /* find the anchor tag from the table */
anchor = gtk_text_tag_table_lookup(table, TALKATU_TAG_ANCHOR);
@@ -472,7 +471,8 @@
anchor_data = gtk_text_tag_new(NULL);
- g_object_set_data_full(G_OBJECT(anchor_data), "talkatu-anchor-url", url, g_free);
+ g_object_set_data_full(G_OBJECT(anchor_data), "talkatu-anchor-url", gtk_text_tag_table_add(table, anchor_data);
insert_mark = gtk_text_buffer_get_insert(priv->buffer);
@@ -491,7 +491,21 @@
- gtk_widget_destroy(link_dialog);
+ gtk_window_destroy(GTK_WINDOW(dialog)); + g_object_unref(dialog); +talkatu_action_insert_link(GSimpleAction *action, GVariant *parameter, + GtkWidget *link_dialog = talkatu_link_dialog_new(); + g_signal_connect(G_OBJECT(link_dialog), "response", + G_CALLBACK(talkatu_action_insert_link_response_cb), + gtk_window_set_modal(GTK_WINDOW(link_dialog), TRUE); + gtk_widget_show(link_dialog); /******************************************************************************