Author: Carlos Lopez <[email protected]>
Date: Fri Jan 13 22:03:21 2012 +0100
When editing the brush widget don't parse the key accelerators. First step to
fix bug 3472549
---
synfig-studio/src/gui/toolbox.cpp | 21 ++++++++++++++++++++-
synfig-studio/src/gui/toolbox.h | 4 ++++
synfig-studio/src/gui/widgets/widget_defaults.cpp | 8 +++++++-
synfig-studio/src/gui/widgets/widget_defaults.h | 3 ++-
synfig-studio/src/gui/widgets/widget_distance.cpp | 13 +++++++++++++
synfig-studio/src/gui/widgets/widget_distance.h | 3 ++-
6 files changed, 48 insertions(+), 4 deletions(-)
diff --git a/synfig-studio/src/gui/toolbox.cpp
b/synfig-studio/src/gui/toolbox.cpp
index 70e4180..bb33229 100644
--- a/synfig-studio/src/gui/toolbox.cpp
+++ b/synfig-studio/src/gui/toolbox.cpp
@@ -328,7 +328,7 @@ Toolbox::Toolbox():
handle_tools->set_handle_position(Gtk::POS_TOP);
handle_tools->set_snap_edge(Gtk::POS_TOP);
- Widget_Defaults* widget_defaults(manage(new Widget_Defaults()));
+ widget_defaults=manage(new Widget_Defaults());
widget_defaults->show();
Gtk::HandleBox* handle_defaults(manage(new Gtk::HandleBox()));
handle_defaults->add(*widget_defaults);
@@ -387,6 +387,8 @@ Toolbox::Toolbox():
add_accel_group(App::ui_manager()->get_accel_group());
App::signal_present_all().connect(sigc::mem_fun0(*this,&Toolbox::present));
+ signal_key_press_event().connect(sigc::mem_fun(*this,
&Toolbox::on_key_press_event), false);
+ signal_key_release_event().connect(sigc::mem_fun(*this,
&Toolbox::on_key_release_event), false);
}
Toolbox::~Toolbox()
@@ -636,6 +638,23 @@ Toolbox::on_drop_drag_data_received(const
Glib::RefPtr<Gdk::DragContext>& contex
context->drag_finish(success, false, time);
}
+bool
+Toolbox::on_key_press_event(GdkEventKey* event)
+{
+ if(widget_defaults->get_widget_bline_width()->is_focus())
+ return
widget_defaults->get_widget_bline_width()->on_key_press_event(event);
+ return Gtk::Window::on_key_press_event(event);
+}
+
+bool
+Toolbox::on_key_release_event(GdkEventKey* event)
+{
+ if(widget_defaults->get_widget_bline_width()->is_focus())
+ return
widget_defaults->get_widget_bline_width()->on_key_release_event(event);
+ return Gtk::Window::on_key_release_event(event);
+}
+
+
void
Toolbox::dockable_registered(Dockable* x)
{
diff --git a/synfig-studio/src/gui/toolbox.h b/synfig-studio/src/gui/toolbox.h
index efc7e19..188051f 100644
--- a/synfig-studio/src/gui/toolbox.h
+++ b/synfig-studio/src/gui/toolbox.h
@@ -39,6 +39,7 @@
#include "smach.h"
#include <map>
#include "dialogsettings.h"
+#include "widgets/widget_defaults.h"
/* === M A C R O S ========================================================= */
@@ -64,6 +65,7 @@ class Toolbox : public Gtk::Window
Gtk::Button *button_undo;
Gtk::Button *button_redo;
+ Widget_Defaults *widget_defaults;
Gtk::Table *tool_table;
@@ -77,6 +79,8 @@ class Toolbox : public Gtk::Window
void on_recent_files_changed();
void on_drop_drag_data_received(const Glib::RefPtr<Gdk::DragContext>&
context, int x, int y, const Gtk::SelectionData& selection_data, guint info,
guint time);
+ bool on_key_press_event(GdkEventKey* event);
+ bool on_key_release_event(GdkEventKey* event);
void change_state_(const Smach::state_base *state);
diff --git a/synfig-studio/src/gui/widgets/widget_defaults.cpp
b/synfig-studio/src/gui/widgets/widget_defaults.cpp
index 9cbdbed..4de243f 100644
--- a/synfig-studio/src/gui/widgets/widget_defaults.cpp
+++ b/synfig-studio/src/gui/widgets/widget_defaults.cpp
@@ -42,7 +42,6 @@
#include <synfig/exception.h>
#include <synfigapp/main.h>
#include "canvasview.h"
-#include "widgets/widget_distance.h"
#include "widgets/widget_enum.h"
#include "general.h"
@@ -475,6 +474,13 @@ Widget_Defaults::on_gradient_clicked()
App::dialog_gradient->present();
}
+Widget_Distance*
+Widget_Defaults::get_widget_bline_width()const
+{
+ return widget_bline_width;
+}
+
+
/*
bool
Widget_Defaults::redraw(GdkEventExpose*bleh)
diff --git a/synfig-studio/src/gui/widgets/widget_defaults.h
b/synfig-studio/src/gui/widgets/widget_defaults.h
index 7220cfd..bde0a40 100644
--- a/synfig-studio/src/gui/widgets/widget_defaults.h
+++ b/synfig-studio/src/gui/widgets/widget_defaults.h
@@ -31,6 +31,7 @@
#include <gtkmm/table.h>
#include <synfig/gradient.h>
#include "widgets/widget_gradient.h"
+#include "widgets/widget_distance.h"
#include <gtkmm/tooltip.h>
/* === M A C R O S ========================================================= */
@@ -45,7 +46,6 @@ namespace studio {
class Widget_Brush;
class Widget_Color;
-class Widget_Distance;
class Widget_Enum;
class Widget_Defaults : public Gtk::Table
@@ -82,6 +82,7 @@ class Widget_Defaults : public Gtk::Table
public:
Widget_Defaults();
+ Widget_Distance* get_widget_bline_width()const;
~Widget_Defaults();
diff --git a/synfig-studio/src/gui/widgets/widget_distance.cpp
b/synfig-studio/src/gui/widgets/widget_distance.cpp
index df53c6f..d99ace9 100644
--- a/synfig-studio/src/gui/widgets/widget_distance.cpp
+++ b/synfig-studio/src/gui/widgets/widget_distance.cpp
@@ -84,6 +84,19 @@ Widget_Distance::on_output()
return true;
}
+bool
+Widget_Distance::on_key_press_event(GdkEventKey* event)
+{
+ return SpinButton::on_key_press_event(event);
+}
+
+bool
+Widget_Distance::on_key_release_event(GdkEventKey* event)
+{
+ return SpinButton::on_key_release_event(event);
+}
+
+
void
Widget_Distance::set_value(const synfig::Distance &data)
{
diff --git a/synfig-studio/src/gui/widgets/widget_distance.h
b/synfig-studio/src/gui/widgets/widget_distance.h
index 5319a2d..182b961 100644
--- a/synfig-studio/src/gui/widgets/widget_distance.h
+++ b/synfig-studio/src/gui/widgets/widget_distance.h
@@ -58,7 +58,8 @@ protected:
public:
//sigc::signal<void> &signal_value_changed() { return
signal_value_changed_; }
-
+ bool on_key_press_event(GdkEventKey* event);
+ bool on_key_release_event(GdkEventKey* event);
void set_value(const synfig::Distance &data);
synfig::Distance get_value()const;
Widget_Distance();
------------------------------------------------------------------------------
RSA(R) Conference 2012
Mar 27 - Feb 2
Save $400 by Jan. 27
Register now!
http://p.sf.net/sfu/rsa-sfdev2dev2
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl