diff options
author | Antenore Gatta <antenore@simbiosi.org> | 2019-08-26 16:53:44 +0300 |
---|---|---|
committer | Antenore Gatta <antenore@simbiosi.org> | 2019-08-26 16:53:44 +0300 |
commit | 2b3c3859b0adc80326cd8da5e06e5fc3da9a814d (patch) | |
tree | f9ecb47c0ffd58a5f4d109acee272c5b00227a58 | |
parent | e223486b0bb7dc981a7ec0f22575e8550bb2d44b (diff) |
Makes RemminaNews modal to avoid that it steals input to the RCW
-rw-r--r-- | data/ui/remmina_news.glade | 2 | ||||
-rw-r--r-- | src/rmnews.c | 18 |
2 files changed, 17 insertions, 3 deletions
diff --git a/data/ui/remmina_news.glade b/data/ui/remmina_news.glade index 7c1d35980..d113c4d3e 100644 --- a/data/ui/remmina_news.glade +++ b/data/ui/remmina_news.glade @@ -6,7 +6,9 @@ <property name="can_focus">False</property> <property name="default_width">640</property> <property name="default_height">480</property> + <property name="destroy_with_parent">True</property> <property name="type_hint">dialog</property> + <property name="urgency_hint">True</property> <child> <placeholder/> </child> diff --git a/src/rmnews.c b/src/rmnews.c index 3eccfe3a6..155610135 100644 --- a/src/rmnews.c +++ b/src/rmnews.c @@ -159,6 +159,14 @@ static void rmnews_close_clicked(GtkButton *btn, gpointer user_data) rmnews_news_dialog->dialog = NULL; } +static void rmnews_set_modal (GtkWindow *window, gpointer user_data) +{ + TRACE_CALL(__func__); + g_debug("Unsetting modality for RemMinaNews"); + gtk_window_set_modal(window, FALSE); +} + + static gint rmnews_show_news(GtkWindow *parent) { TRACE_CALL(__func__); @@ -168,8 +176,6 @@ static gint rmnews_show_news(GtkWindow *parent) rmnews_news_dialog->builder = remmina_public_gtk_builder_new_from_file("remmina_news.glade"); rmnews_news_dialog->dialog = GTK_DIALOG(gtk_builder_get_object(rmnews_news_dialog->builder, "RemminaNewsDialog")); - if (parent) - gtk_window_set_transient_for(GTK_WINDOW(rmnews_news_dialog->dialog), parent); rmnews_news_dialog->rmnews_text_view = GTK_TEXT_VIEW(GET_OBJ("rmnews_text_view")); rmnews_news_dialog->rmnews_label = GTK_LABEL(GET_OBJ("rmnews_label")); @@ -194,6 +200,8 @@ static gint rmnews_show_news(GtkWindow *parent) G_CALLBACK(rmnews_close_clicked), (gpointer)rmnews_news_dialog); g_signal_connect(rmnews_news_dialog->dialog, "close", G_CALLBACK(rmnews_close_clicked), (gpointer)rmnews_news_dialog); + g_signal_connect(rmnews_news_dialog->dialog, "show", + G_CALLBACK(rmnews_set_modal), (gpointer)rmnews_news_dialog); /* Connect signals */ gtk_builder_connect_signals(rmnews_news_dialog->builder, NULL); @@ -201,6 +209,7 @@ static gint rmnews_show_news(GtkWindow *parent) return rmnews_news_dialog->retval; } + static void rmnews_get_url_cb(SoupSession *session, SoupMessage *msg, gpointer data) { TRACE_CALL(__func__); @@ -313,7 +322,10 @@ static void rmnews_get_url_cb(SoupSession *session, SoupMessage *msg, gpointer d if (g_strcmp0(filesha, filesha_after) != 0) { g_info("SHA1 differs, we show the news and reset the counter"); remmina_pref.periodic_rmnews_last_get = 0; - rmnews_show_news(remmina_main_get_window()); + GtkWindow *parent = remmina_main_get_window(); + rmnews_show_news(parent); + if (parent) + gtk_window_set_transient_for(GTK_WINDOW(rmnews_news_dialog->dialog), parent); } else { g_get_current_time(&t); remmina_pref.periodic_rmnews_last_get = t.tv_sec; |