[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-core-devel
Subject: [Patch] Context menus with KStdAccell (was: CTRL+Y as shortcut for
From: André_Wöbbeking <Woebbeking () onlinehome ! de>
Date: 2005-07-03 15:37:18
Message-ID: 200507031737.18418.Woebbeking () onlinehome ! de
[Download RAW message or body]
Hi,
can I commit the attached patch? It fixes some kdeui widgets to use
KStdAccel for the shortcuts in their context menus. So we've
- CTRL+SHIFT+Z for redo AND
- CTRL+A for select all.
Some apps (i.e. KMail) use the deprecated KEdit which even hardcode
CTRL+Y to paste (yank) and CTRL+K to cut (kill) but display CTRL+Y for
redo what is definitely a bug.
Cheers,
André
["accel.diff" (text/x-diff)]
Index: kdelibs/kdeui/ktextbrowser.cpp
===================================================================
--- kdelibs/kdeui/ktextbrowser.cpp (revision 428743)
+++ kdelibs/kdeui/ktextbrowser.cpp (working copy)
@@ -21,6 +21,7 @@
#include <qpopupmenu.h>
#include <kapplication.h>
#include <kglobalsettings.h>
+#include <kstdaccel.h>
#include <ktextbrowser.h>
#include <kcursor.h>
#include <kurl.h>
@@ -120,20 +121,31 @@
QPopupMenu *KTextBrowser::createPopupMenu( const QPoint & pos )
{
- enum { IdUndo, IdRedo, IdSep1, IdCut, IdCopy, IdPaste, IdClear, IdSep2, IdSelectAll };
-
QPopupMenu *popup = QTextBrowser::createPopupMenu( pos );
- if ( isReadOnly() )
- popup->changeItem( popup->idAt(0), SmallIconSet("editcopy"), popup->text( popup->idAt(0) ) );
+ const int id = popup->idAt(0);
+ if ( isReadOnly() ) {
+ enum { IdCopy, IdSelectAll };
+
+ popup->changeItem( id -IdCopy, SmallIconSet("editcopy"), popup->text( id - IdCopy ) );
+ popup->setAccel( KStdAccel::copy(), id - IdCopy );
+ popup->setAccel( KStdAccel::selectAll(), id - IdSelectAll );
+ }
else {
- int id = popup->idAt(0);
+ enum { IdUndo, IdRedo, IdSep1, IdCut, IdCopy, IdPaste, IdClear, IdSep2, IdSelectAll };
+
popup->changeItem( id - IdUndo, SmallIconSet("undo"), popup->text( id - IdUndo) );
popup->changeItem( id - IdRedo, SmallIconSet("redo"), popup->text( id - IdRedo) );
popup->changeItem( id - IdCut, SmallIconSet("editcut"), popup->text( id - IdCut) );
popup->changeItem( id - IdCopy, SmallIconSet("editcopy"), popup->text( id - IdCopy) );
popup->changeItem( id - IdPaste, SmallIconSet("editpaste"), popup->text( id - IdPaste) );
popup->changeItem( id - IdClear, SmallIconSet("editclear"), popup->text( id - IdClear) );
+ popup->setAccel( KStdAccel::undo(), id - IdUndo );
+ popup->setAccel( KStdAccel::redo(), id - IdRedo );
+ popup->setAccel( KStdAccel::cut(), id - IdCut );
+ popup->setAccel( KStdAccel::copy(), id - IdCopy );
+ popup->setAccel( KStdAccel::paste(), id - IdPaste );
+ popup->setAccel( KStdAccel::selectAll(), id - IdSelectAll );
}
return popup;
Index: kdelibs/kdeui/klineedit.cpp
===================================================================
--- kdelibs/kdeui/klineedit.cpp (revision 428743)
+++ kdelibs/kdeui/klineedit.cpp (working copy)
@@ -840,13 +840,19 @@
QPopupMenu *popup = QLineEdit::createPopupMenu();
- int id = popup->idAt(0);
- popup->changeItem( id - IdUndo, SmallIconSet("undo"), popup->text( id - IdUndo) );
- popup->changeItem( id - IdRedo, SmallIconSet("redo"), popup->text( id - IdRedo) );
- popup->changeItem( id - IdCut, SmallIconSet("editcut"), popup->text( id - IdCut) );
- popup->changeItem( id - IdCopy, SmallIconSet("editcopy"), popup->text( id - IdCopy) );
- popup->changeItem( id - IdPaste, SmallIconSet("editpaste"), popup->text( id - IdPaste) );
- popup->changeItem( id - IdClear, SmallIconSet("editclear"), popup->text( id - IdClear) );
+ const int id = popup->idAt(0);
+ popup->changeItem( id - IdUndo, SmallIconSet("undo"), popup->text( id - IdUndo) );
+ popup->changeItem( id - IdRedo, SmallIconSet("redo"), popup->text( id - IdRedo) );
+ popup->changeItem( id - IdCut, SmallIconSet("editcut"), popup->text( id - IdCut) );
+ popup->changeItem( id - IdCopy, SmallIconSet("editcopy"), popup->text( id - IdCopy) );
+ popup->changeItem( id - IdPaste, SmallIconSet("editpaste"), popup->text( id - IdPaste) );
+ popup->changeItem( id - IdClear, SmallIconSet("editclear"), popup->text( id - IdClear) );
+ popup->setAccel( KStdAccel::undo(), id - IdUndo );
+ popup->setAccel( KStdAccel::redo(), id - IdRedo );
+ popup->setAccel( KStdAccel::cut(), id - IdCut );
+ popup->setAccel( KStdAccel::copy(), id - IdCopy );
+ popup->setAccel( KStdAccel::paste(), id - IdPaste );
+ popup->setAccel( KStdAccel::selectAll(), id - IdSelectAll );
// If a completion object is present and the input
// widget is not read-only, show the Text Completion
Index: kdelibs/kdeui/ktextedit.cpp
===================================================================
--- kdelibs/kdeui/ktextedit.cpp (revision 428743)
+++ kdelibs/kdeui/ktextedit.cpp (working copy)
@@ -212,21 +212,32 @@
QPopupMenu *KTextEdit::createPopupMenu( const QPoint &pos )
{
- enum { IdUndo, IdRedo, IdSep1, IdCut, IdCopy, IdPaste, IdClear, IdSep2, IdSelectAll };
-
QPopupMenu *menu = QTextEdit::createPopupMenu( pos );
- if ( isReadOnly() )
- menu->changeItem( menu->idAt(0), SmallIconSet("editcopy"), menu->text( menu->idAt(0) ) );
+ int id = menu->idAt(0);
+ if ( isReadOnly() ) {
+ enum { IdCopy, IdSelectAll };
+
+ menu->changeItem( id -IdCopy, SmallIconSet("editcopy"), menu->text( menu->idAt(0) ) );
+ menu->setAccel( KStdAccel::copy(), id - IdCopy );
+ menu->setAccel( KStdAccel::selectAll(), id - IdSelectAll );
+ }
else {
- int id = menu->idAt(0);
- menu->changeItem( id - IdUndo, SmallIconSet("undo"), menu->text( id - IdUndo) );
- menu->changeItem( id - IdRedo, SmallIconSet("redo"), menu->text( id - IdRedo) );
- menu->changeItem( id - IdCut, SmallIconSet("editcut"), menu->text( id - IdCut) );
- menu->changeItem( id - IdCopy, SmallIconSet("editcopy"), menu->text( id - IdCopy) );
- menu->changeItem( id - IdPaste, SmallIconSet("editpaste"), menu->text( id - IdPaste) );
- menu->changeItem( id - IdClear, SmallIconSet("editclear"), menu->text( id - IdClear) );
+ enum { IdUndo, IdRedo, IdSep1, IdCut, IdCopy, IdPaste, IdClear, IdSep2, IdSelectAll };
+ menu->changeItem( id - IdUndo, SmallIconSet("undo"), menu->text( id - IdUndo) );
+ menu->changeItem( id - IdRedo, SmallIconSet("redo"), menu->text( id - IdRedo) );
+ menu->changeItem( id - IdCut, SmallIconSet("editcut"), menu->text( id - IdCut) );
+ menu->changeItem( id - IdCopy, SmallIconSet("editcopy"), menu->text( id - IdCopy) );
+ menu->changeItem( id - IdPaste, SmallIconSet("editpaste"), menu->text( id - IdPaste) );
+ menu->changeItem( id - IdClear, SmallIconSet("editclear"), menu->text( id - IdClear) );
+ menu->setAccel( KStdAccel::undo(), id - IdUndo );
+ menu->setAccel( KStdAccel::redo(), id - IdRedo );
+ menu->setAccel( KStdAccel::cut(), id - IdCut );
+ menu->setAccel( KStdAccel::copy(), id - IdCopy );
+ menu->setAccel( KStdAccel::paste(), id - IdPaste );
+ menu->setAccel( KStdAccel::selectAll(), id - IdSelectAll );
+
menu->insertSeparator();
id = menu->insertItem( SmallIconSet( "spellcheck" ), i18n( "Check Spelling..." ),
this, SLOT( checkSpelling() ) );
Index: kdelibs/kdeui/keditcl2.cpp
===================================================================
--- kdelibs/kdeui/keditcl2.cpp (revision 428743)
+++ kdelibs/kdeui/keditcl2.cpp (working copy)
@@ -39,6 +39,7 @@
#include <klocale.h>
#include <kdebug.h>
#include <kiconloader.h>
+#include <kstdaccel.h>
#include "keditcl.h"
@@ -1107,20 +1108,31 @@
QPopupMenu *KEdit::createPopupMenu( const QPoint& pos )
{
- enum { IdUndo, IdRedo, IdSep1, IdCut, IdCopy, IdPaste, IdClear, IdSep2, IdSelectAll };
+ QPopupMenu *menu = QMultiLineEdit::createPopupMenu( pos );
- QPopupMenu *menu = QMultiLineEdit::createPopupMenu( pos );
-
- if ( isReadOnly() )
- menu->changeItem( menu->idAt(0), SmallIconSet("editcopy"), menu->text( menu->idAt(0) ) );
+ const int id = menu->idAt(0);
+ if ( isReadOnly() ) {
+ enum { IdCopy, IdSelectAll };
+
+ menu->changeItem( id - IdCopy, SmallIconSet("editcopy"), menu->text( id - IdCopy) );
+ menu->setAccel( KStdAccel::copy(), id - IdCopy );
+ menu->setAccel( KStdAccel::selectAll(), id - IdSelectAll );
+ }
else {
- int id = menu->idAt(0);
- menu->changeItem( id - IdUndo, SmallIconSet("undo"), menu->text( id - IdUndo) );
- menu->changeItem( id - IdRedo, SmallIconSet("redo"), menu->text( id - IdRedo) );
- menu->changeItem( id - IdCut, SmallIconSet("editcut"), menu->text( id - IdCut) );
- menu->changeItem( id - IdCopy, SmallIconSet("editcopy"), menu->text( id - IdCopy) );
- menu->changeItem( id - IdPaste, SmallIconSet("editpaste"), menu->text( id - IdPaste) );
- menu->changeItem( id - IdClear, SmallIconSet("editclear"), menu->text( id - IdClear) );
+ enum { IdUndo, IdRedo, IdSep1, IdCut, IdCopy, IdPaste, IdClear, IdSep2, IdSelectAll };
+
+ menu->changeItem( id - IdUndo, SmallIconSet("undo"), menu->text( id - IdUndo) );
+ menu->changeItem( id - IdRedo, SmallIconSet("redo"), menu->text( id - IdRedo) );
+ menu->changeItem( id - IdCut, SmallIconSet("editcut"), menu->text( id - IdCut) );
+ menu->changeItem( id - IdCopy, SmallIconSet("editcopy"), menu->text( id - IdCopy) );
+ menu->changeItem( id - IdPaste, SmallIconSet("editpaste"), menu->text( id - IdPaste) );
+ menu->changeItem( id - IdClear, SmallIconSet("editclear"), menu->text( id - IdClear) );
+ menu->setAccel( KStdAccel::undo(), id - IdUndo );
+ menu->setAccel( KStdAccel::redo(), id - IdRedo );
+ menu->setAccel( KStdAccel::cut(), id - IdCut );
+ menu->setAccel( KStdAccel::copy(), id - IdCopy );
+ menu->setAccel( KStdAccel::paste(), id - IdPaste );
+ menu->setAccel( KStdAccel::selectAll(), id - IdSelectAll );
}
return menu;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic