void nsColorPicker::Done(GtkWidget* color_chooser, gint response) { switch (response) { case GTK_RESPONSE_OK: case GTK_RESPONSE_ACCEPT: ReadValueFromColorChooser(color_chooser); break; case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_CLOSE: case GTK_RESPONSE_DELETE_EVENT: break; default: NS_WARNING("Unexpected response"); break; } // A "response" signal won't be sent again but "destroy" will be. g_signal_handlers_disconnect_by_func(color_chooser, FuncToGpointer(OnDestroy), this); gtk_widget_destroy(color_chooser); if (mCallback) { mCallback->Done(mColor); mCallback = nullptr; } NS_RELEASE_THIS(); }
nsScreenManagerGtk :: ~nsScreenManagerGtk() { g_signal_handlers_disconnect_by_func(gdk_screen_get_default(), FuncToGpointer(monitors_changed), this); if (mRootWindow) { gdk_window_remove_filter(mRootWindow, root_window_event_filter, this); g_object_unref(mRootWindow); mRootWindow = nullptr; } /* XineramaIsActive() registers a callback function close_display() * in X, which is to be called in XCloseDisplay(). This is the case * if Xinerama is active, even if only with one screen. * * We can't unload libXinerama.so.1 here because this will make * the address of close_display() registered in X to be invalid and * it will crash when XCloseDisplay() is called later. */ }
void nsColorPicker::Done(GtkWidget* color_chooser, gint response) { switch (response) { case GTK_RESPONSE_OK: case GTK_RESPONSE_ACCEPT: #if defined(ACTIVATE_GTK3_COLOR_PICKER) && GTK_CHECK_VERSION(3,4,0) GdkRGBA color; gtk_color_chooser_get_rgba(GTK_COLOR_CHOOSER(color_chooser), &color); SetColor(&color); #else ReadValueFromColorSelection(WidgetGetColorSelection(color_chooser)); #endif break; case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_CLOSE: case GTK_RESPONSE_DELETE_EVENT: mColor = mInitialColor; break; default: NS_WARNING("Unexpected response"); break; } // A "response" signal won't be sent again but "destroy" will be. g_signal_handlers_disconnect_by_func(color_chooser, FuncToGpointer(OnDestroy), this); gtk_widget_destroy(color_chooser); if (mCallback) { mCallback->Done(mColor); mCallback = nullptr; } NS_RELEASE_THIS(); }