
7.4.2.1 General positioning of items
Two functions that are available for general positioning of panel items within windows are
xv_row() and xv_col(). These functions use the values of WIN_ROW_GAP and
WIN_COLUMN_GAP of the panel. While these attributes control the spacing between panel
items, the distance between items and the edge of the panel is set to a constant 4 pixels.
Consider the following code fragment that positions items within regimented rows and
columns:
int rows, cols;
extern char *names[3][5];
frame = (Frame)xv_create(NULL, FRAME, NULL);
panel = (Panel)xv_create(frame, PANEL,
WIN_ROW_GAP, 70,
WIN_COLUMN_GAP, 20,
NULL);
for (rows = 0; rows < 3; rows++)
for (cols = 0; cols < 5; cols++)
(void) xv_create(panel, PANEL_BUTTON,
XV_X, xv_col(panel, cols),
XV_Y, xv_row(panel, rows),
PANEL_LABEL_STRING, names[rows][cols],
PANEL_NOTIFY_PROC, (rows+cols==0)? quit : selected,
PANEL_CLIENT_DATA, frame,
NULL);
This code displays a panel with a 70-pixel distance between the upper-left corners of the pan-
el items. Thus, each panel item must be less than 70 pixels wide or they will overlap one an-
other. This contrasts with
PANEL_ITEM_X_GAP and PANEL_ITEM_Y_GAP, which specify the
gap between the right and left sides of adjacent panel items. Note that this does not affect the
distance between the edge of the panel and the items along the perimeter; that distance re-
mains constant at 4 pixels.
The xv_col()