diff --git a/gtk/keypad.ui b/gtk/keypad.ui
index 86c957531..5c4feb065 100644
--- a/gtk/keypad.ui
+++ b/gtk/keypad.ui
@@ -29,12 +29,11 @@
True
3
@@ -45,12 +44,11 @@
2
@@ -61,12 +59,11 @@
1
@@ -77,12 +74,11 @@
3
@@ -91,12 +87,11 @@
3
@@ -107,12 +102,11 @@
2
@@ -123,12 +117,11 @@
1
@@ -139,12 +132,11 @@
2
@@ -153,12 +145,11 @@
3
@@ -169,12 +160,11 @@
2
@@ -185,12 +175,11 @@
1
@@ -201,12 +190,11 @@
1
@@ -215,12 +203,11 @@
3
@@ -229,12 +216,11 @@
2
@@ -243,12 +229,11 @@
1
@@ -257,14 +242,13 @@
diff --git a/gtk/linphone.h b/gtk/linphone.h
index 156f9d389..ed8e2bf4b 100644
--- a/gtk/linphone.h
+++ b/gtk/linphone.h
@@ -254,7 +254,8 @@ LINPHONE_PUBLIC void linphone_gtk_used_identity_changed(GtkWidget *w);
LINPHONE_PUBLIC void on_proxy_refresh_button_clicked(GtkWidget *w);
LINPHONE_PUBLIC void linphone_gtk_link_to_website(GtkWidget *item);
LINPHONE_PUBLIC void linphone_gtk_options_activate(GtkWidget *item);
-LINPHONE_PUBLIC void linphone_gtk_create_keypad(GtkWidget *button);
+LINPHONE_PUBLIC void linphone_gtk_show_keypad_checked(GtkCheckMenuItem *check_menu_item);
+LINPHONE_PUBLIC gboolean linphone_gtk_keypad_destroyed_handler(void);
LINPHONE_PUBLIC void linphone_gtk_keyword_changed(GtkEditable *e);
LINPHONE_PUBLIC void linphone_gtk_buddy_lookup_contact_activated(GtkWidget *treeview);
diff --git a/gtk/main.c b/gtk/main.c
index 1930f8b89..e1f2d47a9 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -1811,7 +1811,7 @@ void linphone_gtk_keypad_key_released(GtkWidget *w, GdkEvent *event, gpointer us
}
}
-void linphone_gtk_create_keypad(GtkWidget *button){
+static void linphone_gtk_show_keypad(void){
GtkWidget *mw=linphone_gtk_get_main_window();
GtkWidget *k=(GtkWidget *)g_object_get_data(G_OBJECT(mw),"keypad");
GtkWidget *keypad;
@@ -1821,7 +1821,7 @@ void linphone_gtk_create_keypad(GtkWidget *button){
keypad=linphone_gtk_create_window("keypad", NULL);
linphone_gtk_connect_digits(keypad);
linphone_gtk_init_dtmf_table(keypad);
- g_object_set_data(G_OBJECT(mw),"keypad",(gpointer)keypad);
+ g_object_set_data(G_OBJECT(mw),"keypad", keypad);
if(!GPOINTER_TO_INT(g_object_get_data(G_OBJECT(mw),"show_abcd"))){
gtk_widget_hide(linphone_gtk_get_widget(keypad,"dtmf_A"));
gtk_widget_hide(linphone_gtk_get_widget(keypad,"dtmf_B"));
@@ -1832,6 +1832,30 @@ void linphone_gtk_create_keypad(GtkWidget *button){
gtk_widget_show(keypad);
}
+static void linphone_gtk_destroy_keypad(void) {
+ GtkWidget *mw = linphone_gtk_get_main_window();
+ GtkWidget *keypad = GTK_WIDGET(g_object_get_data(G_OBJECT(mw), "keypad"));
+ if(keypad) {
+ gtk_widget_destroy(keypad);
+ g_object_set_data(G_OBJECT(mw), "keypad", NULL);
+ }
+}
+
+void linphone_gtk_show_keypad_checked(GtkCheckMenuItem *check_menu_item) {
+ if(gtk_check_menu_item_get_active(check_menu_item)) {
+ linphone_gtk_show_keypad();
+ } else {
+ linphone_gtk_destroy_keypad();
+ }
+}
+
+gboolean linphone_gtk_keypad_destroyed_handler(void) {
+ GtkWidget *mw = linphone_gtk_get_main_window();
+ GtkWidget *show_keypad_item = linphone_gtk_get_widget(mw, "show_keypad_menu_item");
+ gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(show_keypad_item), FALSE);
+ return FALSE;
+}
+
static void linphone_gtk_init_main_window(){
GtkWidget *main_window;
linphone_gtk_configure_main_window();
diff --git a/gtk/main.ui b/gtk/main.ui
index ae98e2fc1..27d60138a 100644
--- a/gtk/main.ui
+++ b/gtk/main.ui
@@ -60,12 +60,6 @@
-
+
+
+
-
-
-
- False
- True
- 1
-
-
@@ -420,7 +408,7 @@
False
True
- 3
+ 2
@@ -435,7 +423,7 @@
False
True
end
- 4
+ 3