Fixes problem with scroll bar view after first draw
This commit is contained in:
parent
b9ef1200e8
commit
52c5b412f7
|
@ -1,3 +1,6 @@
|
||||||
|
2019-06-12 Markus Gans <guru.mail@muenster.de>
|
||||||
|
* Fixes problem with scroll bar view after first draw
|
||||||
|
|
||||||
2019-06-02 Markus Gans <guru.mail@muenster.de>
|
2019-06-02 Markus Gans <guru.mail@muenster.de>
|
||||||
* Avoid drawing the scroll bars if the widget is non-visible
|
* Avoid drawing the scroll bars if the widget is non-visible
|
||||||
|
|
||||||
|
|
|
@ -110,10 +110,6 @@ void SegmentView::hexEncoding()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void SegmentView::get7Segment (const wchar_t c)
|
void SegmentView::get7Segment (const wchar_t c)
|
||||||
{
|
{
|
||||||
sevenSegment& s = code[c];
|
|
||||||
constexpr char h[2]{' ', '_'};
|
|
||||||
constexpr char v[2]{' ', '|'};
|
|
||||||
|
|
||||||
for (int i = 0; i < 3; i++)
|
for (int i = 0; i < 3; i++)
|
||||||
line[i].clear();
|
line[i].clear();
|
||||||
|
|
||||||
|
@ -157,10 +153,17 @@ void SegmentView::get7Segment (const wchar_t c)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Hexadecimal digit from 0 up to f
|
// Hexadecimal digit from 0 up to f
|
||||||
|
if ( code.find(c) != code.end() )
|
||||||
|
{
|
||||||
|
sevenSegment& s = code[c];
|
||||||
|
constexpr char h[2]{' ', '_'};
|
||||||
|
constexpr char v[2]{' ', '|'};
|
||||||
|
|
||||||
line[0] << ' ' << h[s.a] << ' ';
|
line[0] << ' ' << h[s.a] << ' ';
|
||||||
line[1] << v[s.f] << h[s.g] << v[s.b];
|
line[1] << v[s.f] << h[s.g] << v[s.b];
|
||||||
line[2] << v[s.e] << h[s.d] << v[s.c];
|
line[2] << v[s.e] << h[s.d] << v[s.c];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
|
|
@ -832,8 +832,16 @@ void FListBox::draw()
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(false);
|
setReverse(false);
|
||||||
|
|
||||||
|
if ( ! hbar->isShown() && isHorizontallyScrollable() )
|
||||||
|
hbar->show();
|
||||||
|
else
|
||||||
vbar->redraw();
|
vbar->redraw();
|
||||||
|
|
||||||
|
if ( ! vbar->isShown() && isVerticallyScrollable() )
|
||||||
|
vbar->show();
|
||||||
|
else
|
||||||
hbar->redraw();
|
hbar->redraw();
|
||||||
|
|
||||||
drawList();
|
drawList();
|
||||||
|
|
||||||
if ( flags.focus && getStatusBar() )
|
if ( flags.focus && getStatusBar() )
|
||||||
|
|
|
@ -1491,8 +1491,16 @@ void FListView::draw()
|
||||||
if ( isMonochron() )
|
if ( isMonochron() )
|
||||||
setReverse(false);
|
setReverse(false);
|
||||||
|
|
||||||
|
if ( ! hbar->isShown() && isHorizontallyScrollable() )
|
||||||
|
hbar->show();
|
||||||
|
else
|
||||||
vbar->redraw();
|
vbar->redraw();
|
||||||
|
|
||||||
|
if ( ! vbar->isShown() && isVerticallyScrollable() )
|
||||||
|
vbar->show();
|
||||||
|
else
|
||||||
hbar->redraw();
|
hbar->redraw();
|
||||||
|
|
||||||
drawList();
|
drawList();
|
||||||
|
|
||||||
if ( flags.focus && getStatusBar() )
|
if ( flags.focus && getStatusBar() )
|
||||||
|
|
|
@ -75,6 +75,8 @@ void FScrollView::setScrollWidth (std::size_t width)
|
||||||
hbar->setMaximum (int(width - getViewportWidth()));
|
hbar->setMaximum (int(width - getViewportWidth()));
|
||||||
hbar->setPageSize (int(width), int(getViewportWidth()));
|
hbar->setPageSize (int(width), int(getViewportWidth()));
|
||||||
hbar->calculateSliderValues();
|
hbar->calculateSliderValues();
|
||||||
|
|
||||||
|
if ( isShown() )
|
||||||
setHorizontalScrollBarVisibility();
|
setHorizontalScrollBarVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,6 +104,8 @@ void FScrollView::setScrollHeight (std::size_t height)
|
||||||
vbar->setMaximum (int(height - getViewportHeight()));
|
vbar->setMaximum (int(height - getViewportHeight()));
|
||||||
vbar->setPageSize (int(height), int(getViewportHeight()));
|
vbar->setPageSize (int(height), int(getViewportHeight()));
|
||||||
vbar->calculateSliderValues();
|
vbar->calculateSliderValues();
|
||||||
|
|
||||||
|
if ( isShown() )
|
||||||
setVerticalScrollBarVisibility();
|
setVerticalScrollBarVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -143,12 +147,16 @@ void FScrollView::setScrollSize (const FSize& size)
|
||||||
hbar->setMaximum (int(width - getViewportWidth()));
|
hbar->setMaximum (int(width - getViewportWidth()));
|
||||||
hbar->setPageSize (int(width), int(getViewportWidth()));
|
hbar->setPageSize (int(width), int(getViewportWidth()));
|
||||||
hbar->calculateSliderValues();
|
hbar->calculateSliderValues();
|
||||||
setHorizontalScrollBarVisibility();
|
|
||||||
|
|
||||||
vbar->setMaximum (int(height - getViewportHeight()));
|
vbar->setMaximum (int(height - getViewportHeight()));
|
||||||
vbar->setPageSize (int(height), int(getViewportHeight()));
|
vbar->setPageSize (int(height), int(getViewportHeight()));
|
||||||
vbar->calculateSliderValues();
|
vbar->calculateSliderValues();
|
||||||
|
|
||||||
|
if ( isShown() )
|
||||||
|
{
|
||||||
|
setHorizontalScrollBarVisibility();
|
||||||
setVerticalScrollBarVisibility();
|
setVerticalScrollBarVisibility();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -296,6 +304,8 @@ bool FScrollView::setBorder (bool enable)
|
||||||
void FScrollView::setHorizontalScrollBarMode (fc::scrollBarMode mode)
|
void FScrollView::setHorizontalScrollBarMode (fc::scrollBarMode mode)
|
||||||
{
|
{
|
||||||
hMode = mode;
|
hMode = mode;
|
||||||
|
|
||||||
|
if ( isShown() )
|
||||||
setHorizontalScrollBarVisibility();
|
setHorizontalScrollBarVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -303,6 +313,8 @@ void FScrollView::setHorizontalScrollBarMode (fc::scrollBarMode mode)
|
||||||
void FScrollView::setVerticalScrollBarMode (fc::scrollBarMode mode)
|
void FScrollView::setVerticalScrollBarMode (fc::scrollBarMode mode)
|
||||||
{
|
{
|
||||||
vMode = mode;
|
vMode = mode;
|
||||||
|
|
||||||
|
if ( isShown() )
|
||||||
setVerticalScrollBarVisibility();
|
setVerticalScrollBarVisibility();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -428,6 +440,13 @@ void FScrollView::draw()
|
||||||
|
|
||||||
setViewportPrint();
|
setViewportPrint();
|
||||||
copy2area();
|
copy2area();
|
||||||
|
|
||||||
|
if ( ! hbar->isShown() )
|
||||||
|
setHorizontalScrollBarVisibility();
|
||||||
|
|
||||||
|
if ( ! vbar->isShown() )
|
||||||
|
setVerticalScrollBarVisibility();
|
||||||
|
|
||||||
vbar->redraw();
|
vbar->redraw();
|
||||||
hbar->redraw();
|
hbar->redraw();
|
||||||
}
|
}
|
||||||
|
@ -639,7 +658,6 @@ void FScrollView::adjustSize()
|
||||||
hbar->setWidth (width - 2, false);
|
hbar->setWidth (width - 2, false);
|
||||||
hbar->setValue (xoffset);
|
hbar->setValue (xoffset);
|
||||||
hbar->resize();
|
hbar->resize();
|
||||||
setHorizontalScrollBarVisibility();
|
|
||||||
|
|
||||||
vbar->setMaximum (int(getScrollHeight() - getViewportHeight()));
|
vbar->setMaximum (int(getScrollHeight() - getViewportHeight()));
|
||||||
vbar->setPageSize (int(getScrollHeight()), int(getViewportHeight()));
|
vbar->setPageSize (int(getScrollHeight()), int(getViewportHeight()));
|
||||||
|
@ -647,7 +665,12 @@ void FScrollView::adjustSize()
|
||||||
vbar->setHeight (height - 2, false);
|
vbar->setHeight (height - 2, false);
|
||||||
vbar->setValue (yoffset);
|
vbar->setValue (yoffset);
|
||||||
vbar->resize();
|
vbar->resize();
|
||||||
|
|
||||||
|
if ( isShown() )
|
||||||
|
{
|
||||||
|
setHorizontalScrollBarVisibility();
|
||||||
setVerticalScrollBarVisibility();
|
setVerticalScrollBarVisibility();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -814,9 +837,6 @@ void FScrollView::calculateScrollbarPos()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FScrollView::setHorizontalScrollBarVisibility()
|
void FScrollView::setHorizontalScrollBarVisibility()
|
||||||
{
|
{
|
||||||
if ( ! isShown() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch ( hMode )
|
switch ( hMode )
|
||||||
{
|
{
|
||||||
case fc::Auto:
|
case fc::Auto:
|
||||||
|
@ -839,9 +859,6 @@ void FScrollView::setHorizontalScrollBarVisibility()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FScrollView::setVerticalScrollBarVisibility()
|
void FScrollView::setVerticalScrollBarVisibility()
|
||||||
{
|
{
|
||||||
if ( ! isShown() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
switch ( vMode )
|
switch ( vMode )
|
||||||
{
|
{
|
||||||
case fc::Auto:
|
case fc::Auto:
|
||||||
|
|
|
@ -515,7 +515,7 @@ void FTerm::detectTermSize()
|
||||||
auto& term_geometry = data->getTermGeometry();
|
auto& term_geometry = data->getTermGeometry();
|
||||||
|
|
||||||
if ( fsys )
|
if ( fsys )
|
||||||
ret = fsys->ioControl (fd, TIOCGWINSZ, &win_size);
|
ret = fsys->ioctl (fd, TIOCGWINSZ, &win_size);
|
||||||
else
|
else
|
||||||
ret = -1;
|
ret = -1;
|
||||||
|
|
||||||
|
@ -962,7 +962,7 @@ void FTerm::init_global_values (bool disable_alt_screen)
|
||||||
// Preset to false
|
// Preset to false
|
||||||
data->setNewFont(false);
|
data->setNewFont(false);
|
||||||
|
|
||||||
// Sets alternative screen usage
|
// Sets alternate screen usage
|
||||||
data->useAlternateScreen(! disable_alt_screen);
|
data->useAlternateScreen(! disable_alt_screen);
|
||||||
|
|
||||||
// Initialize xterm object
|
// Initialize xterm object
|
||||||
|
@ -1693,6 +1693,8 @@ inline void FTerm::disableApplicationEscKey()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FTerm::useAlternateScreenBuffer()
|
void FTerm::useAlternateScreenBuffer()
|
||||||
{
|
{
|
||||||
|
// Switch to the alternate screen
|
||||||
|
|
||||||
if ( ! hasAlternateScreen() )
|
if ( ! hasAlternateScreen() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1714,6 +1716,8 @@ void FTerm::useAlternateScreenBuffer()
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
void FTerm::useNormalScreenBuffer()
|
void FTerm::useNormalScreenBuffer()
|
||||||
{
|
{
|
||||||
|
// Switch to the normal screen
|
||||||
|
|
||||||
if ( ! hasAlternateScreen() )
|
if ( ! hasAlternateScreen() )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1880,6 +1884,7 @@ void FTerm::init (bool disable_alt_screen)
|
||||||
// Enter 'keyboard_transmit' mode
|
// Enter 'keyboard_transmit' mode
|
||||||
enableKeypad();
|
enableKeypad();
|
||||||
|
|
||||||
|
// Switch to the alternate screen
|
||||||
useAlternateScreenBuffer();
|
useAlternateScreenBuffer();
|
||||||
|
|
||||||
// Enable alternate charset
|
// Enable alternate charset
|
||||||
|
@ -2032,6 +2037,7 @@ void FTerm::finish()
|
||||||
if ( isXTerminal() )
|
if ( isXTerminal() )
|
||||||
xterm->metaSendsESC(false);
|
xterm->metaSendsESC(false);
|
||||||
|
|
||||||
|
// Switch to the normal screen
|
||||||
useNormalScreenBuffer();
|
useNormalScreenBuffer();
|
||||||
|
|
||||||
// leave 'keyboard_transmit' mode
|
// leave 'keyboard_transmit' mode
|
||||||
|
|
|
@ -61,7 +61,7 @@ void FTermFreeBSD::setCursorStyle (CursorStyle style, bool hidden)
|
||||||
if ( hidden )
|
if ( hidden )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fsysten->ioControl (0, CONS_CURSORTYPE, &style);
|
fsysten->ioctl (0, CONS_CURSORTYPE, &style);
|
||||||
}
|
}
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
//----------------------------------------------------------------------
|
||||||
|
@ -71,7 +71,7 @@ bool FTermFreeBSD::isFreeBSDConsole()
|
||||||
|
|
||||||
keymap_t keymap;
|
keymap_t keymap;
|
||||||
|
|
||||||
if ( fsysten && fsysten->ioControl(0, GIO_KEYMAP, &keymap) == 0 )
|
if ( fsysten && fsysten->ioctl(0, GIO_KEYMAP, &keymap) == 0 )
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
@ -149,7 +149,7 @@ bool FTermFreeBSD::saveFreeBSDAltKey()
|
||||||
keymap_t keymap;
|
keymap_t keymap;
|
||||||
|
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsysten->ioControl (0, GIO_KEYMAP, &keymap);
|
ret = fsysten->ioctl (0, GIO_KEYMAP, &keymap);
|
||||||
|
|
||||||
if ( ret < 0 )
|
if ( ret < 0 )
|
||||||
return false;
|
return false;
|
||||||
|
@ -169,7 +169,7 @@ bool FTermFreeBSD::setFreeBSDAltKey (uInt key)
|
||||||
keymap_t keymap;
|
keymap_t keymap;
|
||||||
|
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsysten->ioControl (0, GIO_KEYMAP, &keymap);
|
ret = fsysten->ioctl (0, GIO_KEYMAP, &keymap);
|
||||||
|
|
||||||
if ( ret < 0 )
|
if ( ret < 0 )
|
||||||
return false;
|
return false;
|
||||||
|
@ -178,7 +178,7 @@ bool FTermFreeBSD::setFreeBSDAltKey (uInt key)
|
||||||
keymap.key[left_alt].map[0] = key;
|
keymap.key[left_alt].map[0] = key;
|
||||||
|
|
||||||
if ( (keymap.n_keys > 0)
|
if ( (keymap.n_keys > 0)
|
||||||
&& fsystem && (fsysten->ioControl(0, PIO_KEYMAP, &keymap) < 0) )
|
&& fsystem && (fsysten->ioctl(0, PIO_KEYMAP, &keymap) < 0) )
|
||||||
return false;
|
return false;
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -230,7 +230,10 @@ uInt FTermios::getBaudRate()
|
||||||
outspeed[B115200] = 115200; // 115,200 baud
|
outspeed[B115200] = 115200; // 115,200 baud
|
||||||
outspeed[B230400] = 230400; // 230,400 baud
|
outspeed[B230400] = 230400; // 230,400 baud
|
||||||
|
|
||||||
|
if ( outspeed.find(cfgetospeed(&term_init)) != outspeed.end() )
|
||||||
return outspeed[cfgetospeed(&term_init)];
|
return outspeed[cfgetospeed(&term_init)];
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace finalcut
|
} // namespace finalcut
|
||||||
|
|
|
@ -144,7 +144,7 @@ bool FTermLinux::isLinuxConsole()
|
||||||
|
|
||||||
// get keyboard type an compare
|
// get keyboard type an compare
|
||||||
return ( fsystem->isTTY(fd_tty)
|
return ( fsystem->isTTY(fd_tty)
|
||||||
&& fsystem->ioControl(fd_tty, KDGKBTYPE, &arg) == 0
|
&& fsystem->ioctl(fd_tty, KDGKBTYPE, &arg) == 0
|
||||||
&& ((arg == KB_101) || (arg == KB_84)) );
|
&& ((arg == KB_101) || (arg == KB_84)) );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -496,8 +496,8 @@ int FTermLinux::getFramebuffer_bpp()
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( ! fsystem->ioControl(fd, FBIOGET_VSCREENINFO, &fb_var)
|
if ( ! fsystem->ioctl(fd, FBIOGET_VSCREENINFO, &fb_var)
|
||||||
&& ! fsystem->ioControl(fd, FBIOGET_FSCREENINFO, &fb_fix) )
|
&& ! fsystem->ioctl(fd, FBIOGET_FSCREENINFO, &fb_fix) )
|
||||||
{
|
{
|
||||||
fsystem->close(fd);
|
fsystem->close(fd);
|
||||||
return int(fb_var.bits_per_pixel);
|
return int(fb_var.bits_per_pixel);
|
||||||
|
@ -543,7 +543,7 @@ bool FTermLinux::getScreenFont()
|
||||||
|
|
||||||
// font operation
|
// font operation
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsystem->ioControl (fd_tty, KDFONTOP, &font);
|
ret = fsystem->ioctl (fd_tty, KDFONTOP, &font);
|
||||||
|
|
||||||
if ( ret == 0 )
|
if ( ret == 0 )
|
||||||
{
|
{
|
||||||
|
@ -571,7 +571,7 @@ bool FTermLinux::getUnicodeMap()
|
||||||
|
|
||||||
// get count
|
// get count
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsystem->ioControl (fd_tty, GIO_UNIMAP, &screen_unicode_map);
|
ret = fsystem->ioctl (fd_tty, GIO_UNIMAP, &screen_unicode_map);
|
||||||
|
|
||||||
if ( ret != 0 )
|
if ( ret != 0 )
|
||||||
{
|
{
|
||||||
|
@ -592,7 +592,7 @@ bool FTermLinux::getUnicodeMap()
|
||||||
|
|
||||||
// get unicode-to-font mapping from kernel
|
// get unicode-to-font mapping from kernel
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsystem->ioControl (fd_tty, GIO_UNIMAP, &screen_unicode_map);
|
ret = fsystem->ioctl (fd_tty, GIO_UNIMAP, &screen_unicode_map);
|
||||||
|
|
||||||
if ( ret != 0 )
|
if ( ret != 0 )
|
||||||
return false;
|
return false;
|
||||||
|
@ -612,7 +612,7 @@ FTermLinux::modifier_key& FTermLinux::getModifierKey()
|
||||||
std::memset (&mod_key, 0x00, sizeof(mod_key));
|
std::memset (&mod_key, 0x00, sizeof(mod_key));
|
||||||
|
|
||||||
// TIOCLINUX, subcode = 6 (TIOCL_GETSHIFTSTATE)
|
// TIOCLINUX, subcode = 6 (TIOCL_GETSHIFTSTATE)
|
||||||
if ( fsystem && fsystem->ioControl(0, TIOCLINUX, &subcode) >= 0 )
|
if ( fsystem && fsystem->ioctl(0, TIOCLINUX, &subcode) >= 0 )
|
||||||
{
|
{
|
||||||
if ( subcode & (1 << KG_SHIFT) )
|
if ( subcode & (1 << KG_SHIFT) )
|
||||||
mod_key.shift = true;
|
mod_key.shift = true;
|
||||||
|
@ -676,7 +676,7 @@ int FTermLinux::setScreenFont ( uChar fontdata[], uInt count
|
||||||
|
|
||||||
// font operation
|
// font operation
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsystem->ioControl (fd_tty, KDFONTOP, &font);
|
ret = fsystem->ioctl (fd_tty, KDFONTOP, &font);
|
||||||
|
|
||||||
if ( ret != 0 && errno != ENOSYS && errno != EINVAL )
|
if ( ret != 0 && errno != ENOSYS && errno != EINVAL )
|
||||||
{
|
{
|
||||||
|
@ -713,14 +713,14 @@ int FTermLinux::setUnicodeMap (struct unimapdesc* unimap)
|
||||||
{
|
{
|
||||||
// clear the unicode-to-font table
|
// clear the unicode-to-font table
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsystem->ioControl (fd_tty, PIO_UNIMAPCLR, &advice);
|
ret = fsystem->ioctl (fd_tty, PIO_UNIMAPCLR, &advice);
|
||||||
|
|
||||||
if ( ret != 0 )
|
if ( ret != 0 )
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
// put the new unicode-to-font mapping in kernel
|
// put the new unicode-to-font mapping in kernel
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsystem->ioControl (fd_tty, PIO_UNIMAP, unimap);
|
ret = fsystem->ioctl (fd_tty, PIO_UNIMAP, unimap);
|
||||||
|
|
||||||
if ( ret != 0 )
|
if ( ret != 0 )
|
||||||
advice.advised_hashlevel++;
|
advice.advised_hashlevel++;
|
||||||
|
@ -840,7 +840,7 @@ int FTermLinux::setBlinkAsIntensity (bool enable)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
// Enable access to VGA I/O ports (from 0x3B4 with num = 0x2C)
|
// Enable access to VGA I/O ports (from 0x3B4 with num = 0x2C)
|
||||||
if ( fsystem->ioControl(fd_tty, KDENABIO, 0) < 0 )
|
if ( fsystem->ioctl(fd_tty, KDENABIO, 0) < 0 )
|
||||||
return -1; // error on KDENABIO
|
return -1; // error on KDENABIO
|
||||||
|
|
||||||
if ( enable )
|
if ( enable )
|
||||||
|
@ -849,7 +849,7 @@ int FTermLinux::setBlinkAsIntensity (bool enable)
|
||||||
setAttributeMode (getAttributeMode() | 0x08); // set bit 3
|
setAttributeMode (getAttributeMode() | 0x08); // set bit 3
|
||||||
|
|
||||||
// Disable access to VGA I/O ports
|
// Disable access to VGA I/O ports
|
||||||
if ( fsystem->ioControl(fd_tty, KDDISABIO, 0) < 0 )
|
if ( fsystem->ioctl(fd_tty, KDDISABIO, 0) < 0 )
|
||||||
return -1; // error on KDDISABIO
|
return -1; // error on KDDISABIO
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -869,7 +869,7 @@ bool FTermLinux::setVGAPalette (FColor index, int r, int g, int b)
|
||||||
cmap.color[index].blue = uChar(b);
|
cmap.color[index].blue = uChar(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( fsystem && fsystem->ioControl (0, PIO_CMAP, &cmap) )
|
if ( fsystem && fsystem->ioctl (0, PIO_CMAP, &cmap) )
|
||||||
return false;
|
return false;
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
|
@ -880,7 +880,7 @@ bool FTermLinux::saveVGAPalette()
|
||||||
{
|
{
|
||||||
// Save the current vga color map
|
// Save the current vga color map
|
||||||
|
|
||||||
if ( fsystem && fsystem->ioControl (0, GIO_CMAP, &saved_color_map) )
|
if ( fsystem && fsystem->ioctl (0, GIO_CMAP, &saved_color_map) )
|
||||||
has_saved_palette = false;
|
has_saved_palette = false;
|
||||||
else
|
else
|
||||||
has_saved_palette = true;
|
has_saved_palette = true;
|
||||||
|
@ -898,7 +898,7 @@ bool FTermLinux::resetVGAPalette()
|
||||||
|
|
||||||
if ( has_saved_palette )
|
if ( has_saved_palette )
|
||||||
{
|
{
|
||||||
if ( fsystem->ioControl (0, PIO_CMAP, &saved_color_map) )
|
if ( fsystem->ioctl (0, PIO_CMAP, &saved_color_map) )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -922,7 +922,7 @@ bool FTermLinux::resetVGAPalette()
|
||||||
cmap.color[index].blue = defaultColor[index].blue;
|
cmap.color[index].blue = defaultColor[index].blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( fsystem->ioControl (0, PIO_CMAP, &cmap) )
|
if ( fsystem->ioctl (0, PIO_CMAP, &cmap) )
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@ bool FTermOpenBSD::isBSDConsole()
|
||||||
static kbd_t kbdencoding;
|
static kbd_t kbdencoding;
|
||||||
|
|
||||||
if ( fsystem
|
if ( fsystem
|
||||||
&& fsysten->ioControl(0, WSKBDIO_GETENCODING, &kbdencoding) == 0 )
|
&& fsysten->ioctl(0, WSKBDIO_GETENCODING, &kbdencoding) == 0 )
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
|
@ -92,7 +92,7 @@ bool FTermOpenBSD::saveBSDConsoleEncoding()
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if ( fsystem )
|
if ( fsystem )
|
||||||
ret = fsysten->ioControl (0, WSKBDIO_GETENCODING, &k_encoding);
|
ret = fsysten->ioctl (0, WSKBDIO_GETENCODING, &k_encoding);
|
||||||
|
|
||||||
if ( ret < 0 )
|
if ( ret < 0 )
|
||||||
return false;
|
return false;
|
||||||
|
@ -106,7 +106,7 @@ bool FTermOpenBSD::saveBSDConsoleEncoding()
|
||||||
bool FTermOpenBSD::setBSDConsoleEncoding (kbd_t k_encoding)
|
bool FTermOpenBSD::setBSDConsoleEncoding (kbd_t k_encoding)
|
||||||
{
|
{
|
||||||
if ( fsysten
|
if ( fsysten
|
||||||
&& fsysten->ioControl(0, WSKBDIO_SETENCODING, &k_encoding) < 0 )
|
&& fsysten->ioctl(0, WSKBDIO_SETENCODING, &k_encoding) < 0 )
|
||||||
return false;
|
return false;
|
||||||
else
|
else
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -2797,7 +2797,7 @@ inline void FVTerm::characterFilter (charData*& next_char)
|
||||||
{
|
{
|
||||||
FTerm::characterSub& sub_map = fterm->getCharSubstitutionMap();
|
FTerm::characterSub& sub_map = fterm->getCharSubstitutionMap();
|
||||||
|
|
||||||
if ( sub_map[next_char->encoded_code] )
|
if ( sub_map.find(next_char->encoded_code) != sub_map.end() )
|
||||||
next_char->encoded_code = sub_map[next_char->encoded_code];
|
next_char->encoded_code = sub_map[next_char->encoded_code];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -511,7 +511,6 @@ class FMouseControl
|
||||||
|
|
||||||
// Data Member
|
// Data Member
|
||||||
std::map<FMouse::mouse_type, FMouse*> mouse_protocol{};
|
std::map<FMouse::mouse_type, FMouse*> mouse_protocol{};
|
||||||
std::map<FMouse::mouse_type, FMouse*>::iterator iter{};
|
|
||||||
FPoint zero_point{0, 0};
|
FPoint zero_point{0, 0};
|
||||||
bool use_gpm_mouse{false};
|
bool use_gpm_mouse{false};
|
||||||
bool use_xterm_mouse{false};
|
bool use_xterm_mouse{false};
|
||||||
|
|
|
@ -60,7 +60,7 @@ class FSystem
|
||||||
virtual uChar inPortByte (uShort) = 0;
|
virtual uChar inPortByte (uShort) = 0;
|
||||||
virtual void outPortByte (uChar, uShort) = 0;
|
virtual void outPortByte (uChar, uShort) = 0;
|
||||||
virtual int isTTY (int) = 0;
|
virtual int isTTY (int) = 0;
|
||||||
virtual int ioControl (int, uLong, ...) = 0;
|
virtual int ioctl (int, uLong, ...) = 0;
|
||||||
virtual int open (const char*, int, ...) = 0;
|
virtual int open (const char*, int, ...) = 0;
|
||||||
virtual int close (int) = 0;
|
virtual int close (int) = 0;
|
||||||
virtual FILE* fopen (const char*, const char*) = 0;
|
virtual FILE* fopen (const char*, const char*) = 0;
|
||||||
|
|
|
@ -99,7 +99,7 @@ class FSystemImpl : public FSystem
|
||||||
return ::isatty(fd);
|
return ::isatty(fd);
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual int ioControl (int fd, uLong request, ...)
|
virtual int ioctl (int fd, uLong request, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start (args, request);
|
va_start (args, request);
|
||||||
|
|
|
@ -159,13 +159,6 @@ class FTermDetection final
|
||||||
// Methods
|
// Methods
|
||||||
static void detect();
|
static void detect();
|
||||||
|
|
||||||
// Data Members
|
|
||||||
#if DEBUG
|
|
||||||
static char termtype_256color[256];
|
|
||||||
static char termtype_Answerback[256];
|
|
||||||
static char termtype_SecDA[256];
|
|
||||||
#endif
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Methods
|
// Methods
|
||||||
static void deallocation();
|
static void deallocation();
|
||||||
|
@ -201,6 +194,11 @@ class FTermDetection final
|
||||||
static char* secDA_Analysis_vte (char[]);
|
static char* secDA_Analysis_vte (char[]);
|
||||||
|
|
||||||
// Data Members
|
// Data Members
|
||||||
|
#if DEBUG
|
||||||
|
static char termtype_256color[256];
|
||||||
|
static char termtype_Answerback[256];
|
||||||
|
static char termtype_SecDA[256];
|
||||||
|
#endif
|
||||||
static char termtype[256];
|
static char termtype[256];
|
||||||
static char ttytypename[256];
|
static char ttytypename[256];
|
||||||
static bool decscusr_support;
|
static bool decscusr_support;
|
||||||
|
|
Loading…
Reference in New Issue