Bug fix in FTerm updateVTerm() for updates from vdesktop

This commit is contained in:
Markus Gans 2016-06-16 00:39:01 +02:00
parent 28c4a61997
commit 07fbe91cea
4 changed files with 15 additions and 8 deletions

View File

@ -1,3 +1,6 @@
2016-06-16 Markus Gans <guru.mail@muenster.de>
* Bug fix in FTerm updateVTerm() for updates from vdesktop
2016-06-13 Markus Gans <guru.mail@muenster.de> 2016-06-13 Markus Gans <guru.mail@muenster.de>
* Improved title bar menu integration * Improved title bar menu integration

View File

@ -534,9 +534,9 @@ void FDialog::onMouseDown (FMouseEvent* ev)
if ( old_focus ) if ( old_focus )
old_focus->redraw(); old_focus->redraw();
} }
else if ( focusFirstChild() ) else if ( old_focus && focusFirstChild() )
if ( old_focus ) old_focus->redraw();
old_focus->redraw(); updateTerminal();
} }
if ( has_raised ) if ( has_raised )
redraw(); redraw();

View File

@ -134,7 +134,7 @@ class FMouseEvent : public FEvent // mouse event
#pragma pack(pop) #pragma pack(pop)
//---------------------------------------------------------------------- //----------------------------------------------------------------------
// class FWheelEvent // class FWheelEvent
//---------------------------------------------------------------------- //----------------------------------------------------------------------

View File

@ -282,7 +282,7 @@ void FTerm::identifyTermType()
// //
// Example: // Example:
// linux tty1 // linux tty1
// vt100 ttys0 // vt100 ttys0
FILE *fp; FILE *fp;
@ -297,9 +297,9 @@ void FTerm::identifyTermType()
// get term basename // get term basename
const char* term_basename = strrchr(term_name, '/'); const char* term_basename = strrchr(term_name, '/');
if ( term_basename == 0 ) if ( term_basename == 0 )
term_basename = term_name; term_basename = term_name;
else else
term_basename++; term_basename++;
// read and parse the file // read and parse the file
while ( fgets(str, sizeof(str)-1, fp) != 0 ) while ( fgets(str, sizeof(str)-1, fp) != 0 )
@ -2369,6 +2369,7 @@ void FTerm::updateVTerm (FTerm::term_area* area)
int ax, ay, aw, ah, rsh, bsh, y_end, ol; int ax, ay, aw, ah, rsh, bsh, y_end, ol;
FOptiAttr::char_data* tc; // terminal character FOptiAttr::char_data* tc; // terminal character
FOptiAttr::char_data* ac; // area character FOptiAttr::char_data* ac; // area character
bool modified = false;
if ( ! vterm_updates ) if ( ! vterm_updates )
{ {
@ -2430,8 +2431,11 @@ void FTerm::updateVTerm (FTerm::term_area* area)
tc = &vterm->text[gy * vterm->width + gx - ol]; tc = &vterm->text[gy * vterm->width + gx - ol];
if ( ! isCovered(gx-ol, gy, area) ) if ( ! isCovered(gx-ol, gy, area) )
{
memcpy (tc, ac, sizeof(FOptiAttr::char_data)); memcpy (tc, ac, sizeof(FOptiAttr::char_data));
else modified = true;
}
else if ( ! modified )
line_xmin++; // don't update covered character line_xmin++; // don't update covered character
} }
_xmin = ax + line_xmin - ol; _xmin = ax + line_xmin - ol;