-
-/********************************************************************
- * Container Functions:
- * gtk_sheet_add
- * gtk_sheet_put
- * gtk_sheet_attach
- * gtk_sheet_remove
- * gtk_sheet_move_child
- * gtk_sheet_position_child
- * gtk_sheet_position_children
- * gtk_sheet_realize_child
- * gtk_sheet_get_child_at
- ********************************************************************/
-
-GtkSheetChild *
-gtk_sheet_put (GtkSheet *sheet, GtkWidget *child, gint x, gint y)
-{
- GtkRequisition child_requisition;
- GtkSheetChild *child_info;
-
- g_return_val_if_fail (sheet != NULL, NULL);
- g_return_val_if_fail (GTK_IS_SHEET (sheet), NULL);
- g_return_val_if_fail (child != NULL, NULL);
- g_return_val_if_fail (child->parent == NULL, NULL);
-
- child_info = g_new (GtkSheetChild, 1);
- child_info->widget = child;
- child_info->x = x;
- child_info->y = y;
- child_info->attached_to_cell = FALSE;
- child_info->floating = TRUE;
- child_info->xpadding = child_info->ypadding = 0;
- child_info->xexpand = child_info->yexpand = FALSE;
- child_info->xshrink = child_info->yshrink = FALSE;
- child_info->xfill = child_info->yfill = FALSE;
-
- sheet->children = g_list_append (sheet->children, child_info);
-
- gtk_widget_set_parent (child, GTK_WIDGET (sheet));
-
- gtk_widget_size_request (child, &child_requisition);
-
- if (GTK_WIDGET_VISIBLE (GTK_WIDGET (sheet)))
- {
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)) &&
- (!GTK_WIDGET_REALIZED (child) || GTK_WIDGET_NO_WINDOW (child)))
- gtk_sheet_realize_child (sheet, child_info);
-
- if (GTK_WIDGET_MAPPED (GTK_WIDGET (sheet)) &&
- !GTK_WIDGET_MAPPED (child))
- gtk_widget_map (child);
- }
-
- gtk_sheet_position_child (sheet, child_info);
-
- /* This will avoid drawing on the titles */
-
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
- {
- if (sheet->row_titles_visible)
- gdk_window_show (sheet->row_title_window);
- if (sheet->column_titles_visible)
- gdk_window_show (sheet->column_title_window);
- }
-
- return (child_info);
-}
-
-void
-gtk_sheet_attach_floating (GtkSheet *sheet,
- GtkWidget *widget,
- gint row, gint col)
-{
- GdkRectangle area;
- GtkSheetChild *child;
-
- if (row < 0 || col < 0)
- {
- gtk_sheet_button_attach (sheet, widget, row, col);
- return;
- }
-
- gtk_sheet_get_cell_area (sheet, row, col, &area);
- child = gtk_sheet_put (sheet, widget, area.x, area.y);
- child->attached_to_cell = TRUE;
- child->row = row;
- child->col = col;
-}
-
-void
-gtk_sheet_attach_default (GtkSheet *sheet,
- GtkWidget *widget,
- gint row, gint col)
-{
- if (row < 0 || col < 0)
- {
- gtk_sheet_button_attach (sheet, widget, row, col);
- return;
- }
-
- gtk_sheet_attach (sheet, widget, row, col,
- GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
-}
-
-void
-gtk_sheet_attach (GtkSheet *sheet,
- GtkWidget *widget,
- gint row, gint col,
- gint xoptions,
- gint yoptions,
- gint xpadding,
- gint ypadding)
-{
- GdkRectangle area;
- GtkSheetChild *child = NULL;
-
- if (row < 0 || col < 0)
- {
- gtk_sheet_button_attach (sheet, widget, row, col);
- return;
- }
-
- child = g_new0 (GtkSheetChild, 1);
- child->attached_to_cell = TRUE;
- child->floating = FALSE;
- child->widget = widget;
- child->row = row;
- child->col = col;
- child->xpadding = xpadding;
- child->ypadding = ypadding;
- child->xexpand = (xoptions & GTK_EXPAND) != 0;
- child->yexpand = (yoptions & GTK_EXPAND) != 0;
- child->xshrink = (xoptions & GTK_SHRINK) != 0;
- child->yshrink = (yoptions & GTK_SHRINK) != 0;
- child->xfill = (xoptions & GTK_FILL) != 0;
- child->yfill = (yoptions & GTK_FILL) != 0;
-
- sheet->children = g_list_append (sheet->children, child);
-
- gtk_sheet_get_cell_area (sheet, row, col, &area);
-
- child->x = area.x + child->xpadding;
- child->y = area.y + child->ypadding;
-
- if (GTK_WIDGET_VISIBLE (GTK_WIDGET (sheet)))
- {
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)) &&
- (!GTK_WIDGET_REALIZED (widget) || GTK_WIDGET_NO_WINDOW (widget)))
- gtk_sheet_realize_child (sheet, child);
-
- if (GTK_WIDGET_MAPPED (GTK_WIDGET (sheet)) &&
- !GTK_WIDGET_MAPPED (widget))
- gtk_widget_map (widget);
- }
-
- gtk_sheet_position_child (sheet, child);
-
- /* This will avoid drawing on the titles */
-
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)))
- {
- if (GTK_SHEET_ROW_TITLES_VISIBLE (sheet))
- gdk_window_show (sheet->row_title_window);
- if (GTK_SHEET_COL_TITLES_VISIBLE (sheet))
- gdk_window_show (sheet->column_title_window);
- }
-
-}
-
-void
-gtk_sheet_button_attach (GtkSheet *sheet,
- GtkWidget *widget,
- gint row, gint col)
-{
- GtkSheetButton *button = 0;
- GtkSheetChild *child;
- GtkRequisition button_requisition;
-
- if (row >= 0 && col >= 0) return;
- if (row < 0 && col < 0) return;
-
- child = g_new (GtkSheetChild, 1);
- child->widget = widget;
- child->x = 0;
- child->y = 0;
- child->attached_to_cell = TRUE;
- child->floating = FALSE;
- child->row = row;
- child->col = col;
- child->xpadding = child->ypadding = 0;
- child->xshrink = child->yshrink = FALSE;
- child->xfill = child->yfill = FALSE;
-
-
- sheet->children = g_list_append (sheet->children, child);
-
- gtk_sheet_button_size_request (sheet, button, &button_requisition);
-
-
- if (GTK_WIDGET_VISIBLE (GTK_WIDGET (sheet)))
- {
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (sheet)) &&
- (!GTK_WIDGET_REALIZED (widget) || GTK_WIDGET_NO_WINDOW (widget)))
- gtk_sheet_realize_child (sheet, child);
-
- if (GTK_WIDGET_MAPPED (GTK_WIDGET (sheet)) &&
- !GTK_WIDGET_MAPPED (widget))
- gtk_widget_map (widget);
- }
-
- if (row == -1) size_allocate_column_title_buttons (sheet);
- if (col == -1) size_allocate_row_title_buttons (sheet);
-
-}
-