"
COPYRIGHT (c) 1988 by Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
PseudoView subclass:#DisplayRootView
instanceVariableNames:''
classVariableNames:''
poolDictionaries:''
category:'Views-Basic'
!
DisplayRootView comment:'
COPYRIGHT (c) 1988 by Claus Gittinger
All Rights Reserved
$Header: /cvs/stx/stx/libview/DisplayRootView.st,v 1.10 1995-02-27 10:17:37 claus Exp $
'!
Smalltalk at:#RootView put:nil!
!DisplayRootView class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 1988 by Claus Gittinger
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
!
version
"
$Header: /cvs/stx/stx/libview/DisplayRootView.st,v 1.10 1995-02-27 10:17:37 claus Exp $
"
!
documentation
"
this class describes Xs rootWindow (which is the background window and
must be used for drawing outside of Views i.e. for dragging between Views).
To draw in the root window:
RootView paint:(Color red).
RootView fillRectangleX:10 y:10 width:100 height:100.
of course, all stuff from View and its superclasses can be used:
RootView paint:(Color red).
RootView noClipByChildren.
RootView fillRectangleX:10 y:10 width:100 height:100.
you have to be careful with some window managers, since what you
see on the screen is not always really the root window. Some Desktops
add their own view in between (although the Xworkstation class does
care for this, it seems not to work correctly on all systems).
In general, you should never use the RootView for normal applications.
"
! !
!DisplayRootView class methodsFor:'initialization'!
initialize
Display isNil ifTrue:[
Workstation initialize
].
super initialize
! !
!DisplayRootView class methodsFor:'instance creation'!
new
"since there is only one RootView - catch new and return
the one and only rootView."
RootView isNil ifTrue:[
RootView := super new
].
^ RootView
! !
!DisplayRootView methodsFor:'initialization'!
initialize
super initialize.
width := device width.
height := device height.
drawableId := device rootWindowFor:self.
realized := true.
!
reinitialize
"reinit after snapin"
width := device width.
height := device height.
drawableId := device rootWindowFor:self.
realized := true.
gcId := nil.
! !
!DisplayRootView methodsFor:'accessing'!
name
^ 'RootWindow'
!
controller
^ nil
!
sensor
^ nil
! !
!DisplayRootView methodsFor:'destroying'!
destroy
"catch destroy - some windowmanagers get confused if
we destroy the rootWindow if its a virtual root window"
^ self
! !
!DisplayRootView methodsFor:'queries'!
canDrop:anObjectOrCollection
"return true, if anObjectOrCollection can be
dropped in the receiver. This method should be
redefined in views which can take objects"
^ false
!
isWindowManagerRunning
"answer true, if a window manager is currently running.
This is done by performing an action (enabling button events of
root window), which will fail if a window manager is running."
|errorOccured|
errorOccured := false.
device class deviceErrorSignal handle:[:ex |
errorOccured := true.
ex return
] do:[
device synchronizeOutput.
].
^ errorOccured
"RootView isWindowManagerRunning"
! !