--- gigedit/trunk/src/gigedit/dimregionchooser.cpp 2017/04/27 17:31:50 3132 +++ gigedit/trunk/src/gigedit/dimregionchooser.cpp 2017/04/28 12:41:12 3134 @@ -1246,6 +1246,10 @@ // (which is supposed to switch between regions) if (primaryKeyDown) return false; + // avoid conflict with Alt+Shift+Left and Alt+Shift+Right accelerators on + // mainwindow + if (shiftKeyDown) return false; + if (key->keyval == GDK_KEY_Left) select_prev_dimzone(); if (key->keyval == GDK_KEY_Right) @@ -1306,15 +1310,15 @@ return false; //.selection failed } -void DimRegionChooser::select_next_dimzone() { - select_dimzone_by_dir(+1); +void DimRegionChooser::select_next_dimzone(bool add) { + select_dimzone_by_dir(+1, add); } -void DimRegionChooser::select_prev_dimzone() { - select_dimzone_by_dir(-1); +void DimRegionChooser::select_prev_dimzone(bool add) { + select_dimzone_by_dir(-1, add); } -void DimRegionChooser::select_dimzone_by_dir(int dir) { +void DimRegionChooser::select_dimzone_by_dir(int dir, bool add) { if (!region) return; if (!region->Dimensions) return; if (focus_line < 0) focus_line = 0; @@ -1349,8 +1353,10 @@ maindimregno = getDimensionRegionIndex(dr); - // reset selected dimregion zones - dimzones.clear(); + if (!add) { + // reset selected dimregion zones + dimzones.clear(); + } for (DimensionCase::const_iterator it = maindimcase.begin(); it != maindimcase.end(); ++it) {