Coding style and cosmetic fixes

This commit is contained in:
Emmanuele Bassi 2011-09-30 17:29:40 +01:00
parent 0c919adf50
commit 6e9f474d90

View File

@ -82,162 +82,190 @@ clutter_gdk_handle_event (GdkEvent *gdk_event)
{ {
ClutterDeviceManager *device_manager; ClutterDeviceManager *device_manager;
ClutterBackendGdk *backend_gdk; ClutterBackendGdk *backend_gdk;
ClutterBackend *backend;
ClutterStage *stage = NULL; ClutterStage *stage = NULL;
ClutterEvent *event = NULL; ClutterEvent *event = NULL;
gint spin = 0; gint spin = 0;
GdkFilterReturn result = GDK_FILTER_CONTINUE; GdkFilterReturn result = GDK_FILTER_CONTINUE;
backend = clutter_get_default_backend ();
if (!CLUTTER_IS_BACKEND_GDK (backend))
return GDK_FILTER_CONTINUE;
if (gdk_event->any.window == NULL) if (gdk_event->any.window == NULL)
return GDK_FILTER_CONTINUE; return GDK_FILTER_CONTINUE;
clutter_threads_enter (); backend_gdk = CLUTTER_BACKEND_GDK (backend);
backend_gdk = CLUTTER_BACKEND_GDK (clutter_get_default_backend ());
stage = clutter_gdk_get_stage_from_window (gdk_event->any.window); stage = clutter_gdk_get_stage_from_window (gdk_event->any.window);
device_manager = clutter_device_manager_get_default (); device_manager = clutter_device_manager_get_default ();
if (stage == NULL) if (stage == NULL)
goto out; return GDK_FILTER_CONTINUE;
switch (gdk_event->type) { clutter_threads_enter ();
case GDK_DELETE:
event = clutter_event_new (CLUTTER_DELETE);
break;
case GDK_DESTROY: switch (gdk_event->type)
event = clutter_event_new (CLUTTER_DESTROY_NOTIFY); {
break; case GDK_DELETE:
event = clutter_event_new (CLUTTER_DELETE);
break;
case GDK_EXPOSE: case GDK_DESTROY:
clutter_redraw (stage); event = clutter_event_new (CLUTTER_DESTROY_NOTIFY);
break; break;
case GDK_DAMAGE: case GDK_EXPOSE:
/* This is handled by cogl */ clutter_redraw (stage);
goto out; break;
case GDK_MOTION_NOTIFY: case GDK_DAMAGE:
event = clutter_event_new (CLUTTER_MOTION); /* This is handled by cogl */
event->motion.time = gdk_event->motion.time; break;
event->motion.x = gdk_event->motion.x;
event->motion.y = gdk_event->motion.y;
event->motion.axes = NULL;
/* It's all X in the end, right? */
event->motion.modifier_state = gdk_event->motion.state;
event->motion.device = _clutter_device_manager_gdk_lookup_device (device_manager,
gdk_event->motion.device);
break;
case GDK_BUTTON_PRESS: case GDK_MOTION_NOTIFY:
case GDK_BUTTON_RELEASE: event = clutter_event_new (CLUTTER_MOTION);
event = clutter_event_new (gdk_event->type == GDK_BUTTON_PRESS ? event->motion.time = gdk_event->motion.time;
CLUTTER_BUTTON_PRESS : event->motion.x = gdk_event->motion.x;
CLUTTER_BUTTON_RELEASE); event->motion.y = gdk_event->motion.y;
event->button.time = gdk_event->button.time; event->motion.axes = NULL;
event->button.x = gdk_event->button.x; /* It's all X in the end, right? */
event->button.y = gdk_event->button.y; event->motion.modifier_state = gdk_event->motion.state;
event->button.axes = NULL; event->motion.device =
event->button.modifier_state = gdk_event->button.state; _clutter_device_manager_gdk_lookup_device (device_manager,
event->button.button = gdk_event->button.button; gdk_event->motion.device);
event->button.click_count = 1; break;
event->button.device = _clutter_device_manager_gdk_lookup_device (device_manager,
gdk_event->button.device);
break;
case GDK_2BUTTON_PRESS: case GDK_BUTTON_PRESS:
case GDK_3BUTTON_PRESS: case GDK_BUTTON_RELEASE:
/* these are handled by clutter-main.c updating click_count */ event = clutter_event_new (gdk_event->type == GDK_BUTTON_PRESS ?
goto out; CLUTTER_BUTTON_PRESS :
CLUTTER_BUTTON_RELEASE);
event->button.time = gdk_event->button.time;
event->button.x = gdk_event->button.x;
event->button.y = gdk_event->button.y;
event->button.axes = NULL;
event->button.modifier_state = gdk_event->button.state;
event->button.button = gdk_event->button.button;
event->button.click_count = 1;
event->button.device =
_clutter_device_manager_gdk_lookup_device (device_manager,
gdk_event->button.device);
break;
case GDK_KEY_PRESS: case GDK_2BUTTON_PRESS:
case GDK_KEY_RELEASE: case GDK_3BUTTON_PRESS:
event = clutter_event_new (gdk_event->type == GDK_KEY_PRESS ? /* these are handled by clutter-main.c updating click_count */
CLUTTER_KEY_PRESS : break;
CLUTTER_KEY_RELEASE);
event->key.time = gdk_event->key.time;
event->key.modifier_state = gdk_event->key.state;
event->key.keyval = gdk_event->key.keyval;
event->key.hardware_keycode = gdk_event->key.hardware_keycode;
event->key.unicode_value = g_utf8_get_char (gdk_event->key.string);
break;
case GDK_ENTER_NOTIFY: case GDK_KEY_PRESS:
case GDK_LEAVE_NOTIFY: case GDK_KEY_RELEASE:
event = clutter_event_new (gdk_event->type == GDK_ENTER_NOTIFY ? event = clutter_event_new (gdk_event->type == GDK_KEY_PRESS ?
CLUTTER_ENTER : CLUTTER_KEY_PRESS :
CLUTTER_LEAVE); CLUTTER_KEY_RELEASE);
event->crossing.source = CLUTTER_ACTOR (stage); event->key.time = gdk_event->key.time;
event->crossing.time = gdk_event->crossing.time; event->key.modifier_state = gdk_event->key.state;
event->crossing.x = gdk_event->crossing.x; event->key.keyval = gdk_event->key.keyval;
event->crossing.y = gdk_event->crossing.y; event->key.hardware_keycode = gdk_event->key.hardware_keycode;
event->key.unicode_value = g_utf8_get_char (gdk_event->key.string);
break;
/* XXX: no better fallback here? */ case GDK_ENTER_NOTIFY:
event->crossing.device = clutter_device_manager_get_core_device (device_manager, case GDK_LEAVE_NOTIFY:
CLUTTER_POINTER_DEVICE); event = clutter_event_new (gdk_event->type == GDK_ENTER_NOTIFY ?
CLUTTER_ENTER :
CLUTTER_LEAVE);
event->crossing.source = CLUTTER_ACTOR (stage);
event->crossing.time = gdk_event->crossing.time;
event->crossing.x = gdk_event->crossing.x;
event->crossing.y = gdk_event->crossing.y;
if (gdk_event->type == GDK_ENTER_NOTIFY) /* XXX: no better fallback here? */
_clutter_stage_add_device (stage, event->crossing.device); event->crossing.device =
else clutter_device_manager_get_core_device (device_manager,
_clutter_stage_remove_device (stage, event->crossing.device); CLUTTER_POINTER_DEVICE);
break;
case GDK_FOCUS_CHANGE: if (gdk_event->type == GDK_ENTER_NOTIFY)
event = clutter_event_new (CLUTTER_STAGE_STATE); _clutter_stage_add_device (stage, event->crossing.device);
event->stage_state.time = 0; /* XXX: there is no timestamp in this GdkEvent */ else
event->stage_state.changed_mask = CLUTTER_STAGE_STATE_ACTIVATED; _clutter_stage_remove_device (stage, event->crossing.device);
event->stage_state.new_state = gdk_event->focus_change.in ? CLUTTER_STAGE_STATE_ACTIVATED : 0; break;
break;
case GDK_CONFIGURE: case GDK_FOCUS_CHANGE:
clutter_actor_set_size (CLUTTER_ACTOR (stage), event = clutter_event_new (CLUTTER_STAGE_STATE);
gdk_event->configure.width, event->stage_state.time = 0; /* XXX: there is no timestamp in this GdkEvent */
gdk_event->configure.height); event->stage_state.changed_mask = CLUTTER_STAGE_STATE_ACTIVATED;
break; event->stage_state.new_state = gdk_event->focus_change.in
? CLUTTER_STAGE_STATE_ACTIVATED
: 0;
break;
case GDK_SCROLL: case GDK_CONFIGURE:
event = clutter_event_new (CLUTTER_SCROLL);
event->scroll.time = gdk_event->scroll.time;
event->scroll.x = gdk_event->scroll.x;
event->scroll.y = gdk_event->scroll.y;
event->scroll.modifier_state = gdk_event->scroll.state;
event->scroll.axes = NULL;
event->scroll.direction = gdk_event->scroll.direction;
event->scroll.device = _clutter_device_manager_gdk_lookup_device (device_manager,
gdk_event->scroll.device);
case GDK_WINDOW_STATE:
event = clutter_event_new (CLUTTER_STAGE_STATE);
event->stage_state.changed_mask = 0;
event->stage_state.new_state = 0;
if (gdk_event->window_state.changed_mask & GDK_WINDOW_STATE_WITHDRAWN)
{ {
event->stage_state.changed_mask |= CLUTTER_STAGE_STATE_OFFSCREEN; gfloat w, h;
event->stage_state.new_state |= (gdk_event->window_state.new_window_state & GDK_WINDOW_STATE_WITHDRAWN) ?
CLUTTER_STAGE_STATE_OFFSCREEN : 0;
}
if (gdk_event->window_state.changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
{
event->stage_state.changed_mask |= CLUTTER_STAGE_STATE_FULLSCREEN;
event->stage_state.new_state |= (gdk_event->window_state.new_window_state & GDK_WINDOW_STATE_FULLSCREEN) ?
CLUTTER_STAGE_STATE_FULLSCREEN : 0;
}
break;
case GDK_SETTING: clutter_actor_get_size (CLUTTER_ACTOR (stage), &w, &h);
_clutter_backend_gdk_update_setting (backend_gdk, gdk_event->setting.name);
break;
default: if (w != gdk_event->configure.width ||
break; h != gdk_event->configure.height)
} {
clutter_actor_set_size (CLUTTER_ACTOR (stage),
gdk_event->configure.width,
gdk_event->configure.height);
}
}
break;
case GDK_SCROLL:
event = clutter_event_new (CLUTTER_SCROLL);
event->scroll.time = gdk_event->scroll.time;
event->scroll.x = gdk_event->scroll.x;
event->scroll.y = gdk_event->scroll.y;
event->scroll.modifier_state = gdk_event->scroll.state;
event->scroll.axes = NULL;
event->scroll.direction = gdk_event->scroll.direction;
event->scroll.device =
_clutter_device_manager_gdk_lookup_device (device_manager,
gdk_event->scroll.device);
break;
case GDK_WINDOW_STATE:
event = clutter_event_new (CLUTTER_STAGE_STATE);
event->stage_state.changed_mask = 0;
event->stage_state.new_state = 0;
if (gdk_event->window_state.changed_mask & GDK_WINDOW_STATE_WITHDRAWN)
{
event->stage_state.changed_mask |= CLUTTER_STAGE_STATE_OFFSCREEN;
event->stage_state.new_state |= (gdk_event->window_state.new_window_state & GDK_WINDOW_STATE_WITHDRAWN)
? CLUTTER_STAGE_STATE_OFFSCREEN
: 0;
}
if (gdk_event->window_state.changed_mask & GDK_WINDOW_STATE_FULLSCREEN)
{
event->stage_state.changed_mask |= CLUTTER_STAGE_STATE_FULLSCREEN;
event->stage_state.new_state |= (gdk_event->window_state.new_window_state & GDK_WINDOW_STATE_FULLSCREEN)
? CLUTTER_STAGE_STATE_FULLSCREEN
: 0;
}
break;
case GDK_SETTING:
_clutter_backend_gdk_update_setting (backend_gdk, gdk_event->setting.name);
break;
default:
break;
}
if (event != NULL) if (event != NULL)
{ {
event->any.stage = stage; event->any.stage = stage;
if (gdk_event->any.send_event) if (gdk_event->any.send_event)
event->any.flags = CLUTTER_EVENT_FLAG_SYNTHETIC; event->any.flags = CLUTTER_EVENT_FLAG_SYNTHETIC;
_clutter_event_push (event, FALSE); _clutter_event_push (event, FALSE);
spin = 1; spin = 1;
CLUTTER_NOTE (EVENT, "Translated one event from Gdk"); CLUTTER_NOTE (EVENT, "Translated one event from Gdk");
@ -257,8 +285,7 @@ clutter_gdk_handle_event (GdkEvent *gdk_event)
result = GDK_FILTER_REMOVE; result = GDK_FILTER_REMOVE;
} }
out:
clutter_threads_leave (); clutter_threads_leave ();
return result; return result;
} }