Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 19 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -141,12 +141,15 @@ if(NOT DAEMON_EXTERNAL_APP)

set(NACL_RUNTIME_PATH "" CACHE STRING "Directory containing the NaCl binaries")

# Not supported on mac because the included version is too old
if(APPLE)
set(USE_CURSES OFF)
elseif(WIN32)
if (WIN32)
# The alternative code is based on non-curses unix terminal functions.
set(USE_CURSES ON)
else()
if (NOT APPLE)
# Not supported on macOS because the included version is too old.
option(USE_CURSES_NCURSES "Use ncurses instead of PDCursesMod" ON)
endif()

option(USE_CURSES "Enable fancy colors in terminal's output" ON)
endif()

Expand Down Expand Up @@ -657,20 +660,24 @@ endif()
# Curses, pdcurses on Windows and ncursesw on Unix
if (BUILD_CLIENT OR BUILD_TTY_CLIENT OR BUILD_SERVER OR BUILD_DUMMY_APP)
if (USE_CURSES)
if (WIN32)
set(LIBS_ENGINE_BASE ${LIBS_ENGINE_BASE} gdi32 comdlg32)
if (USE_CURSES_NCURSES)
# Tells FindCurses that ncurses is required.
set(CURSES_NEED_NCURSES 1)

add_definitions(-DUSE_CURSES -DUSE_CURSES_NCURSES)
find_package(CursesW REQUIRED)
set(LIBS_ENGINE_BASE ${LIBS_ENGINE_BASE} ${CURSESW_LIBRARIES})
include_directories(${CURSESW_INCLUDE_DIR})
else ()
if (WIN32)
set(LIBS_ENGINE_BASE ${LIBS_ENGINE_BASE} gdi32 comdlg32)
endif()

add_definitions(-DPDC_WIDE -DPDC_FORCE_UTF8 -DPDC_RGB -DUSE_CURSES)
add_library(srclibs-pdcurses EXCLUDE_FROM_ALL ${PDCURSESLIST})
set_target_properties(srclibs-pdcurses PROPERTIES POSITION_INDEPENDENT_CODE 1 FOLDER "libs")
set(LIBS_ENGINE_BASE ${LIBS_ENGINE_BASE} srclibs-pdcurses)
include_directories(${LIB_DIR}/pdcursesmod)
else ()
add_definitions(-DUSE_CURSES)
set(CURSES_NEED_NCURSES 1) # Tells FindCurses that ncurses is required
find_package(CursesW REQUIRED)
set(LIBS_ENGINE_BASE ${LIBS_ENGINE_BASE} ${CURSESW_LIBRARIES})
include_directories(${CURSESW_INCLUDE_DIR})
endif()
endif()
endif()
Expand Down
15 changes: 10 additions & 5 deletions src/engine/sys/con_curses.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,12 +103,12 @@ static void CON_SetColor( WINDOW *win, const Color::Color& color )
static void CON_UpdateCursor()
{
// pdcurses uses a different mechanism to move the cursor than ncurses
#ifdef _WIN32
move( LINES - 1, Color::StrlenNocolor( PROMPT ) + 8 + input_field.GetViewCursorPos() );
wnoutrefresh( stdscr );
#else
#ifdef USE_CURSES_NCURSES
wmove( inputwin, 0, input_field.GetViewCursorPos() );
wnoutrefresh( inputwin );
#else
move( LINES - 1, Color::StrlenNocolor( PROMPT ) + 8 + input_field.GetViewCursorPos() );
wnoutrefresh( stdscr );
#endif
}

Expand Down Expand Up @@ -228,7 +228,12 @@ static void CON_Redraw()
{
return;
}
resizeterm( winsz.ws_row, winsz.ws_col );

#if defined(USE_CURSES_NCURSES)
resizeterm( winsz.ws_row, winsz.ws_col );
#else
resize_term( winsz.ws_row, winsz.ws_col );
#endif
#endif

delwin( logwin );
Expand Down
34 changes: 26 additions & 8 deletions srclibs.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -99,16 +99,34 @@ set(PDCURSESLIST
${LIB_DIR}/pdcursesmod/pdcurses/touch.c
${LIB_DIR}/pdcursesmod/pdcurses/util.c
${LIB_DIR}/pdcursesmod/pdcurses/window.c
${LIB_DIR}/pdcursesmod/wingui/pdcclip.c
${LIB_DIR}/pdcursesmod/wingui/pdcdisp.c
${LIB_DIR}/pdcursesmod/wingui/pdcgetsc.c
${LIB_DIR}/pdcursesmod/wingui/pdckbd.c
${LIB_DIR}/pdcursesmod/wingui/pdcscrn.c
${LIB_DIR}/pdcursesmod/wingui/pdcsetsc.c
${LIB_DIR}/pdcursesmod/wingui/pdcutil.c
${LIB_DIR}/pdcursesmod/wingui/pdcwin.h
)

if (WIN32)
set(PDCURSESLIST
${PDCURSESLIST}
${LIB_DIR}/pdcursesmod/wingui/pdcclip.c
${LIB_DIR}/pdcursesmod/wingui/pdcdisp.c
${LIB_DIR}/pdcursesmod/wingui/pdcgetsc.c
${LIB_DIR}/pdcursesmod/wingui/pdckbd.c
${LIB_DIR}/pdcursesmod/wingui/pdcscrn.c
${LIB_DIR}/pdcursesmod/wingui/pdcsetsc.c
${LIB_DIR}/pdcursesmod/wingui/pdcutil.c
${LIB_DIR}/pdcursesmod/wingui/pdcwin.h
)
else()
set(PDCURSESLIST
${PDCURSESLIST}
${LIB_DIR}/pdcursesmod/vt/pdcclip.c
${LIB_DIR}/pdcursesmod/vt/pdcdisp.c
${LIB_DIR}/pdcursesmod/vt/pdcgetsc.c
${LIB_DIR}/pdcursesmod/vt/pdckbd.c
${LIB_DIR}/pdcursesmod/vt/pdcscrn.c
${LIB_DIR}/pdcursesmod/vt/pdcsetsc.c
${LIB_DIR}/pdcursesmod/vt/pdcutil.c
${LIB_DIR}/pdcursesmod/vt/pdcvt.h
)
endif()

set(TINYFORMATLIST
${LIB_DIR}/tinyformat/tinyformat.h
)
Expand Down
Loading