~ubuntu-branches/ubuntu/trusty/gnome-control-center/trusty-updates

« back to all changes in this revision

Viewing changes to panels/region/gtkentryaccel.c

  • Committer: Package Import Robot
  • Author(s): Iain Lane, Iain Lane, William Hua
  • Date: 2013-10-18 12:47:01 UTC
  • Revision ID: package-import@ubuntu.com-20131018124701-ng8l9so2up2udcuu
Tags: 1:3.6.3-0ubuntu45
[ Iain Lane ]
* debian/patches/97_unity_power_ui.patch: Don't crash if indicator-power
  isn't installed. When deciding whether to display/not display the
  indicator-power options, use the presence of indicator-power instead of
  just checking if Unity is the DE in use. (LP: #1195481) 
* debian/control.in: Build-Depend on glib >= 2.31.2 for
  g_settings_schema_source_ref.
  
[ William Hua ]
* debian/patches/input-sources-text-entry.patch:
  - support modifier-only input-source switching (lp: #1218322)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#include "gtkentryaccel.h"
2
2
#include <glib/gi18n.h>
3
3
 
 
4
#define GTK_ENTRY_ACCEL_MODIFIER_MASK (GDK_MODIFIER_MASK & \
 
5
                                       ~GDK_LOCK_MASK & \
 
6
                                       ~GDK_MOD2_MASK & \
 
7
                                       ~GDK_MOD3_MASK & \
 
8
                                       ~GDK_MOD4_MASK & \
 
9
                                       ~GDK_MOD5_MASK & \
 
10
                                       ~GDK_HYPER_MASK)
 
11
 
4
12
#define GTK_TYPE_ENTRY_ACCEL_POST_ACTION (gtk_entry_accel_post_action_get_type ())
5
13
#define GTK_ENTRY_ACCEL_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_ENTRY_ACCEL, GtkEntryAccelPrivate))
6
14
 
327
335
gtk_entry_accel_key_press_event (GtkWidget   *widget,
328
336
                                 GdkEventKey *event)
329
337
{
 
338
  GtkEntryAccel *entry = GTK_ENTRY_ACCEL (widget);
330
339
  guint key = event->keyval;
331
 
  guint mask = event->state & (GDK_MODIFIER_MASK & ~GDK_LOCK_MASK & ~GDK_MOD2_MASK);
 
340
  guint mask = event->state & GTK_ENTRY_ACCEL_MODIFIER_MASK;
 
341
  gboolean grabbed = entry->priv->keyboard != NULL && entry->priv->pointer != NULL;
332
342
 
333
 
  return ((mask & ~GDK_SHIFT_MASK) != 0 ||
 
343
  return ((grabbed ? mask : (mask & ~GDK_SHIFT_MASK)) != 0 ||
334
344
          (key != GDK_KEY_Tab &&
335
345
           key != GDK_KEY_KP_Tab &&
336
346
           key != GDK_KEY_ISO_Left_Tab &&
338
348
          GTK_WIDGET_CLASS (gtk_entry_accel_parent_class)->key_press_event (widget, event));
339
349
}
340
350
 
 
351
static guint
 
352
gtk_entry_accel_get_mask_for_key (guint key)
 
353
{
 
354
  switch (key)
 
355
    {
 
356
    case GDK_KEY_Shift_L:
 
357
    case GDK_KEY_Shift_R:
 
358
      return GDK_SHIFT_MASK;
 
359
    case GDK_KEY_Control_L:
 
360
    case GDK_KEY_Control_R:
 
361
      return GDK_CONTROL_MASK;
 
362
    case GDK_KEY_Caps_Lock:
 
363
    case GDK_KEY_Shift_Lock:
 
364
      return GDK_LOCK_MASK;
 
365
    case GDK_KEY_Meta_L:
 
366
    case GDK_KEY_Meta_R:
 
367
      return GDK_META_MASK;
 
368
    case GDK_KEY_Alt_L:
 
369
    case GDK_KEY_Alt_R:
 
370
      return GDK_MOD1_MASK;
 
371
    case GDK_KEY_Super_L:
 
372
    case GDK_KEY_Super_R:
 
373
      return GDK_SUPER_MASK;
 
374
    case GDK_KEY_Hyper_L:
 
375
    case GDK_KEY_Hyper_R:
 
376
      return GDK_HYPER_MASK;
 
377
    }
 
378
 
 
379
  return 0;
 
380
}
 
381
 
341
382
static gboolean
342
383
gtk_entry_accel_key_release_event (GtkWidget   *widget,
343
384
                                   GdkEventKey *event)
345
386
  GtkEntryAccel *entry = GTK_ENTRY_ACCEL (widget);
346
387
  guint key = event->keyval;
347
388
  guint code = event->hardware_keycode;
348
 
  guint mask = event->state & (GDK_MODIFIER_MASK & ~GDK_LOCK_MASK & ~GDK_MOD2_MASK);
 
389
  guint mask = event->state & GTK_ENTRY_ACCEL_MODIFIER_MASK;
 
390
 
 
391
  switch (key)
 
392
    {
 
393
    case GDK_KEY_Meta_L:
 
394
      key = GDK_KEY_Alt_L;
 
395
      break;
 
396
 
 
397
    case GDK_KEY_Meta_R:
 
398
      key = GDK_KEY_Alt_R;
 
399
      break;
 
400
    }
 
401
 
 
402
  if (event->is_modifier)
 
403
    mask &= ~gtk_entry_accel_get_mask_for_key (key);
349
404
 
350
405
  if (entry->priv->keyboard != NULL && entry->priv->pointer != NULL)
351
406
    {