Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added ability for escape key to close editing box in Value column in the Parameters panel #2455

Merged
merged 24 commits into from
Dec 21, 2021
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
2865b2f
added on_key_release_event
nickleus27 Dec 8, 2021
df86ba3
Merge branch 'master' into esc_param_val
nickleus27 Dec 8, 2021
ceabcbc
working changes to escape param value eventbox
nickleus27 Dec 9, 2021
6d0d2d5
changed to key_press from key_release
nickleus27 Dec 9, 2021
4731913
fixed merge conflict
nickleus27 Dec 9, 2021
eb119d9
deleted whitespace and moved on_key_press_event
nickleus27 Dec 9, 2021
57abdaa
changed on_key_prelease to on_key_press
nickleus27 Dec 11, 2021
0847beb
added on_editing_canceled
nickleus27 Dec 11, 2021
17e6817
changed L123 and L124
nickleus27 Dec 11, 2021
37ab9aa
revert changes
nickleus27 Dec 13, 2021
fcaf94c
fixed merge conflict
nickleus27 Dec 13, 2021
6a09eb3
deleted whitespace
nickleus27 Dec 13, 2021
ae78d5d
added property_editing_canceled
nickleus27 Dec 17, 2021
acf9752
deleted cout in on_value_editing_done
nickleus27 Dec 17, 2021
5a6b78c
deleted signal_editing_canceled
nickleus27 Dec 17, 2021
35e5ec1
added Gtk::CellEditable::editing_done
nickleus27 Dec 18, 2021
2d95c6a
Merge branch 'master' into esc_param_val
nickleus27 Dec 18, 2021
edfde68
deleted whitespace
nickleus27 Dec 18, 2021
b87967d
checked value_entry before property_editing_canceled() in on_value_ed…
nickleus27 Dec 18, 2021
f9b4228
simplify code
nickleus27 Dec 19, 2021
101d3bf
deleted whitespace L693
nickleus27 Dec 19, 2021
9482d5d
Merge branch 'master' into esc_param_val
nickleus27 Dec 19, 2021
0af5c2f
deleted namespace Gtk::CellEditable
nickleus27 Dec 21, 2021
d6c1df9
Merge branch 'master' into esc_param_val
nickleus27 Dec 21, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
45 changes: 45 additions & 0 deletions synfig-studio/src/gui/cellrenderer/cellrenderer_value.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,14 @@ class studio::ValueBase_Entry : public Gtk::CellEditable, public Gtk::EventBox
Widget_ValueBase *valuewidget;
Gtk::Widget *parent;
bool edit_done_called;
bool edit_canceled_called;
nickleus27 marked this conversation as resolved.
Show resolved Hide resolved
public:
ValueBase_Entry():
Glib::ObjectBase(typeid(ValueBase_Entry))
{
parent = nullptr;
edit_done_called = false;
edit_canceled_called = false;

valuewidget = manage(new class Widget_ValueBase());
valuewidget->inside_cellrenderer();
Expand Down Expand Up @@ -112,6 +114,21 @@ class studio::ValueBase_Entry : public Gtk::CellEditable, public Gtk::EventBox
}
}

void on_editing_canceled()
{
hide();
if (parent) parent->grab_focus();
if (!edit_done_called)
{
edit_canceled_called = true;
//Gtk::CellEditable::on_editing_canceled();
}
else
{
synfig::error("on_editing_cancelled(): Called twice!");
}
}

void set_parent(Gtk::Widget* x) { parent = x; }

void on_remove_widget()
Expand All @@ -127,6 +144,7 @@ class studio::ValueBase_Entry : public Gtk::CellEditable, public Gtk::EventBox
SYNFIG_EXCEPTION_GUARD_BEGIN()
if (valuewidget) {
valuewidget->signal_activate().connect(sigc::mem_fun(*this, &studio::ValueBase_Entry::editing_done));
valuewidget->signal_key_press_event().connect(sigc::mem_fun(*this, &studio::ValueBase_Entry::on_key_press_event));
}

// popup combobox menu if its is a enum editor
Expand Down Expand Up @@ -172,6 +190,18 @@ class studio::ValueBase_Entry : public Gtk::CellEditable, public Gtk::EventBox
SYNFIG_EXCEPTION_GUARD_END_BOOL(true)
}

bool on_key_press_event(GdkEventKey* key_event)
{
SYNFIG_EXCEPTION_GUARD_BEGIN()
if(key_event->keyval == GDK_KEY_Escape)
{
on_editing_canceled();
return true;
}
return Gtk::EventBox::on_key_press_event(key_event);
SYNFIG_EXCEPTION_GUARD_END_BOOL(true)
}

void on_grab_focus()
{
Gtk::EventBox::on_grab_focus();
Expand Down Expand Up @@ -249,6 +279,7 @@ CellRenderer_ValueBase::CellRenderer_ValueBase():
property_value_desc_ (*this, "value_desc", synfigapp::ValueDesc()),
property_child_param_desc_(*this, "child_param_desc", synfig::ParamDesc()),
edit_value_done_called (false),
edit_value_canceled_called(false),
value_entry()
{
CellRendererText::signal_edited().connect(sigc::mem_fun(*this,
Expand Down Expand Up @@ -586,6 +617,7 @@ CellRenderer_ValueBase::start_editing_vfunc(
{
SYNFIG_EXCEPTION_GUARD_BEGIN()
edit_value_done_called = false;
edit_value_canceled_called = false;
// If we aren't editable, then there is nothing to do
if (!property_editable())
return nullptr;
Expand Down Expand Up @@ -662,6 +694,8 @@ CellRenderer_ValueBase::start_editing_vfunc(
value_entry->set_parent(&widget);
value_entry->show(); // in order to enable "instant"/"single-click" pop-up for enum comboboxes
value_entry->signal_editing_done().connect(sigc::mem_fun(*this, &CellRenderer_ValueBase::on_value_editing_done));
CellRenderer::signal_editing_canceled().connect(sigc::mem_fun(*this, &CellRenderer_ValueBase::on_value_editing_canceled));

return value_entry;
}

Expand All @@ -688,3 +722,14 @@ CellRenderer_ValueBase::on_value_editing_done()
signal_edited_(value_entry->get_path(), value);
}
}

void
CellRenderer_ValueBase::on_value_editing_canceled()
{
if (edit_value_canceled_called)
{
synfig::error("on_value_editing_canceled(): Called twice!");
}

edit_value_canceled_called = true;
}
2 changes: 2 additions & 0 deletions synfig-studio/src/gui/cellrenderer/cellrenderer_value.h
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ class CellRenderer_ValueBase : public Gtk::CellRendererText
void color_edited (synfig::Color color, Glib::ustring path);

bool edit_value_done_called;
bool edit_value_canceled_called;

synfig::ValueBase saved_data; //Issues 659, 526, 520
public:
Expand Down Expand Up @@ -93,6 +94,7 @@ class CellRenderer_ValueBase : public Gtk::CellRendererText
ValueBase_Entry *value_entry;

void on_value_editing_done();
void on_value_editing_canceled();

protected:
virtual void
Expand Down