diff --git a/ChangeLog b/ChangeLog index e90eb28aa8..9bdefa7b3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +Sat Jan 22 16:00:52 CET 2000 Sven Neumann + + * app/commands.c + * app/gdisplay.c + * app/gdisplay.h + * app/scale.c: call setup_scale when changing the resolution or unit, + so the rulers get updated correctly + Sat Jan 21 21:00:00 CST 2000 Seth Burgess * app/transform_core.c: applied Steinar's diff --git a/app/actions/help-commands.c b/app/actions/help-commands.c index fe92073e31..328d0d8f77 100644 --- a/app/actions/help-commands.c +++ b/app/actions/help-commands.c @@ -1311,9 +1311,11 @@ image_scale_callback (GtkWidget *widget, { ImageResize *image_scale; GImage *gimage; - gboolean flush = FALSE; /* this is a bit ugly: - we hijack the flush variable to check if - an undo_group was already started */ + gboolean rulers_flush = FALSE; + gboolean display_flush = FALSE; /* this is a bit ugly: + we hijack the flush variable + to check if an undo_group was + already started */ image_scale = (ImageResize *) client_data; @@ -1327,18 +1329,22 @@ image_scale_callback (GtkWidget *widget, gimage_set_resolution (gimage, image_scale->resize->resolution_x, image_scale->resize->resolution_y); - flush = TRUE; + + rulers_flush = TRUE; + display_flush = TRUE; } if (image_scale->resize->unit != gimage->unit) { - if (!flush) + if (!display_flush) undo_push_group_start (gimage, IMAGE_SCALE_UNDO); gimage_set_unit (gimage, image_scale->resize->unit); + gdisplays_setup_scale (gimage); gdisplays_resize_cursor_label (gimage); - flush = TRUE; + rulers_flush = TRUE; + display_flush = TRUE; } if (image_scale->resize->width != gimage->width || @@ -1347,13 +1353,14 @@ image_scale_callback (GtkWidget *widget, if (image_scale->resize->width > 0 && image_scale->resize->height > 0) { - if (!flush) + if (!display_flush) undo_push_group_start (gimage, IMAGE_SCALE_UNDO); gimage_scale (gimage, image_scale->resize->width, image_scale->resize->height); - flush = TRUE; + + display_flush = TRUE; } else { @@ -1363,7 +1370,13 @@ image_scale_callback (GtkWidget *widget, } } - if (flush) + if (rulers_flush) + { + gdisplays_setup_scale (gimage); + gdisplays_resize_cursor_label (gimage); + } + + if (display_flush) { undo_push_group_end (gimage); gdisplays_flush (); diff --git a/app/commands.c b/app/commands.c index fe92073e31..328d0d8f77 100644 --- a/app/commands.c +++ b/app/commands.c @@ -1311,9 +1311,11 @@ image_scale_callback (GtkWidget *widget, { ImageResize *image_scale; GImage *gimage; - gboolean flush = FALSE; /* this is a bit ugly: - we hijack the flush variable to check if - an undo_group was already started */ + gboolean rulers_flush = FALSE; + gboolean display_flush = FALSE; /* this is a bit ugly: + we hijack the flush variable + to check if an undo_group was + already started */ image_scale = (ImageResize *) client_data; @@ -1327,18 +1329,22 @@ image_scale_callback (GtkWidget *widget, gimage_set_resolution (gimage, image_scale->resize->resolution_x, image_scale->resize->resolution_y); - flush = TRUE; + + rulers_flush = TRUE; + display_flush = TRUE; } if (image_scale->resize->unit != gimage->unit) { - if (!flush) + if (!display_flush) undo_push_group_start (gimage, IMAGE_SCALE_UNDO); gimage_set_unit (gimage, image_scale->resize->unit); + gdisplays_setup_scale (gimage); gdisplays_resize_cursor_label (gimage); - flush = TRUE; + rulers_flush = TRUE; + display_flush = TRUE; } if (image_scale->resize->width != gimage->width || @@ -1347,13 +1353,14 @@ image_scale_callback (GtkWidget *widget, if (image_scale->resize->width > 0 && image_scale->resize->height > 0) { - if (!flush) + if (!display_flush) undo_push_group_start (gimage, IMAGE_SCALE_UNDO); gimage_scale (gimage, image_scale->resize->width, image_scale->resize->height); - flush = TRUE; + + display_flush = TRUE; } else { @@ -1363,7 +1370,13 @@ image_scale_callback (GtkWidget *widget, } } - if (flush) + if (rulers_flush) + { + gdisplays_setup_scale (gimage); + gdisplays_resize_cursor_label (gimage); + } + + if (display_flush) { undo_push_group_end (gimage); gdisplays_flush (); diff --git a/app/core/gimpprojection.c b/app/core/gimpprojection.c index 8d3ab24ded..be2059c4ad 100644 --- a/app/core/gimpprojection.c +++ b/app/core/gimpprojection.c @@ -1881,6 +1881,23 @@ gdisplays_resize_cursor_label (GimpImage *gimage) } } +void +gdisplays_setup_scale (GimpImage *gimage) +{ + GDisplay *gdisp; + GSList *list = display_list; + + /* traverse the linked list of displays, handling each one */ + while (list) + { + gdisp = (GDisplay *) list->data; + if (gdisp->gimage == gimage) + setup_scale (gdisp); + + list = g_slist_next (list); + } +} + void gdisplays_update_area (GimpImage *gimage, int x, diff --git a/app/core/gimpprojection.h b/app/core/gimpprojection.h index 5c82841e1e..745803b9f4 100644 --- a/app/core/gimpprojection.h +++ b/app/core/gimpprojection.h @@ -204,6 +204,7 @@ GDisplay * gdisplay_get_ID (int); void gdisplay_update_title (GDisplay*); void gdisplays_update_title (GimpImage*); void gdisplays_resize_cursor_label (GimpImage*); +void gdisplays_setup_scale (GimpImage*); void gdisplays_update_area (GimpImage*, int, int, int, int); void gdisplays_expose_guides (GimpImage*); void gdisplays_expose_guide (GimpImage*, Guide *); diff --git a/app/display/gimpdisplay-scale.c b/app/display/gimpdisplay-scale.c index 7804ec2107..0a8718f48a 100644 --- a/app/display/gimpdisplay-scale.c +++ b/app/display/gimpdisplay-scale.c @@ -155,7 +155,6 @@ change_scale (GDisplay *gdisp, /* resize the image */ resize_display (gdisp, allow_resize_windows, TRUE); - } } @@ -255,8 +254,8 @@ setup_scale (GDisplay *gdisp) FUNSCALEY (gdisp, (double) gdisp->offset_y)); } - gtk_widget_draw (GTK_WIDGET (hruler), NULL); - gtk_widget_draw (GTK_WIDGET (vruler), NULL); + gtk_widget_queue_draw (GTK_WIDGET (hruler)); + gtk_widget_queue_draw (GTK_WIDGET (vruler)); - nav_window_update_window_marker(gdisp->window_nav_dialog); + nav_window_update_window_marker (gdisp->window_nav_dialog); } diff --git a/app/display/gimpdisplay.c b/app/display/gimpdisplay.c index 8d3ab24ded..be2059c4ad 100644 --- a/app/display/gimpdisplay.c +++ b/app/display/gimpdisplay.c @@ -1881,6 +1881,23 @@ gdisplays_resize_cursor_label (GimpImage *gimage) } } +void +gdisplays_setup_scale (GimpImage *gimage) +{ + GDisplay *gdisp; + GSList *list = display_list; + + /* traverse the linked list of displays, handling each one */ + while (list) + { + gdisp = (GDisplay *) list->data; + if (gdisp->gimage == gimage) + setup_scale (gdisp); + + list = g_slist_next (list); + } +} + void gdisplays_update_area (GimpImage *gimage, int x, diff --git a/app/display/gimpdisplay.h b/app/display/gimpdisplay.h index 5c82841e1e..745803b9f4 100644 --- a/app/display/gimpdisplay.h +++ b/app/display/gimpdisplay.h @@ -204,6 +204,7 @@ GDisplay * gdisplay_get_ID (int); void gdisplay_update_title (GDisplay*); void gdisplays_update_title (GimpImage*); void gdisplays_resize_cursor_label (GimpImage*); +void gdisplays_setup_scale (GimpImage*); void gdisplays_update_area (GimpImage*, int, int, int, int); void gdisplays_expose_guides (GimpImage*); void gdisplays_expose_guide (GimpImage*, Guide *); diff --git a/app/display/gimpdisplayshell-scale.c b/app/display/gimpdisplayshell-scale.c index 7804ec2107..0a8718f48a 100644 --- a/app/display/gimpdisplayshell-scale.c +++ b/app/display/gimpdisplayshell-scale.c @@ -155,7 +155,6 @@ change_scale (GDisplay *gdisp, /* resize the image */ resize_display (gdisp, allow_resize_windows, TRUE); - } } @@ -255,8 +254,8 @@ setup_scale (GDisplay *gdisp) FUNSCALEY (gdisp, (double) gdisp->offset_y)); } - gtk_widget_draw (GTK_WIDGET (hruler), NULL); - gtk_widget_draw (GTK_WIDGET (vruler), NULL); + gtk_widget_queue_draw (GTK_WIDGET (hruler)); + gtk_widget_queue_draw (GTK_WIDGET (vruler)); - nav_window_update_window_marker(gdisp->window_nav_dialog); + nav_window_update_window_marker (gdisp->window_nav_dialog); } diff --git a/app/gdisplay.c b/app/gdisplay.c index 8d3ab24ded..be2059c4ad 100644 --- a/app/gdisplay.c +++ b/app/gdisplay.c @@ -1881,6 +1881,23 @@ gdisplays_resize_cursor_label (GimpImage *gimage) } } +void +gdisplays_setup_scale (GimpImage *gimage) +{ + GDisplay *gdisp; + GSList *list = display_list; + + /* traverse the linked list of displays, handling each one */ + while (list) + { + gdisp = (GDisplay *) list->data; + if (gdisp->gimage == gimage) + setup_scale (gdisp); + + list = g_slist_next (list); + } +} + void gdisplays_update_area (GimpImage *gimage, int x, diff --git a/app/gdisplay.h b/app/gdisplay.h index 5c82841e1e..745803b9f4 100644 --- a/app/gdisplay.h +++ b/app/gdisplay.h @@ -204,6 +204,7 @@ GDisplay * gdisplay_get_ID (int); void gdisplay_update_title (GDisplay*); void gdisplays_update_title (GimpImage*); void gdisplays_resize_cursor_label (GimpImage*); +void gdisplays_setup_scale (GimpImage*); void gdisplays_update_area (GimpImage*, int, int, int, int); void gdisplays_expose_guides (GimpImage*); void gdisplays_expose_guide (GimpImage*, Guide *); diff --git a/app/gui/commands.c b/app/gui/commands.c index fe92073e31..328d0d8f77 100644 --- a/app/gui/commands.c +++ b/app/gui/commands.c @@ -1311,9 +1311,11 @@ image_scale_callback (GtkWidget *widget, { ImageResize *image_scale; GImage *gimage; - gboolean flush = FALSE; /* this is a bit ugly: - we hijack the flush variable to check if - an undo_group was already started */ + gboolean rulers_flush = FALSE; + gboolean display_flush = FALSE; /* this is a bit ugly: + we hijack the flush variable + to check if an undo_group was + already started */ image_scale = (ImageResize *) client_data; @@ -1327,18 +1329,22 @@ image_scale_callback (GtkWidget *widget, gimage_set_resolution (gimage, image_scale->resize->resolution_x, image_scale->resize->resolution_y); - flush = TRUE; + + rulers_flush = TRUE; + display_flush = TRUE; } if (image_scale->resize->unit != gimage->unit) { - if (!flush) + if (!display_flush) undo_push_group_start (gimage, IMAGE_SCALE_UNDO); gimage_set_unit (gimage, image_scale->resize->unit); + gdisplays_setup_scale (gimage); gdisplays_resize_cursor_label (gimage); - flush = TRUE; + rulers_flush = TRUE; + display_flush = TRUE; } if (image_scale->resize->width != gimage->width || @@ -1347,13 +1353,14 @@ image_scale_callback (GtkWidget *widget, if (image_scale->resize->width > 0 && image_scale->resize->height > 0) { - if (!flush) + if (!display_flush) undo_push_group_start (gimage, IMAGE_SCALE_UNDO); gimage_scale (gimage, image_scale->resize->width, image_scale->resize->height); - flush = TRUE; + + display_flush = TRUE; } else { @@ -1363,7 +1370,13 @@ image_scale_callback (GtkWidget *widget, } } - if (flush) + if (rulers_flush) + { + gdisplays_setup_scale (gimage); + gdisplays_resize_cursor_label (gimage); + } + + if (display_flush) { undo_push_group_end (gimage); gdisplays_flush (); diff --git a/app/gui/help-commands.c b/app/gui/help-commands.c index fe92073e31..328d0d8f77 100644 --- a/app/gui/help-commands.c +++ b/app/gui/help-commands.c @@ -1311,9 +1311,11 @@ image_scale_callback (GtkWidget *widget, { ImageResize *image_scale; GImage *gimage; - gboolean flush = FALSE; /* this is a bit ugly: - we hijack the flush variable to check if - an undo_group was already started */ + gboolean rulers_flush = FALSE; + gboolean display_flush = FALSE; /* this is a bit ugly: + we hijack the flush variable + to check if an undo_group was + already started */ image_scale = (ImageResize *) client_data; @@ -1327,18 +1329,22 @@ image_scale_callback (GtkWidget *widget, gimage_set_resolution (gimage, image_scale->resize->resolution_x, image_scale->resize->resolution_y); - flush = TRUE; + + rulers_flush = TRUE; + display_flush = TRUE; } if (image_scale->resize->unit != gimage->unit) { - if (!flush) + if (!display_flush) undo_push_group_start (gimage, IMAGE_SCALE_UNDO); gimage_set_unit (gimage, image_scale->resize->unit); + gdisplays_setup_scale (gimage); gdisplays_resize_cursor_label (gimage); - flush = TRUE; + rulers_flush = TRUE; + display_flush = TRUE; } if (image_scale->resize->width != gimage->width || @@ -1347,13 +1353,14 @@ image_scale_callback (GtkWidget *widget, if (image_scale->resize->width > 0 && image_scale->resize->height > 0) { - if (!flush) + if (!display_flush) undo_push_group_start (gimage, IMAGE_SCALE_UNDO); gimage_scale (gimage, image_scale->resize->width, image_scale->resize->height); - flush = TRUE; + + display_flush = TRUE; } else { @@ -1363,7 +1370,13 @@ image_scale_callback (GtkWidget *widget, } } - if (flush) + if (rulers_flush) + { + gdisplays_setup_scale (gimage); + gdisplays_resize_cursor_label (gimage); + } + + if (display_flush) { undo_push_group_end (gimage); gdisplays_flush (); diff --git a/app/scale.c b/app/scale.c index 7804ec2107..0a8718f48a 100644 --- a/app/scale.c +++ b/app/scale.c @@ -155,7 +155,6 @@ change_scale (GDisplay *gdisp, /* resize the image */ resize_display (gdisp, allow_resize_windows, TRUE); - } } @@ -255,8 +254,8 @@ setup_scale (GDisplay *gdisp) FUNSCALEY (gdisp, (double) gdisp->offset_y)); } - gtk_widget_draw (GTK_WIDGET (hruler), NULL); - gtk_widget_draw (GTK_WIDGET (vruler), NULL); + gtk_widget_queue_draw (GTK_WIDGET (hruler)); + gtk_widget_queue_draw (GTK_WIDGET (vruler)); - nav_window_update_window_marker(gdisp->window_nav_dialog); + nav_window_update_window_marker (gdisp->window_nav_dialog); }