Home Documentation Products History Screenshots Forum

 MiNT mailing list

The Unofficial XaAES Page
Index Introduction Input devices Menus Scroll lists GEM windows System interface Appendix

Chapter 1 - The Unofficial XaAES Documentation 5. GEM windows

5.1 Introduction
The standard way for applications in a multitasking environment to display information on screen is through the use of windows. A windows work area consist the limiting area to which an application can display its graphical output. Through this approach, several applications can access the screen at a time without conflicting with each others screen space.
If you have previously been using TOS, MultiTOS or N.AES you will probably feel right at home with the look and feel of the GEM windows under XaAES. One thing that however is new in XaAES is the context menu, a menu that is generic to all windows. Before proceeding to explain the functionality in details we first need to establish the difference between the windows exterior and interior.
5.1.1 The window stack
Having windows shown on your monitor is quite similar to having papers and magazines on a real desk. Just like you would have the document you are reading on top of the others, the same is true for windows on the Atari desktop. The window stack is an internal feature of the AES that makes it possible to keep track in what order the windows are stacked on top of each other. There are basically two ways to manipulate a window’s position within the stack. The window can either be turned into the new top window or the new bottommost window. Read more in chapter
5.1.2 Floating and sinking windows
In XaAES any window can be set to have the ability to float or sink. A floating window will always be displayed on top of any other window, even if it is not the topmost window according to the window stack. In other words, the floating behaviour is strictly a visual phenomenon and thus completely separate from the window stack order. Sinking windows will behave similar to the floating ones, but will instead be displayed beneath other windows.
All windows will by default adhere to the behaviour explained in
5.1.1, but this can be changed either by the user or the application owning the window. If more than one window is set to float, the first window to enter floating status will be the topmost visually until it is closed.
5.2 Controlling the windows exterior
It is the AES’ task to maintain redraws of actual window components (borders, widgets, sliders, etc), which means everything that is located outside of the windows work area. If you for example wish to top a window or alternatively send it to the bottom of the window stack, the AES is responsible for making this happen. This is also true for moving and resizing the window.
5.2.1 Window widgets
A window widget is a button that when clicked will have a certain effect on the window itself or to the window contents. The outer border and the title bar of the window can also be considered window widgets in this context, since they too are clickable.
  • Title bar
    • Displays the window title.
    • Used to move the window
    • Used to top or bottom the window
    • Used to shade the window
    • Used to maximize the window
  • Info bar
    •The info bar is an area dedicated to application specific information. In the example on the picture you can see the text editor QED displaying the cursors location.
  • Closer
    •Used to close the window
  • Hider
    •Hides this and any other window belonging to the same application. That is, you’re virtually hiding the application.
  • Iconifier
    •Used to iconify/uniconify the window
  • Fuller
    • Maximizes the window size, a second click restores previous size
  • Sizer
    • Used to change the windows width and height
  • Window border
    • Used to change the windows width and height
5.2.2 Window operations
Top/bottom To alter a windows position on the window stack (See 5.1.1) you can either send it to the top or to the bottom of the stack. A window that is currently the top window will become the bottommost window if a single click is issued at the windows title bar. Performing a single click at the title bar when the window is on any other position of the window stack will instead turn it into the topmost window.
A GEM window can be moved by click-holding its title bar and then dragging it to the desired screen location. XaAES will normally display the windows contents while it is being moved (also refered to as live moving) but if the right mouse button is used, an extent rectangle will instead represent the windows area until the mouse button is released.
In order to change the size of a GEM window, you can either use the sizer widget or the window border. When the first approach is targeted, the mouse is used to drag the sizer widget to determine the new window size. If the left mouse button is used, the window is resized in real time (also known as live sizing). When using the right mouse button, an extent rectangle will represent the new window size until the mouse button is released.
When using the window border to resize the window, things will however work a bit differently. If the top or bottom border is used, only the windows height can be changed. If on the other hand the left or right border is used, only the windows width can be changed. Note however that for this to work the window needs to be equipped with a standard sizer widget. There is an exception to this rule though, when the application that owns the window has added dedicated support for XaAES.
Caution: When resizing the window by grabbing the top or left window border, you are changing both the size and the actual position of the window! Some applications may not be handling this situation correct.
A single click on the fuller widget will adjust the window size to cover the full work area of the desktop. This means that the window can both be resized and also moved to a new location! If the window is already maximized, it will instead be restored into its previous size and location. Note also that a double click to the title bar will represent a single click to the fuller.
Reduces the window into an iconified window (See picture to the right) When you click this widget on the iconified window, the window is restored back, uniconified, into its normal state. Alternatively you can also restore the iconified window by double clicking inside its work area.
Window shading is a feature that will save valuable screen space by allowing users to fold an entire window into the title bar. Right clicking the windows title bar will trigger the window to enter the shaded state. Another click on the title bar will restore the window.
An application that is not currently being put to use can be hidden by clicking the hider widget. Do note that not only the window with the hider widget will be included in the hiding operation, but any window that belongs to the application. In essence, the application is hidden.
In XaAES there is now also the possibility to hide individual windows. This feature is accessed through the context menu (See
5.2.3 Context menu
The context menu is something that is all new when it comes to graphical user interfaces for Atari computers. It is a generic menu, in the sense that it will look the same regardless of which window it was opened from. The context menu can be used to enforce certain behaviour/status to a specific window and also gives access to some of features normally accessed through window widgets. To open this menu you need to position the mouse inside the window and perform a ctrl+alt-right click. Many of the features can target either the window that opened the menu, every window except the window that opened the menu, or all of the currently open windows.
As this menu gradually has become more and more packed with features, some of the extended features have been organized within submenus. This is done to give the user a better overview of functionality that is offered by the menu. The image below shows what the context menu looks like when first opened, before any of the attached submenus are opened. Except for topping the desktop, the features located in this level of the menu will only affect the window that opened the menu, or the process that owns this window. This window is referred to as “the current window” for the rest of chapter 5.2.3.
Main menu
  • To desktop
    •Make the desktop the new topmost application
  • Move
    •Move the current window
  • Resize
    •Resize the current window
  • Quit
    •Quit (terminate cleanly) the process that owns the current window (See 6.4)
  • Kill
    •Kill (terminate brutally) the process that owns the current window (See 6.4)
Submenu - Windows
This menu displays a list of all windows that are currently open. The first column reveals the name of the application owning the current window and the second shows the windows title. Selecting a window from the list will trigger XaAES to top it.

Submenu - Advanced
Within this submenu you get access to some powerful features, enabling you to set rather exotic window attributes to your GEM windows.
  • Keep over others
    •Sets the current window to float
  • Keep under others
    •Sets the current window to sink
  • Toolbox attribute
    <not documented yet>
  • Deny keyboard focus
    •Quit (terminate cleanly) the process that owns the current window (See 6.4)
Submenu - Close
This submenu allows you to close one or several windows, depending on which menu entry that is selected.
  • This
    •Closes the current window
  • All
    •Closes all windows
  • All others
    •Closes every window except the current window

Submenu - Hide
Through this submenu you can hide or unhide one or several windows or applications, depending on which menu entry that is selected.
  • This window
    •Hides the current window
  • Application
    •Hides the application that owns the current window
  • All others
    •Closes every window except the current window

Submenu - Iconify
The iconify submenu allows you to iconify or uniconify one or several windows.
  • This
    •Iconifies the current window
  • All
    •Iconifies all open windows
  • All others
    •Iconifies all windows except the current window
  • Restore all
    •Uniconifies all windows that are currently iconified
  • Restore all others
    •Uniconifies every window except the current window
Submenu - Shade
The last submenu of the context menu controls window shading.
  • This
    •Shades the current window
  • All
    •Shades all open windows
  • All others
    •Shades all windows except the current window
  • Restore all
    •Unshades all windows that are currently shaded
  • Restore all others
    •Unshades every window except the current window
5.3 Controlling the windows interior
The work area (See
5.2.1) of the window consist the windows interior and is the place for applications to direct their output. Much in the same way that the closer, hider, etc. are widgets that are used to control the windows exterior you can also affect the windows work area by accessing the sliders and the arrow widgets. The purpose of the concept with sliders is to allow for scrolling of the windows contents when the contents size exceeds that of the windows work area.
5.3.1 Horizontal/vertical sliders
Each slider consists of 2 parts: One inner, movable part (slider button) and an outer box (slider bar) that defines the limits to where the inner part can be positioned. The size of the slider button relatively to the size of the slider bar reflects the ratio between the size of the windows contents and the size of the windows work area.
Example: If the height of the window contents is twice as big as the height of the windows work area, the slider button will thus occupy half of the slider bars size. If on the other hand the height of the window contents can fit within the windows work area height, the slider button will occupy the full size of the slider bar. Since the full window content is already visible, there is nothing to scroll.
Moving the slider
The slider button can be moved by either dragging it (clicking left mouse button and holding it down while moving the mouse) or by using the arrow widgets (See the section below). A third option is to perform a mouse click on the slider bar (outside of the slider button) which then moves the slider button the same distance as its size. That is, if performed on the vertical slider this will result in a page up/page down operation. If you wish to move the inner slider button directly to a particular location, you can hold down while clicking on the desired destination.
5.3.2 Arrow widgets (Up/down/left/right arrows)
The arrow widgets are similar to the widgets that are used to control the windows exterior, but are instead linked to a slider. A set of arrow widgets together with a slider makes up a scroll bar (see picture above).
  • A single click on an arrow widget will trigger the corresponding slider button to move 1 step (the size of the step may vary depending on how the application handles scrolling internally).
  • Double clicking on a widget will result in the slider button being moved to the endpoint in the direction the widget is indicating. For example you can double click the down arrow if you wish to scroll down to the bottom.
  • Using the right mouse button will work as described above, but the direction of the scrolling will be inverted. That is, a single right click on the down arrow will move the slider button 1 step upwards. Similarly, a right double click on the down arrow will move the slider button to the top.


The Unofficial XaAES Page © Joakim Högberg 2003-2015