/* * \brief Example window decorator that mimics the Motif look * \author Norman Feske * \date 2014-01-10 */ /* * Copyright (C) 2014 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. */ /* local includes */ #include "window.h" Decorator::Window_base::Hover Decorator::Window::hover(Point abs_pos) const { Hover hover; if (!_decor_geometry().contains(abs_pos)) return hover; hover.window_id = id(); Rect const closer_geometry = _theme.absolute(_theme.element_geometry(Theme::ELEMENT_TYPE_CLOSER), outer_geometry()); if (closer_geometry.contains(abs_pos)) { hover.closer = true; return hover; } Rect const maximizer_geometry = _theme.absolute(_theme.element_geometry(Theme::ELEMENT_TYPE_MAXIMIZER), outer_geometry()); if (maximizer_geometry.contains(abs_pos)) { hover.maximizer = true; return hover; } Rect const title_geometry = _theme.absolute(_theme.title_geometry(), outer_geometry()); if (title_geometry.contains(abs_pos)) { hover.title = true; return hover; } int const x = abs_pos.x(); int const y = abs_pos.y(); Area const theme_size = _theme.background_size(); hover.left_sizer = x < outer_geometry().x1() + (int)theme_size.w()/2; hover.right_sizer = x > outer_geometry().x2() - (int)theme_size.w()/2; hover.top_sizer = y < outer_geometry().y1() + (int)theme_size.h()/2; hover.bottom_sizer = y > outer_geometry().y2() - (int)theme_size.h()/2; return hover; }