static void gimp_data_editor_set_context (GimpDocked *docked, GimpContext *context) { GimpDataEditor *editor = GIMP_DATA_EDITOR (docked); if (context == editor->context) return; if (parent_docked_iface->set_context) parent_docked_iface->set_context (docked, context); if (editor->context) { g_signal_handlers_disconnect_by_func (editor->context, gimp_data_editor_data_changed, editor); g_object_unref (editor->context); } editor->context = context; if (editor->context) { GType data_type; GimpData *data; g_object_ref (editor->context); data_type = gimp_data_factory_get_data_type (editor->data_factory); data = GIMP_DATA (gimp_context_get_by_type (editor->context, data_type)); g_signal_connect (editor->context, gimp_context_type_to_signal_name (data_type), G_CALLBACK (gimp_data_editor_data_changed), editor); gimp_data_editor_data_changed (editor->context, data, editor); } }
GtkWidget * gimp_container_popup_new (GimpContainer *container, GimpContext *context, GimpViewType view_type, gint default_view_size, gint view_size, gint view_border_width, GimpDialogFactory *dialog_factory, const gchar *dialog_identifier, const gchar *dialog_stock_id, const gchar *dialog_tooltip) { GimpContainerPopup *popup; g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL); g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL); g_return_val_if_fail (default_view_size > 0 && default_view_size <= GIMP_VIEWABLE_MAX_POPUP_SIZE, NULL); g_return_val_if_fail (view_size > 0 && view_size <= GIMP_VIEWABLE_MAX_POPUP_SIZE, NULL); g_return_val_if_fail (view_border_width >= 0 && view_border_width <= GIMP_VIEW_MAX_BORDER_WIDTH, NULL); g_return_val_if_fail (dialog_factory == NULL || GIMP_IS_DIALOG_FACTORY (dialog_factory), NULL); if (dialog_factory) { g_return_val_if_fail (dialog_identifier != NULL, NULL); g_return_val_if_fail (dialog_stock_id != NULL, NULL); g_return_val_if_fail (dialog_tooltip != NULL, NULL); } popup = g_object_new (GIMP_TYPE_CONTAINER_POPUP, "type", GTK_WINDOW_POPUP, NULL); gtk_window_set_resizable (GTK_WINDOW (popup), FALSE); popup->container = container; popup->orig_context = context; popup->context = gimp_context_new (context->gimp, "popup", context); popup->view_type = view_type; popup->default_view_size = default_view_size; popup->view_size = view_size; popup->view_border_width = view_border_width; g_signal_connect (popup->context, gimp_context_type_to_signal_name (gimp_container_get_children_type (container)), G_CALLBACK (gimp_container_popup_context_changed), popup); if (dialog_factory) { popup->dialog_factory = dialog_factory; popup->dialog_identifier = g_strdup (dialog_identifier); popup->dialog_stock_id = g_strdup (dialog_stock_id); popup->dialog_tooltip = g_strdup (dialog_tooltip); } gimp_container_popup_create_view (popup); return GTK_WIDGET (popup); }