--info destroys X11 primary selection content, and does not document that either
This commit is contained in:
Andreas Mohr 2015-04-21 09:55:40 +02:00 committed by Arx Cruz
parent cecc7c75ed
commit 4fe3fa98d9

View File

@ -51,6 +51,31 @@ zenity_msg_construct_question_dialog (GtkWidget *dialog, ZenityMsgData *msg_data
} }
} }
static void
zenity_label_widget_clipboard_selection(GtkWidget *widget)
{
/* Workaround hotfix for suspected toolkit issue:
since focus change of the dialog's focussed widget (text)
somehow currently chooses to destroy
a pre-existing (read: foreign, user-initiated) X11 primary selection
(via gtk_label_select_region() -> ...
-> gtk_clipboard_set_contents()/gtk_clipboard_clear()),
we need to ensure
that the widget does have its gtk-label-select-on-focus property off,
in order to avoid having the label become selected automatically
and thereby having pre-existing clipboard content nullified.
Side note: this selection issue only applies to widgets
which have both
<property name="can_focus">True</property>
<property name="selectable">True</property>
.
*/
g_object_set(gtk_widget_get_settings (widget),
"gtk-label-select-on-focus",
FALSE,
NULL);
}
void void
zenity_msg (ZenityData *data, ZenityMsgData *msg_data) zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
{ {
@ -164,6 +189,7 @@ zenity_msg (ZenityData *data, ZenityMsgData *msg_data)
gtk_label_set_text (GTK_LABEL (text), msg_data->dialog_text); gtk_label_set_text (GTK_LABEL (text), msg_data->dialog_text);
else else
gtk_label_set_markup (GTK_LABEL (text), g_strcompress (msg_data->dialog_text)); gtk_label_set_markup (GTK_LABEL (text), g_strcompress (msg_data->dialog_text));
zenity_label_widget_clipboard_selection(GTK_WIDGET (text));
} }
if (msg_data->ellipsize) if (msg_data->ellipsize)