From f7c52e116b897416344bd00f2dcc061738f73b2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= Date: Tue, 8 Jan 2008 16:23:56 +0000 Subject: [PATCH] Shortcut for clearing only the last mark. svn path=/trunk/KDE/kdebase/workspace/; revision=758641 --- effects/mousemark.cpp | 25 ++++++++++++++++++++++++- effects/mousemark.h | 1 + effects/mousemark_config.cpp | 3 +++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/effects/mousemark.cpp b/effects/mousemark.cpp index 0cfa75706e..bcfd4a4313 100644 --- a/effects/mousemark.cpp +++ b/effects/mousemark.cpp @@ -49,9 +49,13 @@ MouseMarkEffect::MouseMarkEffect() { KActionCollection* actionCollection = new KActionCollection( this ); KAction* a = static_cast< KAction* >( actionCollection->addAction( "ClearMouseMarks" )); - a->setText( i18n( "Clear Mouse Marks" )); + a->setText( i18n( "Clear All Mouse Marks" )); a->setGlobalShortcut( KShortcut( Qt::SHIFT + Qt::META + Qt::Key_F11 )); connect( a, SIGNAL( triggered( bool )), this, SLOT( clear())); + a = static_cast< KAction* >( actionCollection->addAction( "ClearLastMouseMark" )); + a->setText( i18n( "Clear Last Mouse Mark" )); + a->setGlobalShortcut( KShortcut( Qt::SHIFT + Qt::META + Qt::Key_F12 )); + connect( a, SIGNAL( triggered( bool )), this, SLOT( clearLast())); KConfigGroup conf = EffectsHandler::effectConfig("MouseMark"); width = conf.readEntry( "LineWidth", 3 ); @@ -104,6 +108,7 @@ void MouseMarkEffect::mouseChanged( const QPoint& pos, const QPoint&, } if( arrow_start != NULL_POINT ) return; + // TODO the shortcuts now trigger this right before they're activated if( modifiers == ( Qt::META | Qt::SHIFT )) // activated { if( drawing.isEmpty()) @@ -131,6 +136,24 @@ void MouseMarkEffect::clear() effects->addRepaintFull(); } +void MouseMarkEffect::clearLast() + { + if( arrow_start != NULL_POINT ) + { + arrow_start = NULL_POINT; + } + else if( !drawing.isEmpty()) + { + drawing.clear(); + effects->addRepaintFull(); + } + else if( !marks.isEmpty()) + { + marks.pop_back(); + effects->addRepaintFull(); + } + } + MouseMarkEffect::Mark MouseMarkEffect::createArrow( QPoint arrow_start, QPoint arrow_end ) { Mark ret; diff --git a/effects/mousemark.h b/effects/mousemark.h index 5b12f40dbf..0aaa3ac195 100644 --- a/effects/mousemark.h +++ b/effects/mousemark.h @@ -39,6 +39,7 @@ class MouseMarkEffect Qt::KeyboardModifiers modifiers, Qt::KeyboardModifiers oldmodifiers ); private slots: void clear(); + void clearLast(); private: typedef QVector< QPoint > Mark; static Mark createArrow( QPoint arrow_start, QPoint arrow_end ); diff --git a/effects/mousemark_config.cpp b/effects/mousemark_config.cpp index ab5e7bdb22..58ea7d26b4 100644 --- a/effects/mousemark_config.cpp +++ b/effects/mousemark_config.cpp @@ -67,6 +67,9 @@ MouseMarkEffectConfig::MouseMarkEffectConfig(QWidget* parent, const QVariantList KAction* a = static_cast< KAction* >( m_actionCollection->addAction( "ClearMouseMarks" )); a->setText( i18n( "Clear Mouse Marks" )); a->setGlobalShortcut( KShortcut( Qt::SHIFT + Qt::META + Qt::Key_F11 )); + a = static_cast< KAction* >( m_actionCollection->addAction( "ClearLastMouseMark" )); + a->setText( i18n( "Clear Last Mouse Mark" )); + a->setGlobalShortcut( KShortcut( Qt::SHIFT + Qt::META + Qt::Key_F12 )); m_ui->editor->addCollection(m_actionCollection); load();