gdk: Add gdk_rectangle_equal()

There's enough users inside GTK to warrant this convenience function.
This commit is contained in:
Benjamin Otte 2015-09-13 16:00:22 +02:00 committed by Matthias Clasen
parent 5a561a8ddb
commit 2dad7c1319
5 changed files with 28 additions and 22 deletions

View File

@ -631,6 +631,7 @@ GdkPoint
GdkRectangle
gdk_rectangle_intersect
gdk_rectangle_union
gdk_rectangle_equal
<SUBSECTION Private>
gdk_rectangle_get_type

View File

@ -133,6 +133,27 @@ gdk_rectangle_intersect (const GdkRectangle *src1,
return return_val;
}
/**
* gdk_rectangle_equal:
* @rect1: a #GdkRectangle
* @rect2: a #GdkRectangle
*
* Checks if the two given rectangles are equal.
*
* Returns: %TRUE if the rectangles are equal.
*
* Since: 3.20
*/
gboolean
gdk_rectangle_equal (const GdkRectangle *rect1,
const GdkRectangle *rect2)
{
return rect1->x == rect2->x
&& rect1->y == rect2->y
&& rect1->width == rect2->width
&& rect1->height == rect2->height;
}
static GdkRectangle *
gdk_rectangle_copy (const GdkRectangle *rectangle)
{

View File

@ -45,6 +45,10 @@ void gdk_rectangle_union (const GdkRectangle *src1,
const GdkRectangle *src2,
GdkRectangle *dest);
GDK_AVAILABLE_IN_3_20
gboolean gdk_rectangle_equal (const GdkRectangle *rect1,
const GdkRectangle *rect2);
GDK_AVAILABLE_IN_ALL
GType gdk_rectangle_get_type (void) G_GNUC_CONST;

View File

@ -707,16 +707,6 @@ gtk_frame_draw (GtkWidget *widget,
return FALSE;
}
static gboolean
rectangle_equal (const GdkRectangle *a,
const GdkRectangle *b)
{
return a->x == b->x
&& a->y == b->y
&& a->width == b->width
&& a->height == b->height;
}
static void
gtk_frame_size_allocate (GtkWidget *widget,
GtkAllocation *allocation)
@ -734,7 +724,7 @@ gtk_frame_size_allocate (GtkWidget *widget,
/* If the child allocation changed, that means that the frame is drawn
* in a new place, so we must redraw the entire widget.
*/
if (gtk_widget_get_mapped (widget) && !rectangle_equal (&priv->child_allocation, &new_allocation))
if (gtk_widget_get_mapped (widget) && !gdk_rectangle_equal (&priv->child_allocation, &new_allocation))
{
gdk_window_invalidate_rect (gtk_widget_get_window (widget), allocation, FALSE);
}

View File

@ -3655,16 +3655,6 @@ gtk_range_compute_slider_position (GtkRange *range,
}
}
static gboolean
rectangle_equal (const GdkRectangle *a,
const GdkRectangle *b)
{
return a->x == b->x
&& a->y == b->y
&& a->width == b->width
&& a->height == b->height;
}
static void
gtk_range_calc_slider (GtkRange *range)
{
@ -3675,7 +3665,7 @@ gtk_range_calc_slider (GtkRange *range)
gtk_adjustment_get_value (priv->adjustment),
&new_slider);
if (rectangle_equal (&priv->slider, &new_slider))
if (gdk_rectangle_equal (&priv->slider, &new_slider))
return;
gtk_range_queue_draw_location (range, MOUSE_SLIDER);