<BODY >
<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html82"
+<A NAME="tex2html81"
HREF="node3.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
-<A NAME="tex2html76"
+<A NAME="tex2html75"
HREF="ionnotes.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
-<A NAME="tex2html70"
+<A NAME="tex2html69"
HREF="node1.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
-<A NAME="tex2html78"
+<A NAME="tex2html77"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
-<A NAME="tex2html80"
+<A NAME="tex2html79"
HREF="node8.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
-<B> Next:</B> <A NAME="tex2html83"
+<B> Next:</B> <A NAME="tex2html82"
HREF="node3.html">2 Object system implementation</A>
-<B> Up:</B> <A NAME="tex2html77"
+<B> Up:</B> <A NAME="tex2html76"
HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html71"
+<B> Previous:</B> <A NAME="tex2html70"
HREF="node1.html">Contents</A>
- <B> <A NAME="tex2html79"
+ <B> <A NAME="tex2html78"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html81"
+ <B> <A NAME="tex2html80"
HREF="node8.html">Index</A></B>
<BR>
<BR></DIV>
<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html84"
+<LI><A NAME="tex2html83"
HREF="node2.html#SECTION00021000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html85"
+<LI><A NAME="tex2html84"
HREF="node2.html#SECTION00022000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
<UL>
-<LI><A NAME="tex2html86"
+<LI><A NAME="tex2html85"
HREF="node2.html#SECTION00022100000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html87"
+<LI><A NAME="tex2html86"
HREF="node2.html#SECTION00022200000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
</UL>
<BR>
-<LI><A NAME="tex2html88"
+<LI><A NAME="tex2html87"
HREF="node2.html#SECTION00023000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
</UL>
<!--End of Table of Child-Links-->
<P>
While Ion does not not have a truly object-oriented design
<A NAME="tex2html1"
- HREF="#foot210"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A>,
+ HREF="#foot215"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A>,
things that appear on the computer screen are, however, quite
naturally expressed as such ``objects''. Therefore Ion implements
a rather primitive OO system for these screen objects and some
<P>
-<DIV ALIGN="CENTER"><A NAME="fig:classhierarchy"></A><A NAME="317"></A>
+<DIV ALIGN="CENTER"><A NAME="fig:classhierarchy"></A><A NAME="322"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
Partial Ioncore, <SPAN CLASS="textit">mod_tiling</SPAN> and <SPAN CLASS="textit">mod_query</SPAN>
| |-->WWindow
| | |-->WMPlex
| | | |-->WFrame
- | | | |-->WScreen
- | | | |-->WRootWin
- | | |-->WInput (mod_query)
+ | | | `-->WScreen
+ | | | `-->WRootWin
+ | | `-->WInput (mod_query)
| | |-->WEdln (mod_query)
- | | |-->WMessage (mod_query)
+ | | `-->WMessage (mod_query)
| |-->WGroup
| | |-->WGroupWS
- | | |-->WGroupCW
- | |-->WTiling (mod_tiling)
- |-->WSplit (mod_tiling)
+ | | `-->WGroupCW
+ | `-->WTiling (mod_tiling)
+ `-->WSplit (mod_tiling)
</PRE></TD></TR>
</TABLE>
</DIV>
<P>
<DL>
<DT><STRONG>Obj</STRONG></DT>
-<DD><A NAME="323"></A>
+<DD><A NAME="332"></A>
Is the base of Ion's object system.
<P>
</DD>
<DT><STRONG>WRegion</STRONG></DT>
-<DD><A NAME="324"></A>
+<DD><A NAME="333"></A>
is the base class for everything corresponding to something on the
screen. Each object of type WRegion has a size and position
relative to the parent WRegion. While a big part of Ion
<P>
</DD>
<DT><STRONG>WClientWin</STRONG></DT>
-<DD><A NAME="325"></A> is a class for
+<DD><A NAME="334"></A> is a class for
client window objects, the objects that window managers are
supposed to manage.
<P>
</DD>
<DT><STRONG>WWindow</STRONG></DT>
-<DD><A NAME="326"></A> is the base class for all
+<DD><A NAME="335"></A> is the base class for all
internal objects having an X window associated to them
(WClientWins also have X windows associated to them).
<P>
</DD>
<DT><STRONG>WScreen</STRONG></DT>
-<DD><A NAME="327"></A> is an instance of WMPlex
+<DD><A NAME="336"></A> is an instance of WMPlex
for screens.
<P>
</DD>
<DT><STRONG>WRootWin</STRONG></DT>
-<DD><A NAME="328"></A> is the class for
- root windows<A NAME="244"></A> of X screens<A NAME="245"></A>.
+<DD><A NAME="337"></A> is the class for
+ root windows<A NAME="249"></A> of X screens<A NAME="250"></A>.
It is an instance of WScreen.
Note that an ``X screen'' or root window is not necessarily a
- single physical screen<A NAME="247"></A> as a root window
+ single physical screen<A NAME="252"></A> as a root window
may be split over multiple screens when ugly hacks such as
- Xinerama<A NAME="248"></A> are used. (Actually there can be only
+ Xinerama<A NAME="253"></A> are used. (Actually there can be only
one root window when Xinerama is used.)
<P>
</DD>
<DT><STRONG>WFrame</STRONG></DT>
-<DD><A NAME="329"></A> is the class for frames.
+<DD><A NAME="338"></A> is the class for frames.
While most Ion's objects have no graphical presentation, frames
basically add to WMPlexes the decorations around client
windows (borders, tabs).
<P>
</DD>
<DT><STRONG>WGroup</STRONG></DT>
-<DD><A NAME="330"></A> is the base class for groups.
+<DD><A NAME="339"></A> is the base class for groups.
Particular types of groups are workspaces
- (WGroupWS<A NAME="331"></A>)
+ (WGroupWS<A NAME="340"></A>)
and groups of client windows
- (WGroupCW<A NAME="332"></A>).
+ (WGroupCW<A NAME="341"></A>).
</DD>
</DL>
<P>
<DL>
<DT><STRONG>WTiling</STRONG></DT>
-<DD><A NAME="334"></A> is the class for tilings
+<DD><A NAME="344"></A> is the class for tilings
of frames.
</DD>
<DT><STRONG>WSplit</STRONG></DT>
-<DD><A NAME="335"></A> (or, more specifically, classes
+<DD><A NAME="345"></A> (or, more specifically, classes
that inherit it) encode the WTiling tree structure.
</DD>
</DL>
<P>
<DL>
<DT><STRONG>WInput</STRONG></DT>
-<DD><A NAME="337"></A> is a virtual base class for the
+<DD><A NAME="348"></A> is a virtual base class for the
two classes below.
</DD>
<DT><STRONG>WEdln</STRONG></DT>
-<DD><A NAME="338"></A> is the class for the ``queries'',
+<DD><A NAME="349"></A> is the class for the ``queries'',
the text inputs that usually appear at bottoms of frames and sometimes
screens. Queries are the functional equivalent of ``mini buffers'' in
many text editors.
</DD>
<DT><STRONG>WMessage</STRONG></DT>
-<DD><A NAME="339"></A> implements the boxes for
+<DD><A NAME="350"></A> implements the boxes for
warning and other messages that Ion may wish to display to the user.
These also usually appear at bottoms of frames.
</DD>
<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
</H3>
Each object of type WRegion has a parent and possibly a manager
-associated to it. The parent<A NAME="280"></A> for an object is always a
+associated to it. The parent<A NAME="285"></A> for an object is always a
WWindow and for WRegion with an X window (WClientWin,
WWindow) the parent WWindow is given by the same relation of
the X windows. For other WRegions the relation is not as clear.
<P>
-<DIV ALIGN="CENTER"><A NAME="fig:parentship"></A><A NAME="291"></A>
+<DIV ALIGN="CENTER"><A NAME="fig:parentship"></A><A NAME="296"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
Most common parent-child relations</CAPTION>
<TR><TD><PRE>
WRootWins
- |-->WScreens
- |-->WGroupWSs
- |-->WTilings
- |-->WClientWins in full screen mode
- |-->WFrames
- |-->WGroupCWs
- |-->WClientWins
- |-->WFrames for transients
- |-->a possible WEdln or WMessage
+ |-->WGroupWSs
+ |-->WTilings
+ |-->WClientWins in full screen mode
+ `-->WFrames
+ |-->WGroupCWs
+ |-->WClientWins
+ |-->WFrames for transients
+ `-->a possible WEdln or WMessage
</PRE></TD></TR>
</TABLE>
</DIV>
<P>
WRegions have very little control over their children as a parent.
-The manager<A NAME="295"></A> WRegion has much more control over its
+The manager<A NAME="300"></A> WRegion has much more control over its
managed WRegions. Managers, for example, handle resize requests,
focusing and displaying of the managed regions. Indeed the manager--managed
relationship gives a better picture of the logical ordering of objects on
the screen. Again, there are generally few limits, but the most common
hierarchy is given in Figure <A HREF="#fig:managership">3</A>. Note that sometimes
-the parent and manager are the same object and not all objects may have
-a manager (e.g. the dock in the dock module at the time of writing this)
-but all have a parent-a screen if not anything else.
+the parent and manager are the same object and not all regions may have
+a manager, but all have a parent-a screen if not anything else.
<P>
<P>
-<DIV ALIGN="CENTER"><A NAME="fig:managership"></A><A NAME="303"></A>
+<DIV ALIGN="CENTER"><A NAME="fig:managership"></A><A NAME="308"></A>
<TABLE>
<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
Most common manager-managed relations</CAPTION>
<TR><TD><PRE>
WRootWins
- |-->WScreens
- |-->WGroupCWs for full screen WClientWins
- | |-->WClientWins
- | |-->WFrames for transients (dialogs)
- | |--> WClientWin
- |-->WGroupWSs for workspaces
- | |-->WTiling
- | | |-->WFrames
- | | | |-->WGroupCWs (with contents as above)
- | | |-->possibly a WStatusBar or WDock
- | |-->WFrames for floating content
- | |-->possibly a WEdln, WMessage or WMenu
- | |-->possibly a WStatusBar or WDock (if no tiling)
- |-->WFrames for sticky stuff, such as the scratchpad
+ |-->WGroupCWs for full screen WClientWins
+ | |-->WClientWins
+ | `-->WFrames for transients (dialogs)
+ | `--> WClientWin
+ |-->WGroupWSs for workspaces
+ | |-->WTiling
+ | | |-->WFrames
+ | | | `-->WGroupCWs (with contents as above)
+ | | `-->possibly a WStatusBar or WDock
+ | |-->WFrames for floating content
+ | |-->possibly a WEdln, WMessage or WMenu
+ | `-->possibly a WStatusBar or WDock (if no tiling)
+ `-->WFrames for sticky stuff, such as the scratchpad
</PRE></TD></TR>
</TABLE>
</DIV>
<P>
<BR><HR><H4>Footnotes</H4>
<DL>
-<DT><A NAME="foot210">... design</A><A
+<DT><A NAME="foot215">... design</A><A
HREF="node2.html#tex2html1"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
<DD>the author doesn't like such artificial designs
</DL>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
-<A NAME="tex2html82"
+<A NAME="tex2html81"
HREF="node3.html">
<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A>
-<A NAME="tex2html76"
+<A NAME="tex2html75"
HREF="ionnotes.html">
<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A>
-<A NAME="tex2html70"
+<A NAME="tex2html69"
HREF="node1.html">
<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>
-<A NAME="tex2html78"
+<A NAME="tex2html77"
HREF="node1.html">
<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>
-<A NAME="tex2html80"
+<A NAME="tex2html79"
HREF="node8.html">
<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A>
<BR>
-<B> Next:</B> <A NAME="tex2html83"
+<B> Next:</B> <A NAME="tex2html82"
HREF="node3.html">2 Object system implementation</A>
-<B> Up:</B> <A NAME="tex2html77"
+<B> Up:</B> <A NAME="tex2html76"
HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html71"
+<B> Previous:</B> <A NAME="tex2html70"
HREF="node1.html">Contents</A>
- <B> <A NAME="tex2html79"
+ <B> <A NAME="tex2html78"
HREF="node1.html">Contents</A></B>
- <B> <A NAME="tex2html81"
+ <B> <A NAME="tex2html80"
HREF="node8.html">Index</A></B> </DIV>
<!--End of Navigation Panel-->