block 'a' to 'z', '+' and '-' for numeric input fields, Issue 2808
This commit is contained in:
@@ -56,6 +56,9 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PROC_FLAGS}")
|
|||||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PROC_FLAGS}")
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PROC_FLAGS}")
|
||||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_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)
|
if (WIN32)
|
||||||
# we additionnally look in the MinGW path first then in the Gtkmm path,
|
# 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
|
# so if you wish to build some dependant library, you have to install them in MinGW to use them
|
||||||
|
@@ -32,7 +32,7 @@
|
|||||||
using namespace rtengine::procparams;
|
using namespace rtengine::procparams;
|
||||||
|
|
||||||
EditorPanel::EditorPanel (FilePanel* filePanel)
|
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 = new EditorPanelIdleHelper;
|
||||||
epih->epanel = this;
|
epih->epanel = this;
|
||||||
@@ -952,10 +952,12 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) {
|
|||||||
return true;
|
return true;
|
||||||
case GDK_plus:
|
case GDK_plus:
|
||||||
case GDK_equal:
|
case GDK_equal:
|
||||||
|
case GDK_KP_Add:
|
||||||
iareapanel->imageArea->zoomPanel->zoomInClicked();
|
iareapanel->imageArea->zoomPanel->zoomInClicked();
|
||||||
return true;
|
return true;
|
||||||
case GDK_minus:
|
case GDK_minus:
|
||||||
case GDK_underscore:
|
case GDK_underscore:
|
||||||
|
case GDK_KP_Subtract:
|
||||||
iareapanel->imageArea->zoomPanel->zoomOutClicked();
|
iareapanel->imageArea->zoomPanel->zoomOutClicked();
|
||||||
return true;
|
return true;
|
||||||
case GDK_z://GDK_1
|
case GDK_z://GDK_1
|
||||||
@@ -995,7 +997,7 @@ bool EditorPanel::handleShortcutKey (GdkEventKey* event) {
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
case GDK_F5:
|
case GDK_F5:
|
||||||
openThm->openDefaultViewer(event->state & GDK_SHIFT_MASK ? 2 : 1);
|
openThm->openDefaultViewer((event->state & GDK_SHIFT_MASK) ? 2 : 1);
|
||||||
return true;
|
return true;
|
||||||
case GDK_y: // synchronize filebrowser with image in Editor
|
case GDK_y: // synchronize filebrowser with image in Editor
|
||||||
if (!simpleEditor && fPanel && !fname.empty()){
|
if (!simpleEditor && fPanel && !fname.empty()){
|
||||||
|
@@ -75,7 +75,7 @@ bool removeIfThere (Gtk::Container* cont, Gtk::Widget* w, bool increference) {
|
|||||||
|
|
||||||
Glib::ListHandle<Gtk::Widget*> list = cont->get_children ();
|
Glib::ListHandle<Gtk::Widget*> list = cont->get_children ();
|
||||||
Glib::ListHandle<Gtk::Widget*>::iterator i = list.begin ();
|
Glib::ListHandle<Gtk::Widget*>::iterator i = list.begin ();
|
||||||
for (; i!=list.end() && *i!=w; i++);
|
for (; i!=list.end() && *i!=w; ++i);
|
||||||
if (i!=list.end()) {
|
if (i!=list.end()) {
|
||||||
if (increference)
|
if (increference)
|
||||||
w->reference ();
|
w->reference ();
|
||||||
@@ -212,17 +212,17 @@ void drawCrop (Cairo::RefPtr<Cairo::Context> cr, int imx, int imy, int imw, int
|
|||||||
// To have even distribution, normalize it a bit
|
// To have even distribution, normalize it a bit
|
||||||
const int longSideNumLines=10;
|
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>longSideNumLines && h>longSideNumLines) {
|
||||||
if (w>h) {
|
if (w>h) {
|
||||||
for (int i=1;i<longSideNumLines;i++) vert_ratios.push_back ((double)i/longSideNumLines);
|
for (int i=1;i<longSideNumLines;i++) vert_ratios.push_back ((double)i/longSideNumLines);
|
||||||
|
|
||||||
shortSideNumLines=(int)round(h*(double)longSideNumLines/w);
|
int shortSideNumLines=(int)round(h*(double)longSideNumLines/w);
|
||||||
for (int i=1;i<shortSideNumLines;i++) horiz_ratios.push_back ((double)i/shortSideNumLines);
|
for (int i=1;i<shortSideNumLines;i++) horiz_ratios.push_back ((double)i/shortSideNumLines);
|
||||||
} else {
|
} else {
|
||||||
for (int i=1;i<longSideNumLines;i++) horiz_ratios.push_back ((double)i/longSideNumLines);
|
for (int i=1;i<longSideNumLines;i++) horiz_ratios.push_back ((double)i/longSideNumLines);
|
||||||
|
|
||||||
shortSideNumLines=(int)round(w*(double)longSideNumLines/h);
|
int shortSideNumLines=(int)round(w*(double)longSideNumLines/h);
|
||||||
for (int i=1;i<shortSideNumLines;i++) vert_ratios.push_back ((double)i/shortSideNumLines);
|
for (int i=1;i<shortSideNumLines;i++) vert_ratios.push_back ((double)i/shortSideNumLines);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -310,7 +310,7 @@ void drawCrop (Cairo::RefPtr<Cairo::Context> cr, int imx, int imy, int imw, int
|
|||||||
} else if (cparams.guide=="Golden Triangle 1" || cparams.guide=="Golden Triangle 2") {
|
} else if (cparams.guide=="Golden Triangle 1" || cparams.guide=="Golden Triangle 2") {
|
||||||
// main diagonal
|
// main diagonal
|
||||||
if(cparams.guide=="Golden Triangle 2") {
|
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->set_source_rgba (1.0, 1.0, 1.0, 0.618);
|
||||||
cr->move_to (rectx1, recty1);
|
cr->move_to (rectx1, recty1);
|
||||||
@@ -815,13 +815,11 @@ MySpinButton::MySpinButton () {
|
|||||||
|
|
||||||
void MySpinButton::updateSize() {
|
void MySpinButton::updateSize() {
|
||||||
double vMin, vMax;
|
double vMin, vMax;
|
||||||
double step, page;
|
|
||||||
int maxAbs;
|
int maxAbs;
|
||||||
unsigned int digits, digits2;
|
unsigned int digits, digits2;
|
||||||
unsigned int maxLen;
|
unsigned int maxLen;
|
||||||
|
|
||||||
get_range(vMin, vMax);
|
get_range(vMin, vMax);
|
||||||
get_increments (step, page);
|
|
||||||
|
|
||||||
digits = get_digits();
|
digits = get_digits();
|
||||||
maxAbs = (int)(fmax(fabs(vMin), fabs(vMax))+0.000001);
|
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 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')
|
if ( (event->string[0] >= 'a' && event->string[0] <= 'z')
|
||||||
||(event->string[0] >= 'A' && event->string[0] <= 'Z')
|
||(event->string[0] >= 'A' && event->string[0] <= 'Z')
|
||||||
|| event->string[0] == '+'
|
|| event->string[0] == '+' || (event->string[0] == '-' && vMin >= 0)
|
||||||
|
|| event->string[0] == '=' || event->string[0] == '_'
|
||||||
)
|
)
|
||||||
return false;
|
return false;
|
||||||
return rcode;
|
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) {
|
bool MySpinButton::on_scroll_event (GdkEventScroll* event) {
|
||||||
@@ -867,6 +873,14 @@ bool MyHScale::on_scroll_event (GdkEventScroll* event) {
|
|||||||
return false;
|
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) {
|
MyFileChooserButton::MyFileChooserButton (const Glib::ustring& title, Gtk::FileChooserAction action) : Gtk::FileChooserButton(title, action) {
|
||||||
set_size_request(20, -1);
|
set_size_request(20, -1);
|
||||||
}
|
}
|
||||||
|
@@ -262,6 +262,7 @@ public:
|
|||||||
class MyHScale : public Gtk::HScale {
|
class MyHScale : public Gtk::HScale {
|
||||||
|
|
||||||
bool on_scroll_event (GdkEventScroll* event);
|
bool on_scroll_event (GdkEventScroll* event);
|
||||||
|
bool on_key_press_event (GdkEventKey* event);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user