Sync with trunk r63887.
[reactos.git] / win32ss / user / winsrv / consrv / frontends / tui / tuiterm.c
index 84ae5c4..3e2bed7 100644 (file)
 
 /* GLOBALS ********************************************************************/
 
-#define GetNextConsole(Console) \
-    CONTAINING_RECORD(Console->Entry.Flink, TUI_CONSOLE_DATA, Entry)
-
-#define GetPrevConsole(Console) \
-    CONTAINING_RECORD(Console->Entry.Blink, TUI_CONSOLE_DATA, Entry)
-
-
 /* TUI Console Window Class name */
 #define TUI_CONSOLE_WINDOW_CLASS L"TuiConsoleWindowClass"
 
@@ -42,10 +35,17 @@ typedef struct _TUI_CONSOLE_DATA
 
     HWND hWindow;               /* Handle to the console's window (used for the window's procedure */
 
-    PCONSOLE Console;           /* Pointer to the owned console */
+    PCONSRV_CONSOLE Console;           /* Pointer to the owned console */
     // TUI_CONSOLE_INFO TuiInfo;   /* TUI terminal settings */
 } TUI_CONSOLE_DATA, *PTUI_CONSOLE_DATA;
 
+#define GetNextConsole(Console) \
+    CONTAINING_RECORD(Console->Entry.Flink, TUI_CONSOLE_DATA, Entry)
+
+#define GetPrevConsole(Console) \
+    CONTAINING_RECORD(Console->Entry.Blink, TUI_CONSOLE_DATA, Entry)
+
+
 /* List of the maintained virtual consoles and its lock */
 static LIST_ENTRY VirtConsList;
 static PTUI_CONSOLE_DATA ActiveConsole; /* The active console on screen */
@@ -164,7 +164,7 @@ done:
 /**\
 \******************************************************************************/
 
-static BOOL FASTCALL
+static BOOL
 TuiSwapConsole(INT Next)
 {
     static PTUI_CONSOLE_DATA SwapConsole = NULL; /* Console we are thinking about swapping with */
@@ -231,7 +231,7 @@ TuiSwapConsole(INT Next)
     }
 }
 
-static VOID FASTCALL
+static VOID
 TuiCopyRect(PCHAR Dest, PTEXTMODE_SCREEN_BUFFER Buff, SMALL_RECT* Region)
 {
     UINT SrcDelta, DestDelta;
@@ -261,7 +261,7 @@ TuiConsoleWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
 {
 /*
     PTUI_CONSOLE_DATA TuiData = NULL;
-    PCONSOLE Console = NULL;
+    PCONSRV_CONSOLE Console = NULL;
 
     TuiData = TuiGetGuiData(hWnd);
     if (TuiData == NULL) return 0;
@@ -276,6 +276,21 @@ TuiConsoleWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
         case WM_KEYUP:
         case WM_SYSKEYUP:
         {
+#if 0
+            if ((HIWORD(lParam) & KF_ALTDOWN) && wParam == VK_TAB)
+            {
+                // if ((HIWORD(lParam) & (KF_UP | KF_REPEAT)) != KF_REPEAT)
+                    TuiSwapConsole(ShiftState & SHIFT_PRESSED ? -1 : 1);
+
+                break;
+            }
+            else if (wParam == VK_MENU /* && !Down */)
+            {
+                TuiSwapConsole(0);
+                break;
+            }
+#endif
+
             if (ConDrvValidateConsoleUnsafe(ActiveConsole->Console, CONSOLE_RUNNING, TRUE))
             {
                 MSG Message;
@@ -311,11 +326,11 @@ TuiConsoleWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
     return DefWindowProcW(hWnd, msg, wParam, lParam);
 }
 
-static DWORD WINAPI
+static DWORD NTAPI
 TuiConsoleThread(PVOID Data)
 {
     PTUI_CONSOLE_DATA TuiData = (PTUI_CONSOLE_DATA)Data;
-    PCONSOLE Console = TuiData->Console;
+    PCONSRV_CONSOLE Console = TuiData->Console;
     HWND NewWindow;
     MSG msg;
 
@@ -441,13 +456,13 @@ Quit:
  *                             TUI Console Driver                             *
  ******************************************************************************/
 
-static VOID WINAPI
+static VOID NTAPI
 TuiDeinitFrontEnd(IN OUT PFRONTEND This /*,
-                  IN PCONSOLE Console */);
+                  IN PCONSRV_CONSOLE Console */);
 
-NTSTATUS NTAPI
+static NTSTATUS NTAPI
 TuiInitFrontEnd(IN OUT PFRONTEND This,
-                IN PCONSOLE Console)
+                IN PCONSRV_CONSOLE Console)
 {
     PTUI_CONSOLE_DATA TuiData;
     HANDLE ThreadHandle;
@@ -459,7 +474,7 @@ TuiInitFrontEnd(IN OUT PFRONTEND This,
         // return STATUS_INVALID_PARAMETER;
 
     // /* Initialize the console */
-    // Console->TermIFace.Vtbl = &TuiVtbl;
+    // Console->FrontEndIFace.Vtbl = &TuiVtbl;
 
     TuiData = ConsoleAllocHeap(HEAP_ZERO_MEMORY, sizeof(TUI_CONSOLE_DATA));
     if (!TuiData)
@@ -467,7 +482,7 @@ TuiInitFrontEnd(IN OUT PFRONTEND This,
         DPRINT1("CONSRV: Failed to create TUI_CONSOLE_DATA\n");
         return STATUS_UNSUCCESSFUL;
     }
-    // Console->TermIFace.Data = (PVOID)TuiData;
+    // Console->FrontEndIFace.Data = (PVOID)TuiData;
     TuiData->Console = Console;
     TuiData->hWindow = NULL;
 
@@ -482,7 +497,7 @@ TuiInitFrontEnd(IN OUT PFRONTEND This,
 
     // /* The console cannot be resized anymore */
     // Console->FixedSize = TRUE; // MUST be placed AFTER the call to ConioResizeBuffer !!
-    // // ConioResizeTerminal(Console);
+    // // TermResizeTerminal(Console);
 
     /*
      * Contrary to what we do in the GUI front-end, here we create
@@ -521,11 +536,11 @@ TuiInitFrontEnd(IN OUT PFRONTEND This,
     return STATUS_SUCCESS;
 }
 
-static VOID WINAPI
+static VOID NTAPI
 TuiDeinitFrontEnd(IN OUT PFRONTEND This)
 {
-    // PCONSOLE Console = This->Console;
-    PTUI_CONSOLE_DATA TuiData = This->Data; // Console->TermIFace.Data;
+    // PCONSRV_CONSOLE Console = This->Console;
+    PTUI_CONSOLE_DATA TuiData = This->Data; // Console->FrontEndIFace.Data;
 
     /* Close the notification window */
     DestroyWindow(TuiData->hWindow);
@@ -556,13 +571,13 @@ TuiDeinitFrontEnd(IN OUT PFRONTEND This)
     /* Switch to the next console */
     if (NULL != ActiveConsole) ConioDrawConsole(ActiveConsole->Console);
 
-    // Console->TermIFace.Data = NULL;
+    // Console->FrontEndIFace.Data = NULL;
     This->Data = NULL;
     DeleteCriticalSection(&TuiData->Lock);
     ConsoleFreeHeap(TuiData);
 }
 
-static VOID WINAPI
+static VOID NTAPI
 TuiDrawRegion(IN OUT PFRONTEND This,
               SMALL_RECT* Region)
 {
@@ -601,7 +616,7 @@ TuiDrawRegion(IN OUT PFRONTEND This,
     ConsoleFreeHeap(ConsoleDraw);
 }
 
-static VOID WINAPI
+static VOID NTAPI
 TuiWriteStream(IN OUT PFRONTEND This,
                SMALL_RECT* Region,
                SHORT CursorStartX,
@@ -635,7 +650,7 @@ TuiWriteStream(IN OUT PFRONTEND This,
     RtlFreeHeap(RtlGetProcessHeap(), 0, NewBuffer);
 }
 
-static BOOL WINAPI
+static BOOL NTAPI
 TuiSetCursorInfo(IN OUT PFRONTEND This,
                  PCONSOLE_SCREEN_BUFFER Buff)
 {
@@ -657,7 +672,7 @@ TuiSetCursorInfo(IN OUT PFRONTEND This,
     return TRUE;
 }
 
-static BOOL WINAPI
+static BOOL NTAPI
 TuiSetScreenInfo(IN OUT PFRONTEND This,
                  PCONSOLE_SCREEN_BUFFER Buff,
                  SHORT OldCursorX,
@@ -683,62 +698,36 @@ TuiSetScreenInfo(IN OUT PFRONTEND This,
     return TRUE;
 }
 
-static VOID WINAPI
+static VOID NTAPI
 TuiResizeTerminal(IN OUT PFRONTEND This)
 {
 }
 
-static BOOL WINAPI
-TuiProcessKeyCallback(IN OUT PFRONTEND This,
-                      MSG* msg,
-                      BYTE KeyStateMenu,
-                      DWORD ShiftState,
-                      UINT VirtualKeyCode,
-                      BOOL Down)
-{
-    if (0 != (ShiftState & (RIGHT_ALT_PRESSED | LEFT_ALT_PRESSED)) &&
-        VK_TAB == VirtualKeyCode)
-    {
-        if (Down)
-        {
-            TuiSwapConsole(ShiftState & SHIFT_PRESSED ? -1 : 1);
-        }
-
-        return TRUE;
-    }
-    else if (VK_MENU == VirtualKeyCode && !Down)
-    {
-        return TuiSwapConsole(0);
-    }
-
-    return FALSE;
-}
-
-static VOID WINAPI
+static VOID NTAPI
 TuiRefreshInternalInfo(IN OUT PFRONTEND This)
 {
 }
 
-static VOID WINAPI
+static VOID NTAPI
 TuiChangeTitle(IN OUT PFRONTEND This)
 {
 }
 
-static BOOL WINAPI
+static BOOL NTAPI
 TuiChangeIcon(IN OUT PFRONTEND This,
-              HICON hWindowIcon)
+              HICON IconHandle)
 {
     return TRUE;
 }
 
-static HWND WINAPI
+static HWND NTAPI
 TuiGetConsoleWindowHandle(IN OUT PFRONTEND This)
 {
     PTUI_CONSOLE_DATA TuiData = This->Data;
     return TuiData->hWindow;
 }
 
-static VOID WINAPI
+static VOID NTAPI
 TuiGetLargestConsoleWindowSize(IN OUT PFRONTEND This,
                                PCOORD pSize)
 {
@@ -746,13 +735,28 @@ TuiGetLargestConsoleWindowSize(IN OUT PFRONTEND This,
     *pSize = PhysicalConsoleSize;
 }
 
-static ULONG WINAPI
+static BOOL NTAPI
+TuiGetSelectionInfo(IN OUT PFRONTEND This,
+                    PCONSOLE_SELECTION_INFO pSelectionInfo)
+{
+    return TRUE;
+}
+
+static BOOL NTAPI
+TuiSetPalette(IN OUT PFRONTEND This,
+              HPALETTE PaletteHandle,
+              UINT PaletteUsage)
+{
+    return TRUE;
+}
+
+static ULONG NTAPI
 TuiGetDisplayMode(IN OUT PFRONTEND This)
 {
     return CONSOLE_FULLSCREEN_HARDWARE; // CONSOLE_FULLSCREEN;
 }
 
-static BOOL WINAPI
+static BOOL NTAPI
 TuiSetDisplayMode(IN OUT PFRONTEND This,
                   ULONG NewMode)
 {
@@ -761,29 +765,29 @@ TuiSetDisplayMode(IN OUT PFRONTEND This,
     return TRUE;
 }
 
-static INT WINAPI
+static INT NTAPI
 TuiShowMouseCursor(IN OUT PFRONTEND This,
                    BOOL Show)
 {
     return 0;
 }
 
-static BOOL WINAPI
+static BOOL NTAPI
 TuiSetMouseCursor(IN OUT PFRONTEND This,
-                  HCURSOR hCursor)
+                  HCURSOR CursorHandle)
 {
     return TRUE;
 }
 
-static HMENU WINAPI
+static HMENU NTAPI
 TuiMenuControl(IN OUT PFRONTEND This,
-               UINT cmdIdLow,
-               UINT cmdIdHigh)
+               UINT CmdIdLow,
+               UINT CmdIdHigh)
 {
     return NULL;
 }
 
-static BOOL WINAPI
+static BOOL NTAPI
 TuiSetMenuClose(IN OUT PFRONTEND This,
                 BOOL Enable)
 {
@@ -799,12 +803,13 @@ static FRONTEND_VTBL TuiVtbl =
     TuiSetCursorInfo,
     TuiSetScreenInfo,
     TuiResizeTerminal,
-    TuiProcessKeyCallback,
     TuiRefreshInternalInfo,
     TuiChangeTitle,
     TuiChangeIcon,
     TuiGetConsoleWindowHandle,
     TuiGetLargestConsoleWindowSize,
+    TuiGetSelectionInfo,
+    TuiSetPalette,
     TuiGetDisplayMode,
     TuiSetDisplayMode,
     TuiShowMouseCursor,