SYS : remove blobal clean in the main displayer

This commit is contained in:
Edouard Dupin 2011-09-10 10:40:00 +02:00
parent 650206f04e
commit bdc4793955
2 changed files with 15 additions and 7 deletions

View File

@ -280,8 +280,6 @@ void BufferText::UpdatePointerNumber(void)
*/ */
void BufferText::DrawLine(DrawerManager &drawer, int32_t lineNumber, int32_t startPos, int32_t endPos, int32_t selStartPos, int32_t selEndPos) void BufferText::DrawLine(DrawerManager &drawer, int32_t lineNumber, int32_t startPos, int32_t endPos, int32_t selStartPos, int32_t selEndPos)
{ {
DrawLineNumber(drawer, lineNumber);
int32_t letterHeight = Display::GetFontHeight(); int32_t letterHeight = Display::GetFontHeight();
int32_t letterWidth = Display::GetFontWidth(); int32_t letterWidth = Display::GetFontWidth();
int32_t positionY = letterHeight * (lineNumber - m_displayStart.y - 1); int32_t positionY = letterHeight * (lineNumber - m_displayStart.y - 1);
@ -298,6 +296,10 @@ void BufferText::DrawLine(DrawerManager &drawer, int32_t lineNumber, int32_t sta
displayHLData_ts myDisplayLocalSyntax; displayHLData_ts myDisplayLocalSyntax;
m_EdnBuf.HightlightGenerateLines(myDisplayLocalSyntax, startPos, 1); m_EdnBuf.HightlightGenerateLines(myDisplayLocalSyntax, startPos, 1);
// clean the current Line
drawer.Rectangle(myColorManager->Get(COLOR_CODE_BASIC_BG), 0, positionY, drawer.GetWidth(), letterHeight);
DrawLineNumber(drawer, lineNumber);
bool selHave = selStartPos == -1 ? false : true; bool selHave = selStartPos == -1 ? false : true;
char displayChar[MAX_EXP_CHAR_LEN]; char displayChar[MAX_EXP_CHAR_LEN];
@ -431,7 +433,7 @@ int32_t BufferText::Display(DrawerManager &drawer)
selEnd = -1; selEnd = -1;
} }
drawer.Clean(myColorManager->Get(COLOR_CODE_BASIC_BG)); //drawer.Clean(myColorManager->Get(COLOR_CODE_BASIC_BG));
GTimeVal timeStart; GTimeVal timeStart;
g_get_current_time(&timeStart); g_get_current_time(&timeStart);
@ -440,19 +442,25 @@ int32_t BufferText::Display(DrawerManager &drawer)
int32_t lineIdStart = m_displayStart.y + 1; int32_t lineIdStart = m_displayStart.y + 1;
int32_t lineIdEnd = m_displayStart.y + m_displaySize.y; int32_t lineIdEnd = m_displayStart.y + m_displaySize.y;
EDN_DEBUG("lineIdStart=" << lineIdStart << " lineIdEnd=" << lineIdEnd ); EDN_DEBUG("lineIdStart=" << lineIdStart << " lineIdEnd=" << lineIdEnd );
for (int32_t iii=lineIdStart; iii<lineIdEnd ; iii++) { int32_t iii;
for (iii=lineIdStart; iii<lineIdEnd+1 ; iii++) {
lineEndPos = m_EdnBuf.EndOfLine(lineStartPos); lineEndPos = m_EdnBuf.EndOfLine(lineStartPos);
DrawLine(drawer, iii, lineStartPos, lineEndPos, selStart+1, selEnd+1); DrawLine(drawer, iii, lineStartPos, lineEndPos, selStart+1, selEnd+1);
lineStartPos = lineEndPos+1; lineStartPos = lineEndPos+1;
if (lineStartPos >= m_EdnBuf.Size()+1) { if (lineStartPos >= m_EdnBuf.Size()+1) {
iii++;
break; break;
} }
} }
drawer.Flush(); drawer.Flush();
// Need to clean the end of windows (sometimes)...
if (iii<lineIdEnd+1) {
int32_t positionY = letterHeight * (iii - m_displayStart.y - 1);
drawer.Rectangle(myColorManager->Get(COLOR_CODE_BASIC_BG), 0, positionY, drawer.GetWidth(), letterHeight*(lineIdEnd+1-iii) );
}
GTimeVal timeStop; GTimeVal timeStop;
g_get_current_time(&timeStop); g_get_current_time(&timeStop);
EDN_DEBUG("Display Generation = " << timeStop.tv_usec - timeStart.tv_usec << " micro-s"); EDN_DEBUG("Display Generation = " << timeStop.tv_usec - timeStart.tv_usec << " micro-s ==> " << (timeStop.tv_usec - timeStart.tv_usec)/1000. << "ms");
return ERR_NONE; return ERR_NONE;
} }

View File

@ -20,7 +20,7 @@ static gboolean expose(GtkWidget *widget, GdkEventExpose *event, gpointer user_d
static void clicked(GtkWindow *win, GdkEventButton *event, gpointer user_data); static void clicked(GtkWindow *win, GdkEventButton *event, gpointer user_data);
# if USE_GTK_VERSION_3_0 #if USE_GTK_VERSION_3_0
const GdkRGBA color = { 1.0, 1.0, 0.0, 0.0}; const GdkRGBA color = { 1.0, 1.0, 0.0, 0.0};
#endif #endif