summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2002-03-03 20:36:54 +0000
committerOwen Taylor <otaylor@src.gnome.org>2002-03-03 20:36:54 +0000
commitfb90bb019b9cfe638b3db3b9063eeaa465c7daba (patch)
treee9524ad5124ae59d940b2362c2dccd893e02d804
parentc848fbbcfe7813b6347a00452a890aeb17e767bb (diff)
downloadgdk-pixbuf-fb90bb019b9cfe638b3db3b9063eeaa465c7daba.tar.gz
When increasing the row or column requisitions to make them sufficient for
Sun Mar 3 15:16:07 2002 Owen Taylor <otaylor@redhat.com> * gtk/gtktable.c: When increasing the row or column requisitions to make them sufficient for spanning widgets, favor rows or columns with expandable children in them. (#1261, Jonathan Blandford.)
-rw-r--r--ChangeLog7
-rw-r--r--ChangeLog.pre-2-07
-rw-r--r--ChangeLog.pre-2-107
-rw-r--r--ChangeLog.pre-2-27
-rw-r--r--ChangeLog.pre-2-47
-rw-r--r--ChangeLog.pre-2-67
-rw-r--r--ChangeLog.pre-2-87
-rw-r--r--gtk/gtktable.c70
8 files changed, 106 insertions, 13 deletions
diff --git a/ChangeLog b/ChangeLog
index e4d4bd859..9cbb65304 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Sun Mar 3 15:16:07 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtktable.c: When increasing the row or column
+ requisitions to make them sufficient for spanning widgets,
+ favor rows or columns with expandable children in them.
+ (#1261, Jonathan Blandford.)
+
Sun Mar 3 14:26:33 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_get_insertion_cursor_gc):
diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0
index e4d4bd859..9cbb65304 100644
--- a/ChangeLog.pre-2-0
+++ b/ChangeLog.pre-2-0
@@ -1,3 +1,10 @@
+Sun Mar 3 15:16:07 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtktable.c: When increasing the row or column
+ requisitions to make them sufficient for spanning widgets,
+ favor rows or columns with expandable children in them.
+ (#1261, Jonathan Blandford.)
+
Sun Mar 3 14:26:33 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_get_insertion_cursor_gc):
diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10
index e4d4bd859..9cbb65304 100644
--- a/ChangeLog.pre-2-10
+++ b/ChangeLog.pre-2-10
@@ -1,3 +1,10 @@
+Sun Mar 3 15:16:07 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtktable.c: When increasing the row or column
+ requisitions to make them sufficient for spanning widgets,
+ favor rows or columns with expandable children in them.
+ (#1261, Jonathan Blandford.)
+
Sun Mar 3 14:26:33 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_get_insertion_cursor_gc):
diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2
index e4d4bd859..9cbb65304 100644
--- a/ChangeLog.pre-2-2
+++ b/ChangeLog.pre-2-2
@@ -1,3 +1,10 @@
+Sun Mar 3 15:16:07 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtktable.c: When increasing the row or column
+ requisitions to make them sufficient for spanning widgets,
+ favor rows or columns with expandable children in them.
+ (#1261, Jonathan Blandford.)
+
Sun Mar 3 14:26:33 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_get_insertion_cursor_gc):
diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4
index e4d4bd859..9cbb65304 100644
--- a/ChangeLog.pre-2-4
+++ b/ChangeLog.pre-2-4
@@ -1,3 +1,10 @@
+Sun Mar 3 15:16:07 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtktable.c: When increasing the row or column
+ requisitions to make them sufficient for spanning widgets,
+ favor rows or columns with expandable children in them.
+ (#1261, Jonathan Blandford.)
+
Sun Mar 3 14:26:33 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_get_insertion_cursor_gc):
diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6
index e4d4bd859..9cbb65304 100644
--- a/ChangeLog.pre-2-6
+++ b/ChangeLog.pre-2-6
@@ -1,3 +1,10 @@
+Sun Mar 3 15:16:07 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtktable.c: When increasing the row or column
+ requisitions to make them sufficient for spanning widgets,
+ favor rows or columns with expandable children in them.
+ (#1261, Jonathan Blandford.)
+
Sun Mar 3 14:26:33 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_get_insertion_cursor_gc):
diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8
index e4d4bd859..9cbb65304 100644
--- a/ChangeLog.pre-2-8
+++ b/ChangeLog.pre-2-8
@@ -1,3 +1,10 @@
+Sun Mar 3 15:16:07 2002 Owen Taylor <otaylor@redhat.com>
+
+ * gtk/gtktable.c: When increasing the row or column
+ requisitions to make them sufficient for spanning widgets,
+ favor rows or columns with expandable children in them.
+ (#1261, Jonathan Blandford.)
+
Sun Mar 3 14:26:33 2002 Owen Taylor <otaylor@redhat.com>
* gtk/gtkstyle.[ch] (_gtk_get_insertion_cursor_gc):
diff --git a/gtk/gtktable.c b/gtk/gtktable.c
index da962fb68..d94626357 100644
--- a/gtk/gtktable.c
+++ b/gtk/gtktable.c
@@ -951,9 +951,15 @@ gtk_table_size_request_init (GtkTable *table)
gint row, col;
for (row = 0; row < table->nrows; row++)
- table->rows[row].requisition = 0;
+ {
+ table->rows[row].requisition = 0;
+ table->cols[row].expand = FALSE;
+ }
for (col = 0; col < table->ncols; col++)
- table->cols[col].requisition = 0;
+ {
+ table->cols[col].requisition = 0;
+ table->cols[col].expand = FALSE;
+ }
children = table->children;
while (children)
@@ -963,6 +969,12 @@ gtk_table_size_request_init (GtkTable *table)
if (GTK_WIDGET_VISIBLE (child->widget))
gtk_widget_size_request (child->widget, NULL);
+
+ if (child->left_attach == (child->right_attach - 1) && child->xexpand)
+ table->cols[child->left_attach].expand = TRUE;
+
+ if (child->top_attach == (child->bottom_attach - 1) && child->yexpand)
+ table->rows[child->top_attach].expand = TRUE;
}
}
@@ -1065,19 +1077,34 @@ gtk_table_size_request_pass3 (GtkTable *table)
}
/* If we need to request more space for this child to fill
- * its requisition, then divide up the needed space evenly
- * amongst the columns it spans.
+ * its requisition, then divide up the needed space amongst the
+ * columns it spans, favoring expandable columns if any.
*/
if (width < child_requisition.width + child->xpadding * 2)
{
- width = child_requisition.width + child->xpadding * 2 - width;
+ gint n_expand = 0;
+ gboolean force_expand = FALSE;
+ width = child_requisition.width + child->xpadding * 2 - width;
+
for (col = child->left_attach; col < child->right_attach; col++)
+ if (table->cols[col].expand)
+ n_expand++;
+
+ if (n_expand == 0)
{
- extra = width / (child->right_attach - col);
- table->cols[col].requisition += extra;
- width -= extra;
+ n_expand = (child->right_attach - child->left_attach);
+ force_expand = TRUE;
}
+
+ for (col = child->left_attach; col < child->right_attach; col++)
+ if (force_expand || table->cols[col].expand)
+ {
+ extra = width / n_expand;
+ table->cols[col].requisition += extra;
+ width -= extra;
+ n_expand--;
+ }
}
}
@@ -1101,19 +1128,36 @@ gtk_table_size_request_pass3 (GtkTable *table)
}
/* If we need to request more space for this child to fill
- * its requisition, then divide up the needed space evenly
- * amongst the columns it spans.
+ * its requisition, then divide up the needed space amongst the
+ * rows it spans, favoring expandable rows if any.
*/
if (height < child_requisition.height + child->ypadding * 2)
{
+ gint n_expand = 0;
+ gboolean force_expand = FALSE;
+
height = child_requisition.height + child->ypadding * 2 - height;
for (row = child->top_attach; row < child->bottom_attach; row++)
{
- extra = height / (child->bottom_attach - row);
- table->rows[row].requisition += extra;
- height -= extra;
+ if (table->rows[row].expand)
+ n_expand++;
+ }
+
+ if (n_expand == 0)
+ {
+ n_expand = (child->bottom_attach - child->top_attach);
+ force_expand = TRUE;
}
+
+ for (row = child->top_attach; row < child->bottom_attach; row++)
+ if (force_expand || table->rows[row].expand)
+ {
+ extra = height / n_expand;
+ table->rows[row].requisition += extra;
+ height -= extra;
+ n_expand--;
+ }
}
}
}