mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-25 05:01:09 +00:00
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:
parent
666d10ec76
commit
cc86a7bb7e
@ -7238,6 +7238,8 @@ gtk_grid_attach_next_to
|
||||
gtk_grid_get_child_at
|
||||
gtk_grid_insert_row
|
||||
gtk_grid_insert_column
|
||||
gtk_grid_remove_row
|
||||
gtk_grid_remove_column
|
||||
gtk_grid_insert_next_to
|
||||
gtk_grid_set_row_homogeneous
|
||||
gtk_grid_get_row_homogeneous
|
||||
|
@ -1205,6 +1205,8 @@ gtk_grid_insert_column
|
||||
gtk_grid_insert_next_to
|
||||
gtk_grid_insert_row
|
||||
gtk_grid_new
|
||||
gtk_grid_remove_column
|
||||
gtk_grid_remove_row
|
||||
gtk_grid_set_column_homogeneous
|
||||
gtk_grid_set_column_spacing
|
||||
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:
|
||||
* @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:
|
||||
* @grid: a #GtkGrid
|
||||
|
@ -87,6 +87,12 @@ void gtk_grid_insert_row (GtkGrid *grid,
|
||||
GDK_AVAILABLE_IN_3_2
|
||||
void gtk_grid_insert_column (GtkGrid *grid,
|
||||
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
|
||||
void gtk_grid_insert_next_to (GtkGrid *grid,
|
||||
GtkWidget *sibling,
|
||||
|
Loading…
Reference in New Issue
Block a user