app/paint_options.h put the pointer to tool's private context to the

2000-02-18  Michael Natterer  <mitch@gimp.org>

	* app/paint_options.h
	* app/tool_options.h: put the pointer to tool's private context to
	the PaintOptions structure instead of attaching it to the
	paint_mode optionmenu (which does not exist for all paint tools
	which have a private context). Fixes bug #6308.
This commit is contained in:
Michael Natterer 2000-02-18 21:22:13 +00:00 committed by Michael Natterer
parent 24c54a77de
commit bf72684e5a
7 changed files with 38 additions and 51 deletions

View File

@ -1,3 +1,11 @@
2000-02-18 Michael Natterer <mitch@gimp.org>
* app/paint_options.h
* app/tool_options.h: put the pointer to tool's private context to
the PaintOptions structure instead of attaching it to the
paint_mode optionmenu (which does not exist for all paint tools
which have a private context). Fixes bug #6308.
2000-02-18 Michael Natterer <mitch@gimp.org> 2000-02-18 Michael Natterer <mitch@gimp.org>
* libgimp/gimpwidgets.c: added (empty) documentation headers. * libgimp/gimpwidgets.c: added (empty) documentation headers.

View File

@ -76,17 +76,14 @@ tool_options_paint_mode_update (GtkWidget *widget,
{ {
LayerModeEffects paint_mode; LayerModeEffects paint_mode;
PaintOptions *options; PaintOptions *options;
GimpContext *context;
paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget)); paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget));
options = (PaintOptions *) data; options = (PaintOptions *) data;
context = gtk_object_get_data (GTK_OBJECT (options->paint_mode_w),
"tool_context");
gtk_signal_handler_block_by_data (GTK_OBJECT (context), gtk_signal_handler_block_by_data (GTK_OBJECT (options->context),
options->paint_mode_w); options->paint_mode_w);
gimp_context_set_paint_mode (GIMP_CONTEXT (context), paint_mode); gimp_context_set_paint_mode (GIMP_CONTEXT (options->context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (context), gtk_signal_handler_unblock_by_data (GTK_OBJECT (options->context),
options->paint_mode_w); options->paint_mode_w);
} }
@ -478,6 +475,7 @@ paint_options_init (PaintOptions *options,
options->global = NULL; options->global = NULL;
options->opacity_w = NULL; options->opacity_w = NULL;
options->paint_mode_w = NULL; options->paint_mode_w = NULL;
options->context = tool_context;
options->incremental_w = NULL; options->incremental_w = NULL;
options->incremental = options->incremental_d = FALSE; options->incremental = options->incremental_d = FALSE;
@ -535,10 +533,6 @@ paint_options_init (PaintOptions *options,
gtk_signal_connect (GTK_OBJECT (tool_context), "paint_mode_changed", gtk_signal_connect (GTK_OBJECT (tool_context), "paint_mode_changed",
GTK_SIGNAL_FUNC (tool_options_paint_mode_changed), GTK_SIGNAL_FUNC (tool_options_paint_mode_changed),
options->paint_mode_w); options->paint_mode_w);
/* eek */
gtk_object_set_data (GTK_OBJECT (options->paint_mode_w), "tool_context",
tool_context);
break; break;
case CONVOLVE: case CONVOLVE:
case ERASER: case ERASER:
@ -638,27 +632,23 @@ paint_options_new (ToolType tool_type,
void void
paint_options_reset (PaintOptions *options) paint_options_reset (PaintOptions *options)
{ {
GimpContext *context;
GimpContext *default_context; GimpContext *default_context;
context = (GimpContext *)
gtk_object_get_data (GTK_OBJECT (options->paint_mode_w), "tool_context");
default_context = gimp_context_get_default (); default_context = gimp_context_get_default ();
if (options->opacity_w) if (options->opacity_w)
{ {
gimp_context_set_opacity (context, gimp_context_set_opacity (GIMP_CONTEXT (options->context),
gimp_context_get_opacity (default_context)); gimp_context_get_opacity (default_context));
} }
if (options->paint_mode_w) if (options->paint_mode_w)
{ {
gimp_context_set_paint_mode (GIMP_CONTEXT (context), gimp_context_set_paint_mode (GIMP_CONTEXT (options->context),
gimp_context_get_paint_mode (default_context)); gimp_context_get_paint_mode (default_context));
} }
if (options->incremental_w) if (options->incremental_w)
{ {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(options->incremental_w), gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options->incremental_w),
options->incremental_d); options->incremental_d);
} }

View File

@ -64,6 +64,9 @@ struct _PaintOptions
GtkObject *opacity_w; GtkObject *opacity_w;
GtkWidget *paint_mode_w; GtkWidget *paint_mode_w;
/* this tool's private context */
GimpContext *context;
/* the incremental toggle */ /* the incremental toggle */
gboolean incremental; gboolean incremental;
gboolean incremental_d; gboolean incremental_d;

View File

@ -76,17 +76,14 @@ tool_options_paint_mode_update (GtkWidget *widget,
{ {
LayerModeEffects paint_mode; LayerModeEffects paint_mode;
PaintOptions *options; PaintOptions *options;
GimpContext *context;
paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget)); paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget));
options = (PaintOptions *) data; options = (PaintOptions *) data;
context = gtk_object_get_data (GTK_OBJECT (options->paint_mode_w),
"tool_context");
gtk_signal_handler_block_by_data (GTK_OBJECT (context), gtk_signal_handler_block_by_data (GTK_OBJECT (options->context),
options->paint_mode_w); options->paint_mode_w);
gimp_context_set_paint_mode (GIMP_CONTEXT (context), paint_mode); gimp_context_set_paint_mode (GIMP_CONTEXT (options->context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (context), gtk_signal_handler_unblock_by_data (GTK_OBJECT (options->context),
options->paint_mode_w); options->paint_mode_w);
} }
@ -478,6 +475,7 @@ paint_options_init (PaintOptions *options,
options->global = NULL; options->global = NULL;
options->opacity_w = NULL; options->opacity_w = NULL;
options->paint_mode_w = NULL; options->paint_mode_w = NULL;
options->context = tool_context;
options->incremental_w = NULL; options->incremental_w = NULL;
options->incremental = options->incremental_d = FALSE; options->incremental = options->incremental_d = FALSE;
@ -535,10 +533,6 @@ paint_options_init (PaintOptions *options,
gtk_signal_connect (GTK_OBJECT (tool_context), "paint_mode_changed", gtk_signal_connect (GTK_OBJECT (tool_context), "paint_mode_changed",
GTK_SIGNAL_FUNC (tool_options_paint_mode_changed), GTK_SIGNAL_FUNC (tool_options_paint_mode_changed),
options->paint_mode_w); options->paint_mode_w);
/* eek */
gtk_object_set_data (GTK_OBJECT (options->paint_mode_w), "tool_context",
tool_context);
break; break;
case CONVOLVE: case CONVOLVE:
case ERASER: case ERASER:
@ -638,27 +632,23 @@ paint_options_new (ToolType tool_type,
void void
paint_options_reset (PaintOptions *options) paint_options_reset (PaintOptions *options)
{ {
GimpContext *context;
GimpContext *default_context; GimpContext *default_context;
context = (GimpContext *)
gtk_object_get_data (GTK_OBJECT (options->paint_mode_w), "tool_context");
default_context = gimp_context_get_default (); default_context = gimp_context_get_default ();
if (options->opacity_w) if (options->opacity_w)
{ {
gimp_context_set_opacity (context, gimp_context_set_opacity (GIMP_CONTEXT (options->context),
gimp_context_get_opacity (default_context)); gimp_context_get_opacity (default_context));
} }
if (options->paint_mode_w) if (options->paint_mode_w)
{ {
gimp_context_set_paint_mode (GIMP_CONTEXT (context), gimp_context_set_paint_mode (GIMP_CONTEXT (options->context),
gimp_context_get_paint_mode (default_context)); gimp_context_get_paint_mode (default_context));
} }
if (options->incremental_w) if (options->incremental_w)
{ {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(options->incremental_w), gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options->incremental_w),
options->incremental_d); options->incremental_d);
} }

View File

@ -64,6 +64,9 @@ struct _PaintOptions
GtkObject *opacity_w; GtkObject *opacity_w;
GtkWidget *paint_mode_w; GtkWidget *paint_mode_w;
/* this tool's private context */
GimpContext *context;
/* the incremental toggle */ /* the incremental toggle */
gboolean incremental; gboolean incremental;
gboolean incremental_d; gboolean incremental_d;

View File

@ -64,6 +64,9 @@ struct _PaintOptions
GtkObject *opacity_w; GtkObject *opacity_w;
GtkWidget *paint_mode_w; GtkWidget *paint_mode_w;
/* this tool's private context */
GimpContext *context;
/* the incremental toggle */ /* the incremental toggle */
gboolean incremental; gboolean incremental;
gboolean incremental_d; gboolean incremental_d;

View File

@ -76,17 +76,14 @@ tool_options_paint_mode_update (GtkWidget *widget,
{ {
LayerModeEffects paint_mode; LayerModeEffects paint_mode;
PaintOptions *options; PaintOptions *options;
GimpContext *context;
paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget)); paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget));
options = (PaintOptions *) data; options = (PaintOptions *) data;
context = gtk_object_get_data (GTK_OBJECT (options->paint_mode_w),
"tool_context");
gtk_signal_handler_block_by_data (GTK_OBJECT (context), gtk_signal_handler_block_by_data (GTK_OBJECT (options->context),
options->paint_mode_w); options->paint_mode_w);
gimp_context_set_paint_mode (GIMP_CONTEXT (context), paint_mode); gimp_context_set_paint_mode (GIMP_CONTEXT (options->context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (context), gtk_signal_handler_unblock_by_data (GTK_OBJECT (options->context),
options->paint_mode_w); options->paint_mode_w);
} }
@ -478,6 +475,7 @@ paint_options_init (PaintOptions *options,
options->global = NULL; options->global = NULL;
options->opacity_w = NULL; options->opacity_w = NULL;
options->paint_mode_w = NULL; options->paint_mode_w = NULL;
options->context = tool_context;
options->incremental_w = NULL; options->incremental_w = NULL;
options->incremental = options->incremental_d = FALSE; options->incremental = options->incremental_d = FALSE;
@ -535,10 +533,6 @@ paint_options_init (PaintOptions *options,
gtk_signal_connect (GTK_OBJECT (tool_context), "paint_mode_changed", gtk_signal_connect (GTK_OBJECT (tool_context), "paint_mode_changed",
GTK_SIGNAL_FUNC (tool_options_paint_mode_changed), GTK_SIGNAL_FUNC (tool_options_paint_mode_changed),
options->paint_mode_w); options->paint_mode_w);
/* eek */
gtk_object_set_data (GTK_OBJECT (options->paint_mode_w), "tool_context",
tool_context);
break; break;
case CONVOLVE: case CONVOLVE:
case ERASER: case ERASER:
@ -638,27 +632,23 @@ paint_options_new (ToolType tool_type,
void void
paint_options_reset (PaintOptions *options) paint_options_reset (PaintOptions *options)
{ {
GimpContext *context;
GimpContext *default_context; GimpContext *default_context;
context = (GimpContext *)
gtk_object_get_data (GTK_OBJECT (options->paint_mode_w), "tool_context");
default_context = gimp_context_get_default (); default_context = gimp_context_get_default ();
if (options->opacity_w) if (options->opacity_w)
{ {
gimp_context_set_opacity (context, gimp_context_set_opacity (GIMP_CONTEXT (options->context),
gimp_context_get_opacity (default_context)); gimp_context_get_opacity (default_context));
} }
if (options->paint_mode_w) if (options->paint_mode_w)
{ {
gimp_context_set_paint_mode (GIMP_CONTEXT (context), gimp_context_set_paint_mode (GIMP_CONTEXT (options->context),
gimp_context_get_paint_mode (default_context)); gimp_context_get_paint_mode (default_context));
} }
if (options->incremental_w) if (options->incremental_w)
{ {
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(options->incremental_w), gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options->incremental_w),
options->incremental_d); options->incremental_d);
} }