/* * \brief Nitpicker user state handling * \author Norman Feske * \date 2006-08-09 * * This class comprehends the policy of user interaction. * It manages the toggling of Nitpicker's different modes * and routes input events to corresponding client sessions. */ /* * Copyright (C) 2006-2013 Genode Labs GmbH * * This file is part of the Genode OS framework, which is distributed * under the terms of the GNU General Public License version 2. */ #ifndef _USER_STATE_H_ #define _USER_STATE_H_ #include "mode.h" #include "view_stack.h" #include "global_keys.h" class User_state : public Mode, public View_stack { private: /* * Policy for the routing of global keys */ Global_keys &_global_keys; /* * Current pointer position */ Point _pointer_pos; /* * Currently pointed-at session */ Session *_pointed_session = nullptr; /* * Session that receives the current stream of input events */ Session *_input_receiver = nullptr; void _update_all(); public: /** * Constructor */ User_state(Global_keys &, Area view_stack_size); /** * Handle input event * * This function controls the Nitpicker mode and the user state * variables. */ void handle_event(Input::Event ev); /** * Accessors */ Point pointer_pos() { return _pointer_pos; } Session *pointed_session() { return _pointed_session; } /** * (Re-)apply origin policy to all views */ void apply_origin_policy(View &pointer_origin) { View_stack::apply_origin_policy(pointer_origin); } /** * Mode interface */ void forget(Session const &) override; void focused_session(Session *) override; }; #endif