--- kdebase-3.5.8/kdesktop/lock/lockdlg.cc~ 2007-05-14 11:55:44 +0400 +++ kdebase-3.5.8/kdesktop/lock/lockdlg.cc 2007-11-26 16:42:25 +0300 @@ -140,6 +140,10 @@ PasswordDlg::PasswordDlg(LockProcess *pa greet->start(); DCOPRef kxkb("kxkb", "kxkb"); + if( kxkb.isNull() || !kxkb.call("getCurrentLayout").isValid() ) { + kxkb.clear(); + kxkb.setRef("kkbswitch", "KBSwitchIntf"); + } if( !kxkb.isNull() ) { layoutsList = kxkb.call("getLayoutsList"); QString currentLayout = kxkb.call("getCurrentLayout"); @@ -171,7 +175,17 @@ void PasswordDlg::layoutClicked() currLayout = layoutsList.begin(); DCOPRef kxkb("kxkb", "kxkb"); - setLayoutText( kxkb.call("setLayout", *currLayout) ? *currLayout : "err" ); + bool ok; + if( !kxkb.isNull() ) { + ok = kxkb.call("setLayout", *currLayout); + if( !ok ) + { + kxkb.clear(); + kxkb.setRef("kkbswitch", "KBSwitchIntf"); + ok = kxkb.call("setLayout", *currLayout); + } + } + setLayoutText( ok ? *currLayout : "err" ); }