mirror of
https://github.com/reactos/reactos.git
synced 2025-02-24 01:15:09 +00:00
Fixes updating default character attributes when calling SetConsoleTextAttribute().
See issue #2705 for more details. svn path=/trunk/; revision=29723
This commit is contained in:
parent
b7b9154d87
commit
f3936aecb5
4 changed files with 26 additions and 4 deletions
|
@ -56,6 +56,7 @@ typedef struct tagCSRSS_CONSOLE_VTBL
|
|||
BOOL (STDCALL *SetCursorInfo)(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer);
|
||||
BOOL (STDCALL *SetScreenInfo)(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer,
|
||||
UINT OldCursorX, UINT OldCursorY);
|
||||
BOOL (STDCALL *UpdateScreenInfo)(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer);
|
||||
BOOL (STDCALL *ChangeTitle)(PCSRSS_CONSOLE Console);
|
||||
VOID (STDCALL *CleanupConsole)(PCSRSS_CONSOLE Console);
|
||||
BOOL (STDCALL *ChangeIcon)(PCSRSS_CONSOLE Console);
|
||||
|
@ -152,6 +153,8 @@ CSR_API(CsrGetProcessList);
|
|||
#define ConioSetCursorInfo(Console, Buff) (Console)->Vtbl->SetCursorInfo((Console), (Buff))
|
||||
#define ConioSetScreenInfo(Console, Buff, OldCursorX, OldCursorY) \
|
||||
(Console)->Vtbl->SetScreenInfo((Console), (Buff), (OldCursorX), (OldCursorY))
|
||||
#define ConioUpdateScreenInfo(Console, Buff) \
|
||||
(Console)->Vtbl->UpdateScreenInfo(Console, Buff)
|
||||
#define ConioChangeTitle(Console) (Console)->Vtbl->ChangeTitle(Console)
|
||||
#define ConioCleanupConsole(Console) (Console)->Vtbl->CleanupConsole(Console)
|
||||
|
||||
|
|
|
@ -2049,7 +2049,6 @@ CSR_API(CsrSetTextAttrib)
|
|||
NTSTATUS Status;
|
||||
PCSRSS_CONSOLE Console;
|
||||
PCSRSS_SCREEN_BUFFER Buff;
|
||||
LONG OldCursorX, OldCursorY;
|
||||
|
||||
DPRINT("CsrSetTextAttrib\n");
|
||||
|
||||
|
@ -2069,12 +2068,10 @@ CSR_API(CsrSetTextAttrib)
|
|||
return Request->Status = Status;
|
||||
}
|
||||
|
||||
ConioPhysicalToLogical(Buff, Buff->CurrentX, Buff->CurrentY, &OldCursorX, &OldCursorY);
|
||||
|
||||
Buff->DefaultAttrib = Request->Data.SetAttribRequest.Attrib;
|
||||
if (NULL != Console && Buff == Console->ActiveBuffer)
|
||||
{
|
||||
if (! ConioSetScreenInfo(Console, Buff, OldCursorX, OldCursorY))
|
||||
if (! ConioUpdateScreenInfo(Console, Buff))
|
||||
{
|
||||
ConioUnlockScreenBuffer(Buff);
|
||||
ConioUnlockConsole(Console);
|
||||
|
|
|
@ -1246,6 +1246,20 @@ GuiSetScreenInfo(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER Buff, UINT OldCurs
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL STDCALL
|
||||
GuiUpdateScreenInfo(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER Buff)
|
||||
{
|
||||
PGUI_CONSOLE_DATA GuiData = (PGUI_CONSOLE_DATA) Console->PrivateData;
|
||||
|
||||
if (Console->ActiveBuffer == Buff)
|
||||
{
|
||||
GuiData->ScreenText = GuiConsoleRGBFromAttribute(Buff->DefaultAttrib & 0x0f);
|
||||
GuiData->ScreenBackground = GuiConsoleRGBFromAttribute((Buff->DefaultAttrib & 0xf0) >> 4);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static VOID FASTCALL
|
||||
GuiConsoleHandleTimer(HWND hWnd)
|
||||
{
|
||||
|
@ -2124,6 +2138,7 @@ static CSRSS_CONSOLE_VTBL GuiVtbl =
|
|||
GuiDrawRegion,
|
||||
GuiSetCursorInfo,
|
||||
GuiSetScreenInfo,
|
||||
GuiUpdateScreenInfo,
|
||||
GuiChangeTitle,
|
||||
GuiCleanupConsole,
|
||||
GuiChangeIcon
|
||||
|
|
|
@ -213,6 +213,12 @@ TuiSetScreenInfo(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER Buff, UINT OldCurs
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL STDCALL
|
||||
TuiUpdateScreenInfo(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER Buff)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static BOOL STDCALL
|
||||
TuiChangeTitle(PCSRSS_CONSOLE Console)
|
||||
{
|
||||
|
@ -293,6 +299,7 @@ static CSRSS_CONSOLE_VTBL TuiVtbl =
|
|||
TuiDrawRegion,
|
||||
TuiSetCursorInfo,
|
||||
TuiSetScreenInfo,
|
||||
TuiUpdateScreenInfo,
|
||||
TuiChangeTitle,
|
||||
TuiCleanupConsole
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue