app/blend.c app/bucket_fill.c app/convert.c app/crop.c app/cursorutil.c

Sun Jan 17 16:56:25 GMT 1999 Adam D. Moss <adam@gimp.org>

        * app/blend.c app/bucket_fill.c app/convert.c app/crop.c
        app/cursorutil.c app/cursorutil.h app/dialog_handler.c
        app/dialog_handler.h app/fuzzy_select.c app/gdisplay.c
        app/gimage_cmds.c app/gimpimage.c app/scroll.c
        app/transform_core.c app/xcf.c

	Hourglasses also apply to all registered dialogs.  Hourglasses
	added in a couple more important places.  New hack lets
	hourglasses be added and automagically removed again when
	gimp/gtk re-enters the idle loop.
This commit is contained in:
GMT 1999 Adam D. Moss 1999-01-17 17:03:54 +00:00 committed by Adam D. Moss
parent 1ee0165678
commit 64a6d4571d
43 changed files with 279 additions and 145 deletions

View file

@ -1,3 +1,16 @@
Sun Jan 17 16:56:25 GMT 1999 Adam D. Moss <adam@gimp.org>
* app/blend.c app/bucket_fill.c app/convert.c app/crop.c
app/cursorutil.c app/cursorutil.h app/dialog_handler.c
app/dialog_handler.h app/fuzzy_select.c app/gdisplay.c
app/gimage_cmds.c app/gimpimage.c app/scroll.c
app/transform_core.c app/xcf.c
Hourglasses also apply to all registered dialogs. Hourglasses
added in a couple more important places. New hack lets
hourglasses be added and automagically removed again when
gimp/gtk re-enters the idle loop.
Sat Jan 16 18:21:58 GMT 1999 Austin Donnelly <austin@greenend.org.uk>
* plug-ins/jpeg/jpeg.c: re-wrote the gimp-comment stuff so it

View file

@ -864,7 +864,7 @@ blend (GImage *gimage,
/* free the temporary buffer */
tile_manager_destroy (buf_tiles);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}

View file

@ -537,7 +537,7 @@ bucket_fill (gimage, drawable, fill_mode, paint_mode,
if (new_buf)
temp_buf_free (pat_buf);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}

View file

@ -919,7 +919,7 @@ convert_image (GImage *gimage,
gimp_image_colormap_changed (gimage, -1);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
static void

View file

@ -864,7 +864,7 @@ blend (GImage *gimage,
/* free the temporary buffer */
tile_manager_destroy (buf_tiles);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}

View file

@ -919,7 +919,7 @@ convert_image (GImage *gimage,
gimp_image_colormap_changed (gimage, -1);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
static void

View file

@ -399,7 +399,7 @@ gimp_image_resize (GimpImage *gimage, int new_width, int new_height,
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -458,6 +458,8 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
list = g_slist_next (list);
}
#warning NEED TO SCALE GUIDES ALSO
/* Make sure the projection matches the gimage size */
gimp_image_projection_realloc (gimage);
@ -467,7 +469,7 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -936,7 +938,8 @@ gimp_image_get_new_tattoo(GimpImage *image)
}
void
gimp_image_colormap_changed (GimpImage *image, gint col){
gimp_image_colormap_changed (GimpImage *image, gint col)
{
g_return_if_fail (image);
g_return_if_fail (col < image->num_cols);
gtk_signal_emit (GTK_OBJECT(image),
@ -1302,7 +1305,7 @@ gimp_image_construct (GimpImage *gimage, int x, int y, int w, int h)
* has been written to the gimage raw image yet.
*/
gimage->construct_flag = 0;
/* First, determine if the projection image needs to be
* initialized--this is the case when there are no visible
* layers that cover the entire canvas--either because layers
@ -1394,6 +1397,8 @@ gimp_image_validate (TileManager *tm, Tile *tile)
int x, y;
int w, h;
gimp_add_busy_cursors_until_idle();
/* Get the gimage from the tilemanager */
gimage = (GimpImage *) tile_manager_get_user_data (tm);
@ -2010,7 +2015,7 @@ gimp_image_merge_visible_layers (GimpImage *gimage, MergeType merge_type)
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else
@ -2044,7 +2049,7 @@ gimp_image_flatten (GimpImage *gimage)
layer = gimp_image_merge_layers (gimage, merge_list, FlattenImage);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
@ -2088,7 +2093,7 @@ gimp_image_merge_down (GimpImage *gimage,
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else

View file

@ -399,7 +399,7 @@ gimp_image_resize (GimpImage *gimage, int new_width, int new_height,
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -458,6 +458,8 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
list = g_slist_next (list);
}
#warning NEED TO SCALE GUIDES ALSO
/* Make sure the projection matches the gimage size */
gimp_image_projection_realloc (gimage);
@ -467,7 +469,7 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -936,7 +938,8 @@ gimp_image_get_new_tattoo(GimpImage *image)
}
void
gimp_image_colormap_changed (GimpImage *image, gint col){
gimp_image_colormap_changed (GimpImage *image, gint col)
{
g_return_if_fail (image);
g_return_if_fail (col < image->num_cols);
gtk_signal_emit (GTK_OBJECT(image),
@ -1302,7 +1305,7 @@ gimp_image_construct (GimpImage *gimage, int x, int y, int w, int h)
* has been written to the gimage raw image yet.
*/
gimage->construct_flag = 0;
/* First, determine if the projection image needs to be
* initialized--this is the case when there are no visible
* layers that cover the entire canvas--either because layers
@ -1394,6 +1397,8 @@ gimp_image_validate (TileManager *tm, Tile *tile)
int x, y;
int w, h;
gimp_add_busy_cursors_until_idle();
/* Get the gimage from the tilemanager */
gimage = (GimpImage *) tile_manager_get_user_data (tm);
@ -2010,7 +2015,7 @@ gimp_image_merge_visible_layers (GimpImage *gimage, MergeType merge_type)
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else
@ -2044,7 +2049,7 @@ gimp_image_flatten (GimpImage *gimage)
layer = gimp_image_merge_layers (gimage, merge_list, FlattenImage);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
@ -2088,7 +2093,7 @@ gimp_image_merge_down (GimpImage *gimage,
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else

View file

@ -399,7 +399,7 @@ gimp_image_resize (GimpImage *gimage, int new_width, int new_height,
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -458,6 +458,8 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
list = g_slist_next (list);
}
#warning NEED TO SCALE GUIDES ALSO
/* Make sure the projection matches the gimage size */
gimp_image_projection_realloc (gimage);
@ -467,7 +469,7 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -936,7 +938,8 @@ gimp_image_get_new_tattoo(GimpImage *image)
}
void
gimp_image_colormap_changed (GimpImage *image, gint col){
gimp_image_colormap_changed (GimpImage *image, gint col)
{
g_return_if_fail (image);
g_return_if_fail (col < image->num_cols);
gtk_signal_emit (GTK_OBJECT(image),
@ -1302,7 +1305,7 @@ gimp_image_construct (GimpImage *gimage, int x, int y, int w, int h)
* has been written to the gimage raw image yet.
*/
gimage->construct_flag = 0;
/* First, determine if the projection image needs to be
* initialized--this is the case when there are no visible
* layers that cover the entire canvas--either because layers
@ -1394,6 +1397,8 @@ gimp_image_validate (TileManager *tm, Tile *tile)
int x, y;
int w, h;
gimp_add_busy_cursors_until_idle();
/* Get the gimage from the tilemanager */
gimage = (GimpImage *) tile_manager_get_user_data (tm);
@ -2010,7 +2015,7 @@ gimp_image_merge_visible_layers (GimpImage *gimage, MergeType merge_type)
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else
@ -2044,7 +2049,7 @@ gimp_image_flatten (GimpImage *gimage)
layer = gimp_image_merge_layers (gimage, merge_list, FlattenImage);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
@ -2088,7 +2093,7 @@ gimp_image_merge_down (GimpImage *gimage,
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else

View file

@ -399,7 +399,7 @@ gimp_image_resize (GimpImage *gimage, int new_width, int new_height,
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -458,6 +458,8 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
list = g_slist_next (list);
}
#warning NEED TO SCALE GUIDES ALSO
/* Make sure the projection matches the gimage size */
gimp_image_projection_realloc (gimage);
@ -467,7 +469,7 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -936,7 +938,8 @@ gimp_image_get_new_tattoo(GimpImage *image)
}
void
gimp_image_colormap_changed (GimpImage *image, gint col){
gimp_image_colormap_changed (GimpImage *image, gint col)
{
g_return_if_fail (image);
g_return_if_fail (col < image->num_cols);
gtk_signal_emit (GTK_OBJECT(image),
@ -1302,7 +1305,7 @@ gimp_image_construct (GimpImage *gimage, int x, int y, int w, int h)
* has been written to the gimage raw image yet.
*/
gimage->construct_flag = 0;
/* First, determine if the projection image needs to be
* initialized--this is the case when there are no visible
* layers that cover the entire canvas--either because layers
@ -1394,6 +1397,8 @@ gimp_image_validate (TileManager *tm, Tile *tile)
int x, y;
int w, h;
gimp_add_busy_cursors_until_idle();
/* Get the gimage from the tilemanager */
gimage = (GimpImage *) tile_manager_get_user_data (tm);
@ -2010,7 +2015,7 @@ gimp_image_merge_visible_layers (GimpImage *gimage, MergeType merge_type)
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else
@ -2044,7 +2049,7 @@ gimp_image_flatten (GimpImage *gimage)
layer = gimp_image_merge_layers (gimage, merge_list, FlattenImage);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
@ -2088,7 +2093,7 @@ gimp_image_merge_down (GimpImage *gimage,
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else

View file

@ -399,7 +399,7 @@ gimp_image_resize (GimpImage *gimage, int new_width, int new_height,
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -458,6 +458,8 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
list = g_slist_next (list);
}
#warning NEED TO SCALE GUIDES ALSO
/* Make sure the projection matches the gimage size */
gimp_image_projection_realloc (gimage);
@ -467,7 +469,7 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -936,7 +938,8 @@ gimp_image_get_new_tattoo(GimpImage *image)
}
void
gimp_image_colormap_changed (GimpImage *image, gint col){
gimp_image_colormap_changed (GimpImage *image, gint col)
{
g_return_if_fail (image);
g_return_if_fail (col < image->num_cols);
gtk_signal_emit (GTK_OBJECT(image),
@ -1302,7 +1305,7 @@ gimp_image_construct (GimpImage *gimage, int x, int y, int w, int h)
* has been written to the gimage raw image yet.
*/
gimage->construct_flag = 0;
/* First, determine if the projection image needs to be
* initialized--this is the case when there are no visible
* layers that cover the entire canvas--either because layers
@ -1394,6 +1397,8 @@ gimp_image_validate (TileManager *tm, Tile *tile)
int x, y;
int w, h;
gimp_add_busy_cursors_until_idle();
/* Get the gimage from the tilemanager */
gimage = (GimpImage *) tile_manager_get_user_data (tm);
@ -2010,7 +2015,7 @@ gimp_image_merge_visible_layers (GimpImage *gimage, MergeType merge_type)
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else
@ -2044,7 +2049,7 @@ gimp_image_flatten (GimpImage *gimage)
layer = gimp_image_merge_layers (gimage, merge_list, FlattenImage);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
@ -2088,7 +2093,7 @@ gimp_image_merge_down (GimpImage *gimage,
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else

View file

@ -399,7 +399,7 @@ gimp_image_resize (GimpImage *gimage, int new_width, int new_height,
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -458,6 +458,8 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
list = g_slist_next (list);
}
#warning NEED TO SCALE GUIDES ALSO
/* Make sure the projection matches the gimage size */
gimp_image_projection_realloc (gimage);
@ -467,7 +469,7 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -936,7 +938,8 @@ gimp_image_get_new_tattoo(GimpImage *image)
}
void
gimp_image_colormap_changed (GimpImage *image, gint col){
gimp_image_colormap_changed (GimpImage *image, gint col)
{
g_return_if_fail (image);
g_return_if_fail (col < image->num_cols);
gtk_signal_emit (GTK_OBJECT(image),
@ -1302,7 +1305,7 @@ gimp_image_construct (GimpImage *gimage, int x, int y, int w, int h)
* has been written to the gimage raw image yet.
*/
gimage->construct_flag = 0;
/* First, determine if the projection image needs to be
* initialized--this is the case when there are no visible
* layers that cover the entire canvas--either because layers
@ -1394,6 +1397,8 @@ gimp_image_validate (TileManager *tm, Tile *tile)
int x, y;
int w, h;
gimp_add_busy_cursors_until_idle();
/* Get the gimage from the tilemanager */
gimage = (GimpImage *) tile_manager_get_user_data (tm);
@ -2010,7 +2015,7 @@ gimp_image_merge_visible_layers (GimpImage *gimage, MergeType merge_type)
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else
@ -2044,7 +2049,7 @@ gimp_image_flatten (GimpImage *gimage)
layer = gimp_image_merge_layers (gimage, merge_list, FlattenImage);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
@ -2088,7 +2093,7 @@ gimp_image_merge_down (GimpImage *gimage,
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else

View file

@ -399,7 +399,7 @@ gimp_image_resize (GimpImage *gimage, int new_width, int new_height,
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -458,6 +458,8 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
list = g_slist_next (list);
}
#warning NEED TO SCALE GUIDES ALSO
/* Make sure the projection matches the gimage size */
gimp_image_projection_realloc (gimage);
@ -467,7 +469,7 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -936,7 +938,8 @@ gimp_image_get_new_tattoo(GimpImage *image)
}
void
gimp_image_colormap_changed (GimpImage *image, gint col){
gimp_image_colormap_changed (GimpImage *image, gint col)
{
g_return_if_fail (image);
g_return_if_fail (col < image->num_cols);
gtk_signal_emit (GTK_OBJECT(image),
@ -1302,7 +1305,7 @@ gimp_image_construct (GimpImage *gimage, int x, int y, int w, int h)
* has been written to the gimage raw image yet.
*/
gimage->construct_flag = 0;
/* First, determine if the projection image needs to be
* initialized--this is the case when there are no visible
* layers that cover the entire canvas--either because layers
@ -1394,6 +1397,8 @@ gimp_image_validate (TileManager *tm, Tile *tile)
int x, y;
int w, h;
gimp_add_busy_cursors_until_idle();
/* Get the gimage from the tilemanager */
gimage = (GimpImage *) tile_manager_get_user_data (tm);
@ -2010,7 +2015,7 @@ gimp_image_merge_visible_layers (GimpImage *gimage, MergeType merge_type)
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else
@ -2044,7 +2049,7 @@ gimp_image_flatten (GimpImage *gimage)
layer = gimp_image_merge_layers (gimage, merge_list, FlattenImage);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
@ -2088,7 +2093,7 @@ gimp_image_merge_down (GimpImage *gimage,
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else

View file

@ -1605,8 +1605,6 @@ gdisplays_update_area (GimpImage* gimage,
/* int x1, y1, x2, y2; */
/* int count = 0; */
/* printf("GDUA%p:%d,%d:%dx%d ", gimage,x,y,w,h);fflush(stdout);*/
/* traverse the linked list of displays */
while (list)
{
@ -1894,11 +1892,8 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
if (gdisp->idle_render.active)
{
printf(_("Deleted idlerendering gdisp %p...\n"), gdisp); fflush(stdout);
printf(_("\tIdlerender stops now!\n")); fflush(stdout);
gtk_idle_remove (gdisp->idle_render.idleid);
gdisp->idle_render.active = FALSE;
printf(_("\tDeletion finished.\n")); fflush(stdout);
}
gimage_delete (gdisp->gimage);

View file

@ -751,7 +751,7 @@ crop_image (GImage *gimage,
gdisplays_update_full (gimage);
gdisplays_shrink_wrap (gimage);
}
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
gdisplays_flush ();
}
}

View file

@ -17,9 +17,13 @@
*/
#include "appenv.h"
#include "cursorutil.h"
#include "dialog_handler.h"
#include "gdisplay.h" /* for gdisplay_*_override_cursor() */
extern GSList* display_list; /* It's in gdisplay.c, FYI */
static gboolean pending_removebusy = FALSE;
void
change_win_cursor (win, cursortype)
@ -40,12 +44,25 @@ unset_win_cursor (win)
gdk_window_set_cursor (win, NULL);
}
void
gimp_add_busy_cursors_until_idle (void)
{
if (!pending_removebusy)
{
gimp_add_busy_cursors();
gtk_idle_add_priority (GTK_PRIORITY_HIGH,
gimp_remove_busy_cursors, NULL);
pending_removebusy = TRUE;
}
}
void
gimp_add_busy_cursors (void)
{
GDisplay *gdisp;
GSList *list = display_list;
/* Canvases */
while (list)
{
gdisp = (GDisplay *) list->data;
@ -53,15 +70,20 @@ gimp_add_busy_cursors (void)
list = g_slist_next (list);
}
/* Dialogs */
dialog_idle_all();
gdk_flush();
}
void
gimp_remove_busy_cursors (void)
int
gimp_remove_busy_cursors (gpointer data)
{
GDisplay *gdisp;
GSList *list = display_list;
/* Canvases */
while (list)
{
gdisp = (GDisplay *) list->data;
@ -69,4 +91,11 @@ gimp_remove_busy_cursors (void)
list = g_slist_next (list);
}
/* Dialogs */
dialog_unidle_all();
pending_removebusy = FALSE;
return 0;
}

View file

@ -21,7 +21,8 @@
void change_win_cursor (GdkWindow *, GdkCursorType);
void unset_win_cursor (GdkWindow *);
void gimp_add_busy_cursors (void);
void gimp_remove_busy_cursors (void);
void gimp_add_busy_cursors_until_idle (void);
void gimp_add_busy_cursors (void);
int gimp_remove_busy_cursors (gpointer);
#endif /* __CURSORUTIL_H__ */

View file

@ -22,6 +22,7 @@
#include <string.h>
#include "appenv.h"
#include "cursorutil.h"
#include "errors.h"
#include "general.h"
@ -30,9 +31,9 @@
static GSList * active_dialogs = NULL; /* List of dialogs that have
been created and are on
screen (may be hiddenalready).
screen (may be hidden already).
*/
static gint doing_update = FALSE; /* Prevent multiple keypresse
static gint doing_update = FALSE; /* Prevent multiple keypresses
from unsetting me.
*/
@ -52,7 +53,7 @@ struct _dialog_state {
};
/* This keeps track of the state the dialogs are in */
/* ie howmany times we have pressed the tab key */
/* ie how many times we have pressed the tab key */
typedef enum{
SHOW_ALL,
@ -65,8 +66,8 @@ static ShowState dialogs_showing = SHOW_ALL; /* Start off with all
dialogs showing
*/
static DIALOGSTATEP toolbox_shell = NULL; /* Copy of the shelll for the tool
box this has special behavour
static DIALOGSTATEP toolbox_shell = NULL; /* Copy of the shell for the tool
box - this has special behaviour
so is not on the normal list.
*/
/* Private */
@ -139,6 +140,56 @@ dialog_hide_toolbox()
/* public */
/* Set hourglass cursor on all currently registered dialogs */
void
dialog_idle_all()
{
GSList *list = active_dialogs;
DIALOGSTATEP dstate;
while (list)
{
dstate = (DIALOGSTATEP) list->data;
list = g_slist_next (list);
if(GTK_WIDGET_VISIBLE (dstate->d))
{
change_win_cursor (dstate->d->window, GDK_WATCH);
}
}
if (toolbox_shell && GTK_WIDGET_VISIBLE(toolbox_shell->d))
{
change_win_cursor (toolbox_shell->d->window, GDK_WATCH);
}
}
/* And remove the hourglass again. */
void
dialog_unidle_all()
{
GSList *list = active_dialogs;
DIALOGSTATEP dstate;
while (list)
{
dstate = (DIALOGSTATEP) list->data;
list = g_slist_next (list);
if(GTK_WIDGET_VISIBLE (dstate->d))
{
unset_win_cursor (dstate->d->window);
}
}
if (toolbox_shell && GTK_WIDGET_VISIBLE(toolbox_shell->d))
{
unset_win_cursor (toolbox_shell->d->window);
}
}
/* Register a dialog that we can handle */
void
@ -186,7 +237,7 @@ dialog_unregister(GtkWidget *dialog)
*/
void
dialog_toggle(gint leavetoolbox)
dialog_toggle(void)
{
if(doing_update == FALSE)
doing_update = TRUE;

View file

@ -20,9 +20,12 @@
#ifndef __DIALOG_HANDLER_H_
#define __DIALOG_HANDLER_H_
void dialog_register(GtkWidget *dialog);
void dialog_register_toolbox(GtkWidget *dialog);
void dialog_unregister(GtkWidget *dialog);
void dialog_toggle();
void dialog_register (GtkWidget *dialog);
void dialog_register_toolbox (GtkWidget *dialog);
void dialog_unregister (GtkWidget *dialog);
void dialog_toggle (void);
void dialog_idle_all (void);
void dialog_unidle_all (void);
#endif /* __DIALOG_HANDLER_H_ */

View file

@ -66,14 +66,10 @@ void
start_grab_and_scroll (GDisplay *gdisp,
GdkEventButton *bevent)
{
GdkCursor *cursor;
startx = bevent->x + gdisp->offset_x;
starty = bevent->y + gdisp->offset_y;
cursor = gdk_cursor_new (GDK_FLEUR);
gdk_window_set_cursor (gdisp->canvas->window, cursor);
gdk_cursor_destroy (cursor);
change_win_cursor(gdisp->canvas->window, GDK_FLEUR);
}
@ -81,11 +77,7 @@ void
end_grab_and_scroll (GDisplay *gdisp,
GdkEventButton *bevent)
{
GdkCursor *cursor;
cursor = gdk_cursor_new (gdisp->current_cursor);
gdk_window_set_cursor (gdisp->canvas->window, cursor);
gdk_cursor_destroy (cursor);
change_win_cursor(gdisp->canvas->window, gdisp->current_cursor);
}

View file

@ -1605,8 +1605,6 @@ gdisplays_update_area (GimpImage* gimage,
/* int x1, y1, x2, y2; */
/* int count = 0; */
/* printf("GDUA%p:%d,%d:%dx%d ", gimage,x,y,w,h);fflush(stdout);*/
/* traverse the linked list of displays */
while (list)
{
@ -1894,11 +1892,8 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
if (gdisp->idle_render.active)
{
printf(_("Deleted idlerendering gdisp %p...\n"), gdisp); fflush(stdout);
printf(_("\tIdlerender stops now!\n")); fflush(stdout);
gtk_idle_remove (gdisp->idle_render.idleid);
gdisp->idle_render.active = FALSE;
printf(_("\tDeletion finished.\n")); fflush(stdout);
}
gimage_delete (gdisp->gimage);

View file

@ -66,14 +66,10 @@ void
start_grab_and_scroll (GDisplay *gdisp,
GdkEventButton *bevent)
{
GdkCursor *cursor;
startx = bevent->x + gdisp->offset_x;
starty = bevent->y + gdisp->offset_y;
cursor = gdk_cursor_new (GDK_FLEUR);
gdk_window_set_cursor (gdisp->canvas->window, cursor);
gdk_cursor_destroy (cursor);
change_win_cursor(gdisp->canvas->window, GDK_FLEUR);
}
@ -81,11 +77,7 @@ void
end_grab_and_scroll (GDisplay *gdisp,
GdkEventButton *bevent)
{
GdkCursor *cursor;
cursor = gdk_cursor_new (gdisp->current_cursor);
gdk_window_set_cursor (gdisp->canvas->window, cursor);
gdk_cursor_destroy (cursor);
change_win_cursor(gdisp->canvas->window, gdisp->current_cursor);
}

View file

@ -504,7 +504,7 @@ fuzzy_select_calculate (Tool *tool, void *gdisp_ptr, int *nsegs)
/* free boundary segments */
g_free (bsegs);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return segs;
}

View file

@ -1605,8 +1605,6 @@ gdisplays_update_area (GimpImage* gimage,
/* int x1, y1, x2, y2; */
/* int count = 0; */
/* printf("GDUA%p:%d,%d:%dx%d ", gimage,x,y,w,h);fflush(stdout);*/
/* traverse the linked list of displays */
while (list)
{
@ -1894,11 +1892,8 @@ gdisplay_reconnect (GDisplay *gdisp, GimpImage *gimage)
if (gdisp->idle_render.active)
{
printf(_("Deleted idlerendering gdisp %p...\n"), gdisp); fflush(stdout);
printf(_("\tIdlerender stops now!\n")); fflush(stdout);
gtk_idle_remove (gdisp->idle_render.idleid);
gdisp->idle_render.active = FALSE;
printf(_("\tDeletion finished.\n")); fflush(stdout);
}
gimage_delete (gdisp->gimage);

View file

@ -272,7 +272,7 @@ gimage_resize_invoker (Argument *args)
if (success)
gimage_resize (gimage, new_width, new_height, offx, offy);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return procedural_db_return_args (&gimage_resize_proc, success);
}
@ -3714,6 +3714,8 @@ duplicate (GImage *gimage)
GimpDrawable *floating_sel_drawable = NULL;
int count;
gimp_add_busy_cursors();
/* Create a new image */
new_gimage = gimage_new (gimage->width, gimage->height, gimage->base_type);
gimage_disable_undo (new_gimage);
@ -3816,8 +3818,12 @@ duplicate (GImage *gimage)
new_gimage->active[count] = gimage->active[count];
}
#warning NEED TO COPY GUIDES ALSO
gimage_enable_undo (new_gimage);
gimp_remove_busy_cursors(NULL);
return new_gimage;
}

View file

@ -919,7 +919,7 @@ convert_image (GImage *gimage,
gimp_image_colormap_changed (gimage, -1);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
static void

View file

@ -399,7 +399,7 @@ gimp_image_resize (GimpImage *gimage, int new_width, int new_height,
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -458,6 +458,8 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
list = g_slist_next (list);
}
#warning NEED TO SCALE GUIDES ALSO
/* Make sure the projection matches the gimage size */
gimp_image_projection_realloc (gimage);
@ -467,7 +469,7 @@ gimp_image_scale (GimpImage *gimage, int new_width, int new_height)
gtk_signal_emit (GTK_OBJECT (gimage), gimp_image_signals[RESIZE]);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}
@ -936,7 +938,8 @@ gimp_image_get_new_tattoo(GimpImage *image)
}
void
gimp_image_colormap_changed (GimpImage *image, gint col){
gimp_image_colormap_changed (GimpImage *image, gint col)
{
g_return_if_fail (image);
g_return_if_fail (col < image->num_cols);
gtk_signal_emit (GTK_OBJECT(image),
@ -1302,7 +1305,7 @@ gimp_image_construct (GimpImage *gimage, int x, int y, int w, int h)
* has been written to the gimage raw image yet.
*/
gimage->construct_flag = 0;
/* First, determine if the projection image needs to be
* initialized--this is the case when there are no visible
* layers that cover the entire canvas--either because layers
@ -1394,6 +1397,8 @@ gimp_image_validate (TileManager *tm, Tile *tile)
int x, y;
int w, h;
gimp_add_busy_cursors_until_idle();
/* Get the gimage from the tilemanager */
gimage = (GimpImage *) tile_manager_get_user_data (tm);
@ -2010,7 +2015,7 @@ gimp_image_merge_visible_layers (GimpImage *gimage, MergeType merge_type)
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else
@ -2044,7 +2049,7 @@ gimp_image_flatten (GimpImage *gimage)
layer = gimp_image_merge_layers (gimage, merge_list, FlattenImage);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
@ -2088,7 +2093,7 @@ gimp_image_merge_down (GimpImage *gimage,
gimp_add_busy_cursors();
layer = gimp_image_merge_layers (gimage, merge_list, merge_type);
g_slist_free (merge_list);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return layer;
}
else

View file

@ -66,14 +66,10 @@ void
start_grab_and_scroll (GDisplay *gdisp,
GdkEventButton *bevent)
{
GdkCursor *cursor;
startx = bevent->x + gdisp->offset_x;
starty = bevent->y + gdisp->offset_y;
cursor = gdk_cursor_new (GDK_FLEUR);
gdk_window_set_cursor (gdisp->canvas->window, cursor);
gdk_cursor_destroy (cursor);
change_win_cursor(gdisp->canvas->window, GDK_FLEUR);
}
@ -81,11 +77,7 @@ void
end_grab_and_scroll (GDisplay *gdisp,
GdkEventButton *bevent)
{
GdkCursor *cursor;
cursor = gdk_cursor_new (gdisp->current_cursor);
gdk_window_set_cursor (gdisp->canvas->window, cursor);
gdk_cursor_destroy (cursor);
change_win_cursor(gdisp->canvas->window, gdisp->current_cursor);
}

View file

@ -864,7 +864,7 @@ blend (GImage *gimage,
/* free the temporary buffer */
tile_manager_destroy (buf_tiles);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}

View file

@ -537,7 +537,7 @@ bucket_fill (gimage, drawable, fill_mode, paint_mode,
if (new_buf)
temp_buf_free (pat_buf);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}

View file

@ -751,7 +751,7 @@ crop_image (GImage *gimage,
gdisplays_update_full (gimage);
gdisplays_shrink_wrap (gimage);
}
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
gdisplays_flush ();
}
}

View file

@ -504,7 +504,7 @@ fuzzy_select_calculate (Tool *tool, void *gdisp_ptr, int *nsegs)
/* free boundary segments */
g_free (bsegs);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return segs;
}

View file

@ -864,7 +864,7 @@ blend (GImage *gimage,
/* free the temporary buffer */
tile_manager_destroy (buf_tiles);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}

View file

@ -537,7 +537,7 @@ bucket_fill (gimage, drawable, fill_mode, paint_mode,
if (new_buf)
temp_buf_free (pat_buf);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
}

View file

@ -751,7 +751,7 @@ crop_image (GImage *gimage,
gdisplays_update_full (gimage);
gdisplays_shrink_wrap (gimage);
}
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
gdisplays_flush ();
}
}

View file

@ -504,7 +504,7 @@ fuzzy_select_calculate (Tool *tool, void *gdisp_ptr, int *nsegs)
/* free boundary segments */
g_free (bsegs);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return segs;
}

View file

@ -504,7 +504,7 @@ fuzzy_select_calculate (Tool *tool, void *gdisp_ptr, int *nsegs)
/* free boundary segments */
g_free (bsegs);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return segs;
}

View file

@ -437,7 +437,7 @@ transform_core_doit (tool, gdisp_ptr)
}
}
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
gdisplays_flush ();

View file

@ -437,7 +437,7 @@ transform_core_doit (tool, gdisp_ptr)
}
}
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
gdisplays_flush ();

View file

@ -17,9 +17,13 @@
*/
#include "appenv.h"
#include "cursorutil.h"
#include "dialog_handler.h"
#include "gdisplay.h" /* for gdisplay_*_override_cursor() */
extern GSList* display_list; /* It's in gdisplay.c, FYI */
static gboolean pending_removebusy = FALSE;
void
change_win_cursor (win, cursortype)
@ -40,12 +44,25 @@ unset_win_cursor (win)
gdk_window_set_cursor (win, NULL);
}
void
gimp_add_busy_cursors_until_idle (void)
{
if (!pending_removebusy)
{
gimp_add_busy_cursors();
gtk_idle_add_priority (GTK_PRIORITY_HIGH,
gimp_remove_busy_cursors, NULL);
pending_removebusy = TRUE;
}
}
void
gimp_add_busy_cursors (void)
{
GDisplay *gdisp;
GSList *list = display_list;
/* Canvases */
while (list)
{
gdisp = (GDisplay *) list->data;
@ -53,15 +70,20 @@ gimp_add_busy_cursors (void)
list = g_slist_next (list);
}
/* Dialogs */
dialog_idle_all();
gdk_flush();
}
void
gimp_remove_busy_cursors (void)
int
gimp_remove_busy_cursors (gpointer data)
{
GDisplay *gdisp;
GSList *list = display_list;
/* Canvases */
while (list)
{
gdisp = (GDisplay *) list->data;
@ -69,4 +91,11 @@ gimp_remove_busy_cursors (void)
list = g_slist_next (list);
}
/* Dialogs */
dialog_unidle_all();
pending_removebusy = FALSE;
return 0;
}

View file

@ -21,7 +21,8 @@
void change_win_cursor (GdkWindow *, GdkCursorType);
void unset_win_cursor (GdkWindow *);
void gimp_add_busy_cursors (void);
void gimp_remove_busy_cursors (void);
void gimp_add_busy_cursors_until_idle (void);
void gimp_add_busy_cursors (void);
int gimp_remove_busy_cursors (gpointer);
#endif /* __CURSORUTIL_H__ */

View file

@ -360,7 +360,7 @@ xcf_load_invoker (Argument *args)
if (success)
return_args[1].value.pdb_int = pdb_image_to_id(gimage);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return return_args;
}
@ -407,7 +407,7 @@ xcf_save_invoker (Argument *args)
return_args = procedural_db_return_args (&xcf_plug_in_save_proc.db_info, success);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return return_args;
}

View file

@ -360,7 +360,7 @@ xcf_load_invoker (Argument *args)
if (success)
return_args[1].value.pdb_int = pdb_image_to_id(gimage);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return return_args;
}
@ -407,7 +407,7 @@ xcf_save_invoker (Argument *args)
return_args = procedural_db_return_args (&xcf_plug_in_save_proc.db_info, success);
gimp_remove_busy_cursors();
gimp_remove_busy_cursors(NULL);
return return_args;
}