diff --git a/modules/gui/src/python_shell/python_shell_widget.cc b/modules/gui/src/python_shell/python_shell_widget.cc index ef3e9709067f206ba21a79f4f9c327033094343c..3ff1b5bce9e6165b1d219a5ea1e42ec2074adb19 100644 --- a/modules/gui/src/python_shell/python_shell_widget.cc +++ b/modules/gui/src/python_shell/python_shell_widget.cc @@ -301,6 +301,7 @@ void PythonShellWidget::setup_state_machine_() new BlockStatusGuard(this,CODE_BLOCK_INCOMPLETE)); multi_line_inactive->addTransition(tr6); connect(tr6,SIGNAL(triggered()),this,SLOT(OnEnterTransition())); + multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_D,Qt::ControlModifier,single_line,false)); multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Left,DNG_ARROW_MODIFIERS,multiline_active_state_)); multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Right,DNG_ARROW_MODIFIERS,multiline_active_state_)); multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Return,Qt::ControlModifier,multiline_active_state_)); @@ -355,6 +356,7 @@ void PythonShellWidget::setup_state_machine_() multiline_active_state_->addTransition(tr8); connect(tr8,SIGNAL(triggered()),this,SLOT(OnEnterTransition())); + multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_D,Qt::ControlModifier,single_line,false)); multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Escape,Qt::NoModifier,multi_line_inactive)); multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Up,Qt::ControlModifier | DNG_ARROW_MODIFIERS,history_up)); multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::ControlModifier | DNG_ARROW_MODIFIERS,history_down)); @@ -773,6 +775,17 @@ void PythonShellWidget::keyPressEvent(QKeyEvent* event) return; } } + if (event->key()==Qt::Key_D && event->modifiers() & Qt::ControlModifier) { + QTextCursor cursor=this->textCursor(); + cursor.setPosition(block_edit_start_.position()); + cursor.movePosition(QTextCursor::End,QTextCursor::KeepAnchor); + cursor.removeSelectedText(); + QTextCursor tc=this->textCursor(); + tc.setPosition(block_edit_start_.position()); + block_edit_start_=tc.block(); + event->accept(); + return; + } if (this->handle_custom_commands_(event)){ event->accept(); return;