Add a kconf_update script to dump all the possibly previously created
shortcuts that'd block actually using them, and make sure KAction's used for those are properly deleted (was broken by avoiding deadlocks with kdedglobalaccel by delaying shortcut handling, which is then not done when destroying the client). svn path=/trunk/KDE/kdebase/workspace/; revision=880852
This commit is contained in:
commit
c22847c5a7
4 changed files with 20 additions and 2 deletions
|
@ -28,6 +28,6 @@ install(TARGETS kwin_update_default_rules DESTINATION ${LIB_INSTALL_DIR}/kconf_u
|
||||||
|
|
||||||
install( FILES fsp_workarounds_1.kwinrules DESTINATION ${DATA_INSTALL_DIR}/kwin/default_rules )
|
install( FILES fsp_workarounds_1.kwinrules DESTINATION ${DATA_INSTALL_DIR}/kwin/default_rules )
|
||||||
install( FILES pop.wav DESTINATION ${SOUND_INSTALL_DIR} )
|
install( FILES pop.wav DESTINATION ${SOUND_INSTALL_DIR} )
|
||||||
install( FILES kwin.upd kwinsticky.upd kwiniconify.upd kwin3_plugin.upd kwin_focus1.upd kwinupdatewindowsettings.upd kwin_focus2.upd kwin_fsp_workarounds_1.upd kwin_on_off.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )
|
install( FILES kwin.upd kwinsticky.upd kwiniconify.upd kwin3_plugin.upd kwin_focus1.upd kwinupdatewindowsettings.upd kwin_focus2.upd kwin_fsp_workarounds_1.upd kwin_on_off.upd kwin_window_shortcuts.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )
|
||||||
install( PROGRAMS pluginlibFix.pl kwin3_plugin.pl kwin_focus1.sh kwin_focus2.sh on-off_to_true-false.sh DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )
|
install( PROGRAMS pluginlibFix.pl kwin3_plugin.pl kwin_focus1.sh kwin_focus2.sh on-off_to_true-false.sh kwin_window_shortcuts.sh DESTINATION ${KCONF_UPDATE_INSTALL_DIR} )
|
||||||
|
|
||||||
|
|
10
data/kwin_window_shortcuts.sh
Normal file
10
data/kwin_window_shortcuts.sh
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
#! /bin/sh
|
||||||
|
# remove <number>=<shortcuts> lines for per-window shortcuts that are not supposed to be saved
|
||||||
|
while read line; do
|
||||||
|
if echo "$line" | grep '^[0-9]\+=' >/dev/null 2>/dev/null; then
|
||||||
|
key=`echo "$line" | sed 's/^\([0-9]\+\)=.*$/\1/'`
|
||||||
|
echo '# DELETE [kwin]'$key
|
||||||
|
else
|
||||||
|
echo "$line"
|
||||||
|
fi
|
||||||
|
done
|
5
data/kwin_window_shortcuts.upd
Normal file
5
data/kwin_window_shortcuts.upd
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
Id=kde414
|
||||||
|
File=kglobalshortcutsrc
|
||||||
|
Group=kwin
|
||||||
|
Options=overwrite
|
||||||
|
Script=kwin_window_shortcuts.sh,sh
|
|
@ -583,7 +583,10 @@ void Workspace::removeClient( Client* c, allowed_t )
|
||||||
if( client_keys_client == c )
|
if( client_keys_client == c )
|
||||||
setupWindowShortcutDone( false );
|
setupWindowShortcutDone( false );
|
||||||
if( !c->shortcut().isEmpty())
|
if( !c->shortcut().isEmpty())
|
||||||
|
{
|
||||||
c->setShortcut( QString() ); // remove from client_keys
|
c->setShortcut( QString() ); // remove from client_keys
|
||||||
|
clientShortcutUpdated( c ); // needed, since this is otherwise delayed by setShortcut() and wouldn't run
|
||||||
|
}
|
||||||
|
|
||||||
if( c->isDialog())
|
if( c->isDialog())
|
||||||
Notify::raise( Notify::TransDelete );
|
Notify::raise( Notify::TransDelete );
|
||||||
|
|
Loading…
Reference in a new issue