diff --git a/xvaga/xvaga.cpp b/xvaga/xvaga.cpp index d468e7edd..46d4e9c68 100755 --- a/xvaga/xvaga.cpp +++ b/xvaga/xvaga.cpp @@ -209,7 +209,7 @@ protected: virtual void Notify() { Toggle(); } public: - void SetPos(int x, int y) { _pos.h = x; _pos.v = y; } + void SetPos(int x, int y); void SetSize(int x, int y) { _size.x = x; _size.y = y; } void Show(WINDOW w, bool on = true); void Hide() { Show(false); } @@ -226,6 +226,13 @@ void TwxCaret::Kill() _owner = NULL_WIN; } +void TwxCaret::SetPos(int x, int y) +{ + if (_visible && _drawn) // Lo cancella se necessario + Toggle(); + _pos.h = x; _pos.v = y; +} + void TwxCaret::Show(WINDOW w, bool on) { if (_visible && _drawn) @@ -259,9 +266,10 @@ void TwxCaret::Toggle() pen.width = _size.x; pen.pat = PAT_SOLID; pen.style = P_SOLID; - pen.color = _drawn ? dct.fore_color : dct.back_color; - xvt_dwin_set_cpen(_owner, &pen); - xvt_dwin_set_draw_mode(_owner, M_COPY); + pen.color = dct.fore_color; + xvt_dwin_set_draw_mode(_owner, M_NOT_XOR); + + xvt_dwin_set_cpen(_owner, &pen); xvt_dwin_draw_set_pos(_owner, _pos); PNT p = _pos; p.v -= _size.y-1;