diff --git a/src/gtk/settings.cpp b/src/gtk/settings.cpp index 7758c1095b..4a1140ad54 100644 --- a/src/gtk/settings.cpp +++ b/src/gtk/settings.cpp @@ -1024,6 +1024,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 6e13eeaa05..963e2d3503 100644 --- a/src/gtk/win_gtk.cpp +++ b/src/gtk/win_gtk.cpp @@ -325,6 +325,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, @@ -334,7 +341,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);