diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index 8bddf252fc..3834344945 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -974,6 +974,11 @@ wxIMPLEMENT_DYNAMIC_CLASS(wxSystemSettingsModule, wxModule); void wxSystemSettingsModule::OnExit() { #ifdef __WXGTK3__ + GtkSettings* settings = gtk_settings_get_default(); + g_signal_handlers_disconnect_by_func(settings, + (void*)notify_gtk_theme_name, NULL); + g_signal_handlers_disconnect_by_func(settings, + (void*)notify_gtk_font_name, NULL); #else if (gs_tlw_parent) gtk_widget_destroy(gs_tlw_parent); diff --git a/src/gtk/win_gtk.cpp b/src/gtk/win_gtk.cpp index 49f0b348dc..192e212260 100644 --- a/src/gtk/win_gtk.cpp +++ b/src/gtk/win_gtk.cpp @@ -334,6 +334,13 @@ GType wxPizza::type() static GType type; if (type == 0) { + const char* name = "wxPizza"; + char buf[30]; + for (unsigned i = 0; g_type_from_name(name); i++) + { + g_snprintf(buf, sizeof(buf), "wxPizza%u", i); + name = buf; + } const GTypeInfo info = { sizeof(wxPizzaClass), NULL, NULL, @@ -343,7 +350,7 @@ GType wxPizza::type() NULL, NULL }; type = g_type_register_static( - GTK_TYPE_FIXED, "wxPizza", &info, GTypeFlags(0)); + GTK_TYPE_FIXED, name, &info, GTypeFlags(0)); #ifdef __WXGTK3__ const GInterfaceInfo interface_info = { NULL, NULL, NULL }; g_type_add_interface_static(type, GTK_TYPE_SCROLLABLE, &interface_info);