Corretti errori PR e iniziato supporto XI

git-svn-id: svn://10.65.10.50/trunk@2479 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 1996-01-22 10:02:16 +00:00
parent aba2659298
commit a51c0254eb

View File

@ -347,8 +347,10 @@ TSpreadsheet::TSpreadsheet(
}
RCT rct = resize_rect(x, y, dx, dy, WO_TE, parent);
rct.bottom -= 12;
rct.right -= 28;
#ifndef XI_FU_MULTIPLE
// rct.bottom -= 12 ;
// rct.right -= 28;
#endif
if ((f_width+max_width)*CHARX > rct.right)
fixed_columns = 1;
@ -358,7 +360,19 @@ TSpreadsheet::TSpreadsheet(
PTR_LONG(this));
itfdef->v.itf->automatic_back_color = FALSE;
itfdef->v.itf->back_color = MASK_BACK_COLOR;
#ifdef XI_FU_MULTIPLE
const short work_dx = ((rct.right - rct.left) * XI_FU_MULTIPLE) / CHARX - 3 * XI_FU_MULTIPLE;
const short work_dy = ((rct.bottom - rct.top ) * XI_FU_MULTIPLE) / CHARY - 2 * XI_FU_MULTIPLE - 6;
XI_OBJ_DEF* listdef = xi_add_list_def(itfdef, LIST_CID,
0, 0, work_dy, //rct.bottom-rct.top,
XI_ATR_ENABLED | XI_ATR_VISIBLE,
NORMAL_COLOR, NORMAL_BACK_COLOR, // normal
NORMAL_COLOR, DISABLED_BACK_COLOR, // disabled
COLOR_RED, // active
LIST_CID);
#else
XI_OBJ_DEF* listdef = xi_add_list_def(itfdef, LIST_CID,
0, 0, rct.bottom-rct.top,
XI_ATR_ENABLED | XI_ATR_VISIBLE,
@ -366,12 +380,17 @@ TSpreadsheet::TSpreadsheet(
NORMAL_COLOR, DISABLED_BACK_COLOR, // disabled
COLOR_RED, // active
LIST_CID);
#endif
listdef->v.list->sizable_columns = TRUE;
listdef->v.list->movable_columns = TRUE;
listdef->v.list->scroll_bar = TRUE;
listdef->v.list->scroll_bar_button = TRUE;
listdef->v.list->fixed_columns = fixed_columns;
#ifdef XI_FU_MULTIPLE
listdef->v.list->width = work_dx;
#else
listdef->v.list->width = rct.right-rct.left;
#endif
listdef->v.list->min_cell_height = CHARY;
listdef->v.list->min_heading_height = CHARY;
listdef->v.list->white_space_color = MASK_DARK_COLOR;
@ -380,9 +399,14 @@ TSpreadsheet::TSpreadsheet(
if (sheet_mask().id2pos(FIRST_FIELD -1) != -1)
attr |= XI_ATR_SELECTABLE;
#ifdef XI_FU_MULTIPLE
XI_OBJ_DEF* coldef = xi_add_column_def(listdef, 0, attr, 0, NUMBER_WIDTH * XI_FU_MULTIPLE, NUMBER_WIDTH+1,
attr & XI_ATR_SELECTABLE ? "X" : "");
#else
XI_OBJ_DEF* coldef = xi_add_column_def(listdef, 0, attr, 0, NUMBER_WIDTH, NUMBER_WIDTH+1,
attr & XI_ATR_SELECTABLE ? "X" : "");
#endif
coldef->v.column->heading_platform = TRUE;
coldef->v.column->column_platform = TRUE;
@ -422,8 +446,13 @@ TSpreadsheet::TSpreadsheet(
if (f->active()) flags |= XI_ATR_ENABLED | XI_ATR_FOCUSBORDER | XI_ATR_AUTOSELECT;
else _column_disabled.set(i);
#ifdef XI_FU_MULTIPLE
coldef = xi_add_column_def(listdef, cid, flags, cid, v_width[i] * XI_FU_MULTIPLE, m_width[i],
(char*)(const char*)testo);
#else
coldef = xi_add_column_def(listdef, cid, flags, cid, v_width[i], m_width[i],
(char*)(const char*)testo);
#endif
coldef->v.column->heading_platform = TRUE;
coldef->v.column->center_heading = TRUE;
}
@ -602,17 +631,24 @@ int TSpreadsheet::find_enabled_column(int rec, int colonna, int direction) const
// riga (da 0), colonna (0 = numero, 1 = prima cella, ...)
void TSpreadsheet::set_focus_cell(int riga, int colonna)
{
xvt_scr_set_focus_vobj(win());
mask().set_focus_win(win(), FALSE);
const bool has_focus = mask().focus_field().dlg() == _owner->dlg();
if (has_focus)
{
xvt_scr_set_focus_vobj(win());
mask().set_focus_win(win(), FALSE);
}
const int rec = row2rec(riga);
colonna = find_enabled_column(rec, colonna, +1);
if (colonna > 0)
{
XI_OBJ cell;
XI_MAKE_CELL(&cell, _list, riga, colonna);
xi_set_focus(&cell);
{
if (has_focus)
{
XI_OBJ cell;
XI_MAKE_CELL(&cell, _list, riga, colonna);
xi_set_focus(&cell);
}
_edit_field = col2field(_cur_col = colonna);
if (rec != _cur_rec)
@ -723,7 +759,7 @@ void TSpreadsheet::update(
const long* handle = xi_get_list_info(_list, &num);
int first = 0, last = 0;
bool scroll = items() == 0 || !_owner->mask().is_running();
bool scroll = items() == 0; // || !_owner->mask().is_running();
if (!scroll)
{
xi_get_visible_rows(_list, &first, &last);
@ -1239,7 +1275,7 @@ void TSpreadsheet::select(int rec, bool scrollto)
const int row = rec2row(rec);
_cur_rec = -1;
set_focus_cell(row, 1);
set_focus_cell(row, 1);
notify(rec, K_TAB);
}
@ -2046,7 +2082,7 @@ bool TSheet_field::on_hit()
{
if (!mask().is_running())
{
force_update();
force_update();
set_dirty(FALSE);
}
return TRUE;