1 #include <gtkmm.h>
2 #include <iostream>
3
on_destroyed_ComboBoxderived(GtkWidget *,gpointer)4 void on_destroyed_ComboBoxderived(GtkWidget*, gpointer)
5 {
6 std::cout << "on_destroyed_ComboBoxderived" << std::endl;
7 }
8
on_destroyed_menuderived(GtkWidget *,gpointer)9 void on_destroyed_menuderived(GtkWidget*, gpointer)
10 {
11 std::cout << "on_destroyed_menuderived" << std::endl;
12 }
13
14 //Previously, this derived from a Gtk::ComboBox,
15 //and that might have been necessary to trigger the bug at the time,
16 //but ComboBox is now deprecated.
17 class ComboBoxTextDerived : public Gtk::ComboBoxText
18 {
19 public:
ComboBoxTextDerived()20 ComboBoxTextDerived()
21 {
22 g_signal_connect (gobj(), "destroy",
23 G_CALLBACK (on_destroyed_ComboBoxderived), NULL);
24 }
25
~ComboBoxTextDerived()26 ~ComboBoxTextDerived()
27 {
28 //remove_menu();
29 std::cout << "~ComboBoxTextDerived()" << std::endl;
30 }
31 };
32
33 class MenuDerived : public Gtk::Menu
34 {
35 public:
MenuDerived()36 MenuDerived()
37 {
38 g_signal_connect (gobj(), "destroy",
39 G_CALLBACK (on_destroyed_menuderived), NULL);
40 }
41
~MenuDerived()42 ~MenuDerived()
43 {
44 std::cout << "~MenuDerived() 1" << std::endl;
45
46 std::cout << "~MenuDerived() 2" << std::endl;
47
48 }
49 };
50
51 class test_window : public Gtk::Window
52 {
53 public:
54 test_window();
~test_window()55 ~test_window()
56 {
57 std::cout << "~test_window()1" << std::endl;
58
59 }
60
61 protected:
62
63 //Gtk::MenuItem m_MenuItem;
64 MenuDerived m_Menu;
65 ComboBoxTextDerived m_ComboBox;
66 };
67
test_window()68 test_window::test_window()
69 //: m_MenuItem("One")
70 {
71 // m_Menu.append(m_MenuItem);
72 //m_ComboBox.set_menu(m_Menu);
73 add(m_ComboBox);
74 //show_all();
75 }
76
main(int argc,char * argv[])77 int main(int argc, char *argv[])
78 {
79 Glib::RefPtr<Gtk::Application> app =
80 Gtk::Application::create(argc, argv);
81 test_window foo;
82 return app->run(foo);
83 }
84