diff options
author | Sergey Udaltsov <svu@gnome.org> | 2003-11-17 23:32:06 +0000 |
---|---|---|
committer | Sergey Udaltsov <svu@gnome.org> | 2003-11-17 23:32:06 +0000 |
commit | f2a0c1b5e5c18ffd383d29ffd330f782616928bb (patch) | |
tree | 9d0438326e8ef7dabdeda20bf20b00f7308b9556 | |
parent | d3831351c125a4e32f6681a43e7ec4641fbb94ed (diff) | |
download | libxklavier-f2a0c1b5e5c18ffd383d29ffd330f782616928bb.tar.gz |
a bit of cleanup
-rw-r--r-- | libxklavier/xklavier_config.c | 57 | ||||
-rw-r--r-- | libxklavier/xklavier_evt.c | 10 |
2 files changed, 48 insertions, 19 deletions
diff --git a/libxklavier/xklavier_config.c b/libxklavier/xklavier_config.c index 6b37911..c36a76e 100644 --- a/libxklavier/xklavier_config.c +++ b/libxklavier/xklavier_config.c @@ -45,10 +45,8 @@ static XkbRF_RulesPtr rules; static XkbComponentNamesRec componentNames; static char *locale; -static Bool _XklConfigInitialized( ) -{ - return theRegistry.xpathContext != NULL; -} +#define _XklConfigRegistryIsInitialized() \ + ( theRegistry.xpathContext != NULL ) static xmlChar *_XklNodeGetXmlLangAttr( xmlNodePtr nptr ) { @@ -181,7 +179,7 @@ static void _XklConfigEnumSimple( xmlXPathCompExprPtr xpathCompExpr, { xmlXPathObjectPtr xpathObj; - if( !_XklConfigInitialized( ) ) + if( !_XklConfigRegistryIsInitialized( ) ) return; xpathObj = xmlXPathCompiledEval( xpathCompExpr, theRegistry.xpathContext ); if( xpathObj != NULL ) @@ -198,7 +196,7 @@ static void _XklConfigEnumDirect( const char *format, char xpathExpr[1024]; xmlXPathObjectPtr xpathObj; - if( !_XklConfigInitialized( ) ) + if( !_XklConfigRegistryIsInitialized( ) ) return; snprintf( xpathExpr, sizeof xpathExpr, format, value ); xpathObj = xmlXPathEval( xpathExpr, theRegistry.xpathContext ); @@ -219,7 +217,7 @@ static Bool _XklConfigFindObject( const char *format, Bool rv = False; char xpathExpr[1024]; - if( !_XklConfigInitialized( ) ) + if( !_XklConfigRegistryIsInitialized( ) ) return False; snprintf( xpathExpr, sizeof xpathExpr, format, arg1, ptr->name ); @@ -446,20 +444,29 @@ void XklConfigInit( void ) void XklConfigTerm( void ) { if( modelsXPath != NULL ) + { xmlXPathFreeCompExpr( modelsXPath ); + modelsXPath = NULL; + } if( layoutsXPath != NULL ) + { xmlXPathFreeCompExpr( layoutsXPath ); + layoutsXPath = NULL; + } if( optionGroupsXPath != NULL ) + { xmlXPathFreeCompExpr( optionGroupsXPath ); + optionGroupsXPath = NULL; + } } Bool XklConfigLoadRegistry( void ) { struct stat statBuf; - const char* fileName = XML_CFG_PATH; - if ( stat( XML_CFG_PATH, &statBuf ) != 0 ) - fileName = XML_CFG_FALLBACK_PATH; + const char *fileName = XML_CFG_PATH; + if( stat( XML_CFG_PATH, &statBuf ) != 0 ) + fileName = XML_CFG_FALLBACK_PATH; theRegistry.doc = xmlParseFile( fileName ); if( theRegistry.doc == NULL ) @@ -468,15 +475,17 @@ Bool XklConfigLoadRegistry( void ) _xklLastErrorMsg = "Could not parse XKB configuration registry"; } else theRegistry.xpathContext = xmlXPathNewContext( theRegistry.doc ); - return _XklConfigInitialized( ); + return _XklConfigRegistryIsInitialized( ); } void XklConfigFreeRegistry( void ) { - if( _XklConfigInitialized( ) ) + if( _XklConfigRegistryIsInitialized( ) ) { xmlXPathFreeContext( theRegistry.xpathContext ); xmlFreeDoc( theRegistry.doc ); + theRegistry.xpathContext = NULL; + theRegistry.doc = NULL; } } @@ -503,7 +512,7 @@ void XklConfigEnumOptionGroups( GroupProcessFunc func, void *userData ) xmlXPathObjectPtr xpathObj; int i; - if( !_XklConfigInitialized( ) ) + if( !_XklConfigRegistryIsInitialized( ) ) return; xpathObj = xmlXPathCompiledEval( optionGroupsXPath, theRegistry.xpathContext ); @@ -611,6 +620,22 @@ Bool XklConfigActivate( const XklConfigRecPtr data, XkbDescModifierFunc fun, void *userData ) { Bool rv = False; +#if 0 + { + int i; + XklDebug( 150, "New model: [%s]\n", data->model ); + XklDebug( 150, "New layouts: %p\n", data->layouts ); + for( i = data->numLayouts; --i >= 0; ) + XklDebug( 150, "New layout[%d]: [%s]\n", i, data->layouts[i] ); + XklDebug( 150, "New variants: %p\n", data->variants ); + for( i = data->numVariants; --i >= 0; ) + XklDebug( 150, "New variant[%d]: [%s]\n", i, data->variants[i] ); + XklDebug( 150, "New options: %p\n", data->options ); + for( i = data->numOptions; --i >= 0; ) + XklDebug( 150, "New option[%d]: [%s]\n", i, data->options[i] ); + } +#endif + if( _XklConfigPrepareBeforeKbd( data ) ) { XkbDescPtr xkb; @@ -626,12 +651,6 @@ Bool XklConfigActivate( const XklConfigRecPtr data, XkbDescModifierFunc fun, _XklApplyFun2XkbDesc( xkb, fun, userData, True ); #if 0 XklDumpXkbDesc( "config.xkb", xkb ); - int i; - XklDebug( 150, "New model: [%s]\n", data->model ); - XklDebug( 150, "New layout: [%s]\n", data->layout ); - XklDebug( 150, "New variant: [%s]\n", data->variant ); - for( i = data->numOptions; --i >= 0; ) - XklDebug( 150, "New option[%d]: [%s]\n", i, data->options[i] ); #endif if( XklSetNamesProp diff --git a/libxklavier/xklavier_evt.c b/libxklavier/xklavier_evt.c index fe405ba..243dd68 100644 --- a/libxklavier/xklavier_evt.c +++ b/libxklavier/xklavier_evt.c @@ -234,6 +234,16 @@ void _XklFocusInEvHandler( XFocusChangeEvent * fev ) if( _xklCurClient != appWin ) { Bool transparent; + XklState tmpState; + + /** + * For fast mouse movements - the state is probably not updated yet + * (because of the group change notification being late). + * so we'll enforce the update. + */ + if( XklGetState( _xklCurClient, &tmpState ) ) + _xklCurState = tmpState; + _xklCurClient = appWin; XklDebug( 150, "CurClient:changed to " WINID_FORMAT ", '%s'\n", _xklCurClient, _XklGetDebugWindowTitle( _xklCurClient ) ); |