/* A scroll event occured in workspace selector (e.g. by mouse-wheel) */ static gboolean _xfdashboard_workspace_selector_on_scroll_event(ClutterActor *inActor, ClutterEvent *inEvent, gpointer inUserData) { XfdashboardWorkspaceSelector *self; XfdashboardWorkspaceSelectorPrivate *priv; gint direction; gint currentWorkspace; gint maxWorkspace; XfdashboardWindowTrackerWorkspace *workspace; g_return_val_if_fail(XFDASHBOARD_IS_WORKSPACE_SELECTOR(inActor), CLUTTER_EVENT_PROPAGATE); g_return_val_if_fail(inEvent, CLUTTER_EVENT_PROPAGATE); self=XFDASHBOARD_WORKSPACE_SELECTOR(inActor); priv=self->priv; /* Get direction of scroll event */ switch(clutter_event_get_scroll_direction(inEvent)) { case CLUTTER_SCROLL_UP: case CLUTTER_SCROLL_LEFT: direction=-1; break; case CLUTTER_SCROLL_DOWN: case CLUTTER_SCROLL_RIGHT: direction=1; break; /* Unhandled directions */ default: g_debug("Cannot handle scroll direction %d in %s", clutter_event_get_scroll_direction(inEvent), G_OBJECT_TYPE_NAME(self)); return(CLUTTER_EVENT_PROPAGATE); } /* Get next workspace in scroll direction */ currentWorkspace=xfdashboard_window_tracker_workspace_get_number(priv->activeWorkspace); maxWorkspace=xfdashboard_window_tracker_get_workspaces_count(priv->windowTracker); currentWorkspace+=direction; if(currentWorkspace<0 || currentWorkspace>=maxWorkspace) return(CLUTTER_EVENT_STOP); /* Activate new workspace */ workspace=xfdashboard_window_tracker_get_workspace_by_number(priv->windowTracker, currentWorkspace); xfdashboard_window_tracker_workspace_activate(workspace); return(CLUTTER_EVENT_STOP); }
static gboolean scrolled( ClutterActor *actor, ClutterEvent *event, gpointer user_data) { ClutterScrollDirection direction = clutter_event_get_scroll_direction(event); Slider* slider = SLIDER(user_data); switch (direction) { case CLUTTER_SCROLL_UP: slider_set_pos(slider, slider_get_pos(slider) - 0.1); break; case CLUTTER_SCROLL_DOWN: slider_set_pos(slider, slider_get_pos(slider) + 0.1); break; default: break; } return CLUTTER_EVENT_STOP; }
IO_METHOD(IoClutterEvent, getScrollDirection) { return IONUMBER(clutter_event_get_scroll_direction(IOCEVENT(self))); }
static gboolean input_cb (ClutterActor *actor, ClutterEvent *event, gpointer data) { ClutterActor *stage = clutter_actor_get_stage (actor); ClutterActor *source_actor = clutter_event_get_source (event); gchar keybuf[128]; switch (event->type) { case CLUTTER_KEY_PRESS: fill_keybuf (keybuf, &event->key); printf ("[%s] KEY PRESS %s", clutter_actor_get_name (source_actor), keybuf); break; case CLUTTER_KEY_RELEASE: fill_keybuf (keybuf, &event->key); printf ("[%s] KEY RELEASE %s", clutter_actor_get_name (source_actor), keybuf); break; case CLUTTER_MOTION: { ClutterMotionEvent *motion = (ClutterMotionEvent *) event; g_print ("[%s] MOTION (%.02f,%.02f)", clutter_actor_get_name (source_actor), motion->x, motion->y); } break; case CLUTTER_ENTER: g_print ("[%s] ENTER (from:%s)", clutter_actor_get_name (source_actor), clutter_event_get_related (event) != NULL ? clutter_actor_get_name (clutter_event_get_related (event)) : "<out of stage>"); break; case CLUTTER_LEAVE: g_print ("[%s] LEAVE (to:%s)", clutter_actor_get_name (source_actor), clutter_event_get_related (event) != NULL ? clutter_actor_get_name (clutter_event_get_related (event)) : "<out of stage>"); break; case CLUTTER_BUTTON_PRESS: g_print ("[%s] BUTTON PRESS (button:%i, click count:%i)", clutter_actor_get_name (source_actor), clutter_event_get_button (event), clutter_event_get_click_count (event)); break; case CLUTTER_BUTTON_RELEASE: g_print ("[%s] BUTTON RELEASE (button:%i, click count:%i)", clutter_actor_get_name (source_actor), clutter_event_get_button (event), clutter_event_get_click_count (event)); if (source_actor == stage) clutter_stage_set_key_focus (CLUTTER_STAGE (stage), NULL); else if (source_actor == actor && clutter_actor_get_parent (actor) == stage) clutter_stage_set_key_focus (CLUTTER_STAGE (stage), actor); break; case CLUTTER_SCROLL: g_print ("[%s] BUTTON SCROLL (direction:%s)", clutter_actor_get_name (source_actor), clutter_event_get_scroll_direction (event) == CLUTTER_SCROLL_UP ? "up" : "down"); break; case CLUTTER_STAGE_STATE: g_print ("[%s] STAGE STATE", clutter_actor_get_name (source_actor)); break; case CLUTTER_DESTROY_NOTIFY: g_print ("[%s] DESTROY NOTIFY", clutter_actor_get_name (source_actor)); break; case CLUTTER_CLIENT_MESSAGE: g_print ("[%s] CLIENT MESSAGE", clutter_actor_get_name (source_actor)); break; case CLUTTER_DELETE: g_print ("[%s] DELETE", clutter_actor_get_name (source_actor)); break; case CLUTTER_NOTHING: return FALSE; } if (source_actor == actor) g_print (" *source*"); g_print ("\n"); return FALSE; }