combobox: Make combo box activatable

The activation is simply forwarded to the button
within.
This commit is contained in:
Maximiliano Sandoval R 2021-09-10 15:42:15 +02:00
parent c125ffb384
commit c4df987eef
No known key found for this signature in database
GPG Key ID: D64A8D747F6FE706
2 changed files with 34 additions and 1 deletions

View File

@ -172,6 +172,7 @@ typedef struct
*/
enum {
ACTIVATE,
CHANGED,
MOVE_ACTIVE,
POPUP,
@ -346,6 +347,14 @@ gtk_combo_box_measure (GtkWidget *widget,
minimum_baseline, natural_baseline);
}
static void
gtk_combo_box_activate (GtkComboBox *combo_box)
{
GtkComboBoxPrivate *priv = gtk_combo_box_get_instance_private (combo_box);
gtk_widget_activate (priv->button);
}
static void
gtk_combo_box_size_allocate (GtkWidget *widget,
int width,
@ -419,9 +428,32 @@ gtk_combo_box_class_init (GtkComboBoxClass *klass)
object_class->set_property = gtk_combo_box_set_property;
object_class->get_property = gtk_combo_box_get_property;
klass->activate = gtk_combo_box_activate;
klass->format_entry_text = gtk_combo_box_format_entry_text;
/* signals */
/**
* GtkComboBox::activate:
* @widget: the object which received the signal.
*
* Emitted to when the combo box is activated.
*
* The `::activate` signal on `GtkComboBox` is an action signal and
* emitting it causes the combo box to pop up its dropdown.
*
* Since: 4.6
*/
combo_box_signals[ACTIVATE] =
g_signal_new (I_ ("activate"),
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GtkComboBoxClass, activate),
NULL, NULL,
NULL,
G_TYPE_NONE, 0);
gtk_widget_class_set_activate_signal (widget_class, combo_box_signals[ACTIVATE]);
/**
* GtkComboBox::changed:
* @widget: the object which received the signal

View File

@ -60,10 +60,11 @@ struct _GtkComboBoxClass
void (* changed) (GtkComboBox *combo_box);
char *(* format_entry_text) (GtkComboBox *combo_box,
const char *path);
void (* activate) (GtkComboBox *combo_box);
/*< private >*/
gpointer padding[8];
gpointer padding[7];
};