terminalfunctions.cc: Refactor out set_if_available()
This commit is contained in:
@@ -282,6 +282,12 @@ static bool *get_DEC_mode( int param, Framebuffer *fb ) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* helper for CSI_DECSM and CSI_DECRM */
|
||||||
|
void set_if_available( bool *mode, bool value )
|
||||||
|
{
|
||||||
|
if ( mode ) { *mode = value; }
|
||||||
|
}
|
||||||
|
|
||||||
/* set private mode */
|
/* set private mode */
|
||||||
void CSI_DECSM( Framebuffer *fb, Dispatcher *dispatch )
|
void CSI_DECSM( Framebuffer *fb, Dispatcher *dispatch )
|
||||||
{
|
{
|
||||||
@@ -289,21 +295,16 @@ void CSI_DECSM( Framebuffer *fb, Dispatcher *dispatch )
|
|||||||
int param = dispatch->getparam( i, 0 );
|
int param = dispatch->getparam( i, 0 );
|
||||||
|
|
||||||
if ( (param == 1000) || (param == 1002) ) {
|
if ( (param == 1000) || (param == 1002) ) {
|
||||||
// clear the other mouse modes before setting this one
|
/* we believe all mouse modes should be set to false
|
||||||
bool *c_mode = get_DEC_mode( 1000, fb );
|
when either of these two modes are enabled */
|
||||||
if ( c_mode ) { *c_mode = false; }
|
/* XXX can we cite something for this? -KJW 15Dec2014 */
|
||||||
*c_mode = get_DEC_mode( 1002, fb );
|
set_if_available( get_DEC_mode( 1000, fb ), false );
|
||||||
if ( c_mode ) { *c_mode = false; }
|
set_if_available( get_DEC_mode( 1002, fb ), false );
|
||||||
*c_mode = get_DEC_mode( 1005, fb );
|
set_if_available( get_DEC_mode( 1005, fb ), false );
|
||||||
if ( c_mode ) { *c_mode = false; }
|
set_if_available( get_DEC_mode( 1006, fb ), false );
|
||||||
*c_mode = get_DEC_mode( 1006, fb );
|
|
||||||
if ( c_mode ) { *c_mode = false; }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool *mode = get_DEC_mode( param, fb );
|
set_if_available( get_DEC_mode( param, fb ), true );
|
||||||
if ( mode ) {
|
|
||||||
*mode = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -311,10 +312,7 @@ void CSI_DECSM( Framebuffer *fb, Dispatcher *dispatch )
|
|||||||
void CSI_DECRM( Framebuffer *fb, Dispatcher *dispatch )
|
void CSI_DECRM( Framebuffer *fb, Dispatcher *dispatch )
|
||||||
{
|
{
|
||||||
for ( int i = 0; i < dispatch->param_count(); i++ ) {
|
for ( int i = 0; i < dispatch->param_count(); i++ ) {
|
||||||
bool *mode = get_DEC_mode( dispatch->getparam( i, 0 ), fb );
|
set_if_available( get_DEC_mode( dispatch->getparam( i, 0 ), fb ), false );
|
||||||
if ( mode ) {
|
|
||||||
*mode = false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user