mirror of https://github.com/GNOME/gimp.git
app/channels_dialog.c app/color_area.c app/color_panel.c
1999-08-24 Michael Natterer <mitschel@cs.tu-berlin.de> * app/channels_dialog.c * app/color_area.c * app/color_panel.c * app/color_select.c * app/disp_callbacks.[ch] * app/gimpdnd.[ch]: pass the widget to the color dnd callbacks. * app/palette.c: color dnd for the palette dialog. Shift+click toggles setting the FG/BG color now.
This commit is contained in:
parent
90178ccb3a
commit
bb0447f165
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
1999-08-24 Michael Natterer <mitschel@cs.tu-berlin.de>
|
||||
|
||||
* app/channels_dialog.c
|
||||
* app/color_area.c
|
||||
* app/color_panel.c
|
||||
* app/color_select.c
|
||||
* app/disp_callbacks.[ch]
|
||||
* app/gimpdnd.[ch]: pass the widget to the color dnd callbacks.
|
||||
|
||||
* app/palette.c: color dnd for the palette dialog. Shift+click
|
||||
toggles setting the FG/BG color now.
|
||||
|
||||
1999-08-24 Michael Natterer <mitschel@cs.tu-berlin.de>
|
||||
|
||||
* app/color_select.[ch]: color dnd for the standard color
|
||||
|
|
|
@ -156,8 +156,9 @@ static void channel_widget_drag_leave_callback (GtkWidget *,
|
|||
guint);
|
||||
static void channel_widget_drag_indicator_callback (GtkWidget *, gpointer);
|
||||
|
||||
static void channel_widget_set_color (gpointer,
|
||||
guchar, guchar, guchar);
|
||||
static void channel_widget_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void channel_widget_draw_drop_indicator (ChannelWidget *, GimpDropType);
|
||||
static void channel_widget_delete (ChannelWidget *);
|
||||
static void channel_widget_select_update (GtkWidget *, gpointer);
|
||||
|
@ -1387,7 +1388,7 @@ channel_widget_create (GImage *gimage,
|
|||
channel_color_target_table, n_channel_color_targets,
|
||||
GDK_ACTION_MOVE | GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (list_item,
|
||||
channel_widget_set_color,
|
||||
channel_widget_drop_color,
|
||||
(gpointer) channel_widget);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (list_item), "drag_leave",
|
||||
|
@ -1630,10 +1631,11 @@ channel_widget_drag_indicator_callback (GtkWidget *widget,
|
|||
}
|
||||
|
||||
static void
|
||||
channel_widget_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
channel_widget_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
ChannelWidget *channel_widget = (ChannelWidget *) data;
|
||||
Channel *channel = channel_widget->channel;
|
||||
|
|
|
@ -35,8 +35,10 @@ typedef enum
|
|||
} ColorAreaTarget;
|
||||
|
||||
/* local function prototypes */
|
||||
static void color_area_set_color (gpointer, guchar, guchar, guchar);
|
||||
static void color_area_get_color (gpointer, guchar *, guchar *, guchar *);
|
||||
static void color_area_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
static void color_area_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
|
||||
/* Global variables */
|
||||
gint active_color = FOREGROUND;
|
||||
|
@ -405,7 +407,7 @@ color_area_create (gint width,
|
|||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
color_area_target_table, n_color_area_targets,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gimp_dnd_color_source_set (color_area, color_area_get_color, NULL);
|
||||
gimp_dnd_color_source_set (color_area, color_area_drag_color, NULL);
|
||||
|
||||
gtk_drag_dest_set (color_area,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
|
@ -413,7 +415,7 @@ color_area_create (gint width,
|
|||
GTK_DEST_DEFAULT_DROP,
|
||||
color_area_target_table, n_color_area_targets,
|
||||
GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (color_area, color_area_set_color, NULL);
|
||||
gimp_dnd_color_dest_set (color_area, color_area_drop_color, NULL);
|
||||
|
||||
return color_area;
|
||||
}
|
||||
|
@ -425,10 +427,11 @@ color_area_update ()
|
|||
}
|
||||
|
||||
static void
|
||||
color_area_get_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_area_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
if (active_color == FOREGROUND)
|
||||
palette_get_foreground (r, g, b);
|
||||
|
@ -437,10 +440,11 @@ color_area_get_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_area_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
color_area_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
if (color_notebook_active &&
|
||||
active_color == edit_color)
|
||||
|
|
|
@ -46,8 +46,10 @@ static gint color_panel_events (GtkWidget *, GdkEvent *);
|
|||
static void color_panel_select_callback (gint, gint, gint,
|
||||
ColorNotebookState, void *);
|
||||
|
||||
static void color_panel_get_color (gpointer, guchar *, guchar *, guchar *);
|
||||
static void color_panel_set_color (gpointer, guchar, guchar, guchar);
|
||||
static void color_panel_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
static void color_panel_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
|
||||
/* dnd stuff */
|
||||
static GtkTargetEntry color_panel_target_table[] =
|
||||
|
@ -104,7 +106,7 @@ color_panel_new (guchar *initial,
|
|||
color_panel_target_table, n_color_panel_targets,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gimp_dnd_color_source_set (private->drawing_area,
|
||||
color_panel_get_color, color_panel);
|
||||
color_panel_drag_color, color_panel);
|
||||
|
||||
gtk_drag_dest_set (private->drawing_area,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
|
@ -113,7 +115,7 @@ color_panel_new (guchar *initial,
|
|||
color_panel_target_table, n_color_panel_targets,
|
||||
GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (private->drawing_area,
|
||||
color_panel_set_color, color_panel);
|
||||
color_panel_drop_color, color_panel);
|
||||
|
||||
return color_panel;
|
||||
}
|
||||
|
@ -266,10 +268,11 @@ color_panel_select_callback (gint r,
|
|||
}
|
||||
|
||||
static void
|
||||
color_panel_get_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_panel_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel = data;
|
||||
|
||||
|
@ -279,10 +282,11 @@ color_panel_get_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_panel_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
color_panel_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel = data;
|
||||
ColorPanelPrivate *private = (ColorPanelPrivate *) color_panel->private_part;
|
||||
|
|
|
@ -87,12 +87,15 @@ struct _ColorSelectFill
|
|||
|
||||
static GtkWidget * color_select_widget_new (ColorSelect *, gint, gint, gint);
|
||||
|
||||
static void color_select_drag_new_color (gpointer,
|
||||
guchar *, guchar *, guchar *);
|
||||
static void color_select_drop_new_color (gpointer,
|
||||
guchar, guchar, guchar);
|
||||
static void color_select_drag_old_color (gpointer,
|
||||
guchar *, guchar *, guchar *);
|
||||
static void color_select_drag_new_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
static void color_select_drop_new_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void color_select_drag_old_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
|
||||
static void color_select_update (ColorSelect *,
|
||||
ColorSelectUpdateType);
|
||||
|
@ -461,10 +464,11 @@ color_select_widget_new (ColorSelect *csp,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drag_new_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_select_drag_new_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
@ -476,10 +480,11 @@ color_select_drag_new_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drop_new_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
color_select_drop_new_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
@ -500,10 +505,11 @@ color_select_drop_new_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drag_old_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_select_drag_old_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
|
|
@ -754,10 +754,11 @@ gdisplay_drag_drop (GtkWidget *widget,
|
|||
}
|
||||
|
||||
void
|
||||
gdisplay_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
gdisplay_set_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *gimage;
|
||||
GimpDrawable *drawable;
|
||||
|
|
|
@ -38,9 +38,10 @@ gboolean gdisplay_drag_drop (GtkWidget *widget,
|
|||
gint y,
|
||||
guint time,
|
||||
gpointer data);
|
||||
void gdisplay_set_color (gpointer data,
|
||||
void gdisplay_set_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b);
|
||||
guchar b,
|
||||
gpointer data);
|
||||
|
||||
#endif /* __DISP_CALLBACKS_H__ */
|
||||
|
|
|
@ -754,10 +754,11 @@ gdisplay_drag_drop (GtkWidget *widget,
|
|||
}
|
||||
|
||||
void
|
||||
gdisplay_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
gdisplay_set_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *gimage;
|
||||
GimpDrawable *drawable;
|
||||
|
|
|
@ -38,9 +38,10 @@ gboolean gdisplay_drag_drop (GtkWidget *widget,
|
|||
gint y,
|
||||
guint time,
|
||||
gpointer data);
|
||||
void gdisplay_set_color (gpointer data,
|
||||
void gdisplay_set_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b);
|
||||
guchar b,
|
||||
gpointer data);
|
||||
|
||||
#endif /* __DISP_CALLBACKS_H__ */
|
||||
|
|
|
@ -754,10 +754,11 @@ gdisplay_drag_drop (GtkWidget *widget,
|
|||
}
|
||||
|
||||
void
|
||||
gdisplay_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
gdisplay_set_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
GimpImage *gimage;
|
||||
GimpDrawable *drawable;
|
||||
|
|
|
@ -38,9 +38,10 @@ gboolean gdisplay_drag_drop (GtkWidget *widget,
|
|||
gint y,
|
||||
guint time,
|
||||
gpointer data);
|
||||
void gdisplay_set_color (gpointer data,
|
||||
void gdisplay_set_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b);
|
||||
guchar b,
|
||||
gpointer data);
|
||||
|
||||
#endif /* __DISP_CALLBACKS_H__ */
|
||||
|
|
|
@ -231,11 +231,11 @@ gimp_dnd_color_drag_begin (GtkWidget *widget,
|
|||
GtkWidget *window;
|
||||
GdkColor bg;
|
||||
guchar r, g, b;
|
||||
GimpDndGetColorFunc get_color_func;
|
||||
GimpDndDragColorFunc get_color_func;
|
||||
|
||||
get_color_func =
|
||||
(GimpDndGetColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_get_color_func");
|
||||
(GimpDndDragColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_get_color_func");
|
||||
|
||||
if (! get_color_func)
|
||||
return;
|
||||
|
@ -249,7 +249,7 @@ gimp_dnd_color_drag_begin (GtkWidget *widget,
|
|||
window,
|
||||
(GtkDestroyNotify) gtk_widget_destroy);
|
||||
|
||||
(* get_color_func) (data, &r, &g, &b);
|
||||
(* get_color_func) (widget, &r, &g, &b, data);
|
||||
|
||||
bg.red = 0xff * r;
|
||||
bg.green = 0xff * g;
|
||||
|
@ -279,16 +279,16 @@ gimp_dnd_color_drag_handle (GtkWidget *widget,
|
|||
{
|
||||
guint16 vals[4];
|
||||
guchar r, g, b;
|
||||
GimpDndGetColorFunc get_color_func;
|
||||
GimpDndDragColorFunc get_color_func;
|
||||
|
||||
get_color_func =
|
||||
(GimpDndGetColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_get_color_func");
|
||||
(GimpDndDragColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_get_color_func");
|
||||
|
||||
if (! get_color_func)
|
||||
return;
|
||||
|
||||
(* get_color_func) (data, &r, &g, &b);
|
||||
(* get_color_func) (widget, &r, &g, &b, data);
|
||||
|
||||
vals[0] = r * 0xff;
|
||||
vals[1] = g * 0xff;
|
||||
|
@ -312,11 +312,11 @@ gimp_dnd_color_drop_handle (GtkWidget *widget,
|
|||
{
|
||||
guint16 *vals;
|
||||
guchar r, g, b;
|
||||
GimpDndSetColorFunc set_color_func;
|
||||
GimpDndDropColorFunc set_color_func;
|
||||
|
||||
set_color_func =
|
||||
(GimpDndSetColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_set_color_func");
|
||||
(GimpDndDropColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_set_color_func");
|
||||
|
||||
if (! set_color_func)
|
||||
return;
|
||||
|
@ -337,13 +337,13 @@ gimp_dnd_color_drop_handle (GtkWidget *widget,
|
|||
g = vals[1] / 0xff;
|
||||
b = vals[2] / 0xff;
|
||||
|
||||
(* set_color_func) (data, r, g, b);
|
||||
(* set_color_func) (widget, r, g, b, data);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
GimpDndGetColorFunc get_color_func,
|
||||
gpointer data)
|
||||
gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
GimpDndDragColorFunc get_color_func,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_signal_connect (GTK_OBJECT (widget), "drag_begin",
|
||||
GTK_SIGNAL_FUNC (gimp_dnd_color_drag_begin),
|
||||
|
@ -360,9 +360,9 @@ gimp_dnd_color_source_set (GtkWidget *widget,
|
|||
}
|
||||
|
||||
void
|
||||
gimp_dnd_color_dest_set (GtkWidget *widget,
|
||||
GimpDndSetColorFunc set_color_func,
|
||||
gpointer data)
|
||||
gimp_dnd_color_dest_set (GtkWidget *widget,
|
||||
GimpDndDropColorFunc set_color_func,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_signal_connect (GTK_OBJECT (widget), "drag_data_received",
|
||||
GTK_SIGNAL_FUNC (gimp_dnd_color_drop_handle),
|
||||
|
|
|
@ -82,15 +82,17 @@ void gimp_dnd_set_drawable_preview_icon (GtkWidget *widget,
|
|||
|
||||
/* color dnd functions */
|
||||
|
||||
typedef void (*GimpDndSetColorFunc) (gpointer, guchar, guchar, guchar);
|
||||
typedef void (*GimpDndGetColorFunc) (gpointer, guchar *, guchar *, guchar *);
|
||||
typedef void (*GimpDndDropColorFunc) (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
typedef void (*GimpDndDragColorFunc) (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
|
||||
void gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
GimpDndGetColorFunc get_color_func,
|
||||
gpointer data);
|
||||
void gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
GimpDndDragColorFunc get_color_func,
|
||||
gpointer data);
|
||||
|
||||
void gimp_dnd_color_dest_set (GtkWidget *widget,
|
||||
GimpDndSetColorFunc set_color_func,
|
||||
gpointer data);
|
||||
void gimp_dnd_color_dest_set (GtkWidget *widget,
|
||||
GimpDndDropColorFunc set_color_func,
|
||||
gpointer data);
|
||||
|
||||
#endif /* __GIMP_DND_H__ */
|
||||
|
|
|
@ -156,8 +156,9 @@ static void channel_widget_drag_leave_callback (GtkWidget *,
|
|||
guint);
|
||||
static void channel_widget_drag_indicator_callback (GtkWidget *, gpointer);
|
||||
|
||||
static void channel_widget_set_color (gpointer,
|
||||
guchar, guchar, guchar);
|
||||
static void channel_widget_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void channel_widget_draw_drop_indicator (ChannelWidget *, GimpDropType);
|
||||
static void channel_widget_delete (ChannelWidget *);
|
||||
static void channel_widget_select_update (GtkWidget *, gpointer);
|
||||
|
@ -1387,7 +1388,7 @@ channel_widget_create (GImage *gimage,
|
|||
channel_color_target_table, n_channel_color_targets,
|
||||
GDK_ACTION_MOVE | GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (list_item,
|
||||
channel_widget_set_color,
|
||||
channel_widget_drop_color,
|
||||
(gpointer) channel_widget);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (list_item), "drag_leave",
|
||||
|
@ -1630,10 +1631,11 @@ channel_widget_drag_indicator_callback (GtkWidget *widget,
|
|||
}
|
||||
|
||||
static void
|
||||
channel_widget_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
channel_widget_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
ChannelWidget *channel_widget = (ChannelWidget *) data;
|
||||
Channel *channel = channel_widget->channel;
|
||||
|
|
|
@ -35,8 +35,10 @@ typedef enum
|
|||
} ColorAreaTarget;
|
||||
|
||||
/* local function prototypes */
|
||||
static void color_area_set_color (gpointer, guchar, guchar, guchar);
|
||||
static void color_area_get_color (gpointer, guchar *, guchar *, guchar *);
|
||||
static void color_area_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
static void color_area_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
|
||||
/* Global variables */
|
||||
gint active_color = FOREGROUND;
|
||||
|
@ -405,7 +407,7 @@ color_area_create (gint width,
|
|||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
color_area_target_table, n_color_area_targets,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gimp_dnd_color_source_set (color_area, color_area_get_color, NULL);
|
||||
gimp_dnd_color_source_set (color_area, color_area_drag_color, NULL);
|
||||
|
||||
gtk_drag_dest_set (color_area,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
|
@ -413,7 +415,7 @@ color_area_create (gint width,
|
|||
GTK_DEST_DEFAULT_DROP,
|
||||
color_area_target_table, n_color_area_targets,
|
||||
GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (color_area, color_area_set_color, NULL);
|
||||
gimp_dnd_color_dest_set (color_area, color_area_drop_color, NULL);
|
||||
|
||||
return color_area;
|
||||
}
|
||||
|
@ -425,10 +427,11 @@ color_area_update ()
|
|||
}
|
||||
|
||||
static void
|
||||
color_area_get_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_area_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
if (active_color == FOREGROUND)
|
||||
palette_get_foreground (r, g, b);
|
||||
|
@ -437,10 +440,11 @@ color_area_get_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_area_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
color_area_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
if (color_notebook_active &&
|
||||
active_color == edit_color)
|
||||
|
|
|
@ -87,12 +87,15 @@ struct _ColorSelectFill
|
|||
|
||||
static GtkWidget * color_select_widget_new (ColorSelect *, gint, gint, gint);
|
||||
|
||||
static void color_select_drag_new_color (gpointer,
|
||||
guchar *, guchar *, guchar *);
|
||||
static void color_select_drop_new_color (gpointer,
|
||||
guchar, guchar, guchar);
|
||||
static void color_select_drag_old_color (gpointer,
|
||||
guchar *, guchar *, guchar *);
|
||||
static void color_select_drag_new_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
static void color_select_drop_new_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void color_select_drag_old_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
|
||||
static void color_select_update (ColorSelect *,
|
||||
ColorSelectUpdateType);
|
||||
|
@ -461,10 +464,11 @@ color_select_widget_new (ColorSelect *csp,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drag_new_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_select_drag_new_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
@ -476,10 +480,11 @@ color_select_drag_new_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drop_new_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
color_select_drop_new_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
@ -500,10 +505,11 @@ color_select_drop_new_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drag_old_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_select_drag_old_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "datafiles.h"
|
||||
#include "devices.h"
|
||||
#include "errors.h"
|
||||
#include "gimpdnd.h"
|
||||
#include "gimprc.h"
|
||||
#include "gradient_header.h"
|
||||
#include "gradient.h"
|
||||
|
@ -132,6 +133,10 @@ static void palette_entries_save (PaletteEntriesP, char *);
|
|||
|
||||
PaletteDialog * create_palette_dialog (gboolean vert);
|
||||
|
||||
static void palette_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
static void palette_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
static void palette_draw_entries (PaletteDialog *palette, gint row_start,
|
||||
gint column_highlight);
|
||||
static void redraw_palette (PaletteDialog *palette);
|
||||
|
@ -162,6 +167,14 @@ static ImportDialog *import_dialog = NULL;
|
|||
PaletteDialog *top_level_edit_palette = NULL;
|
||||
PaletteDialog *top_level_palette = NULL;
|
||||
|
||||
/* dnd stuff */
|
||||
static GtkTargetEntry color_palette_target_table[] =
|
||||
{
|
||||
GIMP_TARGET_COLOR
|
||||
};
|
||||
static guint n_color_palette_targets = (sizeof (color_palette_target_table) /
|
||||
sizeof (color_palette_target_table[0]));
|
||||
|
||||
static void
|
||||
palette_entries_free (PaletteEntriesP entries)
|
||||
{
|
||||
|
@ -443,7 +456,6 @@ palette_entry_free (PaletteEntryP entry)
|
|||
g_free (entry);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
palette_free ()
|
||||
{
|
||||
|
@ -1511,9 +1523,19 @@ palette_color_area_events (GtkWidget *widget,
|
|||
g = palette->color->color[1];
|
||||
b = palette->color->color[2];
|
||||
if (active_color == FOREGROUND)
|
||||
palette_set_foreground (r, g, b);
|
||||
{
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
palette_set_background (r, g, b);
|
||||
else
|
||||
palette_set_foreground (r, g, b);
|
||||
}
|
||||
else if (active_color == BACKGROUND)
|
||||
palette_set_background (r, g, b);
|
||||
{
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
palette_set_foreground (r, g, b);
|
||||
else
|
||||
palette_set_background (r, g, b);
|
||||
}
|
||||
|
||||
palette_draw_entries (palette, row, col);
|
||||
/* Update the active color name */
|
||||
|
@ -2063,10 +2085,25 @@ create_palette_dialog (gint vert)
|
|||
(GtkSignalFunc) palette_color_area_events,
|
||||
palette);
|
||||
|
||||
gtk_widget_show (palette_region);
|
||||
gtk_container_add (GTK_CONTAINER (alignment), palette_region);
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolledwindow),
|
||||
alignment);
|
||||
gtk_widget_show (palette_region);
|
||||
|
||||
/* dnd stuff */
|
||||
gtk_drag_source_set (palette_region,
|
||||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
color_palette_target_table, n_color_palette_targets,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gimp_dnd_color_source_set (palette_region, palette_drag_color, palette);
|
||||
|
||||
gtk_drag_dest_set (alignment,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
GTK_DEST_DEFAULT_MOTION |
|
||||
GTK_DEST_DEFAULT_DROP,
|
||||
color_palette_target_table, n_color_palette_targets,
|
||||
GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (alignment, palette_drop_color, palette);
|
||||
|
||||
/* The color name entry */
|
||||
hbox2 = gtk_hbox_new (FALSE, 2);
|
||||
|
@ -2227,6 +2264,77 @@ create_palette_dialog (gint vert)
|
|||
return palette;
|
||||
}
|
||||
|
||||
static void
|
||||
palette_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
||||
palette = (PaletteDialog *) data;
|
||||
|
||||
if (palette && palette->entries)
|
||||
{
|
||||
*r = (guchar) palette->color->color[0];
|
||||
*g = (guchar) palette->color->color[1];
|
||||
*b = (guchar) palette->color->color[2];
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
palette_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
gchar *name;
|
||||
gchar *num_buf;
|
||||
GSList *list;
|
||||
gint pos = 0;
|
||||
PaletteEntriesP p_entries = NULL;
|
||||
|
||||
palette = (PaletteDialog *) data;
|
||||
|
||||
if (palette && palette->entries)
|
||||
{
|
||||
name = g_strdup_printf ("#%2x%2x%2x", r, g, b);
|
||||
|
||||
palette->color =
|
||||
palette_add_entry (palette->entries, name, r, g, b);
|
||||
|
||||
g_free (name);
|
||||
|
||||
redraw_palette (palette);
|
||||
|
||||
list = palette_entries_list;
|
||||
|
||||
while (list)
|
||||
{
|
||||
p_entries = (PaletteEntriesP) list->data;
|
||||
list = g_slist_next (list);
|
||||
|
||||
/* to make sure we get something! */
|
||||
if (p_entries == NULL)
|
||||
{
|
||||
p_entries = default_palette_entries;
|
||||
}
|
||||
if (p_entries == palette->entries)
|
||||
break;
|
||||
pos++;
|
||||
}
|
||||
|
||||
num_buf = g_strdup_printf ("%d", p_entries->n_colors);;
|
||||
palette_draw_small_preview (palette->gc, p_entries);
|
||||
gtk_clist_set_text (GTK_CLIST (palette->clist), pos, 1, num_buf);
|
||||
palette_select_set_text_all (palette->entries);
|
||||
palette_select2_set_text_all (palette->entries);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
import_dialog_select_grad_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
|
|
116
app/palette.c
116
app/palette.c
|
@ -39,6 +39,7 @@
|
|||
#include "datafiles.h"
|
||||
#include "devices.h"
|
||||
#include "errors.h"
|
||||
#include "gimpdnd.h"
|
||||
#include "gimprc.h"
|
||||
#include "gradient_header.h"
|
||||
#include "gradient.h"
|
||||
|
@ -132,6 +133,10 @@ static void palette_entries_save (PaletteEntriesP, char *);
|
|||
|
||||
PaletteDialog * create_palette_dialog (gboolean vert);
|
||||
|
||||
static void palette_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
static void palette_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
static void palette_draw_entries (PaletteDialog *palette, gint row_start,
|
||||
gint column_highlight);
|
||||
static void redraw_palette (PaletteDialog *palette);
|
||||
|
@ -162,6 +167,14 @@ static ImportDialog *import_dialog = NULL;
|
|||
PaletteDialog *top_level_edit_palette = NULL;
|
||||
PaletteDialog *top_level_palette = NULL;
|
||||
|
||||
/* dnd stuff */
|
||||
static GtkTargetEntry color_palette_target_table[] =
|
||||
{
|
||||
GIMP_TARGET_COLOR
|
||||
};
|
||||
static guint n_color_palette_targets = (sizeof (color_palette_target_table) /
|
||||
sizeof (color_palette_target_table[0]));
|
||||
|
||||
static void
|
||||
palette_entries_free (PaletteEntriesP entries)
|
||||
{
|
||||
|
@ -443,7 +456,6 @@ palette_entry_free (PaletteEntryP entry)
|
|||
g_free (entry);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
palette_free ()
|
||||
{
|
||||
|
@ -1511,9 +1523,19 @@ palette_color_area_events (GtkWidget *widget,
|
|||
g = palette->color->color[1];
|
||||
b = palette->color->color[2];
|
||||
if (active_color == FOREGROUND)
|
||||
palette_set_foreground (r, g, b);
|
||||
{
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
palette_set_background (r, g, b);
|
||||
else
|
||||
palette_set_foreground (r, g, b);
|
||||
}
|
||||
else if (active_color == BACKGROUND)
|
||||
palette_set_background (r, g, b);
|
||||
{
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
palette_set_foreground (r, g, b);
|
||||
else
|
||||
palette_set_background (r, g, b);
|
||||
}
|
||||
|
||||
palette_draw_entries (palette, row, col);
|
||||
/* Update the active color name */
|
||||
|
@ -2063,10 +2085,25 @@ create_palette_dialog (gint vert)
|
|||
(GtkSignalFunc) palette_color_area_events,
|
||||
palette);
|
||||
|
||||
gtk_widget_show (palette_region);
|
||||
gtk_container_add (GTK_CONTAINER (alignment), palette_region);
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolledwindow),
|
||||
alignment);
|
||||
gtk_widget_show (palette_region);
|
||||
|
||||
/* dnd stuff */
|
||||
gtk_drag_source_set (palette_region,
|
||||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
color_palette_target_table, n_color_palette_targets,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gimp_dnd_color_source_set (palette_region, palette_drag_color, palette);
|
||||
|
||||
gtk_drag_dest_set (alignment,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
GTK_DEST_DEFAULT_MOTION |
|
||||
GTK_DEST_DEFAULT_DROP,
|
||||
color_palette_target_table, n_color_palette_targets,
|
||||
GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (alignment, palette_drop_color, palette);
|
||||
|
||||
/* The color name entry */
|
||||
hbox2 = gtk_hbox_new (FALSE, 2);
|
||||
|
@ -2227,6 +2264,77 @@ create_palette_dialog (gint vert)
|
|||
return palette;
|
||||
}
|
||||
|
||||
static void
|
||||
palette_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
||||
palette = (PaletteDialog *) data;
|
||||
|
||||
if (palette && palette->entries)
|
||||
{
|
||||
*r = (guchar) palette->color->color[0];
|
||||
*g = (guchar) palette->color->color[1];
|
||||
*b = (guchar) palette->color->color[2];
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
palette_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
gchar *name;
|
||||
gchar *num_buf;
|
||||
GSList *list;
|
||||
gint pos = 0;
|
||||
PaletteEntriesP p_entries = NULL;
|
||||
|
||||
palette = (PaletteDialog *) data;
|
||||
|
||||
if (palette && palette->entries)
|
||||
{
|
||||
name = g_strdup_printf ("#%2x%2x%2x", r, g, b);
|
||||
|
||||
palette->color =
|
||||
palette_add_entry (palette->entries, name, r, g, b);
|
||||
|
||||
g_free (name);
|
||||
|
||||
redraw_palette (palette);
|
||||
|
||||
list = palette_entries_list;
|
||||
|
||||
while (list)
|
||||
{
|
||||
p_entries = (PaletteEntriesP) list->data;
|
||||
list = g_slist_next (list);
|
||||
|
||||
/* to make sure we get something! */
|
||||
if (p_entries == NULL)
|
||||
{
|
||||
p_entries = default_palette_entries;
|
||||
}
|
||||
if (p_entries == palette->entries)
|
||||
break;
|
||||
pos++;
|
||||
}
|
||||
|
||||
num_buf = g_strdup_printf ("%d", p_entries->n_colors);;
|
||||
palette_draw_small_preview (palette->gc, p_entries);
|
||||
gtk_clist_set_text (GTK_CLIST (palette->clist), pos, 1, num_buf);
|
||||
palette_select_set_text_all (palette->entries);
|
||||
palette_select2_set_text_all (palette->entries);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
import_dialog_select_grad_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
|
|
|
@ -46,8 +46,10 @@ static gint color_panel_events (GtkWidget *, GdkEvent *);
|
|||
static void color_panel_select_callback (gint, gint, gint,
|
||||
ColorNotebookState, void *);
|
||||
|
||||
static void color_panel_get_color (gpointer, guchar *, guchar *, guchar *);
|
||||
static void color_panel_set_color (gpointer, guchar, guchar, guchar);
|
||||
static void color_panel_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
static void color_panel_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
|
||||
/* dnd stuff */
|
||||
static GtkTargetEntry color_panel_target_table[] =
|
||||
|
@ -104,7 +106,7 @@ color_panel_new (guchar *initial,
|
|||
color_panel_target_table, n_color_panel_targets,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gimp_dnd_color_source_set (private->drawing_area,
|
||||
color_panel_get_color, color_panel);
|
||||
color_panel_drag_color, color_panel);
|
||||
|
||||
gtk_drag_dest_set (private->drawing_area,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
|
@ -113,7 +115,7 @@ color_panel_new (guchar *initial,
|
|||
color_panel_target_table, n_color_panel_targets,
|
||||
GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (private->drawing_area,
|
||||
color_panel_set_color, color_panel);
|
||||
color_panel_drop_color, color_panel);
|
||||
|
||||
return color_panel;
|
||||
}
|
||||
|
@ -266,10 +268,11 @@ color_panel_select_callback (gint r,
|
|||
}
|
||||
|
||||
static void
|
||||
color_panel_get_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_panel_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel = data;
|
||||
|
||||
|
@ -279,10 +282,11 @@ color_panel_get_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_panel_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
color_panel_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorPanel *color_panel = data;
|
||||
ColorPanelPrivate *private = (ColorPanelPrivate *) color_panel->private_part;
|
||||
|
|
|
@ -231,11 +231,11 @@ gimp_dnd_color_drag_begin (GtkWidget *widget,
|
|||
GtkWidget *window;
|
||||
GdkColor bg;
|
||||
guchar r, g, b;
|
||||
GimpDndGetColorFunc get_color_func;
|
||||
GimpDndDragColorFunc get_color_func;
|
||||
|
||||
get_color_func =
|
||||
(GimpDndGetColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_get_color_func");
|
||||
(GimpDndDragColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_get_color_func");
|
||||
|
||||
if (! get_color_func)
|
||||
return;
|
||||
|
@ -249,7 +249,7 @@ gimp_dnd_color_drag_begin (GtkWidget *widget,
|
|||
window,
|
||||
(GtkDestroyNotify) gtk_widget_destroy);
|
||||
|
||||
(* get_color_func) (data, &r, &g, &b);
|
||||
(* get_color_func) (widget, &r, &g, &b, data);
|
||||
|
||||
bg.red = 0xff * r;
|
||||
bg.green = 0xff * g;
|
||||
|
@ -279,16 +279,16 @@ gimp_dnd_color_drag_handle (GtkWidget *widget,
|
|||
{
|
||||
guint16 vals[4];
|
||||
guchar r, g, b;
|
||||
GimpDndGetColorFunc get_color_func;
|
||||
GimpDndDragColorFunc get_color_func;
|
||||
|
||||
get_color_func =
|
||||
(GimpDndGetColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_get_color_func");
|
||||
(GimpDndDragColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_get_color_func");
|
||||
|
||||
if (! get_color_func)
|
||||
return;
|
||||
|
||||
(* get_color_func) (data, &r, &g, &b);
|
||||
(* get_color_func) (widget, &r, &g, &b, data);
|
||||
|
||||
vals[0] = r * 0xff;
|
||||
vals[1] = g * 0xff;
|
||||
|
@ -312,11 +312,11 @@ gimp_dnd_color_drop_handle (GtkWidget *widget,
|
|||
{
|
||||
guint16 *vals;
|
||||
guchar r, g, b;
|
||||
GimpDndSetColorFunc set_color_func;
|
||||
GimpDndDropColorFunc set_color_func;
|
||||
|
||||
set_color_func =
|
||||
(GimpDndSetColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_set_color_func");
|
||||
(GimpDndDropColorFunc) gtk_object_get_data (GTK_OBJECT (widget),
|
||||
"gimp_dnd_set_color_func");
|
||||
|
||||
if (! set_color_func)
|
||||
return;
|
||||
|
@ -337,13 +337,13 @@ gimp_dnd_color_drop_handle (GtkWidget *widget,
|
|||
g = vals[1] / 0xff;
|
||||
b = vals[2] / 0xff;
|
||||
|
||||
(* set_color_func) (data, r, g, b);
|
||||
(* set_color_func) (widget, r, g, b, data);
|
||||
}
|
||||
|
||||
void
|
||||
gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
GimpDndGetColorFunc get_color_func,
|
||||
gpointer data)
|
||||
gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
GimpDndDragColorFunc get_color_func,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_signal_connect (GTK_OBJECT (widget), "drag_begin",
|
||||
GTK_SIGNAL_FUNC (gimp_dnd_color_drag_begin),
|
||||
|
@ -360,9 +360,9 @@ gimp_dnd_color_source_set (GtkWidget *widget,
|
|||
}
|
||||
|
||||
void
|
||||
gimp_dnd_color_dest_set (GtkWidget *widget,
|
||||
GimpDndSetColorFunc set_color_func,
|
||||
gpointer data)
|
||||
gimp_dnd_color_dest_set (GtkWidget *widget,
|
||||
GimpDndDropColorFunc set_color_func,
|
||||
gpointer data)
|
||||
{
|
||||
gtk_signal_connect (GTK_OBJECT (widget), "drag_data_received",
|
||||
GTK_SIGNAL_FUNC (gimp_dnd_color_drop_handle),
|
||||
|
|
|
@ -82,15 +82,17 @@ void gimp_dnd_set_drawable_preview_icon (GtkWidget *widget,
|
|||
|
||||
/* color dnd functions */
|
||||
|
||||
typedef void (*GimpDndSetColorFunc) (gpointer, guchar, guchar, guchar);
|
||||
typedef void (*GimpDndGetColorFunc) (gpointer, guchar *, guchar *, guchar *);
|
||||
typedef void (*GimpDndDropColorFunc) (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
typedef void (*GimpDndDragColorFunc) (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
|
||||
void gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
GimpDndGetColorFunc get_color_func,
|
||||
gpointer data);
|
||||
void gimp_dnd_color_source_set (GtkWidget *widget,
|
||||
GimpDndDragColorFunc get_color_func,
|
||||
gpointer data);
|
||||
|
||||
void gimp_dnd_color_dest_set (GtkWidget *widget,
|
||||
GimpDndSetColorFunc set_color_func,
|
||||
gpointer data);
|
||||
void gimp_dnd_color_dest_set (GtkWidget *widget,
|
||||
GimpDndDropColorFunc set_color_func,
|
||||
gpointer data);
|
||||
|
||||
#endif /* __GIMP_DND_H__ */
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#include "datafiles.h"
|
||||
#include "devices.h"
|
||||
#include "errors.h"
|
||||
#include "gimpdnd.h"
|
||||
#include "gimprc.h"
|
||||
#include "gradient_header.h"
|
||||
#include "gradient.h"
|
||||
|
@ -132,6 +133,10 @@ static void palette_entries_save (PaletteEntriesP, char *);
|
|||
|
||||
PaletteDialog * create_palette_dialog (gboolean vert);
|
||||
|
||||
static void palette_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
static void palette_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
static void palette_draw_entries (PaletteDialog *palette, gint row_start,
|
||||
gint column_highlight);
|
||||
static void redraw_palette (PaletteDialog *palette);
|
||||
|
@ -162,6 +167,14 @@ static ImportDialog *import_dialog = NULL;
|
|||
PaletteDialog *top_level_edit_palette = NULL;
|
||||
PaletteDialog *top_level_palette = NULL;
|
||||
|
||||
/* dnd stuff */
|
||||
static GtkTargetEntry color_palette_target_table[] =
|
||||
{
|
||||
GIMP_TARGET_COLOR
|
||||
};
|
||||
static guint n_color_palette_targets = (sizeof (color_palette_target_table) /
|
||||
sizeof (color_palette_target_table[0]));
|
||||
|
||||
static void
|
||||
palette_entries_free (PaletteEntriesP entries)
|
||||
{
|
||||
|
@ -443,7 +456,6 @@ palette_entry_free (PaletteEntryP entry)
|
|||
g_free (entry);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
palette_free ()
|
||||
{
|
||||
|
@ -1511,9 +1523,19 @@ palette_color_area_events (GtkWidget *widget,
|
|||
g = palette->color->color[1];
|
||||
b = palette->color->color[2];
|
||||
if (active_color == FOREGROUND)
|
||||
palette_set_foreground (r, g, b);
|
||||
{
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
palette_set_background (r, g, b);
|
||||
else
|
||||
palette_set_foreground (r, g, b);
|
||||
}
|
||||
else if (active_color == BACKGROUND)
|
||||
palette_set_background (r, g, b);
|
||||
{
|
||||
if (bevent->state & GDK_CONTROL_MASK)
|
||||
palette_set_foreground (r, g, b);
|
||||
else
|
||||
palette_set_background (r, g, b);
|
||||
}
|
||||
|
||||
palette_draw_entries (palette, row, col);
|
||||
/* Update the active color name */
|
||||
|
@ -2063,10 +2085,25 @@ create_palette_dialog (gint vert)
|
|||
(GtkSignalFunc) palette_color_area_events,
|
||||
palette);
|
||||
|
||||
gtk_widget_show (palette_region);
|
||||
gtk_container_add (GTK_CONTAINER (alignment), palette_region);
|
||||
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (scrolledwindow),
|
||||
alignment);
|
||||
gtk_widget_show (palette_region);
|
||||
|
||||
/* dnd stuff */
|
||||
gtk_drag_source_set (palette_region,
|
||||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
color_palette_target_table, n_color_palette_targets,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gimp_dnd_color_source_set (palette_region, palette_drag_color, palette);
|
||||
|
||||
gtk_drag_dest_set (alignment,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
GTK_DEST_DEFAULT_MOTION |
|
||||
GTK_DEST_DEFAULT_DROP,
|
||||
color_palette_target_table, n_color_palette_targets,
|
||||
GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (alignment, palette_drop_color, palette);
|
||||
|
||||
/* The color name entry */
|
||||
hbox2 = gtk_hbox_new (FALSE, 2);
|
||||
|
@ -2227,6 +2264,77 @@ create_palette_dialog (gint vert)
|
|||
return palette;
|
||||
}
|
||||
|
||||
static void
|
||||
palette_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
|
||||
palette = (PaletteDialog *) data;
|
||||
|
||||
if (palette && palette->entries)
|
||||
{
|
||||
*r = (guchar) palette->color->color[0];
|
||||
*g = (guchar) palette->color->color[1];
|
||||
*b = (guchar) palette->color->color[2];
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
palette_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
PaletteDialog *palette;
|
||||
gchar *name;
|
||||
gchar *num_buf;
|
||||
GSList *list;
|
||||
gint pos = 0;
|
||||
PaletteEntriesP p_entries = NULL;
|
||||
|
||||
palette = (PaletteDialog *) data;
|
||||
|
||||
if (palette && palette->entries)
|
||||
{
|
||||
name = g_strdup_printf ("#%2x%2x%2x", r, g, b);
|
||||
|
||||
palette->color =
|
||||
palette_add_entry (palette->entries, name, r, g, b);
|
||||
|
||||
g_free (name);
|
||||
|
||||
redraw_palette (palette);
|
||||
|
||||
list = palette_entries_list;
|
||||
|
||||
while (list)
|
||||
{
|
||||
p_entries = (PaletteEntriesP) list->data;
|
||||
list = g_slist_next (list);
|
||||
|
||||
/* to make sure we get something! */
|
||||
if (p_entries == NULL)
|
||||
{
|
||||
p_entries = default_palette_entries;
|
||||
}
|
||||
if (p_entries == palette->entries)
|
||||
break;
|
||||
pos++;
|
||||
}
|
||||
|
||||
num_buf = g_strdup_printf ("%d", p_entries->n_colors);;
|
||||
palette_draw_small_preview (palette->gc, p_entries);
|
||||
gtk_clist_set_text (GTK_CLIST (palette->clist), pos, 1, num_buf);
|
||||
palette_select_set_text_all (palette->entries);
|
||||
palette_select2_set_text_all (palette->entries);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
import_dialog_select_grad_callback (GtkWidget *widget,
|
||||
gpointer data)
|
||||
|
|
|
@ -35,8 +35,10 @@ typedef enum
|
|||
} ColorAreaTarget;
|
||||
|
||||
/* local function prototypes */
|
||||
static void color_area_set_color (gpointer, guchar, guchar, guchar);
|
||||
static void color_area_get_color (gpointer, guchar *, guchar *, guchar *);
|
||||
static void color_area_drop_color (GtkWidget *,
|
||||
guchar, guchar, guchar, gpointer);
|
||||
static void color_area_drag_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *, gpointer);
|
||||
|
||||
/* Global variables */
|
||||
gint active_color = FOREGROUND;
|
||||
|
@ -405,7 +407,7 @@ color_area_create (gint width,
|
|||
GDK_BUTTON1_MASK | GDK_BUTTON3_MASK,
|
||||
color_area_target_table, n_color_area_targets,
|
||||
GDK_ACTION_COPY | GDK_ACTION_MOVE);
|
||||
gimp_dnd_color_source_set (color_area, color_area_get_color, NULL);
|
||||
gimp_dnd_color_source_set (color_area, color_area_drag_color, NULL);
|
||||
|
||||
gtk_drag_dest_set (color_area,
|
||||
GTK_DEST_DEFAULT_HIGHLIGHT |
|
||||
|
@ -413,7 +415,7 @@ color_area_create (gint width,
|
|||
GTK_DEST_DEFAULT_DROP,
|
||||
color_area_target_table, n_color_area_targets,
|
||||
GDK_ACTION_COPY);
|
||||
gimp_dnd_color_dest_set (color_area, color_area_set_color, NULL);
|
||||
gimp_dnd_color_dest_set (color_area, color_area_drop_color, NULL);
|
||||
|
||||
return color_area;
|
||||
}
|
||||
|
@ -425,10 +427,11 @@ color_area_update ()
|
|||
}
|
||||
|
||||
static void
|
||||
color_area_get_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_area_drag_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
if (active_color == FOREGROUND)
|
||||
palette_get_foreground (r, g, b);
|
||||
|
@ -437,10 +440,11 @@ color_area_get_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_area_set_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
color_area_drop_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
if (color_notebook_active &&
|
||||
active_color == edit_color)
|
||||
|
|
|
@ -87,12 +87,15 @@ struct _ColorSelectFill
|
|||
|
||||
static GtkWidget * color_select_widget_new (ColorSelect *, gint, gint, gint);
|
||||
|
||||
static void color_select_drag_new_color (gpointer,
|
||||
guchar *, guchar *, guchar *);
|
||||
static void color_select_drop_new_color (gpointer,
|
||||
guchar, guchar, guchar);
|
||||
static void color_select_drag_old_color (gpointer,
|
||||
guchar *, guchar *, guchar *);
|
||||
static void color_select_drag_new_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
static void color_select_drop_new_color (GtkWidget *,
|
||||
guchar, guchar, guchar,
|
||||
gpointer);
|
||||
static void color_select_drag_old_color (GtkWidget *,
|
||||
guchar *, guchar *, guchar *,
|
||||
gpointer);
|
||||
|
||||
static void color_select_update (ColorSelect *,
|
||||
ColorSelectUpdateType);
|
||||
|
@ -461,10 +464,11 @@ color_select_widget_new (ColorSelect *csp,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drag_new_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_select_drag_new_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
@ -476,10 +480,11 @@ color_select_drag_new_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drop_new_color (gpointer data,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b)
|
||||
color_select_drop_new_color (GtkWidget *widget,
|
||||
guchar r,
|
||||
guchar g,
|
||||
guchar b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
@ -500,10 +505,11 @@ color_select_drop_new_color (gpointer data,
|
|||
}
|
||||
|
||||
static void
|
||||
color_select_drag_old_color (gpointer data,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b)
|
||||
color_select_drag_old_color (GtkWidget *widget,
|
||||
guchar *r,
|
||||
guchar *g,
|
||||
guchar *b,
|
||||
gpointer data)
|
||||
{
|
||||
ColorSelect *csp;
|
||||
|
||||
|
|
Loading…
Reference in New Issue