1 /* GTK - The GIMP Toolkit
2 * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
21 * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
22 * file for a list of people on the GTK+ Team. See the ChangeLog
23 * files for a list of changes. These files are distributed with
24 * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
37 #include "gtkprogressbar.h"
38 #include "gtksignal.h"
41 #define MIN_HORIZONTAL_BAR_WIDTH 150
42 #define MIN_HORIZONTAL_BAR_HEIGHT 20
43 #define MIN_VERTICAL_BAR_WIDTH 22
44 #define MIN_VERTICAL_BAR_HEIGHT 80
45 #define MAX_TEXT_LENGTH 80
46 #define TEXT_SPACING 2
60 static void gtk_progress_bar_class_init (GtkProgressBarClass *klass);
61 static void gtk_progress_bar_init (GtkProgressBar *pbar);
62 static void gtk_progress_bar_set_arg (GtkObject *object,
65 static void gtk_progress_bar_get_arg (GtkObject *object,
68 static void gtk_progress_bar_size_request (GtkWidget *widget,
69 GtkRequisition *requisition);
70 static void gtk_progress_bar_real_update (GtkProgress *progress);
71 static void gtk_progress_bar_paint (GtkProgress *progress);
72 static void gtk_progress_bar_act_mode_enter (GtkProgress *progress);
76 gtk_progress_bar_get_type (void)
78 static GtkType progress_bar_type = 0;
80 if (!progress_bar_type)
82 static const GtkTypeInfo progress_bar_info =
85 sizeof (GtkProgressBar),
86 sizeof (GtkProgressBarClass),
87 (GtkClassInitFunc) gtk_progress_bar_class_init,
88 (GtkObjectInitFunc) gtk_progress_bar_init,
89 /* reserved_1 */ NULL,
90 /* reserved_2 */ NULL,
91 (GtkClassInitFunc) NULL
94 progress_bar_type = gtk_type_unique (GTK_TYPE_PROGRESS, &progress_bar_info);
97 return progress_bar_type;
101 gtk_progress_bar_class_init (GtkProgressBarClass *class)
103 GtkObjectClass *object_class;
104 GtkWidgetClass *widget_class;
105 GtkProgressClass *progress_class;
107 object_class = (GtkObjectClass *) class;
108 widget_class = (GtkWidgetClass *) class;
109 progress_class = (GtkProgressClass *) class;
111 gtk_object_add_arg_type ("GtkProgressBar::adjustment",
115 gtk_object_add_arg_type ("GtkProgressBar::orientation",
116 GTK_TYPE_PROGRESS_BAR_ORIENTATION,
119 gtk_object_add_arg_type ("GtkProgressBar::bar_style",
120 GTK_TYPE_PROGRESS_BAR_STYLE,
123 gtk_object_add_arg_type ("GtkProgressBar::activity_step",
127 gtk_object_add_arg_type ("GtkProgressBar::activity_blocks",
130 ARG_ACTIVITY_BLOCKS);
131 gtk_object_add_arg_type ("GtkProgressBar::discrete_blocks",
134 ARG_DISCRETE_BLOCKS);
135 gtk_object_add_arg_type ("GtkProgressBar::fraction",
139 gtk_object_add_arg_type ("GtkProgressBar::pulse_step",
144 object_class->set_arg = gtk_progress_bar_set_arg;
145 object_class->get_arg = gtk_progress_bar_get_arg;
147 widget_class->size_request = gtk_progress_bar_size_request;
149 progress_class->paint = gtk_progress_bar_paint;
150 progress_class->update = gtk_progress_bar_real_update;
151 progress_class->act_mode_enter = gtk_progress_bar_act_mode_enter;
155 gtk_progress_bar_init (GtkProgressBar *pbar)
157 pbar->bar_style = GTK_PROGRESS_CONTINUOUS;
160 pbar->orientation = GTK_PROGRESS_LEFT_TO_RIGHT;
161 pbar->pulse_fraction = 0.1;
162 pbar->activity_pos = 0;
163 pbar->activity_dir = 1;
164 pbar->activity_step = 3;
165 pbar->activity_blocks = 5;
169 gtk_progress_bar_set_arg (GtkObject *object,
173 GtkProgressBar *pbar;
175 pbar = GTK_PROGRESS_BAR (object);
180 gtk_progress_set_adjustment (GTK_PROGRESS (pbar), GTK_VALUE_POINTER (*arg));
182 case ARG_ORIENTATION:
183 gtk_progress_bar_set_orientation (pbar, GTK_VALUE_ENUM (*arg));
186 gtk_progress_bar_set_bar_style (pbar, GTK_VALUE_ENUM (*arg));
188 case ARG_ACTIVITY_STEP:
189 gtk_progress_bar_set_activity_step (pbar, GTK_VALUE_UINT (*arg));
191 case ARG_ACTIVITY_BLOCKS:
192 gtk_progress_bar_set_activity_blocks (pbar, GTK_VALUE_UINT (*arg));
194 case ARG_DISCRETE_BLOCKS:
195 gtk_progress_bar_set_discrete_blocks (pbar, GTK_VALUE_UINT (*arg));
198 gtk_progress_bar_set_fraction (pbar, GTK_VALUE_FLOAT (*arg));
201 gtk_progress_bar_set_pulse_step (pbar, GTK_VALUE_FLOAT (*arg));
209 gtk_progress_bar_get_arg (GtkObject *object,
213 GtkProgressBar *pbar;
215 pbar = GTK_PROGRESS_BAR (object);
220 GTK_VALUE_POINTER (*arg) = GTK_PROGRESS (pbar)->adjustment;
222 case ARG_ORIENTATION:
223 GTK_VALUE_ENUM (*arg) = pbar->orientation;
226 GTK_VALUE_ENUM (*arg) = pbar->bar_style;
228 case ARG_ACTIVITY_STEP:
229 GTK_VALUE_UINT (*arg) = pbar->activity_step;
231 case ARG_ACTIVITY_BLOCKS:
232 GTK_VALUE_UINT (*arg) = pbar->activity_blocks;
234 case ARG_DISCRETE_BLOCKS:
235 GTK_VALUE_UINT (*arg) = pbar->blocks;
238 GTK_VALUE_FLOAT (*arg) = gtk_progress_get_current_percentage (GTK_PROGRESS (pbar));
241 GTK_VALUE_FLOAT (*arg) = pbar->pulse_fraction;
244 arg->type = GTK_TYPE_INVALID;
250 gtk_progress_bar_new (void)
254 pbar = gtk_widget_new (GTK_TYPE_PROGRESS_BAR, NULL);
260 gtk_progress_bar_new_with_adjustment (GtkAdjustment *adjustment)
264 g_return_val_if_fail (adjustment != NULL, NULL);
265 g_return_val_if_fail (GTK_IS_ADJUSTMENT (adjustment), NULL);
267 pbar = gtk_widget_new (GTK_TYPE_PROGRESS_BAR,
268 "adjustment", adjustment,
275 gtk_progress_bar_real_update (GtkProgress *progress)
277 GtkProgressBar *pbar;
280 g_return_if_fail (progress != NULL);
281 g_return_if_fail (GTK_IS_PROGRESS (progress));
283 pbar = GTK_PROGRESS_BAR (progress);
284 widget = GTK_WIDGET (progress);
286 if (pbar->bar_style == GTK_PROGRESS_CONTINUOUS ||
287 GTK_PROGRESS (pbar)->activity_mode)
289 if (GTK_PROGRESS (pbar)->activity_mode)
293 /* advance the block */
295 if (pbar->orientation == GTK_PROGRESS_LEFT_TO_RIGHT ||
296 pbar->orientation == GTK_PROGRESS_RIGHT_TO_LEFT)
298 /* Update our activity step. */
300 pbar->activity_step = widget->allocation.width * pbar->pulse_fraction;
302 size = MAX (2, widget->allocation.width / pbar->activity_blocks);
304 if (pbar->activity_dir == 0)
306 pbar->activity_pos += pbar->activity_step;
307 if (pbar->activity_pos + size >=
308 widget->allocation.width -
309 widget->style->xthickness)
311 pbar->activity_pos = widget->allocation.width -
312 widget->style->xthickness - size;
313 pbar->activity_dir = 1;
318 pbar->activity_pos -= pbar->activity_step;
319 if (pbar->activity_pos <= widget->style->xthickness)
321 pbar->activity_pos = widget->style->xthickness;
322 pbar->activity_dir = 0;
328 /* Update our activity step. */
330 pbar->activity_step = widget->allocation.height * pbar->pulse_fraction;
332 size = MAX (2, widget->allocation.height / pbar->activity_blocks);
334 if (pbar->activity_dir == 0)
336 pbar->activity_pos += pbar->activity_step;
337 if (pbar->activity_pos + size >=
338 widget->allocation.height -
339 widget->style->ythickness)
341 pbar->activity_pos = widget->allocation.height -
342 widget->style->ythickness - size;
343 pbar->activity_dir = 1;
348 pbar->activity_pos -= pbar->activity_step;
349 if (pbar->activity_pos <= widget->style->ythickness)
351 pbar->activity_pos = widget->style->ythickness;
352 pbar->activity_dir = 0;
357 gtk_progress_bar_paint (progress);
358 gtk_widget_queue_draw (GTK_WIDGET (progress));
364 in_block = -1 + (gint)(gtk_progress_get_current_percentage (progress) *
365 (gfloat)pbar->blocks);
367 if (pbar->in_block != in_block)
369 pbar->in_block = in_block;
370 gtk_progress_bar_paint (progress);
371 gtk_widget_queue_draw (GTK_WIDGET (progress));
377 gtk_progress_bar_size_request (GtkWidget *widget,
378 GtkRequisition *requisition)
380 GtkProgress *progress;
381 GtkProgressBar *pbar;
383 PangoRectangle logical_rect;
386 g_return_if_fail (widget != NULL);
387 g_return_if_fail (GTK_IS_PROGRESS_BAR (widget));
388 g_return_if_fail (requisition != NULL);
390 progress = GTK_PROGRESS (widget);
391 pbar = GTK_PROGRESS_BAR (widget);
393 if (progress->show_text && pbar->bar_style != GTK_PROGRESS_DISCRETE)
395 buf = gtk_progress_get_text_from_value (progress, progress->adjustment->upper);
397 layout = gtk_widget_create_pango_layout (widget, buf);
398 pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
400 g_object_unref (G_OBJECT (layout));
404 if (pbar->orientation == GTK_PROGRESS_LEFT_TO_RIGHT ||
405 pbar->orientation == GTK_PROGRESS_RIGHT_TO_LEFT)
407 if (progress->show_text && pbar->bar_style != GTK_PROGRESS_DISCRETE)
409 requisition->width = MAX (MIN_HORIZONTAL_BAR_WIDTH,
410 2 * widget->style->xthickness + 3 +
411 logical_rect.width + 2 * TEXT_SPACING);
413 requisition->height = MAX (MIN_HORIZONTAL_BAR_HEIGHT,
414 2 * widget->style->ythickness + 3 +
415 logical_rect.height + 2 * TEXT_SPACING);
419 requisition->width = MIN_HORIZONTAL_BAR_WIDTH;
420 requisition->height = MIN_HORIZONTAL_BAR_HEIGHT;
425 if (progress->show_text && pbar->bar_style != GTK_PROGRESS_DISCRETE)
427 requisition->width = MAX (MIN_VERTICAL_BAR_WIDTH,
428 2 * widget->style->xthickness + 3 +
429 logical_rect.width + 2 * TEXT_SPACING);
431 requisition->height = MAX (MIN_VERTICAL_BAR_HEIGHT,
432 2 * widget->style->ythickness + 3 +
433 logical_rect.height + 2 * TEXT_SPACING);
437 requisition->width = MIN_VERTICAL_BAR_WIDTH;
438 requisition->height = MIN_VERTICAL_BAR_HEIGHT;
444 gtk_progress_bar_act_mode_enter (GtkProgress *progress)
446 GtkProgressBar *pbar;
450 pbar = GTK_PROGRESS_BAR (progress);
451 widget = GTK_WIDGET (progress);
453 /* calculate start pos */
455 if (pbar->orientation == GTK_PROGRESS_LEFT_TO_RIGHT ||
456 pbar->orientation == GTK_PROGRESS_RIGHT_TO_LEFT)
458 size = MAX (2, widget->allocation.width / pbar->activity_blocks);
460 if (pbar->orientation == GTK_PROGRESS_LEFT_TO_RIGHT)
462 pbar->activity_pos = widget->style->xthickness;
463 pbar->activity_dir = 0;
467 pbar->activity_pos = widget->allocation.width -
468 widget->style->xthickness - (widget->allocation.height -
469 widget->style->ythickness * 2);
470 pbar->activity_dir = 1;
475 size = MAX (2, widget->allocation.height / pbar->activity_blocks);
477 if (pbar->orientation == GTK_PROGRESS_TOP_TO_BOTTOM)
479 pbar->activity_pos = widget->style->ythickness;
480 pbar->activity_dir = 0;
484 pbar->activity_pos = widget->allocation.height -
485 widget->style->ythickness - (widget->allocation.width -
486 widget->style->xthickness * 2);
487 pbar->activity_dir = 1;
493 gtk_progress_bar_paint (GtkProgress *progress)
495 GtkProgressBar *pbar;
498 gint block_delta = 0;
506 g_return_if_fail (progress != NULL);
507 g_return_if_fail (GTK_IS_PROGRESS_BAR (progress));
509 pbar = GTK_PROGRESS_BAR (progress);
510 widget = GTK_WIDGET (progress);
512 if (pbar->orientation == GTK_PROGRESS_LEFT_TO_RIGHT ||
513 pbar->orientation == GTK_PROGRESS_RIGHT_TO_LEFT)
514 space = widget->allocation.width -
515 2 * widget->style->xthickness;
517 space = widget->allocation.height -
518 2 * widget->style->ythickness;
520 percentage = gtk_progress_get_current_percentage (progress);
522 if (progress->offscreen_pixmap)
524 gtk_paint_box (widget->style,
525 progress->offscreen_pixmap,
526 GTK_STATE_NORMAL, GTK_SHADOW_IN,
527 NULL, widget, "trough",
529 widget->allocation.width,
530 widget->allocation.height);
532 if (progress->activity_mode)
534 if (pbar->orientation == GTK_PROGRESS_LEFT_TO_RIGHT ||
535 pbar->orientation == GTK_PROGRESS_RIGHT_TO_LEFT)
537 size = MAX (2, widget->allocation.width / pbar->activity_blocks);
539 gtk_paint_box (widget->style,
540 progress->offscreen_pixmap,
541 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
544 widget->style->ythickness,
546 widget->allocation.height - widget->style->ythickness * 2);
551 size = MAX (2, widget->allocation.height / pbar->activity_blocks);
553 gtk_paint_box (widget->style,
554 progress->offscreen_pixmap,
555 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
557 widget->style->xthickness,
559 widget->allocation.width - widget->style->xthickness * 2,
565 amount = percentage * space;
569 switch (pbar->orientation)
572 case GTK_PROGRESS_LEFT_TO_RIGHT:
574 if (pbar->bar_style == GTK_PROGRESS_CONTINUOUS)
576 gtk_paint_box (widget->style,
577 progress->offscreen_pixmap,
578 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
580 widget->style->xthickness,
581 widget->style->ythickness,
583 widget->allocation.height - widget->style->ythickness * 2);
587 x = widget->style->xthickness;
589 for (i = 0; i <= pbar->in_block; i++)
591 block_delta = (((i + 1) * space) / pbar->blocks)
592 - ((i * space) / pbar->blocks);
594 gtk_paint_box (widget->style,
595 progress->offscreen_pixmap,
596 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
599 widget->style->ythickness,
601 widget->allocation.height - widget->style->ythickness * 2);
608 case GTK_PROGRESS_RIGHT_TO_LEFT:
610 if (pbar->bar_style == GTK_PROGRESS_CONTINUOUS)
612 gtk_paint_box (widget->style,
613 progress->offscreen_pixmap,
614 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
616 widget->allocation.width -
617 widget->style->xthickness - amount,
618 widget->style->ythickness,
620 widget->allocation.height -
621 widget->style->ythickness * 2);
625 x = widget->allocation.width -
626 widget->style->xthickness;
628 for (i = 0; i <= pbar->in_block; i++)
630 block_delta = (((i + 1) * space) / pbar->blocks) -
631 ((i * space) / pbar->blocks);
635 gtk_paint_box (widget->style,
636 progress->offscreen_pixmap,
637 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
640 widget->style->ythickness,
642 widget->allocation.height -
643 widget->style->ythickness * 2);
648 case GTK_PROGRESS_BOTTOM_TO_TOP:
650 if (pbar->bar_style == GTK_PROGRESS_CONTINUOUS)
652 gtk_paint_box (widget->style,
653 progress->offscreen_pixmap,
654 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
656 widget->style->xthickness,
657 widget->allocation.height -
658 widget->style->ythickness - amount,
659 widget->allocation.width -
660 widget->style->xthickness * 2,
665 y = widget->allocation.height -
666 widget->style->ythickness;
668 for (i = 0; i <= pbar->in_block; i++)
670 block_delta = (((i + 1) * space) / pbar->blocks) -
671 ((i * space) / pbar->blocks);
675 gtk_paint_box (widget->style,
676 progress->offscreen_pixmap,
677 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
679 widget->style->xthickness,
681 widget->allocation.width -
682 widget->style->xthickness * 2,
688 case GTK_PROGRESS_TOP_TO_BOTTOM:
690 if (pbar->bar_style == GTK_PROGRESS_CONTINUOUS)
692 gtk_paint_box (widget->style,
693 progress->offscreen_pixmap,
694 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
696 widget->style->xthickness,
697 widget->style->ythickness,
698 widget->allocation.width -
699 widget->style->xthickness * 2,
704 y = widget->style->ythickness;
706 for (i = 0; i <= pbar->in_block; i++)
709 block_delta = (((i + 1) * space) / pbar->blocks)
710 - ((i * space) / pbar->blocks);
712 gtk_paint_box (widget->style,
713 progress->offscreen_pixmap,
714 GTK_STATE_PRELIGHT, GTK_SHADOW_OUT,
716 widget->style->xthickness,
718 widget->allocation.width -
719 widget->style->xthickness * 2,
732 if (progress->show_text && pbar->bar_style != GTK_PROGRESS_DISCRETE)
739 PangoRectangle logical_rect;
741 buf = gtk_progress_get_current_text (progress);
743 layout = gtk_widget_create_pango_layout (widget, buf);
744 pango_layout_get_pixel_extents (layout, NULL, &logical_rect);
746 x = widget->style->xthickness + 1 +
747 (widget->allocation.width - 2 * widget->style->xthickness -
748 3 - logical_rect.width)
751 y = widget->style->ythickness + 1 +
752 (widget->allocation.height - 2 * widget->style->ythickness -
753 3 - logical_rect.height)
756 rect.x = widget->style->xthickness + 1;
757 rect.y = widget->style->ythickness + 1;
758 rect.width = widget->allocation.width -
759 2 * widget->style->xthickness - 3;
760 rect.height = widget->allocation.height -
761 2 * widget->style->ythickness - 3;
763 gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state],
766 gdk_draw_layout (progress->offscreen_pixmap,
767 widget->style->fg_gc[widget->state],
770 gdk_gc_set_clip_rectangle (widget->style->fg_gc[widget->state],
772 g_object_unref (G_OBJECT (layout));
778 /*******************************************************************/
781 gtk_progress_bar_set_fraction (GtkProgressBar *pbar,
784 g_return_if_fail (pbar != NULL);
785 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
787 /* If we know the percentage, we don't want activity mode. */
788 gtk_progress_set_activity_mode (GTK_PROGRESS (pbar), FALSE);
790 /* We use the deprecated GtkProgress interface internally.
791 * Once everything's been deprecated for a good long time,
792 * we can clean up all this code.
794 gtk_progress_set_percentage (GTK_PROGRESS (pbar), fraction);
798 gtk_progress_bar_pulse (GtkProgressBar *pbar)
800 g_return_if_fail (pbar != NULL);
801 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
803 /* If we don't know the percentage, we must want activity mode. */
804 gtk_progress_set_activity_mode (GTK_PROGRESS (pbar), TRUE);
807 gtk_progress_bar_real_update (GTK_PROGRESS (pbar));
811 gtk_progress_bar_set_text (GtkProgressBar *pbar,
814 g_return_if_fail (pbar != NULL);
815 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
817 /* We don't support formats in this interface */
818 GTK_PROGRESS (pbar)->use_text_format = FALSE;
822 gtk_progress_set_show_text (GTK_PROGRESS (pbar), TRUE);
823 gtk_progress_set_format_string (GTK_PROGRESS (pbar), text);
827 gtk_progress_set_show_text (GTK_PROGRESS (pbar), FALSE);
828 gtk_progress_set_format_string (GTK_PROGRESS (pbar), "");
833 gtk_progress_bar_set_pulse_step (GtkProgressBar *pbar,
836 g_return_if_fail (pbar != NULL);
837 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
839 pbar->pulse_fraction = fraction;
843 gtk_progress_bar_update (GtkProgressBar *pbar,
846 g_return_if_fail (pbar != NULL);
847 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
849 /* Use of gtk_progress_bar_update() is deprecated !
850 * Use gtk_progress_bar_set_percentage ()
853 gtk_progress_set_percentage (GTK_PROGRESS (pbar), percentage);
857 gtk_progress_bar_set_orientation (GtkProgressBar *pbar,
858 GtkProgressBarOrientation orientation)
860 g_return_if_fail (pbar != NULL);
861 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
863 if (pbar->orientation != orientation)
865 pbar->orientation = orientation;
867 if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (pbar)))
868 gtk_widget_queue_resize (GTK_WIDGET (pbar));
873 gtk_progress_bar_set_bar_style (GtkProgressBar *pbar,
874 GtkProgressBarStyle bar_style)
876 g_return_if_fail (pbar != NULL);
877 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
879 if (pbar->bar_style != bar_style)
881 pbar->bar_style = bar_style;
883 if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (pbar)))
884 gtk_widget_queue_resize (GTK_WIDGET (pbar));
889 gtk_progress_bar_set_discrete_blocks (GtkProgressBar *pbar,
892 g_return_if_fail (pbar != NULL);
893 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
894 g_return_if_fail (blocks > 1);
896 if (pbar->blocks != blocks)
898 pbar->blocks = blocks;
900 if (GTK_WIDGET_DRAWABLE (GTK_WIDGET (pbar)))
901 gtk_widget_queue_resize (GTK_WIDGET (pbar));
906 gtk_progress_bar_set_activity_step (GtkProgressBar *pbar,
909 g_return_if_fail (pbar != NULL);
910 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
912 if (pbar->activity_step != step)
913 pbar->activity_step = step;
917 gtk_progress_bar_set_activity_blocks (GtkProgressBar *pbar,
920 g_return_if_fail (pbar != NULL);
921 g_return_if_fail (GTK_IS_PROGRESS_BAR (pbar));
922 g_return_if_fail (blocks > 1);
924 if (pbar->activity_blocks != blocks)
925 pbar->activity_blocks = blocks;