Author: Carlos Lopez <[email protected]>
Date:   Sun Jan 15 20:39:47 2012 +0100

When a widget is focused on a Dock dialog or the Canvas view, lets the widget 
parse the key strokes first.

---

 synfig-studio/src/gui/canvasview.cpp       |   18 ++++++++++++++++++
 synfig-studio/src/gui/canvasview.h         |    5 +++++
 synfig-studio/src/gui/docks/dockdialog.cpp |   18 ++++++++++++++++++
 synfig-studio/src/gui/docks/dockdialog.h   |    4 ++++
 4 files changed, 45 insertions(+), 0 deletions(-)

diff --git a/synfig-studio/src/gui/canvasview.cpp 
b/synfig-studio/src/gui/canvasview.cpp
index 162be65..3ea62ad 100644
--- a/synfig-studio/src/gui/canvasview.cpp
+++ b/synfig-studio/src/gui/canvasview.cpp
@@ -2412,6 +2412,24 @@ CanvasView::on_focus_out_event(GdkEventFocus*x)
        return Gtk::Window::on_focus_out_event(x);
 }
 
+bool
+CanvasView::on_key_press_event(GdkEventKey* event)
+{
+       Gtk::Widget* focused_widget = get_focus();
+       if(focused_widget->event((GdkEvent*)event))
+               return true;
+       return Gtk::Window::on_key_press_event(event);
+}
+
+bool
+CanvasView::on_key_release_event(GdkEventKey* event)
+{
+       Gtk::Widget* focused_widget = get_focus();
+       if(focused_widget->event((GdkEvent*)event))
+               return true;
+       return Gtk::Window::on_key_release_event(event);
+}
+
 void
 CanvasView::refresh_tables()
 {
diff --git a/synfig-studio/src/gui/canvasview.h 
b/synfig-studio/src/gui/canvasview.h
index 30cb02f..7caba24 100644
--- a/synfig-studio/src/gui/canvasview.h
+++ b/synfig-studio/src/gui/canvasview.h
@@ -456,6 +456,7 @@ private:
 
        void toggle_animatebutton();
 
+
        /*
  -- ** -- P U B L I C   M E T H O D S -----------------------------------------
        */
@@ -716,6 +717,10 @@ private:
 
        void on_meta_data_changed();
 
+       bool on_key_press_event(GdkEventKey* event);
+       bool on_key_release_event(GdkEventKey* event);
+
+
 protected:
        bool close_instance_when_safe();
        bool on_delete_event(GdkEventAny* event);
diff --git a/synfig-studio/src/gui/docks/dockdialog.cpp 
b/synfig-studio/src/gui/docks/dockdialog.cpp
index 4187a9d..10aa645 100644
--- a/synfig-studio/src/gui/docks/dockdialog.cpp
+++ b/synfig-studio/src/gui/docks/dockdialog.cpp
@@ -246,6 +246,24 @@ DockDialog::prepend_dock_book()
        return last_dock_book;
 }
 
+bool
+DockDialog::on_key_press_event(GdkEventKey* event)
+{
+       Gtk::Widget* focused_widget = get_focus();
+       if(focused_widget->event((GdkEvent*)event))
+               return true;
+       return Gtk::Window::on_key_press_event(event);
+}
+
+bool
+DockDialog::on_key_release_event(GdkEventKey* event)
+{
+       Gtk::Widget* focused_widget = get_focus();
+       if(focused_widget->event((GdkEvent*)event))
+               return true;
+       return Gtk::Window::on_key_release_event(event);
+}
+
 DockBook*
 DockDialog::append_dock_book()
 {
diff --git a/synfig-studio/src/gui/docks/dockdialog.h 
b/synfig-studio/src/gui/docks/dockdialog.h
index e1fba30..92050fa 100644
--- a/synfig-studio/src/gui/docks/dockdialog.h
+++ b/synfig-studio/src/gui/docks/dockdialog.h
@@ -94,6 +94,10 @@ private:
        void drop_on_append(const Glib::RefPtr<Gdk::DragContext>& context, int, 
int, const Gtk::SelectionData& selection_data, guint, guint time);
        void drop_on_prepend(const Glib::RefPtr<Gdk::DragContext>& context, 
int, int, const Gtk::SelectionData& selection_data, guint, guint time);
 
+       bool on_key_press_event(GdkEventKey* event);
+       bool on_key_release_event(GdkEventKey* event);
+
+
 public:
 
        const std::vector<int>& get_dock_book_sizes()const { return 
dock_book_sizes_;}


------------------------------------------------------------------------------
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

Reply via email to