Patch level : 10.0

Files correlati     : ca0
Ricompilazione Demo : [ ]
Commento            :
Migliorata efficienza alberi molto grandi (calib)


git-svn-id: svn://10.65.10.50/trunk@20634 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2010-06-28 09:30:31 +00:00
parent b63eb4e087
commit 294f084769
5 changed files with 28 additions and 7 deletions

View File

@ -1234,8 +1234,8 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
int num; int num;
XI_OBJ** column = xi_get_member_list(_obj, &num); XI_OBJ** column = xi_get_member_list(_obj, &num);
CHECK(cell.column < num, "Bad column"); CHECK(cell.column < num, "Bad column");
int rec = cell.row; int row = cell.row;
rec = row2rec(rec); const int rec = row2rec(row);
const int col = column[cell.column]->cid - FIRST_FIELD; const int col = column[cell.column]->cid - FIRST_FIELD;
if (!cell_disabled(rec, col)) if (!cell_disabled(rec, col))
{ {
@ -1569,7 +1569,7 @@ bool TSpreadsheet::event_handler(XI_OBJ* itf, XI_EVENT *xiev)
//gestione campi che non appaiono nello sheet ma che possono essere usati nelle ricerche //gestione campi che non appaiono nello sheet ma che possono essere usati nelle ricerche
//es: per evitare di avere il valore della prima colonna in una descrizione che si puo' usere.. //es: per evitare di avere il valore della prima colonna in una descrizione che si puo' usere..
//..per le ricerche, ma che non appare nello sheet (es. ca2100a.uml) //..per le ricerche, ma che non appare nello sheet (es. ca2100a.uml)
if (cid2index(_edit_field->dlg()) == 0 || _cur_col > 1) if (cid2index(_edit_field->dlg()) == 0 || _cur_col > 0)
copy_cell2field(); copy_cell2field();
_edit_field->set_dirty(_cell_dirty = spork); // TBT _edit_field->set_dirty(_cell_dirty = spork); // TBT

View File

@ -225,6 +225,9 @@ bool TTree::has_rbrother() const
return ok; return ok;
} }
bool TTree::could_have_son() const
{ return has_son(); }
bool TTree::has_son() const bool TTree::has_son() const
{ {
TString myself; curr_id(myself); TString myself; curr_id(myself);
@ -324,7 +327,7 @@ TImage* TTree::get_res_icon(short icon_id) const
TImage* TTree::image(bool selected) const TImage* TTree::image(bool selected) const
{ {
short bmp_id = BMP_FILE; short bmp_id = BMP_FILE;
if (has_son()) if (could_have_son())
bmp_id = selected ? BMP_DIRDN : BMP_DIR; bmp_id = selected ? BMP_DIRDN : BMP_DIR;
return get_res_image(bmp_id); return get_res_image(bmp_id);
} }

View File

@ -39,6 +39,7 @@ public:
virtual bool has_root() const; virtual bool has_root() const;
virtual bool has_father() const; virtual bool has_father() const;
virtual bool could_have_son() const; // Is not terminal node
virtual bool has_son() const; virtual bool has_son() const;
virtual bool has_lbrother() const; virtual bool has_lbrother() const;
virtual bool has_rbrother() const; virtual bool has_rbrother() const;

View File

@ -132,7 +132,7 @@ RCT& TWindowed_field::get_rect(RCT& r) const
if (_win) if (_win)
xvt_vobj_get_outer_rect(_win->win(), &r); xvt_vobj_get_outer_rect(_win->win(), &r);
else else
xvt_rect_set_empty(&r); xvt_rect_set_null(&r);
return r; return r;
} }
@ -197,6 +197,15 @@ long TControl_host_window::handler(WINDOW win, EVENT* ep)
{ {
switch (ep->type) switch (ep->type)
{ {
case E_FOCUS:
if (ep->v.active)
{
if (_ctrl != NULL_WIN && _ctrl != win)
xvt_scr_set_focus_vobj(_ctrl);
owner().mask().notify_focus_field(owner().dlg());
return 0L;
}
break;
case E_SIZE: case E_SIZE:
if (_ctrl != NULL_WIN) if (_ctrl != NULL_WIN)
{ {
@ -215,6 +224,12 @@ long TControl_host_window::handler(WINDOW win, EVENT* ep)
return TField_window::handler(win, ep); return TField_window::handler(win, ep);
} }
void TControl_host_window::set_focus()
{
if (_ctrl != NULL_WIN)
xvt_scr_set_focus_vobj(_ctrl);
}
TControl_host_window::TControl_host_window(int x, int y, int dx, int dy, TControl_host_window::TControl_host_window(int x, int y, int dx, int dy,
WINDOW parent, TWindowed_field* owner) WINDOW parent, TWindowed_field* owner)
: TField_window(x, y, dx, dy, parent, owner), _ctrl(NULL_WIN) : TField_window(x, y, dx, dy, parent, owner), _ctrl(NULL_WIN)
@ -257,8 +272,8 @@ public:
bool TTree_window::add_child(XVT_TREEVIEW_NODE parent) bool TTree_window::add_child(XVT_TREEVIEW_NODE parent)
{ {
XVT_TREEVIEW_NODE_TYPE type = _tree->has_son() ? XVT_TREEVIEW_NODE_NONTERMINAL XVT_TREEVIEW_NODE_TYPE type = _tree->could_have_son() ? XVT_TREEVIEW_NODE_NONTERMINAL
: XVT_TREEVIEW_NODE_TERMINAL; : XVT_TREEVIEW_NODE_TERMINAL;
if (_hide_leaves && type == XVT_TREEVIEW_NODE_TERMINAL) if (_hide_leaves && type == XVT_TREEVIEW_NODE_TERMINAL)
return false; return false;

View File

@ -17,6 +17,8 @@ protected:
protected: protected:
virtual long handler(WINDOW win, EVENT* ep); virtual long handler(WINDOW win, EVENT* ep);
virtual void set_focus();
TControl_host_window(int x, int y, int dx, int dy, TControl_host_window(int x, int y, int dx, int dy,
WINDOW parent, TWindowed_field* owner); WINDOW parent, TWindowed_field* owner);
}; };