[maemo-commits] [maemo-commits] r18741 - in projects/haf/trunk/libmatchbox2: . debian matchbox/core

From: subversion at stage.maemo.org subversion at stage.maemo.org
Date: Tue Jun 16 18:14:24 EEST 2009
Author: kihamala
Date: 2009-06-16 18:14:14 +0300 (Tue, 16 Jun 2009)
New Revision: 18741

Modified:
   projects/haf/trunk/libmatchbox2/ChangeLog
   projects/haf/trunk/libmatchbox2/debian/changelog
   projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-keys.c
Log:
keyboard shortcut fixes from Laszlo and me.



Modified: projects/haf/trunk/libmatchbox2/ChangeLog
===================================================================
--- projects/haf/trunk/libmatchbox2/ChangeLog	2009-06-16 15:13:08 UTC (rev 18740)
+++ projects/haf/trunk/libmatchbox2/ChangeLog	2009-06-16 15:14:14 UTC (rev 18741)
@@ -1,3 +1,14 @@
+2009-06-16  Kimmo Hämäläinen  <kimmo.hamalainen at nokia.com>
+
+	Apply patch from Laszlo Pere for NB#121265.
+	* matchbox/core/mb-wm-keys.c (mb_wm_keys_press): Fix if condition for
+	the modifier mask.
+
+	My own fix for keyboard shortcuts:
+	* matchbox/core/mb-wm-keys.c (mb_wm_keys_binding_add_with_spec): Do
+	not use keysym_needs_shift, it's not working as it should.
+	Fixes: NB#120113
+
 2009-06-12  Thomas Thurman  <thomas.thurman at collabora.co.uk>
 
         NB#118850

Modified: projects/haf/trunk/libmatchbox2/debian/changelog
===================================================================
--- projects/haf/trunk/libmatchbox2/debian/changelog	2009-06-16 15:13:08 UTC (rev 18740)
+++ projects/haf/trunk/libmatchbox2/debian/changelog	2009-06-16 15:14:14 UTC (rev 18741)
@@ -1,7 +1,11 @@
 matchbox-window-manager-2 (0.2.43-1~unreleased) unstable; urgency=low
 
+  Laszlo:
+  * Fixes: NB#121265 - fix press handler for keyboard shortcuts.
+
   Kimmo:
   * Fixes: NB#121678 - Need WM support for _HILDON_WM_WINDOW_TYPE_LEGACY_MENU
+  * Fixes: NB#120113 - Cntl+back space does not go to task switcher screen
 
  -- Kimmo Hämäläinen <kimmo.hamalainen at nokia.com>  Mon,  8 Jun 2009 09:53:28 +0300
 

Modified: projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-keys.c
===================================================================
--- projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-keys.c	2009-06-16 15:13:08 UTC (rev 18740)
+++ projects/haf/trunk/libmatchbox2/matchbox/core/mb-wm-keys.c	2009-06-16 15:14:14 UTC (rev 18741)
@@ -22,6 +22,7 @@
   int lock_mask;
 };
 
+#if 0
 static Bool
 keysym_needs_shift (MBWindowManager *wm, KeySym keysym)
 {
@@ -39,6 +40,7 @@
 
   return False;
 }
+#endif
 
 static Bool
 key_binding_set_grab (MBWindowManager *wm,
@@ -60,7 +62,7 @@
 
       if (ungrab)
 	{
-	  MBWM_DBG("ungrabbing %i , %i",
+	  MBWM_DBG ("ungrabbing %i , %i\n",
 		   XKeysymToKeycode(wm->xdpy, key->keysym),
 		   key->modifier_mask);
 
@@ -75,7 +77,7 @@
 
 	  mb_wm_util_trap_x_errors();
 
-	  MBWM_DBG ("grabbing keycode: %i, keysym %li, mask: %i",
+	  MBWM_DBG ("grabbing keycode: %i, keysym %li, mask: %i\n",
 		   XKeysymToKeycode(wm->xdpy, key->keysym),
 		   key->keysym,
 		   key->modifier_mask | ignored_mask);
@@ -246,7 +248,10 @@
 	}
     }
 
+  /* FIXME: keysym_needs_shift is broken somehow... 
   if (keysym_needs_shift(wm, ks) || want_shift)
+  */
+  if (want_shift)
     mask |= ShiftMask;
 
   /* If we grab keycode 0, we end up grabbing the entire keyboard.. */
@@ -276,7 +281,7 @@
   if (!wm->keys)
     return;
 
-  MBWM_DBG ("Looking up keysym <%li>, ( mask %i )", keysym, modifier_mask);
+  MBWM_DBG ("Looking up keysym <%li>, (mask %i)\n", keysym, modifier_mask);
 
   iter = wm->keys->bindings;
 
@@ -286,6 +291,10 @@
 
       binding = (MBWMKeyBinding*)iter->data;
 
+      if (!binding->pressed ||
+           binding->keysym != keysym)
+        goto next_item;
+
       MBWM_DBG ("Checking up keysym <%li>, ( mask %i )",
 	       binding->keysym,
 	       binding->modifier_mask);
@@ -299,9 +308,12 @@
 	      continue;
 	    }
 
-	  if (binding->pressed
-	      && binding->keysym == keysym
-	      && binding->modifier_mask | (ignored_mask == modifier_mask))
+	  /*
+	   * If we are here we already know that the binding->pressed function
+	   * pointer is not NULL and the keysym is matched, only the modifier
+	   * mask must be checked.
+	   */
+	  if (binding->modifier_mask == (modifier_mask & ~ignored_mask))
 	    {
 	      binding->pressed(wm, binding, binding->userdata);
 	      break;
@@ -310,6 +322,7 @@
 	  ++ignored_mask;
 	}
 
+next_item:
       iter = mb_wm_util_list_next(iter);
     }
 }

More information about the maemo-commits mailing list