Fork of the Genode OS framework
Go to file
Norman Feske dec2d897c3 themed_decorator: fix jumping windows
The decorator's detection of the hovered window element was inaccurate,
which resulted in "jumping" windows in some situations, ultimately
caused by a combination of three different mechanisms.

First, when moving the pointer into the area of a window, the decorator
would detect the hovering of the left border whenever the distance of
the pointer from the border was less than the half of the theme texture
(e.g., 64x64 pixels for the default theme). However, if the left border
margin is set to a small value (e.g., 1), there is an overlap of the
sensitive resize border area and the content. Hence, chances were quite
high that - when moving the pointer from the left into the window - the
hover report would contain the hovering of the left border.

Second, the window manager tries to hide pointer movements from the
decorator if possible. It informs the decorator of the pointer position
if any decoration is hovered or if a new window is hovered. But it does
not expose pointer movements within a window to the decorator. For this
reason, the decorator would not update the hover report as long as the
pointer stays within a once hovered window. In the situation described
above, the hover report would still contain the stale information about
the hovering of the left resize border.

Third, when the user clicks on the window, the decorator examines the
most recent hover report and - in the situation described above - finds
the left border hovered. Consequently, it initiates a window-drag
operation. While resizing the window with the left border, the window
layouter pins the right border of the window to its current position.
All window-size changes of the client will be applied towards the left
(dragged) border. In the case of the top view, which continuously
resizes the window by itself, the window would "jump". In reality, it
actually tries to respond an interactive resize operation. The window
layouter cannot guess that the client is not responding to window
layouter's resize request but is acting independently.

This patch fixes the jumping window problem for the case where the
pointer hovers the overlapping area of the resize border and the
content. However, when trying the to interactively resize the top window
via the bottom-left corner, the "jumping" can still be observed.

Fixes #3303
2019-07-09 08:55:24 +02:00
depot depot: move ehmry depot URL 2019-06-13 12:17:31 +02:00
doc Remove libc_terminal 2019-06-13 12:13:40 +02:00
repos themed_decorator: fix jumping windows 2019-07-09 08:55:24 +02:00
tool run: abort with error if BOARD was not set 2019-07-09 08:55:23 +02:00
.gitignore Tool for assembling API/source/binary archives 2017-05-31 13:15:56 +02:00
LICENSE License update to AGPLv3 2017-02-28 12:59:28 +01:00
README Update README 2017-08-30 10:01:35 +02:00
VERSION version: 19.05 2019-05-29 11:03:29 +02:00

                      =================================
                      Genode Operating System Framework
                      =================================


This is the source tree of the reference implementation of the Genode OS
architecture. For a general overview about the architecture, please refer to
the project's official website:

:Official project website for the Genode OS Framework:

  [https://genode.org/documentation/general-overview]

The current implementation can be compiled for 8 different kernels: Linux,
L4ka::Pistachio, L4/Fiasco, OKL4, NOVA, Fiasco.OC, seL4, and a custom
kernel for running Genode directly on ARM-based hardware. Whereas the Linux
version serves us as development vehicle and enables us to rapidly develop the
generic parts of the system, the actual target platforms of the framework are
microkernels. There is no "perfect" microkernel - and neither should there be
one. If a microkernel pretended to be fit for all use cases, it wouldn't be
"micro". Hence, all microkernels differ in terms of their respective features,
complexity, and supported hardware architectures.

Genode allows the use of each of the kernels listed above with a rich set of
device drivers, protocol stacks, libraries, and applications in a uniform way.
For developers, the framework provides an easy way to target multiple different
kernels instead of tying the development to a particular kernel technology. For
kernel developers, Genode contributes advanced workloads, stress-testing their
kernel, and enabling a variety of application use cases that would not be
possible otherwise. For users and system integrators, it enables the choice of
the kernel that fits best with the requirements at hand for the particular
usage scenario.


Documentation
#############

The primary documentation is the book "Genode Foundations", which is available
on the front page of Genode website:

:Download the book "Genode Foundations":

  [https://genode.org]

The book describes Genode in a holistic and comprehensive way. It equips you
with a thorough understanding of the architecture, assists developers with the
explanation of the development environment and system configuration, and
provides a look under the hood of the framework. Furthermore, it contains the
specification of the framework's programming interface.

The project has a quarterly release cycle. Each version is accompanied with
detailed release documentation, which is available at the documentation
section of the project website:

:Release documentation:

  [https://genode.org/documentation/release-notes/]


Directory overview
##################

The source tree is composed of the following subdirectories:

:'doc':

  This directory contains general documentation. Please consider the following
  document for a quick guide to get started with the framework:

  ! doc/getting_started.txt

  If you are curious about the ready-to-use components that come with the
  framework, please review the components overview:

  ! doc/components.txt

:'repos':

  This directory contains the so-called source-code repositories of Genode.
  Please refer to the README file in the 'repos' directory to learn more
  about the roles of the individual repositories.

:'tool':

  Source-code management tools and scripts. Please refer to the README file
  contained in the directory.

:'depot' and 'public':

  Local depot and public archive of Genode packages. Please refer to

  ! doc/depot.txt

  for more details.


Additional community-maintained components
##########################################

The components found within the main source tree are complemented by a growing
library of additional software, which can be seamlessly integrated into Genode
system scenarios.

:Genode-world repository:

  [https://github.com/genodelabs/genode-world]


Contact
#######

The best way to get in touch with Genode developers and users is the project's
mailing list. Please feel welcome to join in!

:Genode Mailing Lists:

  [https://genode.org/community/mailing-lists]


Commercial support
##################

The driving force behind the Genode OS Framework is the German company Genode
Labs. The company offers commercial licensing, trainings, support, and
contracted development work:

:Genode Labs website:

  [https://www.genode-labs.com]