[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog gui/gtk.cpp gui/gtksup.h
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog gui/gtk.cpp gui/gtksup.h |
Date: |
Mon, 18 Sep 2006 09:32:40 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 06/09/18 09:32:39
Modified files:
. : ChangeLog
gui : gtk.cpp gtksup.h
Log message:
* gui/gtk.cpp, gui/gtksup.h: Forward GTK keyboard events
(Patch #5393)
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.852&r2=1.853
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtk.cpp?cvsroot=gnash&r1=1.20&r2=1.21
http://cvs.savannah.gnu.org/viewcvs/gnash/gui/gtksup.h?cvsroot=gnash&r1=1.15&r2=1.16
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.852
retrieving revision 1.853
diff -u -b -r1.852 -r1.853
--- ChangeLog 18 Sep 2006 08:58:59 -0000 1.852
+++ ChangeLog 18 Sep 2006 09:32:39 -0000 1.853
@@ -1,3 +1,8 @@
+2006-09-18 Samuel Lidén Borell <address@hidden>
+
+ * gui/gtk.cpp, gui/gtksup.h: Forward GTK keyboard events
+ (Patch #5393)
+
2006-09-18 Markus Gothe <address@hidden>
* libbase/container.h: #ifdef HAVE_STRCASECMP-bug-fix.
Index: gui/gtk.cpp
===================================================================
RCS file: /sources/gnash/gnash/gui/gtk.cpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -b -r1.20 -r1.21
--- gui/gtk.cpp 31 Aug 2006 18:58:44 -0000 1.20
+++ gui/gtk.cpp 18 Sep 2006 09:32:39 -0000 1.21
@@ -306,6 +306,8 @@
G_CALLBACK(delete_event), this);
g_signal_connect(G_OBJECT(_window), "key_press_event",
G_CALLBACK(key_press_event), this);
+ g_signal_connect(G_OBJECT(_window), "key_release_event",
+ G_CALLBACK(key_release_event), this);
gtk_widget_add_events(_drawing_area, GDK_EXPOSURE_MASK
| GDK_BUTTON_PRESS_MASK
@@ -514,6 +516,77 @@
}
+gnash::key::code
+GtkGui::gdk_to_gnash_key(guint key)
+{
+ gnash::key::code c(gnash::key::INVALID);
+
+ if (key >= GDK_0 && key <= GDK_9) {
+ c = (gnash::key::code) ((key - GDK_0) + gnash::key::_0);
+ } else if (key >= GDK_a && key <= GDK_z) {
+ c = (gnash::key::code) ((key - GDK_a) + gnash::key::A);
+ } else if (key >= GDK_F1 && key <= GDK_F15) {
+ c = (gnash::key::code) ((key - GDK_F1) + gnash::key::F1);
+ } else if (key >= GDK_KP_0 && key <= GDK_KP_9) {
+ c = (gnash::key::code) ((key - GDK_KP_0) + gnash::key::KP_0);
+ } else {
+ // many keys don't correlate, so just use a look-up table.
+ struct {
+ guint gdk;
+ gnash::key::code gs;
+ } table[] = {
+ { GDK_BackSpace, gnash::key::BACKSPACE },
+ { GDK_Tab, gnash::key::TAB },
+ { GDK_Clear, gnash::key::CLEAR },
+ { GDK_Return, gnash::key::ENTER },
+
+ { GDK_Shift_L, gnash::key::SHIFT },
+ { GDK_Shift_R, gnash::key::SHIFT },
+ { GDK_Control_L, gnash::key::CONTROL },
+ { GDK_Control_R, gnash::key::CONTROL },
+ { GDK_Alt_L, gnash::key::ALT },
+ { GDK_Alt_R, gnash::key::ALT },
+ { GDK_Caps_Lock, gnash::key::CAPSLOCK },
+
+ { GDK_Escape, gnash::key::ESCAPE },
+ { GDK_space, gnash::key::SPACE },
+
+ { GDK_Page_Down, gnash::key::PGDN },
+ { GDK_Page_Up, gnash::key::PGUP },
+ { GDK_Home, gnash::key::HOME },
+ { GDK_End, gnash::key::END },
+ { GDK_Left, gnash::key::LEFT },
+ { GDK_Up, gnash::key::UP },
+ { GDK_Right, gnash::key::RIGHT },
+ { GDK_Down, gnash::key::DOWN },
+ { GDK_Insert, gnash::key::INSERT },
+ { GDK_Delete, gnash::key::DELETEKEY },
+
+ { GDK_Help, gnash::key::HELP },
+ { GDK_Num_Lock, gnash::key::NUM_LOCK },
+ { GDK_semicolon, gnash::key::SEMICOLON },
+ { GDK_equal, gnash::key::EQUALS },
+ { GDK_minus, gnash::key::MINUS },
+ { GDK_slash, gnash::key::SLASH },
+ /* Backtick */
+ { GDK_bracketleft, gnash::key::LEFT_BRACKET },
+ { GDK_backslash, gnash::key::BACKSLASH },
+ { GDK_bracketright, gnash::key::RIGHT_BRACKET },
+ { GDK_quotedbl, gnash::key::QUOTE },
+ { GDK_VoidSymbol, gnash::key::INVALID }
+ };
+
+ for (int i = 0; table[i].gdk != GDK_VoidSymbol; i++) {
+ if (key == table[i].gdk) {
+ c = table[i].gs;
+ break;
+ }
+ }
+ }
+
+ return c;
+}
+
gboolean
GtkGui::key_press_event(GtkWidget *const /*widget*/,
GdkEventKey *const event,
@@ -521,29 +594,14 @@
{
GNASH_REPORT_FUNCTION;
- switch (event->keyval) {
- case GDK_Home:
-// info.what = viewer::key_home;
- break;
- case GDK_Left:
-// info.what = viewer::key_left;
- break;
- case GDK_Up:
-// info.what = viewer::key_up;
- break;
- case GDK_Right:
-// info.what = viewer::key_right;
- break;
- case GDK_Down:
-// info.what = viewer::key_down;
- break;
- case GDK_Page_Up:
-// info.what = viewer::key_page_up;
- break;
- case GDK_Page_Down:
-// info.what = viewer::key_page_down;
- break;
- default:
+ /* Forward key event to gnash */
+ gnash::key::code c = gdk_to_gnash_key(event->keyval);
+
+ if (c != gnash::key::INVALID) {
+ gnash::notify_key_event(c, true);
+ }
+
+ /* Handle GUI shortcuts */
if (event->length <= 0) {
return true;
}
@@ -574,11 +632,6 @@
dbglogfile << "Got key: '" << (char) key << "' its name is: " <<
gdk_keyval_name(key) << " hwkeycode: " << event->hardware_keycode << endl;
}
- gnash::key::code c(gnash::key::INVALID);
-
- if (key >= 'a' && key <= 'z') {
- c = (gnash::key::code) ((key - 'a') + gnash::key::A);
- }
switch (key) {
case '[':
menuitem_step_forward_callback(NULL, NULL);
@@ -590,13 +643,28 @@
break;
}
+ return true;
+}
+
+
+gboolean
+GtkGui::key_release_event(GtkWidget *const /*widget*/,
+ GdkEventKey *const event,
+ const gpointer /*data*/)
+{
+ GNASH_REPORT_FUNCTION;
+
+ /* Forward key event to gnash */
+ gnash::key::code c = gdk_to_gnash_key(event->keyval);
+
if (c != gnash::key::INVALID) {
-// gnash::notify_key_event(c, true);
- }
+ gnash::notify_key_event(c, false);
}
+
return true;
}
+
gboolean
GtkGui::button_press_event(GtkWidget *const /*widget*/,
GdkEventButton *const event,
Index: gui/gtksup.h
===================================================================
RCS file: /sources/gnash/gnash/gui/gtksup.h,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- gui/gtksup.h 14 Sep 2006 23:54:22 -0000 1.15
+++ gui/gtksup.h 18 Sep 2006 09:32:39 -0000 1.16
@@ -114,6 +114,8 @@
gpointer data);
static gboolean key_press_event(GtkWidget *widget, GdkEventKey *event,
gpointer data);
+ static gboolean key_release_event(GtkWidget *widget, GdkEventKey *event,
+ gpointer data);
static gboolean button_press_event(GtkWidget *widget, GdkEventButton
*event,
gpointer data);
static gboolean button_release_event(GtkWidget *widget, GdkEventButton
*event,
@@ -139,6 +141,8 @@
GdkGLConfig *_glconfig;
GtkGlExtGlue glue;
#endif
+
+ static gnash::key::code GtkGui::gdk_to_gnash_key(guint key);
};
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog gui/gtk.cpp gui/gtksup.h,
Sandro Santilli <=