Add gtk_grid_remove_{row,column}
It is sometimes convenient to deal with entire rows or columns at a time. https://bugzilla.gnome.org/show_bug.cgi?id=695994
This commit is contained in:
@ -7238,6 +7238,8 @@ gtk_grid_attach_next_to
|
|||||||
gtk_grid_get_child_at
|
gtk_grid_get_child_at
|
||||||
gtk_grid_insert_row
|
gtk_grid_insert_row
|
||||||
gtk_grid_insert_column
|
gtk_grid_insert_column
|
||||||
|
gtk_grid_remove_row
|
||||||
|
gtk_grid_remove_column
|
||||||
gtk_grid_insert_next_to
|
gtk_grid_insert_next_to
|
||||||
gtk_grid_set_row_homogeneous
|
gtk_grid_set_row_homogeneous
|
||||||
gtk_grid_get_row_homogeneous
|
gtk_grid_get_row_homogeneous
|
||||||
|
@ -1205,6 +1205,8 @@ gtk_grid_insert_column
|
|||||||
gtk_grid_insert_next_to
|
gtk_grid_insert_next_to
|
||||||
gtk_grid_insert_row
|
gtk_grid_insert_row
|
||||||
gtk_grid_new
|
gtk_grid_new
|
||||||
|
gtk_grid_remove_column
|
||||||
|
gtk_grid_remove_row
|
||||||
gtk_grid_set_column_homogeneous
|
gtk_grid_set_column_homogeneous
|
||||||
gtk_grid_set_column_spacing
|
gtk_grid_set_column_spacing
|
||||||
gtk_grid_set_row_homogeneous
|
gtk_grid_set_row_homogeneous
|
||||||
|
102
gtk/gtkgrid.c
102
gtk/gtkgrid.c
@ -1684,6 +1684,57 @@ gtk_grid_insert_row (GtkGrid *grid,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_grid_remove_row:
|
||||||
|
* @grid: a #GtkGrid
|
||||||
|
* @position: the position of the row to remove
|
||||||
|
*
|
||||||
|
* Removes a row from the grid.
|
||||||
|
*
|
||||||
|
* Children that are placed in this row are removed,
|
||||||
|
* spanning children that overlap this row have their
|
||||||
|
* height reduced by one, and children below the row
|
||||||
|
* are moved up.
|
||||||
|
*
|
||||||
|
* Since: 3.10
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_grid_remove_row (GtkGrid *grid,
|
||||||
|
gint position)
|
||||||
|
{
|
||||||
|
GtkGridPrivate *priv;
|
||||||
|
GtkGridChild *child;
|
||||||
|
GList *list;
|
||||||
|
gint top, height;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_GRID (grid));
|
||||||
|
|
||||||
|
priv = grid->priv;
|
||||||
|
|
||||||
|
list = priv->children;
|
||||||
|
while (list)
|
||||||
|
{
|
||||||
|
child = list->data;
|
||||||
|
list = list->next;
|
||||||
|
|
||||||
|
top = CHILD_TOP (child);
|
||||||
|
height = CHILD_HEIGHT (child);
|
||||||
|
|
||||||
|
if (top <= position && top + height > position)
|
||||||
|
height--;
|
||||||
|
if (top > position)
|
||||||
|
top--;
|
||||||
|
|
||||||
|
if (height <= 0)
|
||||||
|
gtk_container_remove (GTK_CONTAINER (grid), child->widget);
|
||||||
|
else
|
||||||
|
gtk_container_child_set (GTK_CONTAINER (grid), child->widget,
|
||||||
|
"height", height,
|
||||||
|
"top-attach", top,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gtk_grid_insert_column:
|
* gtk_grid_insert_column:
|
||||||
* @grid: a #GtkGrid
|
* @grid: a #GtkGrid
|
||||||
@ -1730,6 +1781,57 @@ gtk_grid_insert_column (GtkGrid *grid,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gtk_grid_remove_column:
|
||||||
|
* @grid: a #GtkGrid
|
||||||
|
* @position: the position of the column to remove
|
||||||
|
*
|
||||||
|
* Removes a column from the grid.
|
||||||
|
*
|
||||||
|
* Children that are placed in this column are removed,
|
||||||
|
* spanning children that overlap this column have their
|
||||||
|
* width reduced by one, and children after the column
|
||||||
|
* are moved to the left.
|
||||||
|
*
|
||||||
|
* Since: 3.10
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
gtk_grid_remove_column (GtkGrid *grid,
|
||||||
|
gint position)
|
||||||
|
{
|
||||||
|
GtkGridPrivate *priv;
|
||||||
|
GtkGridChild *child;
|
||||||
|
GList *list;
|
||||||
|
gint left, width;
|
||||||
|
|
||||||
|
g_return_if_fail (GTK_IS_GRID (grid));
|
||||||
|
|
||||||
|
priv = grid->priv;
|
||||||
|
|
||||||
|
list = priv->children;
|
||||||
|
while (list)
|
||||||
|
{
|
||||||
|
child = list->data;
|
||||||
|
list = list->next;
|
||||||
|
|
||||||
|
left = CHILD_LEFT (child);
|
||||||
|
width = CHILD_WIDTH (child);
|
||||||
|
|
||||||
|
if (left <= position && left + width > position)
|
||||||
|
width--;
|
||||||
|
if (left > position)
|
||||||
|
left--;
|
||||||
|
|
||||||
|
if (width <= 0)
|
||||||
|
gtk_container_remove (GTK_CONTAINER (grid), child->widget);
|
||||||
|
else
|
||||||
|
gtk_container_child_set (GTK_CONTAINER (grid), child->widget,
|
||||||
|
"width", width,
|
||||||
|
"left-attach", left,
|
||||||
|
NULL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gtk_grid_insert_next_to:
|
* gtk_grid_insert_next_to:
|
||||||
* @grid: a #GtkGrid
|
* @grid: a #GtkGrid
|
||||||
|
@ -87,6 +87,12 @@ void gtk_grid_insert_row (GtkGrid *grid,
|
|||||||
GDK_AVAILABLE_IN_3_2
|
GDK_AVAILABLE_IN_3_2
|
||||||
void gtk_grid_insert_column (GtkGrid *grid,
|
void gtk_grid_insert_column (GtkGrid *grid,
|
||||||
gint position);
|
gint position);
|
||||||
|
GDK_AVAILABLE_IN_3_10
|
||||||
|
void gtk_grid_remove_row (GtkGrid *grid,
|
||||||
|
gint position);
|
||||||
|
GDK_AVAILABLE_IN_3_10
|
||||||
|
void gtk_grid_remove_column (GtkGrid *grid,
|
||||||
|
gint position);
|
||||||
GDK_AVAILABLE_IN_3_2
|
GDK_AVAILABLE_IN_3_2
|
||||||
void gtk_grid_insert_next_to (GtkGrid *grid,
|
void gtk_grid_insert_next_to (GtkGrid *grid,
|
||||||
GtkWidget *sibling,
|
GtkWidget *sibling,
|
||||||
|
Reference in New Issue
Block a user