Merge branch 'update-on-print-comboentry-change' into 'main'
printeroptionwidget: Update on combo-entry change Closes #6782 See merge request GNOME/gtk!7532
This commit is contained in:
@@ -44,6 +44,7 @@ struct GtkPrinterOptionWidgetPrivate
|
||||
{
|
||||
GtkPrinterOption *source;
|
||||
gulong source_changed_handler;
|
||||
gulong comboentry_changed_handler_id;
|
||||
|
||||
GtkWidget *check;
|
||||
GtkWidget *combo;
|
||||
@@ -765,9 +766,7 @@ filter_numeric (const char *val,
|
||||
}
|
||||
|
||||
static void
|
||||
combo_changed_cb (GtkWidget *combo,
|
||||
GParamSpec *pspec,
|
||||
GtkPrinterOptionWidget *widget)
|
||||
handle_combo_entry_change (GtkPrinterOptionWidget *widget)
|
||||
{
|
||||
GtkPrinterOptionWidgetPrivate *priv = widget->priv;
|
||||
char *value;
|
||||
@@ -813,7 +812,21 @@ combo_changed_cb (GtkWidget *combo,
|
||||
if (changed)
|
||||
{
|
||||
GtkWidget *entry = gtk_widget_get_first_child (priv->combo);
|
||||
gssize buffer_length, filtered_buffer_length;
|
||||
gint position;
|
||||
|
||||
position = gtk_editable_get_position (GTK_EDITABLE (entry));
|
||||
buffer_length = gtk_entry_buffer_get_length (gtk_entry_get_buffer (GTK_ENTRY (entry)));
|
||||
|
||||
g_signal_handler_block (entry, priv->comboentry_changed_handler_id);
|
||||
gtk_editable_set_text (GTK_EDITABLE (entry), filtered_val);
|
||||
g_signal_handler_unblock (entry, priv->comboentry_changed_handler_id);
|
||||
|
||||
filtered_buffer_length = gtk_entry_buffer_get_length (gtk_entry_get_buffer (GTK_ENTRY (entry)));
|
||||
|
||||
/* Maintain position of the cursor with respect to the end of the buffer. */
|
||||
if (position > 0 && filtered_buffer_length < buffer_length)
|
||||
gtk_editable_set_position (GTK_EDITABLE (entry), position - (buffer_length - filtered_buffer_length));
|
||||
}
|
||||
value = filtered_val;
|
||||
}
|
||||
@@ -825,6 +838,21 @@ combo_changed_cb (GtkWidget *combo,
|
||||
emit_changed (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
combo_changed_cb (GtkWidget *combo,
|
||||
GParamSpec *pspec,
|
||||
GtkPrinterOptionWidget *widget)
|
||||
{
|
||||
handle_combo_entry_change (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
comboentry_changed_cb (GtkEditable *editable,
|
||||
GtkPrinterOptionWidget *widget)
|
||||
{
|
||||
handle_combo_entry_change (widget);
|
||||
}
|
||||
|
||||
static void
|
||||
entry_changed_cb (GtkWidget *entry,
|
||||
GtkPrinterOptionWidget *widget)
|
||||
@@ -958,9 +986,15 @@ construct_widgets (GtkPrinterOptionWidget *widget)
|
||||
source->choices[i]);
|
||||
gtk_box_append (GTK_BOX (widget), priv->combo);
|
||||
if (GTK_IS_DROP_DOWN (priv->combo))
|
||||
g_signal_connect (priv->combo, "notify::selected", G_CALLBACK (combo_changed_cb),widget);
|
||||
{
|
||||
g_signal_connect (priv->combo, "notify::selected", G_CALLBACK (combo_changed_cb),widget);
|
||||
}
|
||||
else
|
||||
g_signal_connect (gtk_widget_get_last_child (priv->combo), "notify::selected",G_CALLBACK (combo_changed_cb), widget);
|
||||
{
|
||||
g_signal_connect (gtk_widget_get_last_child (priv->combo), "notify::selected", G_CALLBACK (combo_changed_cb), widget);
|
||||
priv->comboentry_changed_handler_id = g_signal_connect (gtk_widget_get_first_child (priv->combo), "changed", G_CALLBACK (comboentry_changed_cb), widget);
|
||||
}
|
||||
|
||||
|
||||
text = g_strdup_printf ("%s:", source->display_text);
|
||||
priv->label = gtk_label_new_with_mnemonic (text);
|
||||
|
||||
Reference in New Issue
Block a user