- Change Summary:
-
Handle number pad digits as well.
- Commits:
-
Summary ID 8e97ad288798d6b921cc4cf65333018fad10b1d3 a236a14a0ff64fad180139474a91dc96e1e0b578
Split keypad into its own widget
Review Request #1565 — Created Aug. 2, 2022 and submitted
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);
Summary | ID |
---|---|
a236a14a0ff64fad180139474a91dc96e1e0b578 |
- Change Summary:
-
Mention testing code.
- Testing Done:
-
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);
+