static void popup_edit (GtkWidget *widget, GtkColorEditor *editor) { GtkWidget *popup = NULL; GtkWidget *toplevel; GtkWidget *focus; if (widget == editor->priv->sv_plane) { popup = editor->priv->sv_popup; focus = editor->priv->s_entry; } else if (widget == editor->priv->h_slider) { popup = editor->priv->h_popup; focus = editor->priv->h_entry; } else if (widget == editor->priv->a_slider) { popup = editor->priv->a_popup; focus = editor->priv->a_entry; } if (popup) { dismiss_current_popup (editor); toplevel = gtk_widget_get_toplevel (GTK_WIDGET (editor)); editor->priv->popdown_focus = gtk_window_get_focus (GTK_WINDOW (toplevel)); editor->priv->current_popup = popup; gtk_widget_show (popup); gtk_widget_grab_focus (focus); } }
static void popup_edit (GtkWidget *widget, GtkColorEditor *editor) { GtkWidget *popup = NULL; GtkWidget *toplevel; GtkWidget *focus; gint position; gint s, e; if (widget == editor->priv->sv_plane) { popup = editor->priv->sv_popup; focus = editor->priv->s_entry; position = 0; } else if (widget == editor->priv->h_slider) { popup = editor->priv->h_popup; focus = editor->priv->h_entry; gtk_range_get_slider_range (GTK_RANGE (editor->priv->h_slider), &s, &e); position = (s + e) / 2; } else if (widget == editor->priv->a_slider) { popup = editor->priv->a_popup; focus = editor->priv->a_entry; gtk_range_get_slider_range (GTK_RANGE (editor->priv->a_slider), &s, &e); position = (s + e) / 2; } if (popup == editor->priv->current_popup) dismiss_current_popup (editor); else if (popup) { dismiss_current_popup (editor); toplevel = gtk_widget_get_toplevel (GTK_WIDGET (editor)); editor->priv->popdown_focus = gtk_window_get_focus (GTK_WINDOW (toplevel)); editor->priv->current_popup = popup; editor->priv->popup_position = position; gtk_widget_show (popup); gtk_widget_grab_focus (focus); } }
static gboolean popup_key_press (GtkWidget *popup, GdkEventKey *event, GtkColorEditor *editor) { if (event->keyval == GDK_KEY_Escape) { dismiss_current_popup (editor); return TRUE; } return FALSE; }