summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Udaltsov <svu@gnome.org>2003-11-17 23:32:06 +0000
committerSergey Udaltsov <svu@gnome.org>2003-11-17 23:32:06 +0000
commitf2a0c1b5e5c18ffd383d29ffd330f782616928bb (patch)
tree9d0438326e8ef7dabdeda20bf20b00f7308b9556
parentd3831351c125a4e32f6681a43e7ec4641fbb94ed (diff)
downloadlibxklavier-f2a0c1b5e5c18ffd383d29ffd330f782616928bb.tar.gz
a bit of cleanup
-rw-r--r--libxklavier/xklavier_config.c57
-rw-r--r--libxklavier/xklavier_evt.c10
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 ) );