Split keypad into its own widget
Review Request #1565 — Created Aug. 2, 2022 and submitted — Latest diff uploaded
Split keypad into its own widget
Temporarily added a
GtkMenuButton
with aGtkPopover
containing this widget to the media window, so I could check the buttons. Not sure that it totally works in the final window as I didn't start a real media session.diff --git a/pidgin/gtkmedia.c b/pidgin/gtkmedia.c --- a/pidgin/gtkmedia.c +++ b/pidgin/gtkmedia.c @@ -261,6 +261,14 @@ } static void +pidgin_media_dtmf_key_pressed_debug_cb(G_GNUC_UNUSED PidginKeypad *keypad, + gchar num, + G_GNUC_UNUSED gpointer data) +{ + g_message("DTMF key pressed! %c", num); +} + +static void pidgin_media_init (PidginMedia *media) { GtkWidget *vbox; @@ -289,6 +297,27 @@ gtk_box_pack_start(GTK_BOX(vbox), media->priv->display, TRUE, TRUE, 6); gtk_widget_show(vbox); + { + GtkWidget *button = NULL; + GtkWidget *keypad = NULL; + GtkWidget *popover = NULL; + + button = gtk_menu_button_new(); + popover = gtk_popover_new(button); + gtk_menu_button_set_popover(GTK_MENU_BUTTON(button), popover); + + keypad = pidgin_keypad_new(); + pidgin_keypad_set_key_capture_widget(PIDGIN_KEYPAD(keypad), + GTK_WIDGET(media)); + g_signal_connect(keypad, "pressed", + G_CALLBACK(pidgin_media_dtmf_key_pressed_debug_cb), + NULL); + gtk_container_add(GTK_CONTAINER(popover), keypad); + + gtk_box_pack_start(GTK_BOX(vbox), button, FALSE, FALSE, 0); + gtk_widget_show(button); + } + g_signal_connect(G_OBJECT(media), "delete-event", G_CALLBACK(pidgin_media_delete_event_cb), media);