mirror of
https://github.com/reactos/reactos.git
synced 2024-10-15 13:45:58 +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
|
@ -56,6 +56,7 @@ typedef struct tagCSRSS_CONSOLE_VTBL
|
||||||
BOOL (STDCALL *SetCursorInfo)(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer);
|
BOOL (STDCALL *SetCursorInfo)(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer);
|
||||||
BOOL (STDCALL *SetScreenInfo)(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer,
|
BOOL (STDCALL *SetScreenInfo)(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer,
|
||||||
UINT OldCursorX, UINT OldCursorY);
|
UINT OldCursorX, UINT OldCursorY);
|
||||||
|
BOOL (STDCALL *UpdateScreenInfo)(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER ScreenBuffer);
|
||||||
BOOL (STDCALL *ChangeTitle)(PCSRSS_CONSOLE Console);
|
BOOL (STDCALL *ChangeTitle)(PCSRSS_CONSOLE Console);
|
||||||
VOID (STDCALL *CleanupConsole)(PCSRSS_CONSOLE Console);
|
VOID (STDCALL *CleanupConsole)(PCSRSS_CONSOLE Console);
|
||||||
BOOL (STDCALL *ChangeIcon)(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 ConioSetCursorInfo(Console, Buff) (Console)->Vtbl->SetCursorInfo((Console), (Buff))
|
||||||
#define ConioSetScreenInfo(Console, Buff, OldCursorX, OldCursorY) \
|
#define ConioSetScreenInfo(Console, Buff, OldCursorX, OldCursorY) \
|
||||||
(Console)->Vtbl->SetScreenInfo((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 ConioChangeTitle(Console) (Console)->Vtbl->ChangeTitle(Console)
|
||||||
#define ConioCleanupConsole(Console) (Console)->Vtbl->CleanupConsole(Console)
|
#define ConioCleanupConsole(Console) (Console)->Vtbl->CleanupConsole(Console)
|
||||||
|
|
||||||
|
|
|
@ -2049,7 +2049,6 @@ CSR_API(CsrSetTextAttrib)
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PCSRSS_CONSOLE Console;
|
PCSRSS_CONSOLE Console;
|
||||||
PCSRSS_SCREEN_BUFFER Buff;
|
PCSRSS_SCREEN_BUFFER Buff;
|
||||||
LONG OldCursorX, OldCursorY;
|
|
||||||
|
|
||||||
DPRINT("CsrSetTextAttrib\n");
|
DPRINT("CsrSetTextAttrib\n");
|
||||||
|
|
||||||
|
@ -2069,12 +2068,10 @@ CSR_API(CsrSetTextAttrib)
|
||||||
return Request->Status = Status;
|
return Request->Status = Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
ConioPhysicalToLogical(Buff, Buff->CurrentX, Buff->CurrentY, &OldCursorX, &OldCursorY);
|
|
||||||
|
|
||||||
Buff->DefaultAttrib = Request->Data.SetAttribRequest.Attrib;
|
Buff->DefaultAttrib = Request->Data.SetAttribRequest.Attrib;
|
||||||
if (NULL != Console && Buff == Console->ActiveBuffer)
|
if (NULL != Console && Buff == Console->ActiveBuffer)
|
||||||
{
|
{
|
||||||
if (! ConioSetScreenInfo(Console, Buff, OldCursorX, OldCursorY))
|
if (! ConioUpdateScreenInfo(Console, Buff))
|
||||||
{
|
{
|
||||||
ConioUnlockScreenBuffer(Buff);
|
ConioUnlockScreenBuffer(Buff);
|
||||||
ConioUnlockConsole(Console);
|
ConioUnlockConsole(Console);
|
||||||
|
|
|
@ -1246,6 +1246,20 @@ GuiSetScreenInfo(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER Buff, UINT OldCurs
|
||||||
return TRUE;
|
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
|
static VOID FASTCALL
|
||||||
GuiConsoleHandleTimer(HWND hWnd)
|
GuiConsoleHandleTimer(HWND hWnd)
|
||||||
{
|
{
|
||||||
|
@ -2124,6 +2138,7 @@ static CSRSS_CONSOLE_VTBL GuiVtbl =
|
||||||
GuiDrawRegion,
|
GuiDrawRegion,
|
||||||
GuiSetCursorInfo,
|
GuiSetCursorInfo,
|
||||||
GuiSetScreenInfo,
|
GuiSetScreenInfo,
|
||||||
|
GuiUpdateScreenInfo,
|
||||||
GuiChangeTitle,
|
GuiChangeTitle,
|
||||||
GuiCleanupConsole,
|
GuiCleanupConsole,
|
||||||
GuiChangeIcon
|
GuiChangeIcon
|
||||||
|
|
|
@ -213,6 +213,12 @@ TuiSetScreenInfo(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER Buff, UINT OldCurs
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL STDCALL
|
||||||
|
TuiUpdateScreenInfo(PCSRSS_CONSOLE Console, PCSRSS_SCREEN_BUFFER Buff)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
static BOOL STDCALL
|
static BOOL STDCALL
|
||||||
TuiChangeTitle(PCSRSS_CONSOLE Console)
|
TuiChangeTitle(PCSRSS_CONSOLE Console)
|
||||||
{
|
{
|
||||||
|
@ -293,6 +299,7 @@ static CSRSS_CONSOLE_VTBL TuiVtbl =
|
||||||
TuiDrawRegion,
|
TuiDrawRegion,
|
||||||
TuiSetCursorInfo,
|
TuiSetCursorInfo,
|
||||||
TuiSetScreenInfo,
|
TuiSetScreenInfo,
|
||||||
|
TuiUpdateScreenInfo,
|
||||||
TuiChangeTitle,
|
TuiChangeTitle,
|
||||||
TuiCleanupConsole
|
TuiCleanupConsole
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in a new issue