diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b80a1ebd..55d8ef011 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -56,6 +56,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PROC_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PROC_FLAGS}") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${PROC_FLAGS}") +#stop compile on typos like std:swap (missing colon will be detected as unused label) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=unused-label") + if (WIN32) # we additionnally look in the MinGW path first then in the Gtkmm path, # so if you wish to build some dependant library, you have to install them in MinGW to use them diff --git a/rtgui/editorpanel.cc b/rtgui/editorpanel.cc index 8e435594b..0bf960b63 100755 --- a/rtgui/editorpanel.cc +++ b/rtgui/editorpanel.cc @@ -32,7 +32,7 @@ using namespace rtengine::procparams; EditorPanel::EditorPanel (FilePanel* filePanel) - : beforePreviewHandler(NULL), beforeIarea(NULL), beforeBox(NULL), afterBox(NULL), afterHeaderBox(NULL), parent(NULL), ipc(NULL), beforeIpc(NULL), isProcessing(false), catalogPane(NULL), iHistoryShow(NULL), iHistoryHide(NULL), iBeforeLockON(NULL),iBeforeLockOFF(NULL), iRightPanel_1_Show(NULL), iRightPanel_1_Hide(NULL), iTopPanel_1_Show(NULL), iTopPanel_1_Hide(NULL), openThm(NULL), realized(false) { + : realized(false), iHistoryShow(NULL), iHistoryHide(NULL), iTopPanel_1_Show(NULL), iTopPanel_1_Hide(NULL), iRightPanel_1_Show(NULL), iRightPanel_1_Hide(NULL), iBeforeLockON(NULL),iBeforeLockOFF(NULL), beforePreviewHandler(NULL), beforeIarea(NULL), beforeBox(NULL), afterBox(NULL), afterHeaderBox(NULL), parent(NULL), openThm(NULL), ipc(NULL), beforeIpc(NULL), isProcessing(false), catalogPane(NULL) { epih = new EditorPanelIdleHelper; epih->epanel = this; @@ -951,11 +951,13 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) { beforeAfter->set_active (!beforeAfter->get_active()); return true; case GDK_plus: - case GDK_equal: + case GDK_equal: + case GDK_KP_Add: iareapanel->imageArea->zoomPanel->zoomInClicked(); return true; case GDK_minus: case GDK_underscore: + case GDK_KP_Subtract: iareapanel->imageArea->zoomPanel->zoomOutClicked(); return true; case GDK_z://GDK_1 @@ -994,8 +996,8 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) { iareapanel->imageArea->indClippedPanel->toggleClipped(false); return true; - case GDK_F5: - openThm->openDefaultViewer(event->state & GDK_SHIFT_MASK ? 2 : 1); + case GDK_F5: + openThm->openDefaultViewer((event->state & GDK_SHIFT_MASK) ? 2 : 1); return true; case GDK_y: // synchronize filebrowser with image in Editor if (!simpleEditor && fPanel && !fname.empty()){ diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index 9237488af..ca5d41cd5 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -75,7 +75,7 @@ bool removeIfThere (Gtk::Container* cont, Gtk::Widget* w, bool increference) { Glib::ListHandle list = cont->get_children (); Glib::ListHandle::iterator i = list.begin (); - for (; i!=list.end() && *i!=w; i++); + for (; i!=list.end() && *i!=w; ++i); if (i!=list.end()) { if (increference) w->reference (); @@ -212,17 +212,17 @@ void drawCrop (Cairo::RefPtr cr, int imx, int imy, int imw, int // To have even distribution, normalize it a bit const int longSideNumLines=10; - int w=rectx2-rectx1, h=recty2-recty1, shortSideNumLines; + int w=rectx2-rectx1, h=recty2-recty1; if (w>longSideNumLines && h>longSideNumLines) { if (w>h) { for (int i=1;i cr, int imx, int imy, int imw, int } else if (cparams.guide=="Golden Triangle 1" || cparams.guide=="Golden Triangle 2") { // main diagonal if(cparams.guide=="Golden Triangle 2") { - std:swap(rectx1,rectx2); + std::swap(rectx1,rectx2); } cr->set_source_rgba (1.0, 1.0, 1.0, 0.618); cr->move_to (rectx1, recty1); @@ -815,13 +815,11 @@ MySpinButton::MySpinButton () { void MySpinButton::updateSize() { double vMin, vMax; - double step, page; int maxAbs; unsigned int digits, digits2; unsigned int maxLen; get_range(vMin, vMax); - get_increments (step, page); digits = get_digits(); maxAbs = (int)(fmax(fabs(vMin), fabs(vMax))+0.000001); @@ -837,13 +835,21 @@ void MySpinButton::updateSize() { } bool MySpinButton::on_key_press_event (GdkEventKey* event) { - bool rcode = Gtk::Widget::on_key_press_event(event); + double vMin, vMax; + get_range(vMin, vMax); if ( (event->string[0] >= 'a' && event->string[0] <= 'z') ||(event->string[0] >= 'A' && event->string[0] <= 'Z') - || event->string[0] == '+' - ) - return false; - return rcode; + || event->string[0] == '+' || (event->string[0] == '-' && vMin >= 0) + || event->string[0] == '=' || event->string[0] == '_' + ) + return false; + else { + if(event->string[0] == ',') { + event->keyval = GDK_period; + event->string[0] = '.'; + } + return Gtk::Widget::on_key_press_event(event); + } } bool MySpinButton::on_scroll_event (GdkEventScroll* event) { @@ -867,6 +873,14 @@ bool MyHScale::on_scroll_event (GdkEventScroll* event) { return false; } +bool MyHScale::on_key_press_event (GdkEventKey* event) { + + if ( event->string[0] == '+' || event->string[0] == '-' ) + return false; + else + return Gtk::Widget::on_key_press_event(event); +} + MyFileChooserButton::MyFileChooserButton (const Glib::ustring& title, Gtk::FileChooserAction action) : Gtk::FileChooserButton(title, action) { set_size_request(20, -1); } diff --git a/rtgui/guiutils.h b/rtgui/guiutils.h index 960401a2e..3221ba19b 100644 --- a/rtgui/guiutils.h +++ b/rtgui/guiutils.h @@ -262,6 +262,7 @@ public: class MyHScale : public Gtk::HScale { bool on_scroll_event (GdkEventScroll* event); + bool on_key_press_event (GdkEventKey* event); }; /**