diff --git a/rtgui/editwindow.cc b/rtgui/editwindow.cc index 6b0bb2f08..f97960c7b 100644 --- a/rtgui/editwindow.cc +++ b/rtgui/editwindow.cc @@ -171,13 +171,27 @@ bool EditWindow::selectEditorPanel(const std::string &name) { } bool EditWindow::keyPressed (GdkEventKey* event) { + bool ctrl = event->state & GDK_CONTROL_MASK; + if(event->keyval == GDK_F11) { toggleFullscreen(); return true; - } else { - EditorPanel* ep = static_cast(mainNB->get_nth_page (mainNB->get_current_page())); - return ep->handleShortcutKey (event); } + else { + if(mainNB->get_n_pages ()>0) { //pass the handling for the editor panels, if there are any + if (event->keyval == GDK_w && ctrl){ //remove editor panel + EditorPanel* ep = static_cast(mainNB->get_nth_page (mainNB->get_current_page())); + remEditorPanel (ep); + return true; + } + else if(mainNB->get_n_pages ()>0){ + EditorPanel* ep = static_cast(mainNB->get_nth_page (mainNB->get_current_page())); + return ep->handleShortcutKey (event); + } + } + return false; + } + } void EditWindow::toggleFullscreen () { diff --git a/rtgui/rtwindow.cc b/rtgui/rtwindow.cc index f5816f080..fdf9f3d73 100644 --- a/rtgui/rtwindow.cc +++ b/rtgui/rtwindow.cc @@ -403,6 +403,15 @@ bool RTWindow::keyPressed (GdkEventKey* event) { mainNB->set_current_page (mainNB->page_num (*epanel)); } return true; + case GDK_w: //multi-tab mode, close editor panel + if (!isSingleTabMode() && + mainNB->get_current_page()!=mainNB->page_num(*fpanel) && + mainNB->get_current_page()!=mainNB->page_num(*bpanel)) { + + EditorPanel* ep = static_cast(mainNB->get_nth_page (mainNB->get_current_page())); + remEditorPanel (ep); + return true; + } } }