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>
* libgimp/gimpwidgets.c: added (empty) documentation headers.

View File

@ -76,17 +76,14 @@ tool_options_paint_mode_update (GtkWidget *widget,
{
LayerModeEffects paint_mode;
PaintOptions *options;
GimpContext *context;
paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget));
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);
gimp_context_set_paint_mode (GIMP_CONTEXT (context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (context),
gimp_context_set_paint_mode (GIMP_CONTEXT (options->context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (options->context),
options->paint_mode_w);
}
@ -478,6 +475,7 @@ paint_options_init (PaintOptions *options,
options->global = NULL;
options->opacity_w = NULL;
options->paint_mode_w = NULL;
options->context = tool_context;
options->incremental_w = NULL;
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_FUNC (tool_options_paint_mode_changed),
options->paint_mode_w);
/* eek */
gtk_object_set_data (GTK_OBJECT (options->paint_mode_w), "tool_context",
tool_context);
break;
case CONVOLVE:
case ERASER:
@ -638,27 +632,23 @@ paint_options_new (ToolType tool_type,
void
paint_options_reset (PaintOptions *options)
{
GimpContext *context;
GimpContext *default_context;
context = (GimpContext *)
gtk_object_get_data (GTK_OBJECT (options->paint_mode_w), "tool_context");
default_context = gimp_context_get_default ();
if (options->opacity_w)
{
gimp_context_set_opacity (context,
gimp_context_set_opacity (GIMP_CONTEXT (options->context),
gimp_context_get_opacity (default_context));
}
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));
}
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);
}

View File

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

View File

@ -76,17 +76,14 @@ tool_options_paint_mode_update (GtkWidget *widget,
{
LayerModeEffects paint_mode;
PaintOptions *options;
GimpContext *context;
paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget));
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);
gimp_context_set_paint_mode (GIMP_CONTEXT (context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (context),
gimp_context_set_paint_mode (GIMP_CONTEXT (options->context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (options->context),
options->paint_mode_w);
}
@ -478,6 +475,7 @@ paint_options_init (PaintOptions *options,
options->global = NULL;
options->opacity_w = NULL;
options->paint_mode_w = NULL;
options->context = tool_context;
options->incremental_w = NULL;
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_FUNC (tool_options_paint_mode_changed),
options->paint_mode_w);
/* eek */
gtk_object_set_data (GTK_OBJECT (options->paint_mode_w), "tool_context",
tool_context);
break;
case CONVOLVE:
case ERASER:
@ -638,27 +632,23 @@ paint_options_new (ToolType tool_type,
void
paint_options_reset (PaintOptions *options)
{
GimpContext *context;
GimpContext *default_context;
context = (GimpContext *)
gtk_object_get_data (GTK_OBJECT (options->paint_mode_w), "tool_context");
default_context = gimp_context_get_default ();
if (options->opacity_w)
{
gimp_context_set_opacity (context,
gimp_context_set_opacity (GIMP_CONTEXT (options->context),
gimp_context_get_opacity (default_context));
}
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));
}
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);
}

View File

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

View File

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

View File

@ -76,17 +76,14 @@ tool_options_paint_mode_update (GtkWidget *widget,
{
LayerModeEffects paint_mode;
PaintOptions *options;
GimpContext *context;
paint_mode = (LayerModeEffects) gtk_object_get_user_data (GTK_OBJECT (widget));
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);
gimp_context_set_paint_mode (GIMP_CONTEXT (context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (context),
gimp_context_set_paint_mode (GIMP_CONTEXT (options->context), paint_mode);
gtk_signal_handler_unblock_by_data (GTK_OBJECT (options->context),
options->paint_mode_w);
}
@ -478,6 +475,7 @@ paint_options_init (PaintOptions *options,
options->global = NULL;
options->opacity_w = NULL;
options->paint_mode_w = NULL;
options->context = tool_context;
options->incremental_w = NULL;
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_FUNC (tool_options_paint_mode_changed),
options->paint_mode_w);
/* eek */
gtk_object_set_data (GTK_OBJECT (options->paint_mode_w), "tool_context",
tool_context);
break;
case CONVOLVE:
case ERASER:
@ -638,27 +632,23 @@ paint_options_new (ToolType tool_type,
void
paint_options_reset (PaintOptions *options)
{
GimpContext *context;
GimpContext *default_context;
context = (GimpContext *)
gtk_object_get_data (GTK_OBJECT (options->paint_mode_w), "tool_context");
default_context = gimp_context_get_default ();
if (options->opacity_w)
{
gimp_context_set_opacity (context,
gimp_context_set_opacity (GIMP_CONTEXT (options->context),
gimp_context_get_opacity (default_context));
}
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));
}
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);
}