Author: Carlos Lopez <[email protected]>
Date:   Sat Mar 24 08:49:34 2012 +0100

Correct event handlers for the tree main windows

---

 synfig-studio/src/gui/canvasview.cpp       |   20 ++++++++++++++++----
 synfig-studio/src/gui/docks/dockdialog.cpp |   10 ++++++++--
 synfig-studio/src/gui/toolbox.cpp          |   20 ++++++++++++++++----
 3 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/synfig-studio/src/gui/canvasview.cpp 
b/synfig-studio/src/gui/canvasview.cpp
index ddede64..1f1da1b 100644
--- a/synfig-studio/src/gui/canvasview.cpp
+++ b/synfig-studio/src/gui/canvasview.cpp
@@ -2417,18 +2417,30 @@ bool
 CanvasView::on_key_press_event(GdkEventKey* event)
 {
        Gtk::Widget* focused_widget = get_focus();
-       if(focused_widget->event((GdkEvent*)event))
+       if(focused_widget_has_priority(focused_widget))
+       {
+               if(focused_widget->event((GdkEvent*)event))
+               return true;
+       }
+       else if(Gtk::Window::on_key_press_event(event))
                return true;
-       return Gtk::Window::on_key_press_event(event);
+       else return focused_widget->event((GdkEvent*)event);
+       return false;
 }
 
 bool
 CanvasView::on_key_release_event(GdkEventKey* event)
 {
        Gtk::Widget* focused_widget = get_focus();
-       if(focused_widget->event((GdkEvent*)event))
+       if(focused_widget_has_priority(focused_widget))
+       {
+               if(focused_widget->event((GdkEvent*)event))
+               return true;
+       }
+       else if(Gtk::Window::on_key_press_event(event))
                return true;
-       return Gtk::Window::on_key_release_event(event);
+       else return focused_widget->event((GdkEvent*)event);
+       return false;
 }
 
 bool
diff --git a/synfig-studio/src/gui/docks/dockdialog.cpp 
b/synfig-studio/src/gui/docks/dockdialog.cpp
index 553b593..c73a123 100644
--- a/synfig-studio/src/gui/docks/dockdialog.cpp
+++ b/synfig-studio/src/gui/docks/dockdialog.cpp
@@ -255,7 +255,10 @@ DockDialog::on_key_press_event(GdkEventKey* event)
                if(focused_widget->event((GdkEvent*)event))
                return true;
        }
-       return Gtk::Window::on_key_press_event(event);
+       else if(Gtk::Window::on_key_press_event(event))
+               return true;
+       else return focused_widget->event((GdkEvent*)event);
+       return false;
 }
 
 bool
@@ -267,7 +270,10 @@ DockDialog::on_key_release_event(GdkEventKey* event)
                if(focused_widget->event((GdkEvent*)event))
                return true;
        }
-       return Gtk::Window::on_key_release_event(event);
+       else if(Gtk::Window::on_key_press_event(event))
+               return true;
+       else return focused_widget->event((GdkEvent*)event);
+       return false;
 }
 
 bool
diff --git a/synfig-studio/src/gui/toolbox.cpp 
b/synfig-studio/src/gui/toolbox.cpp
index 10d2fbc..7185551 100644
--- a/synfig-studio/src/gui/toolbox.cpp
+++ b/synfig-studio/src/gui/toolbox.cpp
@@ -636,18 +636,30 @@ bool
 Toolbox::on_key_press_event(GdkEventKey* event)
 {
        Gtk::Widget* focused_widget = get_focus();
-       if(focused_widget->event((GdkEvent*)event))
+       if(focused_widget_has_priority(focused_widget))
+       {
+               if(focused_widget->event((GdkEvent*)event))
+               return true;
+       }
+       else if(Gtk::Window::on_key_press_event(event))
                return true;
-       return Gtk::Window::on_key_press_event(event);
+       else return focused_widget->event((GdkEvent*)event);
+       return false;
 }
 
 bool
 Toolbox::on_key_release_event(GdkEventKey* event)
 {
        Gtk::Widget* focused_widget = get_focus();
-       if(focused_widget->event((GdkEvent*)event))
+       if(focused_widget_has_priority(focused_widget))
+       {
+               if(focused_widget->event((GdkEvent*)event))
+               return true;
+       }
+       else if(Gtk::Window::on_key_press_event(event))
                return true;
-       return Gtk::Window::on_key_release_event(event);
+       else return focused_widget->event((GdkEvent*)event);
+       return false;
 }
 
 bool


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to