static void iMatrixDrawFocus(Ihandle* ih) { int x1, y1, x2, y2, dx, dy; if (iupAttribGetBoolean(ih, "HIDEFOCUS")) return; /* there are no cells that can get the focus */ if (ih->data->columns.num <= 1 || ih->data->lines.num <= 1) return; if (!iupMatrixAuxIsCellVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)) return; iupMatrixGetVisibleCellDim(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, &x1, &y1, &dx, &dy); x2 = x1 + dx - 1; y2 = y1 + dy - 1; if (ih->data->columns.focus_cell == 1 && ih->data->columns.dt[0].size == 0) x1++; if (ih->data->lines.focus_cell == 1 && ih->data->lines.dt[0].size == 0) y1++; { cdCanvas* cd_canvas_front = (cdCanvas*)IupGetAttribute(ih, "_CD_CANVAS"); /* front buffer canvas */ IupCdDrawFocusRect(ih, cd_canvas_front, x1, iupMATRIX_INVERTYAXIS(ih, y1), x2, iupMATRIX_INVERTYAXIS(ih, y2)); } }
static void iMatrixDrawFocus(Ihandle* ih) { int x1, y1, x2, y2, dx, dy; if (iupAttribGetBoolean(ih, "HIDEFOCUS")) return; /* there are no cells that can get the focus */ if (ih->data->columns.num <= 1 || ih->data->lines.num <= 1) return; if (!iupMatrixAuxIsCellVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)) return; iupMatrixGetVisibleCellDim(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, &x1, &y1, &dx, &dy); x2 = x1 + dx - 1; y2 = y1 + dy - 1; if (ih->data->columns.focus_cell == 1 && ih->data->columns.sizes[0] == 0) x1++; if (ih->data->lines.focus_cell == 1 && ih->data->lines.sizes[0] == 0) y1++; cdIupDrawFocusRect(ih, ih->data->cdcanvas, x1, iupMATRIX_INVERTYAXIS(ih, y1), x2, iupMATRIX_INVERTYAXIS(ih, y2)); }
static void iMatrixDrawFocus(Ihandle* ih) { int x1, y1, x2, y2, dx, dy; if (iupAttribGetInt(ih, "HIDEFOCUS")) return; if (!iupMatrixAuxIsCellVisible(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell)) return; iupMatrixAuxGetVisibleCellDim(ih, ih->data->lines.focus_cell, ih->data->columns.focus_cell, &x1, &y1, &dx, &dy); x2 = x1 + dx - 1; y2 = y1 + dy - 1; cdIupDrawFocusRect(ih, ih->data->cdcanvas, x1, iupMatrixInvertYAxis(ih, y1), x2, iupMatrixInvertYAxis(ih, y2)); }
int iupMatrixAuxIsCellStartVisible(Ihandle* ih, int lin, int col) { if (iupMatrixAuxIsCellVisible(ih, lin, col)) { if (col == ih->data->columns.first && ih->data->columns.first_offset!=0) return 0; if (lin == ih->data->lines.first && ih->data->lines.first_offset!=0) return 0; if (col == ih->data->columns.last && !iupMatrixAuxIsFullVisibleLast(&ih->data->columns)) return 0; if (lin == ih->data->lines.last && !iupMatrixAuxIsFullVisibleLast(&ih->data->lines)) return 0; return 1; } return 0; }