diff --git a/modules/gui/src/python_shell/python_shell_widget.cc b/modules/gui/src/python_shell/python_shell_widget.cc index 6fcf3ed322c7d0806e1b0261aa849d77d90fc1ee..764c56c8fd8bce6b1f80ac8ac0de04fdf1d04fb2 100644 --- a/modules/gui/src/python_shell/python_shell_widget.cc +++ b/modules/gui/src/python_shell/python_shell_widget.cc @@ -208,8 +208,10 @@ void PythonShellWidget::setup_state_machine_() { #ifdef __APPLE__ QFlags<Qt::KeyboardModifier> DNG_ARROW_MODIFIERS = Qt::KeypadModifier; + QFlags<Qt::KeyboardModifier> DNG_ENTER_MODIFIERS = Qt::NoModifier; #else QFlags<Qt::KeyboardModifier> DNG_ARROW_MODIFIERS = Qt::NoModifier; + QFlags<Qt::KeyboardModifier> DNG_ENTER_MODIFIERS = Qt::KeypadModifier; #endif State* single_line=new State; State* multi_line_inactive=new State; @@ -248,21 +250,21 @@ void PythonShellWidget::setup_state_machine_() single_line->addTransition(tr3); KeyEventTransition* keypad_enter1=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::NoModifier, + DNG_ENTER_MODIFIERS| Qt::NoModifier, multiline_active_state_, true); single_line->addTransition(keypad_enter1); connect(keypad_enter1,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); KeyEventTransition* keypad_enter2=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::ShiftModifier, + DNG_ENTER_MODIFIERS| Qt::ShiftModifier, multiline_active_state_, true); single_line->addTransition(keypad_enter2); connect(keypad_enter2,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); KeyEventTransition* keypad_enter3=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::MetaModifier, + DNG_ENTER_MODIFIERS| Qt::MetaModifier, multiline_active_state_, true); single_line->addTransition(keypad_enter3); @@ -306,21 +308,21 @@ void PythonShellWidget::setup_state_machine_() multi_line_inactive->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,DNG_ARROW_MODIFIERS,history_down)); KeyEventTransition* keypad_enter4=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::NoModifier, + DNG_ENTER_MODIFIERS| Qt::NoModifier, multiline_active_state_, true); multi_line_inactive->addTransition(keypad_enter4); connect(keypad_enter4,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); KeyEventTransition* keypad_enter5=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::ShiftModifier, + DNG_ENTER_MODIFIERS| Qt::ShiftModifier, multiline_active_state_, true); multi_line_inactive->addTransition(keypad_enter5); connect(keypad_enter5,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); KeyEventTransition* keypad_enter6=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::MetaModifier, + DNG_ENTER_MODIFIERS | Qt::MetaModifier, multiline_active_state_, true); multi_line_inactive->addTransition(keypad_enter6); @@ -358,21 +360,21 @@ void PythonShellWidget::setup_state_machine_() multiline_active_state_->addTransition(new KeyEventTransition(QEvent::KeyPress,Qt::Key_Down,Qt::ControlModifier | DNG_ARROW_MODIFIERS,history_down)); KeyEventTransition* keypad_enter7=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::NoModifier, + DNG_ENTER_MODIFIERS | Qt::NoModifier, multiline_active_state_, true); multiline_active_state_->addTransition(keypad_enter7); connect(keypad_enter7,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); KeyEventTransition* keypad_enter8=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::ShiftModifier, + DNG_ENTER_MODIFIERS | Qt::ShiftModifier, multiline_active_state_, true); multiline_active_state_->addTransition(keypad_enter8); connect(keypad_enter8,SIGNAL(triggered()),this,SLOT(OnKeypadEnterTransition())); KeyEventTransition* keypad_enter9=new KeyEventTransition(QEvent::KeyPress, Qt::Key_Enter, - Qt::MetaModifier, + DNG_ENTER_MODIFIERS | Qt::MetaModifier, multiline_active_state_, true); multiline_active_state_->addTransition(keypad_enter9); @@ -529,12 +531,12 @@ void PythonShellWidget::InsertCompletion(const QString& completion) } void PythonShellWidget::InsertPathCompletion(const QString& completion) { - QString path=completion; + QString path=QDir::fromNativeSeparators(completion); // append dir separator for directories if none present (Windows adds it already for the inline completion) - if(QFileInfo(path).isDir() && ! completion.endsWith(QDir::separator())){ + if(QFileInfo(path).isDir() && ! completion.endsWith("/")){ path+="/"; } - InsertCompletion(QDir::toNativeSeparators(path)); + InsertCompletion(path); } @@ -638,16 +640,16 @@ void PythonShellWidget::Complete(bool inline_completion) completion_end_=positions->GetEnd(literal_index); QTextCursor cp=textCursor(); QString text=cursor.selectedText(); - int sep=text.lastIndexOf(QDir::separator()); + int sep=text.lastIndexOf("/"); cp.setPosition(positions->GetStart(literal_index)); if (sep!=-1) { cp.movePosition(QTextCursor::NextCharacter, QTextCursor::MoveAnchor, sep); } if (QDir(text).isAbsolute()) { - emit SetPathCompletionPrefix(QDir::fromNativeSeparators(text)); + emit SetPathCompletionPrefix(text); } else { - emit SetPathCompletionPrefix(QDir::currentPath()+"/"+QDir::fromNativeSeparators(text)); + emit SetPathCompletionPrefix(QDir::currentPath()+"/"+text); } emit RequestPathCompletion(cursorRect(cp), inline_completion);