Use the '_k_session' shortcuts feature for the per-window shortcuts,
as those are definitely not to be handled by kdedglobalaccel besides delivering the event, only KWin can keep track of those. Also add a kconf_update script to dump all the possibly previously created shortcuts that'd block actually using them. svn path=/branches/KDE/4.1/kdebase/workspace/; revision=880850
This commit is contained in:
parent
b17896174f
commit
fe84baef03
5 changed files with 21 additions and 5 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 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( PROGRAMS pluginlibFix.pl kwin3_plugin.pl kwin_focus1.sh kwin_focus2.sh on-off_to_true-false.sh 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 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
|
|
@ -410,7 +410,7 @@ void Workspace::setupWindowShortcutDone( bool ok )
|
|||
|
||||
void Workspace::clientShortcutUpdated( Client* c )
|
||||
{
|
||||
QString key = QString::number( c->window());
|
||||
QString key = QString( "_k_session:%1" ).arg(c->window());
|
||||
QAction* action = client_keys->action( key.toLatin1().constData() );
|
||||
if( !c->shortcut().isEmpty())
|
||||
{
|
||||
|
@ -426,9 +426,7 @@ void Workspace::clientShortcutUpdated( Client* c )
|
|||
action->setEnabled( true );
|
||||
}
|
||||
else
|
||||
{
|
||||
delete action;
|
||||
}
|
||||
}
|
||||
|
||||
void Workspace::clientPopupActivated( QAction *action )
|
||||
|
|
|
@ -579,7 +579,10 @@ void Workspace::removeClient( Client* c, allowed_t )
|
|||
if( client_keys_client == c )
|
||||
setupWindowShortcutDone( false );
|
||||
if( !c->shortcut().isEmpty())
|
||||
{
|
||||
c->setShortcut( QString() ); // remove from client_keys
|
||||
clientShortcutUpdated( c ); // needed, since this is otherwise delayed by setShortcut() and wouldn't run
|
||||
}
|
||||
|
||||
if( c->isDialog())
|
||||
Notify::raise( Notify::TransDelete );
|
||||
|
|
Loading…
Reference in a new issue