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