vcl/inc/unx/saldisp.hxx             |    2 
 vcl/unx/generic/app/keysymnames.cxx |   90 ------------------------------------
 vcl/unx/generic/app/saldisp.cxx     |   32 ++++++------
 vcl/unx/gtk/app/gtkdata.cxx         |    9 ---
 4 files changed, 17 insertions(+), 116 deletions(-)

New commits:
commit 8d9e2d9a211f710e91ac7c607fea25895282d245
Author: Thomas Arnhold <tho...@arnhold.org>
Date:   Fri Jan 27 16:51:04 2012 +0100

    lp#818761: Remove SalDisplay::GetKeyboardName
    
    This method seems to be useless. The return value (keyboard name) isn't
    used at any point. And I don't see any point in this method where some
    implicit call is done to refresh mappings...
    (cherry picked from commit 04b9c2f633f0be1b676933943bdd0b1dc58b5471)
    
    additional notes for the cherry-pick to libreoffice-3-5:
    
    also removing the one remaining call of it in
    
     SalDisplay::GetKeyNameFromKeySym( KeySym nKeySym ) const
    
    which is the only user. All of this is removed dead code on LibreOffice
    3.6/master, see also commit 2233aa52da14ec85331aee1163b885fe9a9fb507.
    Doing the same on 3.5 to prevent the lp#818761 crasher seems sane.
    
    cleared the body of signalKeysChanged to prevent an unconditional compiler
    warning
    
    Signed-off-by: Bjoern Michaelsen <bjoern.michael...@canonical.com>

diff --git a/vcl/inc/unx/saldisp.hxx b/vcl/inc/unx/saldisp.hxx
index 4de2b33..83bf9ea 100644
--- a/vcl/inc/unx/saldisp.hxx
+++ b/vcl/inc/unx/saldisp.hxx
@@ -321,7 +321,6 @@ protected:
     KeySym          nShiftKeySym_;      // first shift modifier
     KeySym          nCtrlKeySym_;       // first control modifier
     KeySym          nMod1KeySym_;       // first mod1 modifier
-    rtl::OString m_aKeyboardName;
 
     vcl_sal::WMAdaptor* m_pWMAdaptor;
 
@@ -422,7 +421,6 @@ public:
     { mpInputMethod = pInputMethod; }
     void            SetKbdExtension(SalI18N_KeyboardExtension *pKbdExtension)
     { mpKbdExtension = pKbdExtension; }
-    const char*     GetKeyboardName( bool bRefresh = false );
     ::vcl_sal::WMAdaptor* getWMAdaptor() const { return m_pWMAdaptor; }
     bool            IsXinerama() const { return m_bXinerama; }
     const std::vector< Rectangle >& GetXineramaScreens() const { return 
m_aXineramaScreens; }
diff --git a/vcl/unx/generic/app/keysymnames.cxx 
b/vcl/unx/generic/app/keysymnames.cxx
index 4569091..fa1eafd 100644
--- a/vcl/unx/generic/app/keysymnames.cxx
+++ b/vcl/unx/generic/app/keysymnames.cxx
@@ -579,94 +579,4 @@ static const keyboard_layout type6_layout[] =
 #include <stdio.h>
 #endif
 
-const char* SalDisplay::GetKeyboardName( bool bRefresh )
-{
-    if (bRefresh || m_aKeyboardName.isEmpty())
-    {
-#if defined(SOLARIS)
-        if( IsLocal() )
-        {
-            int kbd = open( "/dev/kbd", O_RDONLY );
-            if( kbd >= 0 )
-            {
-                int kbd_type = 0;
-                if( ! ioctl( kbd, KIOCTYPE, &kbd_type ) )
-                {
-                    int kbd_layout = 0;
-                    if( ! ioctl( kbd, KIOCLAYOUT, &kbd_layout ) )
-                    {
-                        const keyboard_layout *p_layout = NULL;
-                        switch( kbd_type )
-                        {
-                            case KB_KLUNK: p_layout = type0_layout;   break;
-                            case KB_SUN3:  p_layout = type3_layout;   break;
-                            case KB_SUN4:  p_layout = type4_layout;   break;
-                            case KB_USB:   p_layout = type6_layout;   break;
-                            case KB_PC:    p_layout = type101_layout; break;
-                        }
-
-                        if( p_layout )
-                        {
-                            while( p_layout->n_layout != -1 )
-                            {
-                                if ( p_layout->n_layout == kbd_layout )
-                                {
-                                    m_aKeyboardName = p_layout->p_description;
-                                    break;
-                                }
-                                p_layout++;
-                            }
-                        }
-                    }
-                }
-                close(kbd);
-            }
-        }
-#elif !defined(AIX)
-        int opcode, event, error;
-        int major = XkbMajorVersion, minor = XkbMinorVersion;
-        if( XkbQueryExtension( GetDisplay(), &opcode, &event,&error, &major, 
&minor ) )
-        {
-            XkbDescPtr pXkbDesc = NULL;
-            // try X keyboard extension
-            if( (pXkbDesc = XkbGetKeyboard( GetDisplay(), 
XkbAllComponentsMask, XkbUseCoreKbd )) )
-            {
-                const char* pAtom = NULL;
-                if( pXkbDesc->names->groups[0] )
-                {
-                    pAtom = XGetAtomName( GetDisplay(), 
pXkbDesc->names->groups[0] );
-                    m_aKeyboardName = pAtom;
-                    XFree( (void*)pAtom );
-                }
-                else
-                    m_aKeyboardName = "<unknown keyboard>";
-#if OSL_DEBUG_LEVEL > 1
-#define PRINT_ATOM( x ) { if( pXkbDesc->names->x ) { pAtom = XGetAtomName( 
GetDisplay(), pXkbDesc->names->x ); fprintf( stderr, "%s: %s\n", #x, pAtom ); 
XFree( (void*)pAtom ); } else fprintf( stderr, "%s: <nil>\n", #x ); }
-
-                PRINT_ATOM( keycodes );
-                PRINT_ATOM( geometry );
-                PRINT_ATOM( symbols );
-                PRINT_ATOM( types );
-                PRINT_ATOM( compat );
-                PRINT_ATOM( phys_symbols );
-
-#define PRINT_ATOM_2( x ) { if( pXkbDesc->names->x[i] ) { pAtom = 
XGetAtomName( GetDisplay(), pXkbDesc->names->x[i] ); fprintf( stderr, "%s[%d]: 
%s\n", #x, i, pAtom ); XFree( (void*)pAtom ); } else fprintf( stderr, "%s[%d]: 
<nil>\n", #x, i ); }
-                int i;
-                for( i = 0; i < XkbNumVirtualMods; i++ )
-                    PRINT_ATOM_2( vmods );
-                for( i = 0; i < XkbNumIndicators; i++ )
-                    PRINT_ATOM_2( indicators );
-                for( i = 0; i < XkbNumKbdGroups; i++ )
-                    PRINT_ATOM_2( groups );
-#endif
-                XkbFreeKeyboard( pXkbDesc, XkbAllComponentsMask, True );
-            }
-        }
-#endif
-        if (m_aKeyboardName.isEmpty())
-            m_aKeyboardName = "<unknown keyboard>";
-    }
-    return m_aKeyboardName.getStr();
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/generic/app/saldisp.cxx b/vcl/unx/generic/app/saldisp.cxx
index 1f3f0d0..33f94b2 100644
--- a/vcl/unx/generic/app/saldisp.cxx
+++ b/vcl/unx/generic/app/saldisp.cxx
@@ -947,16 +947,20 @@ rtl::OUString SalDisplay::GetKeyNameFromKeySym( KeySym 
nKeySym ) const
             aRet = rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "???" ) );
         else
         {
-            aRet = ::vcl_sal::getKeysymReplacementName( 
const_cast<SalDisplay*>(this)->GetKeyboardName(), nKeySym );
-            if( aRet.isEmpty() )
-            {
-                const char *pString = XKeysymToString( nKeySym );
-                int n = strlen( pString );
-                if( n > 2 && pString[n-2] == '_' )
-                    aRet = rtl::OUString( pString, n-2, 
RTL_TEXTENCODING_ISO_8859_1 );
-                else
-                    aRet = rtl::OUString( pString, n, 
RTL_TEXTENCODING_ISO_8859_1 );
-            }
+            // lp#818761: removing the problematic call to GetKeyboardName() as
+            // getKeysymReplacementName only provides the name of the key named
+            // as given by the l10n of the _keyboard_ (not the locale) e.g. a
+            // german keyboard would name "Ctrl" instead as "Strg". Assuming
+            // this change to be safe as getKeysymReplacementName falls back to
+            // English names anyway.
+            // this code is completely removed on master/3.6 anyway, see
+            // commit 2233aa52da14ec85331aee1163b885fe9a9fb507
+            const char *pString = XKeysymToString( nKeySym );
+            int n = strlen( pString );
+            if( n > 2 && pString[n-2] == '_' )
+                aRet = rtl::OUString( pString, n-2, 
RTL_TEXTENCODING_ISO_8859_1 );
+            else
+                aRet = rtl::OUString( pString, n, RTL_TEXTENCODING_ISO_8859_1 
);
         }
     }
     return aRet;
@@ -2166,14 +2170,10 @@ long SalX11Display::Dispatch( XEvent *pEvent )
             }
             break;
         case MappingNotify:
-            if( MappingKeyboard == pEvent->xmapping.request ||
-                MappingModifier == pEvent->xmapping.request )
+            if( MappingModifier == pEvent->xmapping.request )
             {
                 XRefreshKeyboardMapping( &pEvent->xmapping );
-                if( MappingModifier == pEvent->xmapping.request )
-                    ModifierMapping();
-                if( MappingKeyboard == pEvent->xmapping.request ) // refresh 
mapping
-                    GetKeyboardName( true );
+                ModifierMapping();
             }
             break;
         case ButtonPress:
diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx
index 5a74e1c..af4f670 100644
--- a/vcl/unx/gtk/app/gtkdata.cxx
+++ b/vcl/unx/gtk/app/gtkdata.cxx
@@ -126,15 +126,8 @@ GtkSalDisplay::~GtkSalDisplay()
 
 extern "C" {
 
-void signalKeysChanged( GdkKeymap*, gpointer data )
+void signalKeysChanged( GdkKeymap*, gpointer )
 {
-    GtkSalDisplay* pDisp = (GtkSalDisplay*)data;
-#if !GTK_CHECK_VERSION(3,0,0)
-    pDisp->GetKeyboardName(true);
-#else
-    (void)pDisp;
-#warning FIXME: impl. / check signalKeysChanged ...
-#endif
 }
 
 void signalScreenSizeChanged( GdkScreen* pScreen, gpointer data )
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to