XWorkstation.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 06 Sep 2017 10:04:18 +0200
branchjv
changeset 8180 25149dfd68e0
parent 8075 00b6d158ab89
child 8187 03ebf4f9a91d
permissions -rw-r--r--
Build files: removed a bunch of make rules for long-dead unsupported systems ...in order to unify and simplify the build. If a need to support this ancient systems arose, these hacks may ni longer be needed (due to new versions of tools) or the hacks would have to be written again (better) or retrieved from SCM (worse). Time will show.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     1
"
6
7ee0cfde237d *** empty log message ***
claus
parents: 5
diff changeset
     2
COPYRIGHT (c) 1989 by Claus Gittinger
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
     3
	      All Rights Reserved
0
48194c26a46c Initial revision
claus
parents:
diff changeset
     4
48194c26a46c Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
48194c26a46c Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
48194c26a46c Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
48194c26a46c Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
48194c26a46c Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
48194c26a46c Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
48194c26a46c Initial revision
claus
parents:
diff changeset
    11
"
3200
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
    12
"{ Package: 'stx:libview' }"
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
    13
6758
68c8fc0ab607 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6630
diff changeset
    14
"{ NameSpace: Smalltalk }"
68c8fc0ab607 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6630
diff changeset
    15
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    16
DeviceWorkstation subclass:#XWorkstation
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    17
	instanceVariableNames:'hasShapeExtension hasShmExtension hasDPSExtension
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    18
		hasMbufExtension hasXVideoExtension hasSaveUnder hasPEXExtension
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    19
		hasImageExtension hasInputExtension hasXineramaExtension
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    20
		hasRenderExtension hasXftLibrary ignoreBackingStore blackpixel
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    21
		whitepixel atoms protocolsAtom deleteWindowAtom saveYourselfAtom
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    22
		quitAppAtom primaryAtom clipboardAtom stringAtom wmStateAtom
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    23
		motifWMHintsAtom listOfXFonts buttonsPressed eventRootX
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    24
		eventRootY displayName eventTrace dispatchingExpose rgbVisual
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    25
		rgbaVisual virtualRootId rootId altModifierMask metaModifierMask
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    26
		lastEventTime rawMonitorBounds monitorBounds lastButtonPressTime
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    27
		deviceIOTimeoutErrorSignal activateOnClick rawKeySymTranslation
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    28
		selectionOwner clipboardSelectionTime primarySelectionTime
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    29
		selectionFetchers selectionHandlers preWaitAction xlibTimeout
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    30
		xlibTimeoutForWindowCreation hasConnectionBroken uniqueDeviceID
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    31
		stxDeviceAtom uuidAtom primaryBuffer windowGroupWindow
7166
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
    32
		maxOperationsUntilFlush operationsUntilFlush lastError hostname
6916
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
    33
		wmClientLeaderAtom wmClientMachineAtom wmClassName wmClassClass
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
    34
		pid netWmPidAtom'
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    35
	classVariableNames:'RawKeySymTranslation ConservativeSync MaxStringLength
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    36
		DefaultXLibTimeout DefaultXLibTimeoutForWindowCreation
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    37
		ErrorDBCache'
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    38
	poolDictionaries:''
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    39
	category:'Interface-Graphics'
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
    40
!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    41
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
    42
Object subclass:#SelectionFetcher
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    43
	instanceVariableNames:'sema message display drawableID selectionID propertyID targetID
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    44
		buffer done incremental'
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    45
	classVariableNames:''
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    46
	poolDictionaries:''
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    47
	privateIn:XWorkstation
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
    48
!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
    49
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
    50
SimpleView subclass:#WindowGroupWindow
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    51
	instanceVariableNames:''
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    52
	classVariableNames:''
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    53
	poolDictionaries:''
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    54
	privateIn:XWorkstation
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
    55
!
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
    56
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
    57
DeviceGraphicsContext subclass:#X11GraphicsContext
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
    58
	instanceVariableNames:'depth xftDrawId'
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    59
	classVariableNames:''
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    60
	poolDictionaries:''
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
    61
	privateIn:XWorkstation
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
    62
!
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
    63
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
    64
!XWorkstation primitiveDefinitions!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    65
%{
4090
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
    66
#define SUPPORT_MOTIF_WM_HINTS
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
    67
1062
2a5d50022c96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
    68
#ifdef LINUX
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
    69
# ifndef __arm__
7137
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
    70
#  define SHM 
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
    71
# endif
1062
2a5d50022c96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
    72
#endif
2a5d50022c96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
    73
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    74
#define COUNT_RESOURCES
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    75
#ifdef COUNT_RESOURCES
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    76
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    77
static int __cnt_color = 0;
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    78
static int __cnt_bitmap = 0;
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    79
static int __cnt_view = 0;
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    80
static int __cnt_gc = 0;
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    81
static int __cnt_cursor = 0;
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    82
static int __cnt_font = 0;
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    83
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    84
#endif
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
    85
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
    86
/*
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
    87
 * x does a typedef Time - I need Object Time ...
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
    88
 */
2791
97ae9d3d44e4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2777
diff changeset
    89
#undef Time
0
48194c26a46c Initial revision
claus
parents:
diff changeset
    90
#define Time XTime
48194c26a46c Initial revision
claus
parents:
diff changeset
    91
391
d3cad7c15ae2 well well well - do a sync in eventPending
Claus Gittinger <cg@exept.de>
parents: 386
diff changeset
    92
/*
d3cad7c15ae2 well well well - do a sync in eventPending
Claus Gittinger <cg@exept.de>
parents: 386
diff changeset
    93
 * x does a #define True / False
d3cad7c15ae2 well well well - do a sync in eventPending
Claus Gittinger <cg@exept.de>
parents: 386
diff changeset
    94
 * we are lucky - the ST/X True/False are not needed
d3cad7c15ae2 well well well - do a sync in eventPending
Claus Gittinger <cg@exept.de>
parents: 386
diff changeset
    95
 */
d3cad7c15ae2 well well well - do a sync in eventPending
Claus Gittinger <cg@exept.de>
parents: 386
diff changeset
    96
#undef True
d3cad7c15ae2 well well well - do a sync in eventPending
Claus Gittinger <cg@exept.de>
parents: 386
diff changeset
    97
#undef False
d3cad7c15ae2 well well well - do a sync in eventPending
Claus Gittinger <cg@exept.de>
parents: 386
diff changeset
    98
37
c2dc1832c0f1 *** empty log message ***
claus
parents: 36
diff changeset
    99
#ifdef memset
c2dc1832c0f1 *** empty log message ***
claus
parents: 36
diff changeset
   100
# undef memset
c2dc1832c0f1 *** empty log message ***
claus
parents: 36
diff changeset
   101
#endif
c2dc1832c0f1 *** empty log message ***
claus
parents: 36
diff changeset
   102
1891
0dc56210cbfb VMS stuff
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
   103
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   104
#include <stdio.h>
5989
Claus Gittinger <cg@exept.de>
parents: 5985
diff changeset
   105
6041
cd2da50a737c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6032
diff changeset
   106
#if defined(__osx__)
5989
Claus Gittinger <cg@exept.de>
parents: 5985
diff changeset
   107
# include <malloc/malloc.h>
Claus Gittinger <cg@exept.de>
parents: 5985
diff changeset
   108
extern void *malloc();
Claus Gittinger <cg@exept.de>
parents: 5985
diff changeset
   109
#else
Claus Gittinger <cg@exept.de>
parents: 5985
diff changeset
   110
# ifndef FREEBSD
Claus Gittinger <cg@exept.de>
parents: 5985
diff changeset
   111
#  include <malloc.h>
Claus Gittinger <cg@exept.de>
parents: 5985
diff changeset
   112
# endif
5528
42447013fbc6 freebsd
Michael Beyl <mb@exept.de>
parents: 5525
diff changeset
   113
#endif
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   114
#include <X11/Xlib.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   115
#include <X11/Xutil.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   116
#include <X11/Xatom.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   117
8038
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
   118
/*
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
   119
 * To get XKeysymToUnicode(), not provided by Xlib...
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
   120
 */
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
   121
#include "xkeysymtounicode.h"
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
   122
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
   123
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   124
#define XK_MISCELLANY
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   125
#include <X11/keysymdef.h>
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   126
277
eb67c44da084 testing new inline-expression feature of stc - no real change
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   127
#include <X11/cursorfont.h>
eb67c44da084 testing new inline-expression feature of stc - no real change
Claus Gittinger <cg@exept.de>
parents: 268
diff changeset
   128
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   129
#ifdef LINUX
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   130
# include <sys/socket.h>
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   131
#endif
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   132
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   133
extern OBJ __GLOBAL_GET_BY_NAME(char *);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   134
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   135
# define __HANDLE_VAL(type, externalAddress) \
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   136
	((type)__externalAddressVal(externalAddress))
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   137
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   138
# define __HANDLE_NEW(ptr, __cls)                    \
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   139
	({                                           \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   140
	    OBJ handle = __MKEXTERNALADDRESS(ptr);   \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   141
	    OBJ clsObj = __GLOBAL_GET_BY_NAME(__cls);\
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   142
	    __InstPtr(handle)->o_class = clsObj;     \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   143
	    __STORE(handle, clsObj);                 \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   144
	    handle;                                  \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   145
	})
2422
6bffcb4c8360 changes for egcs (__new in stdio)
Claus Gittinger <cg@exept.de>
parents: 2386
diff changeset
   146
90
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   147
/*
847
f7c402bc5983 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 846
diff changeset
   148
 * this define suppresses XAllocColor/XFreeColor on
f7c402bc5983 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 846
diff changeset
   149
 * TrueColor systems - I am not certain, if this is
f7c402bc5983 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 846
diff changeset
   150
 * always legal to do (it works with XFree servers).
f7c402bc5983 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 846
diff changeset
   151
 */
f7c402bc5983 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 846
diff changeset
   152
#define QUICK_TRUE_COLORS
f7c402bc5983 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 846
diff changeset
   153
f7c402bc5983 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 846
diff changeset
   154
/*
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   155
 * shape support works; enabled by -DSHAPE in makefile
48194c26a46c Initial revision
claus
parents:
diff changeset
   156
 * see RoundClock and RoundGlobe examples
48194c26a46c Initial revision
claus
parents:
diff changeset
   157
 */
48194c26a46c Initial revision
claus
parents:
diff changeset
   158
#ifdef SHAPE
48194c26a46c Initial revision
claus
parents:
diff changeset
   159
# include <X11/extensions/shape.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   160
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   161
48194c26a46c Initial revision
claus
parents:
diff changeset
   162
/*
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   163
 * shared memory extension access is currently not supported
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   164
 * (only query is implemented)
48194c26a46c Initial revision
claus
parents:
diff changeset
   165
 */
48194c26a46c Initial revision
claus
parents:
diff changeset
   166
#ifdef SHM
48194c26a46c Initial revision
claus
parents:
diff changeset
   167
# include <X11/extensions/XShm.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   168
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   169
48194c26a46c Initial revision
claus
parents:
diff changeset
   170
/*
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   171
 * multiBuffer extension access is currently not supported
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   172
 * (only query is implemented)
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   173
 */
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   174
#ifdef MBUF
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   175
# include <X11/extensions/multibuf.h>
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   176
#endif
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   177
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   178
/*
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   179
 * XVideo extension access is currently not supported
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   180
 * (only query is implemented)
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   181
 */
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   182
#ifdef XVIDEO
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   183
# include <X11/extensions/Xv.h>
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   184
#endif
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   185
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
   186
/*
186
claus
parents: 180
diff changeset
   187
 * PEX extension - if available
claus
parents: 180
diff changeset
   188
 */
claus
parents: 180
diff changeset
   189
#ifdef PEX5
claus
parents: 180
diff changeset
   190
# include <PEX5/PEX.h>
claus
parents: 180
diff changeset
   191
#endif
claus
parents: 180
diff changeset
   192
claus
parents: 180
diff changeset
   193
/*
claus
parents: 180
diff changeset
   194
 * XImage extension - if available
claus
parents: 180
diff changeset
   195
 */
claus
parents: 180
diff changeset
   196
#ifdef XIE
claus
parents: 180
diff changeset
   197
# include <X11/extensions/XIE.h>
claus
parents: 180
diff changeset
   198
#endif
claus
parents: 180
diff changeset
   199
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   200
/*
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   201
 * multiscreen extension - if available
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   202
 */
5865
35046414f412 added: #queryXINERAMAExtension
Stefan Vogel <sv@exept.de>
parents: 5864
diff changeset
   203
#ifdef XINERAMA
35046414f412 added: #queryXINERAMAExtension
Stefan Vogel <sv@exept.de>
parents: 5864
diff changeset
   204
# include <X11/extensions/Xinerama.h>
35046414f412 added: #queryXINERAMAExtension
Stefan Vogel <sv@exept.de>
parents: 5864
diff changeset
   205
#endif
35046414f412 added: #queryXINERAMAExtension
Stefan Vogel <sv@exept.de>
parents: 5864
diff changeset
   206
186
claus
parents: 180
diff changeset
   207
/*
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   208
 * XCURSOR extension - if available
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   209
 */
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   210
#ifdef XCURSOR
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   211
# include <X11/Xcursor/Xcursor.h>
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   212
#endif
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   213
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
   214
/*
6159
d4e463e0c56c preps for xft
Claus Gittinger <cg@exept.de>
parents: 6157
diff changeset
   215
 * xft library (based on RENDER extension) - if available
d4e463e0c56c preps for xft
Claus Gittinger <cg@exept.de>
parents: 6157
diff changeset
   216
 */
d4e463e0c56c preps for xft
Claus Gittinger <cg@exept.de>
parents: 6157
diff changeset
   217
#ifdef XFT
d4e463e0c56c preps for xft
Claus Gittinger <cg@exept.de>
parents: 6157
diff changeset
   218
# include <X11/Xft/Xft.h>
6231
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   219
# include <X11/extensions/Xrender.h>
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   220
# include <X11/extensions/render.h>
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   221
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   222
# define XFT_FONT(x)            __HANDLE_VAL(XftFont*, x)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   223
# define XFT_FONT_HANDLE_NEW(x) __HANDLE_NEW(x, "XftFontDescription::XftFontHandle")
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   224
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   225
# define XFT_DRAW(x)            __HANDLE_VAL(XftDraw*, x)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   226
# define XFT_DRAW_HANDLE_NEW(x) __HANDLE_NEW(x, "XftFontDescription::XftDrawHandle")
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   227
#endif // XFT
6159
d4e463e0c56c preps for xft
Claus Gittinger <cg@exept.de>
parents: 6157
diff changeset
   228
d4e463e0c56c preps for xft
Claus Gittinger <cg@exept.de>
parents: 6157
diff changeset
   229
/*
90
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   230
 * when I have more time to check it out, I will support display-PS
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   231
 */
48194c26a46c Initial revision
claus
parents:
diff changeset
   232
#ifdef DPS
48194c26a46c Initial revision
claus
parents:
diff changeset
   233
# ifdef sgi
48194c26a46c Initial revision
claus
parents:
diff changeset
   234
#  include <X11/extensions/XDPS.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   235
#  include <X11/extensions/XDPSlib.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   236
#  include <X11/extensions/dpsXclient.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   237
# else
48194c26a46c Initial revision
claus
parents:
diff changeset
   238
#  include <DPS/XDPS.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   239
#  include <DPS/XDPSlib.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   240
#  include <DPS/dpsXclient.h>
48194c26a46c Initial revision
claus
parents:
diff changeset
   241
# endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   242
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
   243
1898
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
   244
#if defined(someMachine)
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
   245
/*
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
   246
 * if nformats cannot be found in the Display structure ...
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
   247
 */
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
   248
# define NO_PRIVATE_DISPLAY_ACCESS
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
   249
#endif
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
   250
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
   251
#if defined(IRIX5) || defined(__VMS) || (XlibSpecificationRelease == 6)
90
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   252
  /*
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   253
   * accessing private data in Display ... sorry
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   254
   */
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   255
# define DISPLAYACCESS(d) ((_XPrivDisplay)d)
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   256
#else
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   257
# define DISPLAYACCESS(d) d
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   258
#endif
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   259
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   260
# define DISPLAY(x)    __HANDLE_VAL(Display*, x)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   261
# define SCREEN(x)     ((int)(__intVal(x)))
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   262
# define DRAWABLE(x)   __HANDLE_VAL(Drawable, x)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   263
# define GC(x)         __HANDLE_VAL(GC, x)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   264
# define VISUAL(x)     __HANDLE_VAL(Visual*, x)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   265
# define COLORMAP(x)   __HANDLE_VAL(Colormap, x)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   266
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   267
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   268
/*
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   269
 * some defines - tired of typing ...
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   270
 */
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   271
#define __DisplayVal(o)      (Display *)(__externalAddressVal(o))
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   272
#define __DrawableVal(o)     (Drawable)(__externalAddressVal(o))
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   273
#define __WindowVal(o)       (Window)(__externalAddressVal(o))
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   274
#define __PixmapVal(o)       (Pixmap)(__externalAddressVal(o))
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   275
#define __GCVal(o)           (GC)(__externalAddressVal(o))
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   276
#define __CursorVal(o)       (Cursor)(__externalAddressVal(o))
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   277
#define __FontVal(o)         (XFontStruct *)(__externalAddressVal(o))
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   278
#define __DPSContextVal(o)   (DPSContext)(__externalAddressVal(o))
207
9124817bbb03 use new c-pointer wrapper macros (based on externalAddress)
Claus Gittinger <cg@exept.de>
parents: 206
diff changeset
   279
3693
b01b0cd76a61 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3670
diff changeset
   280
#define __MKATOMOBJ(a)       __MKSMALLINT(a)   /* add STORE macro if ever changed */
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   281
#define __AtomVal(o)         __intVal(o)
211
b5f925b56e8e Fix example.
Stefan Vogel <sv@exept.de>
parents: 208
diff changeset
   282
#define __isAtomID(o)        __isSmallInteger(o)
b5f925b56e8e Fix example.
Stefan Vogel <sv@exept.de>
parents: 208
diff changeset
   283
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
   284
#define myDpy                __DisplayVal(__INST(displayId))
4409
fdb60a1f78da remember broken connection
Claus Gittinger <cg@exept.de>
parents: 4401
diff changeset
   285
#define ISCONNECTED          ((__INST(displayId) != nil) && (__INST(hasConnectionBroken) != nil))
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   286
1891
0dc56210cbfb VMS stuff
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
   287
#ifdef __VMS__
1899
de1eb2a3318e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1898
diff changeset
   288
# include "vms_Xnames.h"
1891
0dc56210cbfb VMS stuff
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
   289
#endif
0dc56210cbfb VMS stuff
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
   290
3205
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   291
void __XTimeoutErrorHandler();
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   292
int __XErrorHandler__();
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   293
int __XIOErrorHandler__();
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   294
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   295
/*
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   296
 * these two macros should be placed around X-lib calls,
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   297
 * which may block due to a broken connection.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   298
 * They setup/remove a VM-timeout which raises an exception
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   299
 * after xlibTimeout seconds.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   300
 * This exception will shutDown the connection.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   301
 * Q: is this a good idea for the local display ?
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   302
 */
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   303
#define __ENTER_XLIB(whichTimeout)   \
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   304
    { \
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   305
	__blockingPrimitiveTimoutHandler__ = (voidFUNC)__XTimeoutErrorHandler; \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   306
	__blockingPrimitiveTimeoutArg__ = self; \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   307
	__blockingPrimitiveTimeout__ = whichTimeout; \
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
   308
    } {
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   309
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
   310
#define LEAVE_XLIB()   \
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   311
    { \
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   312
	__blockingPrimitiveTimoutHandler__ = (voidFUNC)0; \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   313
	__blockingPrimitiveTimeoutArg__ = nil; \
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   314
	__blockingPrimitiveTimeout__ = 0; \
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
   315
    } }
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   316
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   317
#define ENTER_XLIB()   __ENTER_XLIB(__intVal(__INST(xlibTimeout)) * 1000)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   318
#define ENTER_XLIB2()  __ENTER_XLIB(__intVal(__INST(xlibTimeoutForWindowCreation)) * 1000)
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   319
4090
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   320
#ifdef SUPPORT_MOTIF_WM_HINTS
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   321
# ifdef SOME_MACHINE
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   322
#  include <anIncludeFileWhichDefinesTheStuffBelow>
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   323
# endif
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   324
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   325
# ifndef MWM_HINTS_FUNCTIONS
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   326
#  define MWM_HINTS_FUNCTIONS       (1L << 0)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   327
#  define MWM_HINTS_DECORATIONS     (1L << 1)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   328
#  define MWM_HINTS_INPUT_MODE      (1L << 2)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   329
#  define MWM_HINTS_STATUS          (1L << 3)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   330
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   331
#  define MWM_FUNC_ALL              (1L << 0)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   332
#  define MWM_FUNC_RESIZE           (1L << 1)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   333
#  define MWM_FUNC_MOVE             (1L << 2)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   334
#  define MWM_FUNC_MINIMIZE         (1L << 3)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   335
#  define MWM_FUNC_MAXIMIZE         (1L << 4)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   336
#  define MWM_FUNC_CLOSE            (1L << 5)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   337
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   338
#  define MWM_INPUT_MODELESS                      0
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   339
#  define MWM_INPUT_PRIMARY_APPLICATION_MODAL     1
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   340
#  define MWM_INPUT_SYSTEM_MODAL                  2
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   341
#  define MWM_INPUT_FULL_APPLICATION_MODAL        3
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   342
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   343
#  define MWM_DECOR_NONE            0
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   344
#  define MWM_DECOR_ALL             (1L << 0)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   345
#  define MWM_DECOR_BORDER          (1L << 1)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   346
#  define MWM_DECOR_RESIZEH         (1L << 2)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   347
#  define MWM_DECOR_TITLE           (1L << 3)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   348
#  define MWM_DECOR_MENU            (1L << 4)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   349
#  define MWM_DECOR_MINIMIZE        (1L << 5)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   350
#  define MWM_DECOR_MAXIMIZE        (1L << 6)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   351
# endif
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   352
#endif /* SUPPORT_MOTIF_WM_HINTS */
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   353
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   354
/*
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   355
 * openlook hints are not supported yet
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   356
 * - noone needs them anymore ;-(
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   357
 */
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   358
#ifdef SUPPORT_OPENLOOCK_WM_HINTS
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   359
# ifdef SOME_MACHINE
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   360
#  include <anIncludeFileWhichDefinesTheStuffBelow>
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   361
# endif
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   362
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   363
# ifndef OL_DECOR_CLOSE
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   364
#  define OL_DECOR_CLOSE            (1L << 0)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   365
#  define OL_DECOR_RESIZEH          (1L << 1)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   366
#  define OL_DECOR_HEADER           (1L << 2)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   367
#  define OL_DECOR_ICON_NAME        (1L << 3)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   368
#  define OL_DECOR_ALL              (OL_DECOR_CLOSE | OL_DECOR_RESIZEH | OL_DECOR_HEADER | OL_DECOR_ICON_NAME)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   369
#  define OL_ANY_HINTS              (1L << 7)
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   370
# endif
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   371
#endif /* SUPPORT_OPENLOOCK_WM_HINTS */
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
   372
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   373
%}
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   374
! !
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   375
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   376
!XWorkstation primitiveVariables!
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   377
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   378
/*
146
claus
parents: 145
diff changeset
   379
 * remembered info from private error handler
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   380
 */
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   381
static char lastErrorMsg[128] = "";
1888
05f4db77cc91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1887
diff changeset
   382
static unsigned INT lastRequestCode = 0;
05f4db77cc91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1887
diff changeset
   383
static unsigned INT lastMinorCode = 0;
05f4db77cc91 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1887
diff changeset
   384
static unsigned INT lastResource = 0;
129
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   385
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   386
static int __debug__ = 0;
3468
b7e913629327 printf -> fprintf
Claus Gittinger <cg@exept.de>
parents: 3467
diff changeset
   387
4723
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
   388
#define DPRINTF(x)      if (__debug__) { console_printf x; }
3468
b7e913629327 printf -> fprintf
Claus Gittinger <cg@exept.de>
parents: 3467
diff changeset
   389
7137
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   390
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   391
/* Some libraries, notably Cairo uses MIT-SHM extension 
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   392
 * that sends back ShmCompletion event. Such event needs
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   393
 * to be silently ignored. 
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   394
 * However, since it comes from an extension, the event type
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   395
 * must be queried. To avoid a query each time we get it, 
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   396
 * cache the value in a variable. 
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   397
 */
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   398
#ifdef SHM
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   399
static int ShmCompletionType = -1;
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   400
#endif
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   401
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
   402
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   403
%}
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   404
! !
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   405
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   406
!XWorkstation primitiveFunctions!
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   407
%{
1062
2a5d50022c96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
   408
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   409
/*
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   410
 * some systems need a dummy reference to force the linker
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   411
 * to include that stuff. Should be #ifdef'd ...
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   412
 */
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   413
#ifndef ELF
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   414
# ifdef __GNUC__
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   415
VOLATILE
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   416
# endif
7147
e914d0679641 silence gcc warning
Claus Gittinger <cg@exept.de>
parents: 7146
diff changeset
   417
static void
1062
2a5d50022c96 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1060
diff changeset
   418
dummyToForceLoading() {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   419
	XCreateSimpleWindow(0, 0, 0, 0, 0, 0, 0, 0, 0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   420
	XCloseDisplay(0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   421
	XCreateImage(0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   422
	XSetWindowColormap(0, 0, 0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   423
	XQueryColors(0,0,0,0);
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   424
# ifdef SHM
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   425
	XShmAttach(0, 0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   426
	XShmCreateImage(0, 0, 0, 0, 0, 0, 0 ,0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   427
	XShmDetach(0, 0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   428
	XShmPutImage(0, 0, 0, 0 , 0,0,0,0,0,0,0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   429
	shmctl(0,0,0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   430
	fgetc(0);
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   431
# endif  // SHM
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   432
}
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   433
#endif // !ELF
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   434
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   435
static char* requestNames[] = {
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   436
    "X_CreateWindow",               // 0
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   437
    "X_ChangeWindowAttributes",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   438
    "X_GetWindowAttributes",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   439
    "X_DestroyWindow",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   440
    "X_DestroySubwindows",          // 4
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   441
    "X_ChangeSaveSet",              // 5
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   442
    "X_ReparentWindow",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   443
    "X_MapWindow",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   444
    "X_MapSubwindows",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   445
    "X_UnmapWindow",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   446
    "X_UnmapSubwindows",            // 10
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   447
    "X_ConfigureWindow",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   448
    "X_CirculateWindow",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   449
    "X_GetGeometry",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   450
    "X_QueryTree",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   451
    "X_InternAtom",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   452
    "X_GetAtomName",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   453
    "X_ChangeProperty",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   454
    "X_DeleteProperty",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   455
    "X_GetProperty",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   456
    "X_ListProperties",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   457
    "X_SetSelectionOwner",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   458
    "X_GetSelectionOwner",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   459
    "X_ConvertSelection",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   460
    "X_SendEvent",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   461
    "X_GrabPointer",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   462
    "X_UngrabPointer",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   463
    "X_GrabButton",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   464
    "X_UngrabButton",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   465
    "X_ChangeActivePointerGrab",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   466
    "X_GrabKeyboard",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   467
    "X_UngrabKeyboard",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   468
    "X_GrabKey",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   469
    "X_UngrabKey",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   470
    "X_AllowEvents",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   471
    "X_GrabServer",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   472
    "X_UngrabServer",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   473
    "X_QueryPointer",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   474
    "X_GetMotionEvents",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   475
    "X_TranslateCoords",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   476
    "X_WarpPointer",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   477
    "X_SetInputFocus",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   478
    "X_GetInputFocus",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   479
    "X_QueryKeymap",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   480
    "X_OpenFont",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   481
    "X_CloseFont",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   482
    "X_QueryFont",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   483
    "X_QueryTextExtents",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   484
    "X_ListFonts",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   485
    "X_ListFontsWithInfo",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   486
    "X_SetFontPath",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   487
    "X_GetFontPath",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   488
    "X_CreatePixma",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   489
    "X_FreePixmap",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   490
    "X_CreateGC",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   491
    "X_ChangeGC",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   492
    "X_CopyGC",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   493
    "X_SetDashes",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   494
    "X_SetClipRectangles",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   495
    "X_FreeGC",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   496
    "X_ClearArea",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   497
    "X_CopyArea",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   498
    "X_CopyPlane",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   499
    "X_PolyPoint",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   500
    "X_PolyLine",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   501
    "X_PolySegment",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   502
    "X_PolyRectangle",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   503
    "X_PolyArc",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   504
    "X_FillPoly",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   505
    "X_PolyFillRectangle",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   506
    "X_PolyFillArc",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   507
    "X_PutImage",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   508
    "X_GetImage",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   509
    "X_PolyText8",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   510
    "X_PolyText16",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   511
    "X_ImageText8",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   512
    "X_ImageText16",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   513
    "X_CreateColormap",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   514
    "X_FreeColormap",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   515
    "X_CopyColormapAndFree",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   516
    "X_InstallColormap",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   517
    "X_UninstallColormap",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   518
    "X_ListInstalledColormaps",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   519
    "X_AllocColor",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   520
    "X_AllocNamedColor",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   521
    "X_AllocColorCells",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   522
    "X_AllocColorPlanes",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   523
    "X_FreeColors",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   524
    "X_StoreColors",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   525
    "X_StoreNamedColor",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   526
    "X_QueryColors",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   527
    "X_LookupColor",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   528
    "X_CreateCursor",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   529
    "X_CreateGlyphCursor",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   530
    "X_FreeCursor",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   531
    "X_RecolorCursor",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   532
    "X_QueryBestSize",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   533
    "X_QueryExtension",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   534
    "X_ListExtensions",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   535
    "X_ChangeKeyboardMapping",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   536
    "X_GetKeyboardMapping",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   537
    "X_ChangeKeyboardControl",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   538
    "X_GetKeyboardControl",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   539
    "X_Bell",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   540
    "X_ChangePointerControl",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   541
    "X_GetPointerControl",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   542
    "X_SetScreenSaver",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   543
    "X_GetScreenSaver",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   544
    "X_ChangeHosts",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   545
    "X_ListHosts",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   546
    "X_SetAccessControl",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   547
    "X_SetCloseDownMode",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   548
    "X_KillClient",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   549
    "X_RotateProperties",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   550
    "X_ForceScreenSaver",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   551
    "X_SetPointerMapping",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   552
    "X_GetPointerMapping",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   553
    "X_SetModifierMapping",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   554
    "X_GetModifierMapping",
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   555
};
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
   556
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   557
#if !defined(__INCREMENTAL_COMPILE__)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   558
// __myInstPtr has been redefined/overwritten by private classes - restore
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   559
#undef __myInstPtr
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   560
#define __myInstPtr(obj) ((struct __XWorkstation_struct *)(obj))
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   561
18
9ffa3bf0ee58 *** empty log message ***
claus
parents: 12
diff changeset
   562
/*
144
claus
parents: 143
diff changeset
   563
 * catch X-errors and forward as errorInterrupt:#DisplayError,
claus
parents: 143
diff changeset
   564
 * (which itself invokes my handler and optionally raises an exceptionSignal)
90
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
   565
 * the implementation below is somewhat wrong: it will
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   566
 * report all errors for Display, even though there could be
162
claus
parents: 160
diff changeset
   567
 * more than one display connection. (being fixed, new errorInterrupt mechanism
claus
parents: 160
diff changeset
   568
 * allows passing an additional argument, which is the displayID ...)
18
9ffa3bf0ee58 *** empty log message ***
claus
parents: 12
diff changeset
   569
 */
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   570
int
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   571
__XErrorHandler__(Display *dpy, XErrorEvent *event)
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   572
{
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   573
    XGetErrorText(dpy, event->error_code, lastErrorMsg, 127);
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   574
    lastErrorMsg[127] = '\0';
1060
bc581886fe8f dont interrupt immediately; use superclasses colorName processing as fallBack
Claus Gittinger <cg@exept.de>
parents: 1056
diff changeset
   575
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   576
    if (lastErrorMsg[0] == '\0') {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   577
	sprintf(lastErrorMsg, "code: %d", event->error_code);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   578
    }
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   579
    lastRequestCode = event->request_code;
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   580
    lastMinorCode = event->minor_code;
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   581
    lastResource = event->resourceid;
911
c934a49174e8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 898
diff changeset
   582
    if ((event->error_code == BadWindow) && (lastRequestCode == 4) && (lastMinorCode == 0)) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   583
	/*
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   584
	 * this is a BadWindow error for X_DestroyWindow.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   585
	 * ignore it here, since it results from the GC freeing windows
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   586
	 * in non bottom-up window order.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   587
	 */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   588
	return 0;
911
c934a49174e8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 898
diff changeset
   589
    }
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   590
4640
edde8a16e07d Fix classvar refs in primitive functions.
Stefan Vogel <sv@exept.de>
parents: 4636
diff changeset
   591
    if (@global(DeviceWorkstation:ErrorPrinting) == true) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   592
	char *requestName = "?";
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   593
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   594
	if (event->request_code < (sizeof(requestNames)/sizeof(char *))) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   595
	    requestName = requestNames[event->request_code];
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   596
	}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   597
	console_fprintf(stderr, "XWorkstation [error]: x-error caught maj=%d (0x%x) \"%s\", min=%d (0x%x), resource=%"_lx_"\n",
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   598
			event->request_code, event->request_code, requestName,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   599
			event->minor_code, event->minor_code, (INT)(event->resourceid));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   600
	console_fprintf(stderr, "XWorkstation [error]: x-error message is [%d] '%s'\n",
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   601
			event->error_code, lastErrorMsg);
6231
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   602
    }
6261
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
   603
#if 0
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
   604
    // cg: should no longer be needed - librun no longer sends an errorInterrupt while running on C-stack
6231
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   605
#ifdef XFT
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   606
    if ((strncmp(lastErrorMsg, "RenderBadPicture", 16) == 0)) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   607
	/*
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   608
	 * this is a RenderBadPicture error from XFT drawing.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   609
	 * ignore it for now, as this is due to an incomplete implementation
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   610
	 */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   611
	console_fprintf(stderr, "XWorkstation [info]: x-error ignored\n");
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   612
	return 0;
6231
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   613
    }
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   614
#endif
6261
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
   615
#endif
1990
201f8ecfdad3 device timeout handling
Claus Gittinger <cg@exept.de>
parents: 1979
diff changeset
   616
    __errorInterruptWithIDAndParameter__(@symbol(DisplayError), __MKEXTERNALADDRESS(dpy));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   617
    return 0;
48194c26a46c Initial revision
claus
parents:
diff changeset
   618
}
48194c26a46c Initial revision
claus
parents:
diff changeset
   619
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   620
/*
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   621
 * much like the above, but for IO Errors;
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   622
 * forwarded as errorInterrupt:#DisplayIOError,
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   623
 * In single display apps, handling those here does not
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   624
 * really make sense (except, for a controlled cleanup).
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   625
 * However, in multiDisplay apps, a single broken
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   626
 * connection should not affect the other users.
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   627
 */
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   628
int
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   629
__XIOErrorHandler__(Display *dpy)
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   630
{
4640
edde8a16e07d Fix classvar refs in primitive functions.
Stefan Vogel <sv@exept.de>
parents: 4636
diff changeset
   631
    if (@global(DeviceWorkstation:ErrorPrinting) == true) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   632
	console_fprintf(stderr, "XWorkstation [error]: I/O error\n");
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   633
    }
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   634
    __immediateErrorInterruptWithIDAndParameter__(@symbol(DisplayIOError),
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   635
						  __MKEXTERNALADDRESS(dpy));
3205
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   636
3207
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   637
#if 0
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   638
    /*
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   639
     * don't do this.
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   640
     * This error is called asynchronously, and the wrong process may be terminated
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   641
     */
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   642
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   643
3205
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   644
    /*
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   645
     * if we return from the error interrupt ...
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   646
     */
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   647
    __internalError("unhandled display I/O error");
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   648
    __terminateProcess(0);      /* soft terminate */
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   649
    __terminateProcess(1);      /* hard terminate */
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   650
    /* never reached */
3207
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   651
#endif
df242f652d1f More error handling
Stefan Vogel <sv@exept.de>
parents: 3206
diff changeset
   652
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   653
    return 0;
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   654
}
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   655
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   656
/*
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   657
 * timeout error in case of Xlib request timeout.
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   658
 * forwarded as errorInterrupt:#DisplayIOTimeoutError,
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   659
 * This is generated synthetically by the VM if the
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   660
 * timeoutHandler has been set.
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   661
 */
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   662
void
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   663
__XTimeoutErrorHandler(OBJ displayDeviceInst)
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   664
{
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   665
    if ((displayDeviceInst == @global(MainDisplay))
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   666
	|| (displayDeviceInst == @global(DeviceWorkstation:DefaultScreen))) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   667
	console_fprintf(stderr, "XWorkstation [error]: keep display connection for master display after X11 timeout (no shutdown)\n");
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   668
	return;
3205
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   669
    }
4640
edde8a16e07d Fix classvar refs in primitive functions.
Stefan Vogel <sv@exept.de>
parents: 4636
diff changeset
   670
    if (@global(DeviceWorkstation:ErrorPrinting) == true) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   671
	console_fprintf(stderr, "XWorkstation [error]: X11 request timeout dpy=%"_lx_"\n", (INT)displayDeviceInst);
4636
6c715971d212 Fix display timeout error handling
Stefan Vogel <sv@exept.de>
parents: 4635
diff changeset
   672
    }
4409
fdb60a1f78da remember broken connection
Claus Gittinger <cg@exept.de>
parents: 4401
diff changeset
   673
    __OINST(displayDeviceInst, hasConnectionBroken) = true;
3205
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   674
4635
ad449b8058fe Fix for __XTimeoutErrorHandler__: __PROTECT__(displayDeviceInst)
Stefan Vogel <sv@exept.de>
parents: 4631
diff changeset
   675
    __PROTECT__(displayDeviceInst);
1990
201f8ecfdad3 device timeout handling
Claus Gittinger <cg@exept.de>
parents: 1979
diff changeset
   676
    __immediateErrorInterruptWithIDAndParameter__(@symbol(DisplayIOTimeoutError), displayDeviceInst);
4635
ad449b8058fe Fix for __XTimeoutErrorHandler__: __PROTECT__(displayDeviceInst)
Stefan Vogel <sv@exept.de>
parents: 4631
diff changeset
   677
    __UNPROTECT__(displayDeviceInst);
3205
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   678
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   679
    /*
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   680
     * if we return from the error interrupt ...
8648fa72c0af Fix error handling (#displayTimoutError)
Stefan Vogel <sv@exept.de>
parents: 3203
diff changeset
   681
     */
3206
61414144918b More error handling
Stefan Vogel <sv@exept.de>
parents: 3205
diff changeset
   682
    if (__OINST(displayDeviceInst, displayId) != nil) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   683
	__internalError("unhandled X11 display timeout error");
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   684
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   685
	/*
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   686
	 * the current process failed to do an X11 request.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   687
	 * Terminate it!
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   688
	 */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   689
	__terminateProcess(0);      /* soft terminate */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   690
	__terminateProcess(1);      /* hard terminate */
3206
61414144918b More error handling
Stefan Vogel <sv@exept.de>
parents: 3205
diff changeset
   691
    }
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   692
}
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
   693
#endif // __INCREMENTAL_COMPILE__
1579
692c2f62d94e handle broken X-connection smoothly
Claus Gittinger <cg@exept.de>
parents: 1576
diff changeset
   694
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   695
%}
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   696
! !
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   697
1171
a40ea3d796fd newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 1138
diff changeset
   698
!XWorkstation class methodsFor:'documentation'!
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   699
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   700
copyright
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   701
"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   702
COPYRIGHT (c) 1989 by Claus Gittinger
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   703
	      All Rights Reserved
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   704
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   705
 This software is furnished under a license and may be used
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   706
 only in accordance with the terms of that license and with the
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   707
 inclusion of the above copyright notice.   This software may not
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   708
 be provided or otherwise made available to, or used by, any
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   709
 other person.  No title to or ownership of the software is
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   710
 hereby transferred.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   711
"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   712
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   713
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   714
documentation
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   715
"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   716
    this class provides the interface to X11. It redefines all required methods
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   717
    from DeviceWorkstation.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   718
    Notice, that in Smalltalk/X you are not technically limited to one display;
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   719
    in theory (and in our practice), you can create Views on many displays
7507
cb7c25da60d0 #OTHER by mawalch
mawalch
parents: 7506
diff changeset
   720
    simultaneously. However, the default setup is for one display only.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   721
    To support multiple displays, you will have to start another event dispatcher
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   722
    process for the other display(s) and create the other views with a slightly
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   723
    different protocol (ApplicationModel openOnDevice:) or by temporarily answering
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   724
    the other device to the currentScreen query.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   725
    Therefore, 'normal' applications do not have to care for all of this, as the currentScreen
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   726
    query is answered by the launcher when opening its applications.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   727
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   728
    Timeouts:
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   729
	sometimes, X-connections are lost and, as the Xlib is blocking and synchronous by
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   730
	default, this would lead to a locked ST/X system.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   731
	Therefore, this class defines a timeOut, whenever doing an Xlib call.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   732
	The default for this timeout is 30seconds.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   733
	This may be a problem with windowmanagers which show a rubber-band rectangle
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   734
	when creating windows.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   735
	If the user does not specify the rectangle within 30 seconds, the device assumes
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   736
	a timeout and closes the connection.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   737
	As a (kludgy) workaround, a second timeout value is used for window-creation.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   738
	This secondary timeout value defaults to 60*5 seconds (5 minutes).
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   739
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   740
    See more documentation in my superclass, DeviceWorkstation.
613
c12586985dcd documentation
Claus Gittinger <cg@exept.de>
parents: 568
diff changeset
   741
c12586985dcd documentation
Claus Gittinger <cg@exept.de>
parents: 568
diff changeset
   742
    [author:]
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
   743
	Claus Gittinger
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   744
"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   745
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   746
1171
a40ea3d796fd newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 1138
diff changeset
   747
!XWorkstation class methodsFor:'initialization'!
250
eaa532ebcad7 modifierKeyProcessing now done in DevWorkstat via tables;
Claus Gittinger <cg@exept.de>
parents: 240
diff changeset
   748
eaa532ebcad7 modifierKeyProcessing now done in DevWorkstat via tables;
Claus Gittinger <cg@exept.de>
parents: 240
diff changeset
   749
initialize
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
   750
    "/ ConservativeSync is required for some Xlib implementation,
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
   751
    "/ where eventPending returns wrong if we do not flush the buffer.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
   752
    "/ (especially Win32 & Xlib)
6363
1695f666d823 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6350
diff changeset
   753
    ConservativeSync := OperatingSystem isMSWINDOWSlike.
2592
43cd99949614 need sync before asking for pending event on WIN32 systems.
Claus Gittinger <cg@exept.de>
parents: 2541
diff changeset
   754
3267
de85f7d8dc5f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
   755
    "/ some XServers crash, when given too long strings in XDrawString/XDrawInageString.
de85f7d8dc5f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
   756
    "/ the following is an adjustable soft-limit.
de85f7d8dc5f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
   757
    MaxStringLength := 4096.
de85f7d8dc5f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3263
diff changeset
   758
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   759
    "/ shutdown the X-connection, when no response is received after that many seconds.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   760
    DefaultXLibTimeout := 30.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   761
    DefaultXLibTimeoutForWindowCreation := 5*60.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   762
3321
3d0e6754dcd9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3320
diff changeset
   763
    RawKeySymTranslation isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   764
	"/ the following table maps X-keyevents to ST/X
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   765
	"/ device independend events.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   766
	"/ It is NOT meant as a keyboardMap replacement.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   767
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   768
	RawKeySymTranslation := Dictionary new:6.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   769
	RawKeySymTranslation
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   770
	    at:#'Delete_line' put:#DeleteLine;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   771
	    at:#'Delete_word' put:#DeleteWord;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   772
	    at:#Down put:#CursorDown;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   773
	    at:#Up put:#CursorUp;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   774
	    at:#Left put:#CursorLeft;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   775
	    at:#Right put:#CursorRight.
386
f9a80cac659e only init once
Claus Gittinger <cg@exept.de>
parents: 382
diff changeset
   776
    ]
2592
43cd99949614 need sync before asking for pending event on WIN32 systems.
Claus Gittinger <cg@exept.de>
parents: 2541
diff changeset
   777
43cd99949614 need sync before asking for pending event on WIN32 systems.
Claus Gittinger <cg@exept.de>
parents: 2541
diff changeset
   778
    "Modified: / 27.4.1999 / 17:21:30 / cg"
250
eaa532ebcad7 modifierKeyProcessing now done in DevWorkstat via tables;
Claus Gittinger <cg@exept.de>
parents: 240
diff changeset
   779
! !
eaa532ebcad7 modifierKeyProcessing now done in DevWorkstat via tables;
Claus Gittinger <cg@exept.de>
parents: 240
diff changeset
   780
7166
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   781
!XWorkstation class methodsFor:'accessing'!
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   782
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   783
graphicsContextClass
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   784
    "Return a graphics context class to use for this device.
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   785
     Default is to use DeviceGraphicsContext"
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   786
    ^ graphicsContextClass ? XGraphicsContext
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   787
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   788
    "Created: / 25-02-2016 / 07:26:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   789
! !
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
   790
7119
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   791
!XWorkstation class methodsFor:'accessing-display capabilities'!
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   792
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   793
hasXCursorLibrary
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   794
%{
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   795
#ifdef XCURSOR
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   796
    RETURN(true);
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   797
#else
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   798
    RETURN(false);
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   799
#endif
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   800
%}
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   801
    "
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   802
     Display hasXCursorLibrary
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   803
    "
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   804
!
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
   805
7119
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   806
hasXftLibrary
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   807
%{
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   808
#ifdef XFT
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   809
    RETURN(true);
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   810
#else
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   811
    RETURN(false);
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   812
#endif
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   813
%}
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   814
    "
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   815
     Display hasXftLibrary
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   816
    "
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   817
! !
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
   818
1171
a40ea3d796fd newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 1138
diff changeset
   819
!XWorkstation class methodsFor:'error handling'!
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   820
129
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   821
debug:aBoolean
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   822
%{  /* NOCONTEXT */
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   823
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   824
    __debug__ = (aBoolean == true) ? 1 : 0;
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   825
%}
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   826
!
752fbb07635a *** empty log message ***
claus
parents: 125
diff changeset
   827
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
   828
debugResources
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
   829
%{
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
   830
#ifdef COUNT_RESOURCES
4723
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
   831
    console_fprintf(stderr, "colors:%d bitmaps:%d views:%d gc:%d cursors:%d fonts:%d\n",
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   832
	    __cnt_color, __cnt_bitmap,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   833
	    __cnt_view, __cnt_gc, __cnt_cursor, __cnt_font);
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
   834
#endif
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
   835
%}
1404
680d840cbd3f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1392
diff changeset
   836
680d840cbd3f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1392
diff changeset
   837
    "
680d840cbd3f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1392
diff changeset
   838
     XWorkstation debugResources
680d840cbd3f checkin from browser
Claus Gittinger <cg@exept.de>
parents: 1392
diff changeset
   839
    "
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
   840
!
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
   841
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   842
errorStringOfLastError
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   843
%{
1065
fdc5b9059d82 removed all COMMA_CON / CON_COMMA uses
Claus Gittinger <cg@exept.de>
parents: 1062
diff changeset
   844
    RETURN ( __MKSTRING(lastErrorMsg) );
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   845
%}
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   846
!
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   847
3036
427225abb47f Catch number decoding error.
Stefan Vogel <sv@exept.de>
parents: 3018
diff changeset
   848
getConnectionTimeOut
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   849
    "returns the default connectionTimeOut (seconds)"
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   850
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   851
    ^ DefaultXLibTimeout
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   852
!
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   853
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   854
getConnectionTimeOutForWindowCreation
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   855
    "returns the default connectionTimeOut (seconds)"
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   856
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   857
    ^ DefaultXLibTimeoutForWindowCreation
3036
427225abb47f Catch number decoding error.
Stefan Vogel <sv@exept.de>
parents: 3018
diff changeset
   858
!
427225abb47f Catch number decoding error.
Stefan Vogel <sv@exept.de>
parents: 3018
diff changeset
   859
135
claus
parents: 133
diff changeset
   860
lastErrorString
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   861
    "return the last X-error string -
2
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   862
     when buffering is on, this may be
b35336ab0de3 *** empty log message ***
claus
parents: 0
diff changeset
   863
     an error for a long-ago operation"
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   864
6214
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   865
    |string s match line requestCode|
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   866
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   867
    string := self errorStringOfLastError.
6214
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   868
    requestCode := self requestCodeOfLastError.
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   869
78
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   870
    "
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   871
     X specific: search the requestCode in '/usr/lib/X11/XErrorDB',
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   872
     and append the name of the corresponding X-request
1c9c22df3251 *** empty log message ***
claus
parents: 73
diff changeset
   873
    "
6214
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   874
    match := 'XRequest.' , requestCode printString.
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   875
    ErrorDBCache isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   876
	ErrorDBCache := IdentityDictionary new.
6231
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   877
    ].
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   878
62b008701d53 temporary hack fix: ignore XRender errors due to invalid use of Picture/GC
Claus Gittinger <cg@exept.de>
parents: 6224
diff changeset
   879
    "if there is no XErrorDB or no entry, the line for the requestCode is cached as nil"
6214
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   880
    line := ErrorDBCache at:requestCode ifAbsentPut:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   881
	    |errorLine|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   882
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   883
	    s := '/usr/share/X11/XErrorDB' asFilename readStreamOrNil.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   884
	    s notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   885
		errorLine := s peekForLineStartingWith:match.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   886
		errorLine notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   887
		    errorLine := errorLine copyFrom:(errorLine indexOf:$:)+1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   888
		].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   889
		s close.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   890
	    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   891
	    errorLine
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   892
	].
6214
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   893
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   894
    line isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   895
	line := match
6214
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   896
    ].
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   897
    ^ string , ' in ' , line.
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   898
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   899
    "
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   900
	Screen lastErrorString
6214
14574c9caac6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6177
diff changeset
   901
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   902
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   903
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   904
minorCodeOfLastError
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   905
%{  /* NOCONTEXT */
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   906
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   907
    RETURN ( __MKSMALLINT(lastMinorCode) );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   908
%}
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   909
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   910
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   911
requestCodeOfLastError
152
claus
parents: 150
diff changeset
   912
%{  /* NOCONTEXT */
claus
parents: 150
diff changeset
   913
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
   914
    RETURN ( __MKSMALLINT(lastRequestCode) );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   915
%}
135
claus
parents: 133
diff changeset
   916
!
claus
parents: 133
diff changeset
   917
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
   918
resourceIdOfLastError
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   919
%{  /* NOCONTEXT */
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   920
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   921
      if (lastResource != 0) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   922
	 RETURN ( __MKEXTERNALADDRESS(lastResource) );
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   923
      }
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   924
%}.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   925
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   926
     ^ nil
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   927
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   928
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   929
     "
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
   930
	 Screen resourceIdOfLastError
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
   931
     "
3016
326429127f47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3015
diff changeset
   932
!
326429127f47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3015
diff changeset
   933
326429127f47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3015
diff changeset
   934
setConnectionTimeOut:seconds
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   935
    "set the default connection timeout (seconds)"
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   936
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   937
    DefaultXLibTimeout := seconds
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   938
!
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   939
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   940
setConnectionTimeOutForWindowCreation:seconds
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   941
    "set the default connection timeout (seconds)"
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   942
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
   943
    DefaultXLibTimeoutForWindowCreation := seconds
0
48194c26a46c Initial revision
claus
parents:
diff changeset
   944
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
   945
1171
a40ea3d796fd newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 1138
diff changeset
   946
!XWorkstation class methodsFor:'queries'!
104
aa39cabdc13b *** empty log message ***
claus
parents: 98
diff changeset
   947
7086
2c3d25b893b5 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7022
diff changeset
   948
isX11Platform
2c3d25b893b5 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7022
diff changeset
   949
    ^ true
2c3d25b893b5 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7022
diff changeset
   950
!
2c3d25b893b5 #BUGFIX
Stefan Vogel <sv@exept.de>
parents: 7022
diff changeset
   951
104
aa39cabdc13b *** empty log message ***
claus
parents: 98
diff changeset
   952
platformName
133
claus
parents: 132
diff changeset
   953
    "ST-80 compatibility.
2777
60ba83db1fab comment
Claus Gittinger <cg@exept.de>
parents: 2758
diff changeset
   954
     Return a string describing the display systems platform.
5036
62bd216d3daf #platfromName - use symbol
Stefan Vogel <sv@exept.de>
parents: 5034
diff changeset
   955
     XWorkstation always returns #X11."
62bd216d3daf #platfromName - use symbol
Stefan Vogel <sv@exept.de>
parents: 5034
diff changeset
   956
62bd216d3daf #platfromName - use symbol
Stefan Vogel <sv@exept.de>
parents: 5034
diff changeset
   957
    ^ #X11  "I don't know what ST-80 returns for X ..."
715
0c715cbd2bde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
   958
0c715cbd2bde checkin from browser
Claus Gittinger <cg@exept.de>
parents: 697
diff changeset
   959
    "Modified: 26.5.1996 / 15:32:46 / cg"
104
aa39cabdc13b *** empty log message ***
claus
parents: 98
diff changeset
   960
! !
aa39cabdc13b *** empty log message ***
claus
parents: 98
diff changeset
   961
1583
ca6e6732dc29 drop argument is always a collection
Claus Gittinger <cg@exept.de>
parents: 1579
diff changeset
   962
!XWorkstation methodsFor:'Signal constants'!
ca6e6732dc29 drop argument is always a collection
Claus Gittinger <cg@exept.de>
parents: 1579
diff changeset
   963
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   964
deviceIOTimeoutErrorSignal
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   965
    "return the per-device signal, which is raised when a timeout
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   966
     IO error (i.e. broken connection) occurs."
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   967
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
   968
    ^ deviceIOTimeoutErrorSignal
1583
ca6e6732dc29 drop argument is always a collection
Claus Gittinger <cg@exept.de>
parents: 1579
diff changeset
   969
! !
ca6e6732dc29 drop argument is always a collection
Claus Gittinger <cg@exept.de>
parents: 1579
diff changeset
   970
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
   971
!XWorkstation methodsFor:'accessing'!
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
   972
6177
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
   973
displayId
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
   974
    ^ displayId
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
   975
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
   976
    "Created: / 20-12-2013 / 11:02:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
   977
!
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
   978
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   979
displayIdOrErrorIfBroken
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   980
    (hasConnectionBroken or:[displayId isNil]) ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
   981
	self primitiveFailedOrClosedConnection.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
   982
	^ nil.
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   983
    ].
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   984
    ^ displayId
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   985
!
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   986
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   987
displayIdOrNilIfBroken
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   988
    hasConnectionBroken ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
   989
	^ nil.
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   990
    ].
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   991
    ^ displayId
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   992
!
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
   993
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
   994
maxOperationsUntilFlush
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
   995
    ^ maxOperationsUntilFlush
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
   996
!
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
   997
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
   998
maxOperationsUntilFlush:anIntegerOrNil
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
   999
    "if not nil, after anInteger number of draw operations
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  1000
     a flush is performed.
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  1001
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  1002
     This is to work around a drawing problem which occurs on
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  1003
     Ubuntu 12.04 64bit running on a VMware player (2013-11)."
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  1004
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  1005
    maxOperationsUntilFlush := anIntegerOrNil.
6177
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
  1006
!
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
  1007
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
  1008
screen
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
  1009
    ^ screen
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
  1010
53a2b3f77dd3 class: XWorkstation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6172
diff changeset
  1011
    "Created: / 20-12-2013 / 11:02:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  1012
! !
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  1013
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1014
!XWorkstation methodsFor:'accessing & queries'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1015
2685
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1016
activateOnClick:aBoolean
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1017
    "set/clear the activateOnClick behavior.
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1018
     If on, a click into a window raises and activates
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1019
     the (top) window.
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1020
     Windows users typically enable this;
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1021
     in contrast, those used to the X-Window system typically prefer
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1022
     it disabled.
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1023
     Returns the previous setting."
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1024
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1025
    |prev|
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1026
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1027
    prev := activateOnClick ? false.
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1028
    aBoolean notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1029
	activateOnClick := aBoolean.
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1030
    ].
2685
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1031
    ^ prev
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1032
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1033
    "
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1034
     Display class activateOnClick:true
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1035
     Display class activateOnClick:false
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1036
    "
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1037
!
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  1038
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1039
anyButtonMotionMask
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1040
    "return the state-mask for any button in motion events' state-field.
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1041
     This is the devices mask."
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1042
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1043
%{  /* NOCONTEXT */
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1044
    RETURN (__MKSMALLINT(Button1MotionMask | Button2MotionMask | Button3MotionMask));
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1045
%}.
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1046
    ^ nil
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1047
!
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1048
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1049
blackpixel
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1050
    "return the colornumber of black"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1051
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1052
    ^ blackpixel
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1053
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1054
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1055
button1MotionMask
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1056
    "return the state-mask for button1 in motion events' state-field.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1057
     For backward compatibility."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1058
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1059
%{  /* NOCONTEXT */
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1060
    RETURN (__MKSMALLINT(Button1MotionMask));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1061
%}
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1062
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1063
    "
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1064
     Display button1MotionMask
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1065
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1066
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1067
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1068
button2MotionMask
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1069
    "return the state-mask for button2 in motion events' state-field
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1070
     For backward compatibility."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1071
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1072
%{  /* NOCONTEXT */
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1073
    RETURN (__MKSMALLINT(Button2MotionMask));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1074
%}
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1075
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1076
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1077
button3MotionMask
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1078
    "return the state-mask for button3 in motion events' state-field
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1079
     For backward compatibility."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1080
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1081
%{  /* NOCONTEXT */
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1082
    RETURN (__MKSMALLINT(Button3MotionMask));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1083
%}
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1084
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1085
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1086
buttonMotionMask:aButton
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1087
    "return the state-mask for button1 in motion events state-field.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1088
     This is the devices mask."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1089
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1090
%{  /* NOCONTEXT */
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1091
    if (aButton == __MKSMALLINT(1)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1092
	RETURN (__MKSMALLINT(Button1MotionMask));
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1093
    }
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1094
    if (aButton == __MKSMALLINT(2)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1095
	RETURN (__MKSMALLINT(Button2MotionMask));
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1096
    }
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1097
    if (aButton == __MKSMALLINT(3)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1098
	RETURN (__MKSMALLINT(Button3MotionMask));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1099
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1100
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1101
    ^ nil
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1102
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1103
382
92200ee9f558 added sendKey/sendButtonEvent
ah
parents: 378
diff changeset
  1104
controlMask
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1105
    "return the state-mask for the CTRL modified in motion events' state-field."
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1106
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1107
    "/ obsolete
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1108
    ^ self ctrlModifierMask
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1109
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1110
382
92200ee9f558 added sendKey/sendButtonEvent
ah
parents: 378
diff changeset
  1111
!
92200ee9f558 added sendKey/sendButtonEvent
ah
parents: 378
diff changeset
  1112
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1113
displayFileDescriptor
48194c26a46c Initial revision
claus
parents:
diff changeset
  1114
    "return the displays fileNumber - for select"
48194c26a46c Initial revision
claus
parents:
diff changeset
  1115
48194c26a46c Initial revision
claus
parents:
diff changeset
  1116
%{  /* NOCONTEXT */
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1117
#ifndef __win32__
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1118
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1119
	RETURN ( __MKSMALLINT(ConnectionNumber(myDpy)) );
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1120
    }
2231
817b5fad2fb7 md changes for WIN32
Claus Gittinger <cg@exept.de>
parents: 2195
diff changeset
  1121
#endif
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1122
    RETURN (nil);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1123
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
  1124
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1125
133
claus
parents: 132
diff changeset
  1126
displayName
claus
parents: 132
diff changeset
  1127
    "return the X-connections display name.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1128
     This is (currently) nil for the default display,
133
claus
parents: 132
diff changeset
  1129
     something like foo:0 for any other remote display.
claus
parents: 132
diff changeset
  1130
     Future versions may return non-nil strings for the default display as well."
claus
parents: 132
diff changeset
  1131
claus
parents: 132
diff changeset
  1132
    ^ displayName
claus
parents: 132
diff changeset
  1133
!
claus
parents: 132
diff changeset
  1134
4153
a6d682af620b *** empty log message ***
werner
parents: 4127
diff changeset
  1135
displayName: something
a6d682af620b *** empty log message ***
werner
parents: 4127
diff changeset
  1136
a6d682af620b *** empty log message ***
werner
parents: 4127
diff changeset
  1137
    displayName := something
a6d682af620b *** empty log message ***
werner
parents: 4127
diff changeset
  1138
!
a6d682af620b *** empty log message ***
werner
parents: 4127
diff changeset
  1139
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1140
protocolVersion
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1141
    "return the X-servers protocol version - should normally not be of
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1142
     any interest"
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1143
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1144
%{  /* NOCONTEXT */
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1145
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1146
	RETURN ( __MKSMALLINT(XProtocolVersion(myDpy)) );
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1147
    }
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1148
    RETURN (nil);
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1149
%}
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1150
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1151
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1152
     Display protocolVersion
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1153
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1154
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1155
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1156
serverVendor
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1157
    "return the X-server vendor string - this should normally not be of
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1158
     any interest, but can be for special cases
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1159
     (to avoid bugs in certain implementations)"
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1160
%{
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1161
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1162
	RETURN ( __MKSTRING(XServerVendor(myDpy)) );
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1163
    }
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1164
    RETURN (nil);
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1165
%}
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1166
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1167
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1168
     Display serverVendor
5993
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1169
     Display platformName
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1170
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1171
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1172
382
92200ee9f558 added sendKey/sendButtonEvent
ah
parents: 378
diff changeset
  1173
shiftMask
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1174
    "return the state-mask for the SHIFT modified in motion events' state-field."
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1175
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1176
    "/ obsolete
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  1177
    ^ self shiftModifierMask
382
92200ee9f558 added sendKey/sendButtonEvent
ah
parents: 378
diff changeset
  1178
!
92200ee9f558 added sendKey/sendButtonEvent
ah
parents: 378
diff changeset
  1179
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1180
translatePoint:aPoint from:windowId1 to:windowId2
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1181
    "given a point in window1, return the coordinate in window2.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1182
     This expects a device coordinate (relative to the first views origin)
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1183
     in aPoint and returns a device coordinate relative to the 2nd views origin.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1184
     - use to xlate points from a window to rootwindow"
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1185
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  1186
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  1187
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  1188
    |x1 y1 x2 y2 rootWindowId|
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1189
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1190
    x1 := x2 := aPoint x truncated.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1191
    y1 := y2 := aPoint y truncated.
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  1192
    rootWindowId := self rootWindowId.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  1193
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1194
%{
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1195
    int xpos, ypos;
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  1196
    Window w1, w2, child_ret;
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  1197
    int screen = __intVal(__INST(screen));
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  1198
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  1199
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  1200
     && __isExternalAddress(windowId1)
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1201
     && __isExternalAddress(windowId2)
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1202
     && __bothSmallInteger(x1, y1)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1203
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1204
	Window rootWin;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1205
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1206
	w1 = __WindowVal(windowId1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1207
	w2 = __WindowVal(windowId2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1208
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1209
	rootWin = RootWindow(dpy, screen);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1210
	if (w1 == rootWin) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1211
	    w1 = (Window)__externalAddressVal(rootWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1212
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1213
	if (w2 == rootWin) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1214
	    w2 = (Window)__externalAddressVal(rootWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1215
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1216
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1217
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1218
	XTranslateCoordinates(dpy, w1, w2,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1219
			      __intVal(x1), __intVal(y1),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1220
			      &xpos, &ypos, &child_ret);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1221
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1222
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1223
	x2 = __MKSMALLINT(xpos);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1224
	y2 = __MKSMALLINT(ypos);
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1225
    }
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1226
%}.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1227
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1228
    ^ (x2 @ y2)
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1229
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1230
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1231
vendorRelease
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1232
    "return the X-servers vendor release - should normally not be of
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1233
     any interest, but can be for special cases.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1234
     (to avoid bugs in certain implementations)"
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1235
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1236
%{  /* NOCONTEXT */
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1237
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1238
	RETURN ( __MKSMALLINT(XVendorRelease(myDpy)) );
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1239
    }
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1240
    RETURN (nil);
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1241
%}
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1242
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1243
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1244
     Display vendorRelease
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1245
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1246
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1247
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1248
viewIdFromPoint:aPoint in:windowId
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1249
    "given a point in rootWindow, return the viewId of the subview of windowId
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1250
     hit by this coordinate. Return nil if no view was hit.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1251
     The returned id may be the id of a non ST view.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1252
     - used to find the window to drop objects after a cross-view drag."
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1253
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  1254
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  1255
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  1256
%{
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  1257
    int screen = __intVal(__INST(screen));
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1258
    OBJ xp, yp;
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1259
    int xpos, ypos;
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  1260
    Window child_ret;
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1261
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  1262
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  1263
     && __isExternalAddress(windowId)
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1264
     && __isPoint(aPoint)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1265
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1266
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1267
	xp = _point_X(aPoint);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1268
	yp = _point_Y(aPoint);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1269
	if (__bothSmallInteger(xp, yp)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1270
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1271
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1272
	    XTranslateCoordinates(dpy,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1273
				  RootWindow(dpy, screen),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1274
				  __WindowVal(windowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1275
				  __intVal(xp), __intVal(yp),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1276
				  &xpos, &ypos, &child_ret);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1277
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1278
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1279
	    if (child_ret) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1280
		RETURN ( __MKEXTERNALADDRESS(child_ret) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1281
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1282
	    RETURN ( nil );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1283
	}
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1284
    }
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1285
%}.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1286
    windowId notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1287
	aPoint isPoint ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1288
	    ^ self viewIdFromPoint:aPoint asPoint truncated in:windowId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1289
	]
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1290
    ].
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1291
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1292
    ^ nil
3412
91fe6c42822d Fix for KDE 2.1 windowmanager (virtual root view)
Stefan Vogel <sv@exept.de>
parents: 3333
diff changeset
  1293
91fe6c42822d Fix for KDE 2.1 windowmanager (virtual root view)
Stefan Vogel <sv@exept.de>
parents: 3333
diff changeset
  1294
    "
91fe6c42822d Fix for KDE 2.1 windowmanager (virtual root view)
Stefan Vogel <sv@exept.de>
parents: 3333
diff changeset
  1295
      Display viewIdFromPoint:100@100 in:Display realRootWindowId
91fe6c42822d Fix for KDE 2.1 windowmanager (virtual root view)
Stefan Vogel <sv@exept.de>
parents: 3333
diff changeset
  1296
    "
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1297
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1298
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1299
virtualExtent
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1300
    "return the virtual extent of the display (in pixels).
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1301
     On most systems, this is the same as the physical width;
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1302
     except, if a window manager with a virtual desktop like olvwm
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1303
     (simulating a bigger screen) is running."
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1304
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1305
%{
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  1306
    if (ISCONNECTED
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1307
     && (__INST(rootId) != __INST(virtualRootId))
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  1308
     && __isExternalAddress(__INST(virtualRootId))) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1309
	Window vRootWin;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1310
	Window root;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1311
	int x, y;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1312
	unsigned int width, height;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1313
	unsigned int dummy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1314
	int ret;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1315
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1316
	vRootWin = __WindowVal(__INST(virtualRootId));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1317
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1318
	ret = XGetGeometry(myDpy, vRootWin, &root, &x, &y, &width, &height,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1319
					  &dummy, &dummy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1320
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1321
	if (ret) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1322
	    RETURN ( __MKPOINT_INT(width, height) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1323
	}
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1324
    }
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1325
%}.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1326
    ^ width @ height
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  1327
   "
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  1328
     Display virtualExtent
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  1329
     Display extent
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  1330
   "
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1331
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1332
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1333
whitepixel
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1334
    "return the colornumber of white"
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1335
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1336
    ^ whitepixel
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1337
!
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1338
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1339
xlibTimeout
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1340
    ^ xlibTimeout
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1341
!
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1342
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1343
xlibTimeout:seconds
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1344
    xlibTimeout := seconds
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1345
!
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1346
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1347
xlibTimeoutForWindowCreation
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1348
    ^ xlibTimeoutForWindowCreation
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1349
!
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1350
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1351
xlibTimeoutForWindowCreation:seconds
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1352
    xlibTimeoutForWindowCreation := seconds
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1353
! !
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1354
3263
bd92a12c9316 category changes
Claus Gittinger <cg@exept.de>
parents: 3250
diff changeset
  1355
!XWorkstation methodsFor:'accessing-display capabilities'!
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1356
5993
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1357
extentOfResizeHandle
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1358
    "if the window system needs any area for a window resize handle (such as on MACOS-X),
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  1359
     this area's extent is returned here. It is assumed, that this handle is located at the lower-right
5993
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1360
     of the window.
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1361
     0@0 is returned for systems which locate the resize handles outside the client area.
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1362
     This may be used by the UI painter or programmatically to reserve some client area.
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1363
     This method must be redefined for displays which need it (i.e. X11 on osx)"
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1364
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1365
    OperatingSystem getOSType == #osx ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1366
	"/ should check for local display here - sigh, osx's Xserver does not give
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1367
	"/ us a hint through the server vendor...
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1368
	^ 16@16
5993
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1369
    ].
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1370
    ^ 0@0
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1371
!
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
  1372
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1373
hasCursorExtension
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1374
    "return true, if this workstation supports the X cursor extension.
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1375
     This extension allows for deep cursors (depth > 1)"
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1376
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1377
    ^ self hasExtension:'CURSOR'
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1378
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1379
    "
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1380
     Display hasCursorExtension
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1381
    "
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1382
!
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1383
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1384
hasDPS
186
claus
parents: 180
diff changeset
  1385
    "return true, if this workstation supports display postscript.
claus
parents: 180
diff changeset
  1386
     Both the server must support it, and the feature must have been
claus
parents: 180
diff changeset
  1387
     enabled in the smalltalk system, for true to be returned."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1388
48194c26a46c Initial revision
claus
parents:
diff changeset
  1389
    ^ hasDPSExtension
186
claus
parents: 180
diff changeset
  1390
claus
parents: 180
diff changeset
  1391
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1392
     Display hasDPS
186
claus
parents: 180
diff changeset
  1393
    "
claus
parents: 180
diff changeset
  1394
!
claus
parents: 180
diff changeset
  1395
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1396
hasExtension:extensionString
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1397
    "query for an X extension. The argument, extensionString
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1398
     should be the name of the extension (i.e. 'SHAPE', 'XInputExtension' etc).
186
claus
parents: 180
diff changeset
  1399
     Return true, if that extension is available in the server.
claus
parents: 180
diff changeset
  1400
     (which does not imply, that there is support in smalltalk for it."
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1401
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  1402
    <context: #return>
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1403
%{
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1404
    int dummy;
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
  1405
    OBJ rslt = false;
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1406
2531
e4d6bdae7bcf use quick-isString / isSymbol
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  1407
    if (ISCONNECTED
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
  1408
     && __isStringLike(extensionString)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1409
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1410
	if (XQueryExtension(myDpy, __stringVal(extensionString), &dummy, &dummy, &dummy)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1411
	    rslt = true;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1412
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1413
	LEAVE_XLIB();
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
  1414
    }
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
  1415
    RETURN (rslt);
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
  1416
%}
186
claus
parents: 180
diff changeset
  1417
claus
parents: 180
diff changeset
  1418
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1419
     Display hasExtension:'XVideo'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1420
     Display hasExtension:'Input'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1421
     Display hasExtension:'GLX'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1422
     Display hasExtension:'X3D-PEX'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1423
     Display hasExtension:'XInputExtension'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1424
     Display hasExtension:'SHAPE'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1425
     Display hasExtension:'MIT-SHM'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1426
     Display hasExtension:'SGIFullScreenStereo'
186
claus
parents: 180
diff changeset
  1427
    "
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1428
!
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1429
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1430
hasImageExtension
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1431
    "return true, if this workstation supports the X image extension.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1432
     Both the server must support it, and the feature must have been
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1433
     enabled in the smalltalk system, for true to be returned."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1434
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1435
    ^ hasImageExtension
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1436
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1437
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1438
     Display hasImageExtension
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1439
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1440
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1441
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1442
hasInputExtension
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1443
    "return true, if this workstation supports the X input extension.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1444
     Both the server must support it, and the feature must have been
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1445
     enabled in the smalltalk system, for true to be returned."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1446
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1447
    ^ hasInputExtension
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1448
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1449
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1450
     Display hasInputExtension
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1451
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1452
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1453
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1454
hasMultibuffer
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1455
    "return true, if this workstation supports the multibuffer extension.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1456
     Both the server must support it, and the feature must have been
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1457
     enabled in the smalltalk system, for true to be returned."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1458
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1459
    ^ hasMbufExtension
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1460
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1461
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1462
     Display hasMultibuffer
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1463
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1464
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1465
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1466
hasPEX
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1467
    "return true, if this workstation supports PEX 3D graphics.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1468
     Both the server must support it, and the feature must have been
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1469
     enabled in the smalltalk system, for true to be returned."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1470
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1471
    ^ hasPEXExtension
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1472
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1473
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1474
     Display hasPEX
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1475
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1476
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1477
6522
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1478
hasRenderExtension
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1479
    "return true, if this workstation supports the X render extension."
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1480
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1481
    ^ self hasExtension:'RENDER'
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1482
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1483
    "
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1484
     Display hasRenderExtension
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1485
    "
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1486
!
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1487
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1488
hasShm
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1489
    "return true, if this workstation supports the shared pixmap extension.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1490
     Both the server must support it, and the feature must have been
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1491
     enabled in the smalltalk system, for true to be returned."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1492
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1493
    ^ hasShmExtension
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1494
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1495
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1496
     Display hasShm
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1497
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1498
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1499
6904
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1500
hasXVideo
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1501
    "return true, if this workstation supports the XVideo extension.
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1502
     Both the server must support it, and the feature must have been
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1503
     enabled in the smalltalk system, for true to be returned."
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1504
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1505
    ^ hasXVideoExtension
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1506
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1507
    "
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1508
     Display hasXVideo
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1509
    "
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1510
!
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  1511
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1512
iconSizes
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  1513
    "Get the preferred/supported icon sizes. These are set by the window manager.
819
88aaa6ff1ca3 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 818
diff changeset
  1514
     We return nil (if not set) or an OrderedCollection of iconSize specs."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1515
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  1516
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  1517
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1518
    |xIconSizes count ret|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1519
7141
83d745d0d70f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7119
diff changeset
  1520
    count := 0.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1521
%{
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  1522
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1523
    XIconSize *sizeList;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1524
    int cnt;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1525
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1526
    if (ISCONNECTED) {
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1527
	Display *dpy = myDpy;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1528
	int status;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1529
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1530
	ENTER_XLIB();
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1531
	status = XGetIconSizes(dpy, RootWindow(dpy, screen), &sizeList, &cnt);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1532
	LEAVE_XLIB();
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1533
	if (status > 0) {
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1534
	   xIconSizes = __MKEXTERNALBYTES(sizeList);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1535
	   count = __MKSMALLINT(cnt);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1536
	}
7141
83d745d0d70f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7119
diff changeset
  1537
    }
83d745d0d70f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7119
diff changeset
  1538
%}.
83d745d0d70f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7119
diff changeset
  1539
    count == 0 ifTrue:[^ nil].
83d745d0d70f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7119
diff changeset
  1540
83d745d0d70f #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7119
diff changeset
  1541
    ret := Array new:count.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1542
    1 to:count do:[ :i |
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1543
	|minWidth minHeight maxWidth maxHeight widthStep heightStep d|
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1544
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1545
%{
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1546
	XIconSize *slp = &((XIconSize *)__externalAddressVal(xIconSizes))[__intVal(i)-1];
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1547
	minWidth = __MKSMALLINT(slp->min_width);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1548
	minHeight = __MKSMALLINT(slp->min_height);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1549
	maxWidth = __MKSMALLINT(slp->max_width);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1550
	maxHeight = __MKSMALLINT(slp->max_height);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1551
	widthStep = __MKSMALLINT(slp->width_inc);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1552
	heightStep = __MKSMALLINT(slp->height_inc);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1553
%}.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1554
	d := IdentityDictionary new:6.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1555
	d at:#minWidth put:minWidth.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1556
	d at:#maxWidth put:maxWidth.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1557
	d at:#widthStep put:widthStep.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1558
	d at:#minHeight put:minHeight.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1559
	d at:#maxHeight put:maxHeight.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1560
	d at:#heightStep put:heightStep.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1561
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1562
	ret at:i put:d.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1563
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1564
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1565
    xIconSizes free.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1566
    ^ ret
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1567
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1568
    "
819
88aaa6ff1ca3 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 818
diff changeset
  1569
     Display iconSizes
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1570
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1571
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1572
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1573
ignoreBackingStore:aBoolean
7696
2e656340ab84 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7662
diff changeset
  1574
    "if the argument is true, the view's backingStore setting will be ignored, and
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1575
     no backing store used - this can be used on servers where backing store is
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1576
     very slow or is broken (can be put into display-rc-file)"
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1577
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  1578
    ignoreBackingStore := aBoolean
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1579
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1580
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1581
monitorBounds
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1582
    "ask the X server via the Xinerama extension about the available minitors.
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1583
     The first monitor returned is the primary monitor"
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1584
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1585
    |numberOfMonitors resultArray bounds|
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1586
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1587
%{
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1588
#ifdef XINERAMA
5885
a5af5e4ee7c8 changed:
Stefan Vogel <sv@exept.de>
parents: 5872
diff changeset
  1589
    if (ISCONNECTED && __INST(hasXineramaExtension) == true) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1590
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1591
	XineramaScreenInfo *screenInfo;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1592
	int numDisplays;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1593
	OBJ *cResultArray;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1594
	int i, ci;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1595
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1596
	screenInfo = XineramaQueryScreens (dpy, &numDisplays);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1597
	if (screenInfo == 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1598
	    goto out;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1599
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1600
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1601
	numberOfMonitors = __mkSmallInteger(numDisplays);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1602
	resultArray = __ARRAY_NEW_INT(numDisplays * 5);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1603
	cResultArray = __ArrayInstPtr(resultArray)->a_element;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1604
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1605
	for (i=0, ci=0; i < numDisplays; i++, ci+=5) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1606
	    cResultArray[ci] = __mkSmallInteger(screenInfo[i].screen_number);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1607
	    cResultArray[ci+1] = __mkSmallInteger(screenInfo[i].x_org);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1608
	    cResultArray[ci+2] = __mkSmallInteger(screenInfo[i].y_org);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1609
	    cResultArray[ci+3] = __mkSmallInteger(screenInfo[i].width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1610
	    cResultArray[ci+4] = __mkSmallInteger(screenInfo[i].height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1611
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1612
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1613
	XFree(screenInfo);
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1614
    }
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1615
#endif
5885
a5af5e4ee7c8 changed:
Stefan Vogel <sv@exept.de>
parents: 5872
diff changeset
  1616
out:;
a5af5e4ee7c8 changed:
Stefan Vogel <sv@exept.de>
parents: 5872
diff changeset
  1617
%}.
a5af5e4ee7c8 changed:
Stefan Vogel <sv@exept.de>
parents: 5872
diff changeset
  1618
    numberOfMonitors isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1619
	"no xinerama - the display is the only monitor"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1620
	^ Array with:self bounds.
5885
a5af5e4ee7c8 changed:
Stefan Vogel <sv@exept.de>
parents: 5872
diff changeset
  1621
    ].
5891
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1622
    rawMonitorBounds = resultArray ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1623
	^ monitorBounds.
5891
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1624
    ].
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1625
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1626
    bounds := Array new:numberOfMonitors.
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1627
    1 to:numberOfMonitors do:[:idx|
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1628
	|rect baseIdx|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1629
	baseIdx := (idx-1) * 5.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1630
	rect := Rectangle
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1631
		    left:(resultArray at:baseIdx+2)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1632
		    top:(resultArray at:baseIdx+3)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1633
		    width:(resultArray at:baseIdx+4)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1634
		    height:(resultArray at:baseIdx+5).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1635
	bounds at:idx put:rect.
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1636
    ].
5891
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1637
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1638
    rawMonitorBounds := resultArray.
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1639
    monitorBounds := bounds.
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1640
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1641
    "since the monitor configuration changed,
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1642
     we have to update the monitor settings"
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1643
5892
491bf533899e added: #initializeScreenBounds
Stefan Vogel <sv@exept.de>
parents: 5891
diff changeset
  1644
    self initializeScreenBounds.
5891
a8f6f8d746ef changed: #monitorBounds
Stefan Vogel <sv@exept.de>
parents: 5890
diff changeset
  1645
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1646
    ^ bounds
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1647
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1648
    "
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1649
     Display monitorBounds
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1650
    "
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1651
!
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1652
5870
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1653
monitorBoundsAt:aPoint
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1654
    |bounds|
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1655
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1656
    bounds := self monitorBounds.
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  1657
    ^ bounds
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1658
	detect:[:eachRectangle| eachRectangle containsPoint:aPoint]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1659
	ifNone:[super monitorBoundsAt:aPoint].
5870
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1660
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1661
    "
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1662
     Screen current monitorBoundsAt:(0@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1663
     Screen current monitorBoundsAt:(1500@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1664
     Screen current monitorBoundsAt:(3000@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1665
     Screen current monitorBoundsAt:(9000@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1666
     Screen current monitorBoundsAt:(Display pointFromUser)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1667
    "
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1668
!
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1669
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1670
numberOfMonitors
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1671
    ^ self monitorBounds size
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1672
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1673
    "
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1674
	Display numberOfMonitors
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1675
    "
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1676
!
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1677
5870
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1678
pointIsVisible:aPoint
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1679
    "is the point visible?"
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1680
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1681
    |bounds|
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1682
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1683
    bounds := self monitorBounds.
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1684
    ^ bounds contains:[:eachRectangle| eachRectangle containsPoint:aPoint].
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1685
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1686
    "
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1687
     Screen current pointIsVisible:(0@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1688
     Screen current pointIsVisible:(1500@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1689
     Screen current pointIsVisible:(9000@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1690
     Screen current pointIsVisible:(Display pointFromUser)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1691
    "
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1692
!
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1693
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1694
pointsAreOnSameMonitor:point1 and:point2
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1695
    "are the two points on the same (multi-screen) monitors?"
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1696
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1697
    ^ (self monitorBoundsAt:point1) = (self monitorBoundsAt:point2)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1698
!
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1699
823
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1700
preferredIconSize
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1701
    "return the displays preferred size for icons.
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1702
     Redefined to return a special value on SGI servers."
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1703
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1704
    self serverVendor = 'Silicon Graphics' ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1705
	^ 86@68
823
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1706
    ].
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1707
    ^ super preferredIconSize
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1708
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1709
    "Created: 10.6.1996 / 21:06:48 / cg"
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1710
!
1a0933c804ba checkin from browser
Claus Gittinger <cg@exept.de>
parents: 819
diff changeset
  1711
1025
40dde7d8f538 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1018
diff changeset
  1712
scrollsAsynchronous
1008
ca0a38a11bdc support (prepared) for devices which do not send asynchronous exposes
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1713
    "return true, if this display asynchronously sends expose events after a
ca0a38a11bdc support (prepared) for devices which do not send asynchronous exposes
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1714
     scroll operation. False otherwise. Asynchronous expose events are an X
ca0a38a11bdc support (prepared) for devices which do not send asynchronous exposes
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1715
     speciality, which affects a few methods outside of the display class (sorry)"
ca0a38a11bdc support (prepared) for devices which do not send asynchronous exposes
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1716
ca0a38a11bdc support (prepared) for devices which do not send asynchronous exposes
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1717
    ^ true
ca0a38a11bdc support (prepared) for devices which do not send asynchronous exposes
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1718
!
ca0a38a11bdc support (prepared) for devices which do not send asynchronous exposes
Claus Gittinger <cg@exept.de>
parents: 995
diff changeset
  1719
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1720
smallestMonitorHeight
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1721
    "returns the usable height of the smallest monitor in a mult-monito setup"
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1722
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1723
    |minH|
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1724
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1725
    minH := self usableHeight.
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1726
    self monitorBounds do:[:eachBounds |
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1727
	minH := minH min: eachBounds height.
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1728
    ].
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1729
    ^ minH
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1730
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1731
    "
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1732
	Display smallestMonitorHeight
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1733
    "
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1734
!
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
  1735
7229
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1736
supportedClipboards
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1737
    "answer a collection of symbols with the supported clipboards.
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1738
     X11 additionaly supports a buffer containing the currently selected text
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1739
     (in xterm) - the PRIMARY selection"
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1740
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1741
    ^ #(clipboard selection)
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1742
!
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1743
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1744
supportedImageFormats
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1745
    "return an array with supported image formats;
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1746
     each array entry is an attribute dictionary, consisting of
235
579f3f804a46 padding info in supportedFormats
Claus Gittinger <cg@exept.de>
parents: 233
diff changeset
  1747
     depth, bitsPerPixel and padding values."
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1748
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1749
    |nFormats "{ Class: SmallInteger }"
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1750
     formatArray|
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1751
%{
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  1752
    Display *dpy;
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1753
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1754
    if (! ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1755
	RETURN (nil);
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1756
    }
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  1757
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  1758
    dpy = myDpy;
1898
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
  1759
#ifdef NO_PRIVATE_DISPLAY_ACCESS
1891
0dc56210cbfb VMS stuff
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
  1760
    nFormats = __MKSMALLINT(1);
0dc56210cbfb VMS stuff
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
  1761
#else
315
2abc494f0c45 _-macros replaced by __-macros
Claus Gittinger <cg@exept.de>
parents: 310
diff changeset
  1762
    nFormats = __MKSMALLINT(DISPLAYACCESS(dpy)->nformats);
1891
0dc56210cbfb VMS stuff
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
  1763
#endif
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1764
%}.
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1765
    formatArray := Array new:nFormats.
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  1766
    1 to:nFormats do:[:index |
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1767
	|info bitsPerPixelInfo depthInfo paddingInfo i|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1768
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1769
	i := index.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1770
%{
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1771
	ScreenFormat *format;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1772
	Display *dpy = myDpy;
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  1773
1898
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
  1774
#ifdef NO_PRIVATE_DISPLAY_ACCESS
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1775
	depthInfo = __MKSMALLINT(1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1776
	bitsPerPixelInfo = __MKSMALLINT(1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1777
	paddingInfo = __MKSMALLINT(8);
1891
0dc56210cbfb VMS stuff
Claus Gittinger <cg@exept.de>
parents: 1888
diff changeset
  1778
#else
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1779
	format = DISPLAYACCESS(dpy)->pixmap_format;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1780
	format += (__intVal(i)-1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1781
	bitsPerPixelInfo = __MKSMALLINT(format->bits_per_pixel);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1782
	depthInfo = __MKSMALLINT(format->depth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1783
	paddingInfo = __MKSMALLINT(format->scanline_pad);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1784
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1785
%}.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1786
	info := IdentityDictionary new.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1787
	info at:#depth put:depthInfo.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1788
	info at:#bitsPerPixel put:bitsPerPixelInfo.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1789
	info at:#padding put:paddingInfo.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1790
	formatArray at:index put:info.
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1791
    ].
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1792
    ^ formatArray
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1793
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1794
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1795
     Display supportedImageFormats
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1796
    "
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1797
!
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  1798
2635
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1799
supportsAnyViewBackgroundPixmaps
7756
e85e23f3b476 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7706
diff changeset
  1800
    "return true, if the device allows pixmaps as viewBackground."
2635
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1801
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1802
    ^ true
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1803
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1804
    "Created: / 4.5.1999 / 18:41:07 / cg"
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1805
!
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1806
2745
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1807
supportsArbitraryShapedViews
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1808
    "return true, if this workstation supports arbitrary shaped windows.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1809
     Both the server must support it (the shape-extension),
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1810
     and the feature must have been enabled in the smalltalk system,
2745
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1811
     for true to be returned."
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1812
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1813
    ^ hasShapeExtension
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1814
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1815
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1816
     Display supportsArbitraryShapedViews
2745
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1817
    "
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1818
!
55edb7d63d29 #hasShape -> #supportsArbitraryShapedViews
Claus Gittinger <cg@exept.de>
parents: 2713
diff changeset
  1819
2385
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1820
supportsIconViews
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1821
    "return true, if this device supports views as icons.
7756
e85e23f3b476 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7706
diff changeset
  1822
     These can be drawn into like any other regular view, and therefore be easily animated.
2385
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1823
     Only Xservers (currently) support this."
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1824
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1825
    ^ true
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1826
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1827
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1828
     Display supportsIconViews
2385
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1829
    "
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1830
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1831
    "Modified: 10.6.1996 / 20:11:48 / cg"
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1832
    "Created: 10.6.1996 / 21:08:18 / cg"
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1833
!
0237421f277c support activateOnClick.
Claus Gittinger <cg@exept.de>
parents: 2361
diff changeset
  1834
2632
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2594
diff changeset
  1835
supportsMaskedDrawingWith:aForm
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2594
diff changeset
  1836
    "return true, if the device allows the given form pixmap
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  1837
     to be used as paint color.
2632
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2594
diff changeset
  1838
     True returned here - X has no trouble with any mask."
2330
2de54ce1d8c6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2305
diff changeset
  1839
7021
e5f10e127652 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 7018
diff changeset
  1840
    ^ true
e5f10e127652 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 7018
diff changeset
  1841
e5f10e127652 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 7018
diff changeset
  1842
    "Created: / 4.5.1999 / 12:16:43 / cg"
e5f10e127652 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 7018
diff changeset
  1843
!
e5f10e127652 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 7018
diff changeset
  1844
e5f10e127652 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 7018
diff changeset
  1845
supportsMaskedDrawingWithOffset:aForm
e5f10e127652 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 7018
diff changeset
  1846
    "return true, if the device allows the given form pixmap
7022
f4531f98fd46 #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 7021
diff changeset
  1847
     to be used as paint color with a mask offset.
7756
e85e23f3b476 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7706
diff changeset
  1848
     True returned here - X has no trouble with any mask."
e85e23f3b476 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7706
diff changeset
  1849
e85e23f3b476 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7706
diff changeset
  1850
    "/ XQuartz seems to have a bug here...
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  1851
    ^ OperatingSystem isOSXlike not.
7756
e85e23f3b476 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7706
diff changeset
  1852
    "/ ^ true.
2330
2de54ce1d8c6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2305
diff changeset
  1853
!
2de54ce1d8c6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2305
diff changeset
  1854
7229
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1855
supportsScreenReading
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1856
    "return true, if the device allows reading the screen pixels
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1857
     True returned here - X can do it"
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1858
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1859
    "XQuartz seems to have a bug here...
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1860
     ...but only on XQuartz servers.
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1861
     Blame: I cannot ask via server vendor, if its a Quartz display, because
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1862
     it does not return a valid server vendor string"
7229
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1863
    OperatingSystem isOSXlike ifTrue:[
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1864
	^ false
7229
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1865
    ].
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1866
    ^ true
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1867
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1868
    "
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1869
     Display serverVendor
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1870
     Display supportsScreenReading
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1871
    "
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1872
!
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1873
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1874
supportsUTF8WindowLabels
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1875
    "answer true, if window labels are to be utf-8 encoded"
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1876
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1877
    ^ false
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1878
!
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1879
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1880
supportsVariableHeightFonts
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1881
    "are fonts with variable height supported?"
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1882
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1883
    ^ false
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1884
!
30da116b864d #FEATURE
Claus Gittinger <cg@exept.de>
parents: 7147
diff changeset
  1885
2635
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1886
supportsViewBackgroundPixmap:aForm
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1887
    "return true, if the device allows the given pixmap as viewBackground.
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1888
     True returned here - X supports any size.
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1889
     Other device types (windows) may restrict this to certain sizes."
2305
7746d6252645 added supportsBackgroundPixmaps query (for win32 compatibility)
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1890
7746d6252645 added supportsBackgroundPixmaps query (for win32 compatibility)
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1891
    ^ true
2635
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1892
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1893
    "Created: / 4.5.1999 / 18:40:42 / cg"
92ac1edfb047 another view-bg query
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  1894
    "Modified: / 4.5.1999 / 18:44:25 / cg"
2305
7746d6252645 added supportsBackgroundPixmaps query (for win32 compatibility)
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1895
!
7746d6252645 added supportsBackgroundPixmaps query (for win32 compatibility)
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  1896
81
4ba554473294 *** empty log message ***
claus
parents: 78
diff changeset
  1897
supportsViewGravity
4ba554473294 *** empty log message ***
claus
parents: 78
diff changeset
  1898
    "return true, if this device supports gravity attributes.
82
98a70bce6d51 *** empty log message ***
claus
parents: 81
diff changeset
  1899
     We do not depend on it being implemented, but some resizing operations
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1900
     are faster, if they are."
81
4ba554473294 *** empty log message ***
claus
parents: 78
diff changeset
  1901
4ba554473294 *** empty log message ***
claus
parents: 78
diff changeset
  1902
    ^ true
5870
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1903
!
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1904
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1905
supportsXCursor
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1906
    "return true, if the XCursor extension (deep cursors ) are supported
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1907
     on this display.
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1908
     Both Smalltalk has to be compiled to support it (as client),
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1909
     and the display we are connected to must support it,
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1910
     to return true here."
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1911
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1912
     ^ self class hasXCursorLibrary
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1913
	and:[self hasCursorExtension]
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1914
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1915
    "
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1916
     Display supportsXCursor
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1917
     Display hasCursorExtension
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1918
     Display class hasXCursorLibrary
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1919
    "
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1920
!
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1921
7119
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
  1922
supportsXftFonts
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1923
    "return true, if XftFonts (nice looking truetype fonts)
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1924
     are supported on this display.
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1925
     Both Smalltalk has to be compiled to support it (as client),
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1926
     and the display we are connected to must support it,
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1927
     to return true here."
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1928
7591
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  1929
     ^ XftFontDescription notNil and:[hasXftLibrary].
7119
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
  1930
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
  1931
    "
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
  1932
     Display supportsXftFonts
6975
da4fb0542fca #FEATURE
Claus Gittinger <cg@exept.de>
parents: 6958
diff changeset
  1933
     Display hasRenderExtension
7119
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
  1934
     Display class hasXftLibrary
6538
04f9cecef7c3 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6522
diff changeset
  1935
    "
6522
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1936
!
ced38b522493 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6517
diff changeset
  1937
7699
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1938
supportsXftFontsInBitmaps
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1939
    "return true, if XftFonts (nice looking truetype fonts)
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1940
     are supported when drawing into bitmaps on this display.
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1941
     Currently, this does not work, so xft drawing must be disabled when
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1942
     rendering into bitmaps"
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1943
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1944
     ^ false.
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1945
     "/ ^ self supportsXftFonts
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1946
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1947
    "
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1948
     Display supportsXftFontsInBitmaps
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1949
     Display hasRenderExtension
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1950
     Display class hasXftLibrary
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1951
    "
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1952
!
8c953a0bca19 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 7696
diff changeset
  1953
6997
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1954
suppressShadowViews
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1955
    "return true, if this device wants to suppress shadow views
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1956
     (i.e. shadows under popups and modalBoxes).
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1957
     Some (slow) devices may want to return true here.
7352
6c47c5980dff #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7351
diff changeset
  1958
     Also, with XQuartz, it does not work, because we cannot readout the screen..."
6997
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1959
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1960
    OperatingSystem isOSXlike ifTrue:[
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  1961
	^ true
6997
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1962
    ].
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1963
    ^ super suppressShadowViews
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1964
!
2144afaf1cfc #UI_ENHANCEMENT
Claus Gittinger <cg@exept.de>
parents: 6975
diff changeset
  1965
5870
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1966
usableHeightAt:aPoint
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1967
    "returns the usable height of the display (in pixels) at a given point
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1968
     Normally, the same as height, but may be smaller, in
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1969
     case some menu space is taken up by the window manager (windows).
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1970
     On multi-display systems with different sized screens, this should care for
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1971
     which display is at the given x-position"
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1972
6026
688f086bfe9e class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6010
diff changeset
  1973
    |h|
688f086bfe9e class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6010
diff changeset
  1974
688f086bfe9e class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6010
diff changeset
  1975
    h := (self monitorBoundsAt:aPoint) height.
688f086bfe9e class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6010
diff changeset
  1976
    OperatingSystem isOSXlike ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1977
	"/ take away some space for the icon-panel at the bottom.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  1978
	^ h - 50
6026
688f086bfe9e class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6010
diff changeset
  1979
    ].
688f086bfe9e class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6010
diff changeset
  1980
    ^ h
5870
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1981
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1982
    "
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1983
     Screen current usableHeightAt:(0@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1984
     Screen current usableHeightAt:(1500@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1985
     Screen current usableHeightAt:(3000@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1986
     Screen current usableHeightAt:(9000@0)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1987
     Screen current usableHeightAt:(Display pointFromUser)
3c43dc838aaa added:5 methods
Stefan Vogel <sv@exept.de>
parents: 5869
diff changeset
  1988
    "
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  1989
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  1990
48194c26a46c Initial revision
claus
parents:
diff changeset
  1991
!XWorkstation methodsFor:'bitmap/window creation'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  1992
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1993
createBitmapFromArray:anArray width:w height:h
2896
cad683a945dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2871
diff changeset
  1994
    "create a monochrome, depth1 bitmap from a given (byte-)array.
cad683a945dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2871
diff changeset
  1995
     The rows are aligned to a multiple of 8"
cad683a945dc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2871
diff changeset
  1996
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1997
    |bitmapId|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1998
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  1999
    bitmapId := self primCreateBitmapFromArray:anArray width:w height:h.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2000
    bitmapId isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2001
	self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2002
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2003
    ^ bitmapId
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2004
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2005
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2006
createBitmapFromFile:aString for:aForm
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2007
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2008
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2009
    |id w h|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2010
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2011
%{
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2012
    int screen = __intVal(__INST(screen));
2531
e4d6bdae7bcf use quick-isString / isSymbol
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  2013
e4d6bdae7bcf use quick-isString / isSymbol
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  2014
    if (ISCONNECTED
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
  2015
     && __isStringLike(aString)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2016
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2017
	char *filename;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2018
	int status;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2019
	Pixmap newBitmap;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2020
	unsigned b_width, b_height;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2021
	int b_x_hot, b_y_hot;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2022
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2023
	filename = (char *) __stringVal(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2024
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2025
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2026
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2027
	status = XReadBitmapFile(dpy, RootWindow(dpy, screen),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2028
				 filename, &b_width, &b_height, &newBitmap,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2029
				 &b_x_hot, &b_y_hot);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2030
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2031
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2032
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2033
	if ((status == BitmapSuccess)  && newBitmap) {
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2034
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2035
	    __cnt_bitmap++;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2036
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2037
	    w = __MKSMALLINT(b_width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2038
	    h = __MKSMALLINT(b_height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2039
	    id = __MKEXTERNALADDRESS(newBitmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2040
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2041
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2042
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2043
    id notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2044
	aForm setWidth:w height:h
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2045
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2046
    ^ id
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2047
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2048
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2049
createBitmapWidth:w height:h
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2050
    "allocate a bitmap on the Xserver, the contents is undefined
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2051
     (i.e. random). Return a bitmap id or nil"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2052
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2053
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2054
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2055
%{
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2056
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2057
    Pixmap newBitmap;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2058
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2059
    if (__bothSmallInteger(w, h) && ISCONNECTED) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2060
	Display *dpy = myDpy;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2061
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2062
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2063
	ENTER_XLIB();
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2064
	newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2065
				       __intVal(w), __intVal(h), 1);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2066
	LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2067
#ifdef COUNT_RESOURCES
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2068
	if (newBitmap)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2069
	    __cnt_bitmap++;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2070
#endif
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2071
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2072
	RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2073
    }
1838
040e4689dfcd oops - do not return self from failing primCreateBitmap
Claus Gittinger <cg@exept.de>
parents: 1835
diff changeset
  2074
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2075
    self primitiveFailedOrClosedConnection.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2076
    ^ nil
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2077
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2078
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2079
createPixmapWidth:w height:h depth:d
48194c26a46c Initial revision
claus
parents:
diff changeset
  2080
    "allocate a pixmap on the Xserver, the contents is undefined
48194c26a46c Initial revision
claus
parents:
diff changeset
  2081
     (i.e. random). Return a bitmap id or nil"
48194c26a46c Initial revision
claus
parents:
diff changeset
  2082
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2083
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2084
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2085
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2086
    int screen = __intVal(__INST(screen));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2087
    Pixmap newBitmap;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2088
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  2089
    if (__bothSmallInteger(w, h) && ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2090
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2091
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2092
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2093
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2094
	newBitmap = XCreatePixmap(dpy, RootWindow(dpy, screen),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2095
				       __intVal(w), __intVal(h), __intVal(d));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2096
	LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2097
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2098
	if (newBitmap)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2099
	    __cnt_bitmap++;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2100
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2101
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2102
	RETURN ( (newBitmap != (Pixmap)0) ? __MKEXTERNALADDRESS(newBitmap) : nil );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2103
    }
1424
29fb970f157f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1404
diff changeset
  2104
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2105
    self primitiveFailedOrClosedConnection.
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  2106
    ^ nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2107
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2108
1468
9832c4017a70 added type argument to createWindowFor - prepare for native window support (windows)
Claus Gittinger <cg@exept.de>
parents: 1462
diff changeset
  2109
createWindowFor:aView type:typeSymbol
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2110
		 origin:origin
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2111
		 extent:extent
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2112
		 minExtent:minExt
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2113
		 maxExtent:maxExt
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2114
		 borderWidth:bWidth
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2115
		 subViewOf:wsuperView
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2116
		 style:wStyle
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2117
		 inputOnly:winputOnly
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2118
		 label:wlabel
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2119
		 owner:wowner
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2120
		 icon:wicon iconMask:wiconMask
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2121
		 iconView:wiconView
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2122
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2123
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2124
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2125
    |xpos ypos wwidth wheight minWidth minHeight maxWidth maxHeight
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2126
     bColorId wsuperViewId windowId isTopWindow
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  2127
     weventMask bitGravity viewGravity vBgColor
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  2128
     vBgForm deepForm preferredVisual preferredDepth
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2129
     wiconId wiconMaskId wiconViewId windowGroupWindowId|
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  2130
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
  2131
    self isOpen ifFalse:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2132
	self primitiveFailedOrClosedConnection.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2133
	^ nil
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  2134
    ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2135
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2136
    origin notNil ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2137
	xpos := origin x.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2138
	ypos := origin y.
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2139
    ] ifFalse:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2140
	xpos := ypos := 0.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2141
    ].
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2142
    extent notNil ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2143
	wwidth := extent x.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2144
	wheight := extent y.
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2145
    ] ifFalse:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2146
	wwidth := wheight := 100.
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2147
    ].
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2148
    minExt notNil ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2149
	minWidth := minExt x.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2150
	minHeight := minExt y
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2151
    ].
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2152
    maxExt notNil ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2153
	maxWidth := maxExt x.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2154
	maxHeight := maxExt y
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2155
    ].
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2156
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2157
    wsuperView notNil ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2158
	wsuperViewId := wsuperView id
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2159
    ] ifFalse:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2160
	isTopWindow := true.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2161
	aView class ~~ WindowGroupWindow ifTrue:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2162
	    windowGroupWindow isNil ifTrue:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2163
		self getWindowGroupWindow.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2164
	    ].
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2165
	    windowGroupWindowId := windowGroupWindow id.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2166
	].
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2167
	wicon notNil ifTrue:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2168
	    wiconId := wicon id.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2169
	    wiconMask notNil ifTrue:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2170
		wiconMaskId := wiconMask id
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2171
	    ]
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2172
	].
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2173
	wiconView notNil ifTrue:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2174
	    wiconViewId := wiconView id
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2175
	].
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2176
    ].
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2177
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2178
    weventMask := aView eventMask.
48194c26a46c Initial revision
claus
parents:
diff changeset
  2179
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  2180
    preferredVisual := aView preferredVisual.
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  2181
    preferredDepth := aView preferredDepth.
23
4a7e02de7b72 *** empty log message ***
claus
parents: 21
diff changeset
  2182
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2183
1898
e1b272aa6e82 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1891
diff changeset
  2184
%{  /* STACK:64000 */ /* used to be 16000 - but VMS seems to need a lot */
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2185
    Display *dpy = myDpy;
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2186
    int screen = __intVal(__INST(screen));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2187
    Visual visual;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2188
    XGCValues xgcv;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2189
    XSetWindowAttributes xswa;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2190
    XSizeHints sizehints;
6915
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2191
    XClassHint classhint;
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2192
    int bw, bd, bg;
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2193
    Window newWindow, parentWindow, windowGroupWindow;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2194
    XFontStruct *f;
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  2195
    Pixmap backPixmap = (Pixmap)0;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2196
    int flags = 0, depth, ioClass;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2197
    Atom WmDeleteWindowAtom, WmSaveYourselfAtom, WmProtocolsAtom;
4082
cb6eb58e8311 set MWM-Decoration-Hints
Claus Gittinger <cg@exept.de>
parents: 4067
diff changeset
  2198
    Atom WmQuitAppAtom, MotifWMHintsAtom;
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2199
    Atom WmClientLeaderAtom;
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2200
    Atom WmClientMachineAtom;
6916
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2201
    Atom NetWmPidAtom;
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  2202
    Atom STXDeviceAtom, UUIDAtom;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2203
    Atom atoms[3];
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2204
    int atomCount = 0;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2205
48194c26a46c Initial revision
claus
parents:
diff changeset
  2206
    sizehints.flags = 0;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2207
    sizehints.width = 100;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2208
    sizehints.height = 100;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2209
    sizehints.x = 0;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2210
    sizehints.y = 0;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2211
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  2212
    if (__bothSmallInteger(wwidth, wheight)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2213
	sizehints.flags |= PSize;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2214
	sizehints.width = __intVal(wwidth);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2215
	sizehints.height = __intVal(wheight);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2216
    }
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  2217
    if (__bothSmallInteger(xpos, ypos)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2218
	sizehints.flags |= PPosition;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2219
	sizehints.x = __intVal(xpos);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2220
	sizehints.y = __intVal(ypos);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2221
    }
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  2222
    if (__bothSmallInteger(minWidth, minHeight)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2223
	sizehints.flags |= PMinSize;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2224
	sizehints.min_width = __intVal(minWidth);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2225
	sizehints.min_height = __intVal(minHeight);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2226
    }
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  2227
    if (__bothSmallInteger(maxWidth, maxHeight)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2228
	sizehints.flags |= PMaxSize;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2229
	sizehints.max_width = __intVal(maxWidth);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2230
	sizehints.max_height = __intVal(maxHeight);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2231
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
  2232
37
c2dc1832c0f1 *** empty log message ***
claus
parents: 36
diff changeset
  2233
    bg = WhitePixel(dpy, screen);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2234
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  2235
    if (__isSmallInteger(bWidth)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2236
	bw = __intVal(bWidth);
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  2237
    } else {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2238
	bw = 0;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2239
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
  2240
72
3e84121988c3 *** empty log message ***
claus
parents: 70
diff changeset
  2241
    bd = BlackPixel(dpy, screen);
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  2242
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  2243
    if (__isExternalAddress(wsuperViewId)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2244
	parentWindow = __WindowVal(wsuperViewId);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2245
    } else {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2246
	parentWindow = RootWindow(dpy, screen);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2247
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
  2248
1695
46d9101e4bee replaced isPopUp flag in #createWindow by a more general #style symbol argument
Claus Gittinger <cg@exept.de>
parents: 1694
diff changeset
  2249
    if (wStyle == @symbol(popUp))
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2250
	xswa.override_redirect = 1;
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2251
    else
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2252
	xswa.override_redirect = 0;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2253
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2254
    if (winputOnly == true)
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2255
	ioClass = InputOnly;
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2256
    else
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2257
	ioClass = InputOutput;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2258
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  2259
    if (__isSmallInteger(weventMask)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2260
	xswa.event_mask = __intVal(weventMask);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2261
    } else {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2262
	xswa.event_mask = 0;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2263
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
  2264
48194c26a46c Initial revision
claus
parents:
diff changeset
  2265
    if (ioClass == InputOnly) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2266
	bw = 0;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2267
	depth = 0;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2268
	flags |= CWEventMask;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2269
    } else {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2270
	depth = DefaultDepth(dpy,screen);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2271
	flags |= CWEventMask | CWBorderPixel | CWOverrideRedirect;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2272
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2273
	if (backPixmap != (Pixmap)0) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2274
	    xswa.background_pixmap = backPixmap;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2275
	    flags |= CWBackPixmap;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2276
	} else {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2277
	    xswa.background_pixel = bg;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2278
	    flags |= CWBackPixel;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2279
	}
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2280
	xswa.border_pixel = bd;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2281
    }
23
4a7e02de7b72 *** empty log message ***
claus
parents: 21
diff changeset
  2282
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2283
    visual.visualid = CopyFromParent;
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  2284
    if (__isSmallInteger(preferredDepth)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2285
	depth = __intVal(preferredDepth);
23
4a7e02de7b72 *** empty log message ***
claus
parents: 21
diff changeset
  2286
    }
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  2287
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
  2288
150
5d0b9d669832 *** empty log message ***
claus
parents: 146
diff changeset
  2289
    if (preferredVisual != nil) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2290
	XVisualInfo vi;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2291
	int cls;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2292
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2293
	if (preferredVisual == @symbol(StaticGray))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2294
	    cls = StaticGray;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2295
	else if (preferredVisual == @symbol(GrayScale))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2296
	    cls = GrayScale;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2297
	else if (preferredVisual == @symbol(StaticColor))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2298
	    cls = StaticColor;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2299
	else if (preferredVisual == @symbol(PseudoColor))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2300
	    cls = PseudoColor;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2301
	else if (preferredVisual == @symbol(TrueColor))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2302
	    cls = TrueColor;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2303
	else if (preferredVisual == @symbol(DirectColor))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2304
	    cls = DirectColor;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2305
	else
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2306
	    cls = PseudoColor;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2307
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2308
	ENTER_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2309
	if (XMatchVisualInfo(dpy, screen, depth, cls, &vi)) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2310
	    visual.visualid = vi.visualid;
163
claus
parents: 162
diff changeset
  2311
/*
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2312
	    console_fprintf(stderr, "visualId=%x\n", vi.visualid);
163
claus
parents: 162
diff changeset
  2313
*/
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2314
	}
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2315
	LEAVE_XLIB();
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
  2316
    }
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
  2317
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2318
    ENTER_XLIB2();
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2319
    newWindow = XCreateWindow(dpy, parentWindow,
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2320
			   sizehints.x, sizehints.y,
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2321
			   sizehints.width, sizehints.height,
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2322
			   bw, depth, ioClass, &visual,
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2323
			   flags, &xswa);
1974
3a780312fa2e preps for timeout handling
Claus Gittinger <cg@exept.de>
parents: 1960
diff changeset
  2324
    LEAVE_XLIB();
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
  2325
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2326
48194c26a46c Initial revision
claus
parents:
diff changeset
  2327
    if (! newWindow) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2328
	RETURN ( nil );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2329
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
  2330
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2331
#ifdef COUNT_RESOURCES
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2332
    __cnt_view++;
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2333
#endif
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2334
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2335
    if (__isExternalAddress(windowGroupWindowId)) {
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2336
	windowGroupWindow = __WindowVal(windowGroupWindowId);	
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2337
    } else {
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2338
 	windowGroupWindow = newWindow;
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2339
    }
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2340
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2341
    /*
48194c26a46c Initial revision
claus
parents:
diff changeset
  2342
     * define its icon and name
48194c26a46c Initial revision
claus
parents:
diff changeset
  2343
     * (only makes sense for topWindows)
48194c26a46c Initial revision
claus
parents:
diff changeset
  2344
     */
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2345
    if (isTopWindow == true) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2346
	XWMHints wmhints;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2347
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2348
	wmhints.flags = 0;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2349
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2350
	if (__isExternalAddress(wiconId)) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2351
	    wmhints.icon_pixmap = __PixmapVal(wiconId);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2352
	    wmhints.flags = IconPixmapHint;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2353
	    if (__isExternalAddress(wiconMaskId)) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2354
		wmhints.icon_mask = __PixmapVal(wiconMaskId);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2355
		wmhints.flags |= IconMaskHint;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2356
	    }
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2357
	}
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2358
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2359
	
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2360
	wmhints.window_group = windowGroupWindow;
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2361
	wmhints.flags |= WindowGroupHint;
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2362
	
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2363
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2364
	if (__isExternalAddress(wiconViewId)) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2365
	    wmhints.flags |= IconWindowHint;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2366
	    wmhints.icon_window = __WindowVal(wiconViewId);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2367
	};
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  2368
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2369
/*
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2370
	wmhints.flags |= InputHint;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2371
	wmhints.input = True;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2372
*/
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2373
	ENTER_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2374
	XSetWMHints(dpy, newWindow, &wmhints);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2375
	XSetWMNormalHints(dpy, newWindow, &sizehints);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2376
	LEAVE_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2377
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2378
	/*
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2379
	 * get atoms first (if not already known)
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2380
	 */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2381
	if (__INST(protocolsAtom) == nil) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2382
	    ENTER_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2383
	    WmProtocolsAtom = XInternAtom(dpy, "WM_PROTOCOLS", False);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2384
	    __INST(protocolsAtom) = __MKATOMOBJ(WmProtocolsAtom);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2385
#ifdef USE_SAVEYOURSELF_ATOM
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2386
	    WmSaveYourselfAtom = XInternAtom(dpy, "WM_SAVE_YOURSELF", False);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2387
	    __INST(saveYourselfAtom) = __MKATOMOBJ(WmSaveYourselfAtom);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2388
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
  2389
#ifdef USE_QUIT_APP_ATOM
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2390
	    WmQuitAppAtom = XInternAtom(dpy, "_WM_QUIT_APP", False);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2391
	    __INST(quitAppAtom) = __MKATOMOBJ(WmQuitAppAtom);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2392
#endif
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2393
	    WmDeleteWindowAtom = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2394
	    __INST(deleteWindowAtom) = __MKATOMOBJ(WmDeleteWindowAtom);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2395
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2396
	    WmClientLeaderAtom = XInternAtom(dpy, "WM_CLIENT_LEADER", False);
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2397
	    __INST(wmClientLeaderAtom) = __MKATOMOBJ(WmClientLeaderAtom);
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2398
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2399
	    WmClientMachineAtom = XInternAtom(dpy, "WM_CLIENT_MACHINE", False);
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2400
	    __INST(wmClientMachineAtom) = __MKATOMOBJ(WmClientMachineAtom);
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2401
6916
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2402
	    NetWmPidAtom = XInternAtom(dpy, "_NET_WM_PID", False);
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2403
	    __INST(netWmPidAtom) = __MKATOMOBJ(NetWmPidAtom);
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2404
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2405
	    UUIDAtom = XInternAtom(dpy, "UUID", False);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2406
	    __INST(uuidAtom) = __MKATOMOBJ(UUIDAtom);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2407
	    STXDeviceAtom = XInternAtom(dpy, "STX_DEVICE_ID", False);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2408
	    __INST(stxDeviceAtom) = __MKATOMOBJ(STXDeviceAtom);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2409
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2410
	    LEAVE_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2411
	} else {
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2412
#ifdef USE_QUIT_APP_ATOM
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2413
	    WmQuitAppAtom = __AtomVal(__INST(quitAppAtom));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2414
#else
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2415
	    WmQuitAppAtom = 0;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2416
#endif
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2417
	    WmProtocolsAtom = __AtomVal(__INST(protocolsAtom));
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2418
	    WmDeleteWindowAtom = __AtomVal(__INST(deleteWindowAtom));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2419
#ifdef USE_SAVEYOURSELF_ATOM
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2420
	    WmSaveYourselfAtom = __AtomVal(__INST(saveYourselfAtom));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2421
#else
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2422
	    WmSaveYourselfAtom = 0;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2423
#endif
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2424
	    WmClientLeaderAtom = __AtomVal(__INST(wmClientLeaderAtom));
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2425
	    WmClientMachineAtom = __AtomVal(__INST(wmClientMachineAtom));
6916
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2426
	    NetWmPidAtom = __AtomVal(__INST(netWmPidAtom));
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2427
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2428
	    UUIDAtom = __AtomVal(__INST(uuidAtom));;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2429
	    STXDeviceAtom = __AtomVal(__INST(stxDeviceAtom));;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2430
	}
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2431
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2432
	/*
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2433
	 * tell window manager to not kill us but send an event instead
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2434
	 */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2435
	atoms[0] = WmDeleteWindowAtom; atomCount++;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2436
#ifdef USE_SAVEYOURSELF_ATOM
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2437
	atoms[atomCount] = WmSaveYourselfAtom; atomCount++;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2438
#endif
48194c26a46c Initial revision
claus
parents:
diff changeset
  2439
#ifdef USE_QUIT_APP_ATOM
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2440
	atoms[atomCount] = WmQuitAppAtom; atomCount++;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2441
#endif
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2442
	ENTER_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2443
	XChangeProperty(dpy, newWindow, WmProtocolsAtom, XA_ATOM,
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2444
			32, PropModeReplace, (unsigned char *)atoms, atomCount);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2445
	LEAVE_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2446
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2447
	/*
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2448
	 * an optional unique id (to mark stx-windows)
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2449
	 */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2450
	if (__isBytes(__INST(uniqueDeviceID))) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2451
	    int numUUIDBytes = __byteArraySize(__INST(uniqueDeviceID));
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2452
	    unsigned char uuidBytes[32];
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2453
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2454
	    if (numUUIDBytes <= sizeof(uuidBytes)) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2455
		Atom uuidAtom;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2456
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2457
		bcopy(__byteArrayVal(__INST(uniqueDeviceID)), uuidBytes, numUUIDBytes);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2458
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2459
		ENTER_XLIB();
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2460
		XChangeProperty (dpy, newWindow, STXDeviceAtom, XA_ATOM, 8, PropModeReplace,
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2461
				 uuidBytes, numUUIDBytes );
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2462
		LEAVE_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2463
	    }
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2464
	}
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
  2465
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2466
	ENTER_XLIB();
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2467
	/* 
6916
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2468
	 * Defined by ICCCM (https://tronche.com/gui/x/icccm/sec-5.html)
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2469
	 * Section 5.1. Client Support for Session Management,         
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2470
         */
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2471
	XChangeProperty (dpy, newWindow, WmClientLeaderAtom, XA_WINDOW, 32, 
6915
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2472
	                 PropModeReplace, (unsigned char *)&windowGroupWindow, 1);
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2473
	/* 
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2474
	 * Section 4.1.2.9. WM_CLIENT_MACHINE Property
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2475
         */
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2476
        if (__isStringLike(__INST(hostname))) {
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2477
	XChangeProperty (dpy, newWindow, WmClientMachineAtom, XA_STRING, 8, 
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2478
	                 PropModeReplace, __stringVal(__INST(hostname)), __stringSize(__INST(hostname)));
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2479
	}
6915
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2480
	/* 
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2481
	 * Section 4.1.2.5. WM_CLASS Property
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2482
	 */
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2483
	classhint.res_class = classhint.res_name = 0;
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2484
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2485
	if (__isStringLike(__INST(wmClassClass))) {
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2486
	    classhint.res_class = (char *) __stringVal(__INST(wmClassClass));
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2487
	}
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2488
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2489
	if (__isStringLike(__INST(wmClassName))) {
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2490
	    classhint.res_name = (char *) __stringVal(__INST(wmClassName));
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2491
	}	
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  2492
	XSetClassHint(myDpy, newWindow, &classhint);
6916
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2493
        /*
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2494
	 * Defined by EWMH, http://standards.freedesktop.org/wm-spec/1.3
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2495
	 * Section Application Window Properties
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2496
	 */
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2497
	if (__isInteger(__INST(pid))) {
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2498
	int pid = __intVal(__INST(pid));
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2499
	XChangeProperty (dpy, newWindow, NetWmPidAtom, XA_CARDINAL, 32, 
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2500
	                 PropModeReplace, (unsigned char *)&pid, 1);
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  2501
	}	
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  2502
	LEAVE_XLIB();
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
  2503
5886
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
  2504
#ifdef SUPPORT_MOTIF_WM_HINTS
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2505
	/*
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2506
	 * less decoration
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2507
	 */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2508
	if ((wStyle == @symbol(undecorated))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2509
	 || (wStyle == @symbol(dialog2))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2510
	 || (wStyle == @symbol(notitle))
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2511
	) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2512
	    if (__INST(motifWMHintsAtom) == nil) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2513
		ENTER_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2514
		MotifWMHintsAtom = XInternAtom(dpy, "_MOTIF_WM_HINTS", False);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2515
		__INST(motifWMHintsAtom) = __MKATOMOBJ(MotifWMHintsAtom);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2516
		LEAVE_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2517
	    } else {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2518
		MotifWMHintsAtom = __AtomVal(__INST(motifWMHintsAtom));
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2519
	    }
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2520
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2521
	    {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2522
		struct hints {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2523
		    unsigned long flags;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2524
		    unsigned long functions;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2525
		    unsigned long decorations;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2526
		    long input_mode;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2527
		    unsigned long status;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2528
		} mvm_hints;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2529
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2530
		if (wStyle == @symbol(undecorated)) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2531
		    mvm_hints.decorations = MWM_DECOR_NONE;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2532
		}
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2533
		if (wStyle == @symbol(dialog2)) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2534
		    mvm_hints.decorations = MWM_DECOR_BORDER
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2535
					    | MWM_DECOR_RESIZEH
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2536
					    | MWM_DECOR_TITLE
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2537
					    /* | MWM_DECOR_MENU */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2538
					    /* | MWM_DECOR_MINIMIZE */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2539
					    /* | MWM_DECOR_MAXIMIZE */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2540
					    ;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2541
		}
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2542
		if (wStyle == @symbol(notitle)) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2543
		    mvm_hints.decorations = MWM_DECOR_BORDER
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2544
					    /* | MWM_DECOR_RESIZEH  */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2545
					    /* | MWM_DECOR_TITLE    */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2546
					    /* | MWM_DECOR_MENU     */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2547
					    /* | MWM_DECOR_MINIMIZE */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2548
					    /* | MWM_DECOR_MAXIMIZE */
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2549
					    ;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2550
		}
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2551
		mvm_hints.flags =  MWM_HINTS_DECORATIONS;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2552
		ENTER_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2553
		XChangeProperty (dpy, newWindow, MotifWMHintsAtom,
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2554
				     MotifWMHintsAtom, 32, PropModeReplace,
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2555
				     (unsigned char*)&mvm_hints, 5 );
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2556
		LEAVE_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2557
	    }
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2558
	}
4090
b1dc981c8b10 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4086
diff changeset
  2559
#endif /* SUPPORT_MOTIF_WM_HINTS */
4082
cb6eb58e8311 set MWM-Decoration-Hints
Claus Gittinger <cg@exept.de>
parents: 4067
diff changeset
  2560
    }
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  2561
1913
cd9259612040 eliminate MKOBJ & MKCP (use MKEXTERNALADDRESS & externalAddressVal)
Claus Gittinger <cg@exept.de>
parents: 1906
diff changeset
  2562
    windowId = __MKEXTERNALADDRESS(newWindow);
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  2563
%}.
5886
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
  2564
8075
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2565
    "/ Set EWMH `_NET_WM_WINDOW_TYPE` property on created window
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2566
    "/ depending on desired `wStyle`. 
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2567
    "/
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2568
    "/ Note, that `wStyle` value is some Smalltalk/X abstraction 
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2569
    "/ of window types across all supported platforms (modeled,
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2570
    "/ presumably, after Winsows) so there;s no 1:1 match. The code
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2571
    "/ code below tries to do it's best. 
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2572
    "/ 
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2573
    "/ See Extended Window Manager Hints 1.3
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2574
    "/     http://standards.freedesktop.org/wm-spec/1.3/
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2575
    "/    
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2576
    "/     XWorkstation >> setWindowType:in:
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2577
    "/
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2578
    (wStyle == #dialog or:[wStyle == #dialog2]) ifTrue:[
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2579
    	self setWindowType: #'_NET_WM_WINDOW_TYPE_DIALOG' in: windowId.
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2580
    ] ifFalse:[
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2581
    (wStyle == #toolWindow) ifTrue:[
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2582
    	self setWindowType: #'_NET_WM_WINDOW_TYPE_UTILITY' in: windowId.
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2583
    ]].
00b6d158ab89 Issue #154: Set `_NET_WM_WINDOW_TYPE` property according to desired "windowStyle"
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 8038
diff changeset
  2584
5886
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
  2585
"/    (wStyle ~= nil and:[wStyle ~= #normal]) ifTrue:[
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
  2586
"/        self setWindowType:wStyle in:windowId.
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
  2587
"/    ].
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  2588
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  2589
    (wsuperView isNil "this is a topwindow"
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  2590
     and:[wlabel notEmptyOrNil]) ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2591
	self
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2592
	    setIconName:wlabel in:windowId;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2593
	    setWindowName:wlabel in:windowId.
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  2594
    ].
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  2595
5568
3d18b7fa928a changed: #createWindowFor:type:origin:extent:minExtent:maxExtent:borderWidth:subViewOf:style:inputOnly:label:owner:icon:iconMask:iconView:
Stefan Vogel <sv@exept.de>
parents: 5528
diff changeset
  2596
    self addKnownView:aView withId:windowId.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2597
    ^ windowId
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2598
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  2599
    "Modified: / 09-01-2013 / 10:43:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2600
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2601
48194c26a46c Initial revision
claus
parents:
diff changeset
  2602
destroyGC:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  2603
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2604
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2605
%{
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2606
    /*
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2607
     * ignore closed connection
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2608
     */
1211
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  2609
    if (! ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2610
	RETURN ( self );
1211
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  2611
    }
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  2612
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  2613
    if (__isExternalAddress(aGCId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2614
	GC gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2615
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2616
	if (gc) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2617
	    __ExternalAddressInstPtr(aGCId)->e_address = NULL;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2618
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2619
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2620
	    XFreeGC(myDpy, gc);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2621
	    LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2622
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2623
	    __cnt_gc--;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2624
#endif
7201
b88ebe046079 X11: Throw a "primitive failed" signal when X GC is destroyed twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7166
diff changeset
  2625
            RETURN ( self );
b88ebe046079 X11: Throw a "primitive failed" signal when X GC is destroyed twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7166
diff changeset
  2626
	}	
b88ebe046079 X11: Throw a "primitive failed" signal when X GC is destroyed twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7166
diff changeset
  2627
    }
b88ebe046079 X11: Throw a "primitive failed" signal when X GC is destroyed twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7166
diff changeset
  2628
%}.
b88ebe046079 X11: Throw a "primitive failed" signal when X GC is destroyed twice
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7166
diff changeset
  2629
    self primitiveFailed: 'Trying to destroy GC twice'
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2630
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2631
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2632
destroyPixmap:aDrawableId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2633
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2634
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2635
%{
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2636
    /*
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2637
     * ignore closed connection
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2638
     */
1211
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  2639
    if (! ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2640
	RETURN ( self );
1211
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  2641
    }
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  2642
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  2643
    if (__isExternalAddress(aDrawableId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2644
	Pixmap pix = __PixmapVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2645
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2646
	if (pix) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2647
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2648
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2649
	    XFreePixmap(myDpy, pix);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2650
	    LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2651
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2652
	    __cnt_bitmap--;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2653
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2654
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2655
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2656
	RETURN ( self );
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2657
    }
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2658
%}.
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  2659
    self primitiveFailed
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2660
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2661
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
  2662
destroyView:aViewOrNil withId:aWindowId
6958
Stefan Vogel <sv@exept.de>
parents: 6904
diff changeset
  2663
    XftFontDescription notNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  2664
	XftFontDescription aboutToDestroyViewWithDevice:self id:aWindowId.
6958
Stefan Vogel <sv@exept.de>
parents: 6904
diff changeset
  2665
    ].
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
  2666
    self primDestroyViewWithId:aWindowId.
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
  2667
    self removeKnownView:aViewOrNil withId:aWindowId.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2668
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2669
48194c26a46c Initial revision
claus
parents:
diff changeset
  2670
dpsContextFor:aDrawableId and:aGCId
48194c26a46c Initial revision
claus
parents:
diff changeset
  2671
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
  2672
    <context: #return>
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
  2673
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2674
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2675
#ifdef XXDPS
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2676
    int screen = __intVal(__INST(screen));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2677
    DPSContext dps;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2678
    int height;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2679
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  2680
    if (__isExternalAddress(aDrawableId)
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  2681
     && __isExternalAddress(aGCId)
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  2682
     && ISCONNECTED) {
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
  2683
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2684
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2685
	dps = XDPSCreateContext(myDpy, __DrawableVal(aDrawableId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2686
				       __GCVal(aGCId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2687
				       0, height, 0, colormap, NULL, 0,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2688
				       XDPSDefaultTextBackstop,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2689
				       XDPSDefaultErrorProc,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2690
				       NULL);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2691
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2692
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2693
	RETURN ( dps ? __MKEXTERNALADDRESS(dps) : nil );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2694
    }
48194c26a46c Initial revision
claus
parents:
diff changeset
  2695
#endif
1838
040e4689dfcd oops - do not return self from failing primCreateBitmap
Claus Gittinger <cg@exept.de>
parents: 1835
diff changeset
  2696
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2697
    self primitiveFailedOrClosedConnection.
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  2698
    ^ nil
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2699
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2700
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2701
gcFor:aDrawableId
132
claus
parents: 129
diff changeset
  2702
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2703
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2704
%{
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2705
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2706
    GC gc;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2707
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2708
    if (__isExternalAddress(aDrawableId) && ISCONNECTED) {
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
  2709
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2710
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2711
	gc = XCreateGC(myDpy, __DrawableVal(aDrawableId), 0L, (XGCValues *)0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2712
	LEAVE_XLIB();
1138
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2713
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2714
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2715
	if (gc)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2716
	    __cnt_gc++;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2717
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2718
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2719
	RETURN ( gc ? __MKEXTERNALADDRESS(gc) : nil );
1138
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2720
    }
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2721
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2722
    self primitiveFailedOrClosedConnection.
1138
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2723
    ^ nil
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2724
!
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2725
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2726
gcForBitmap:aDrawableId
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2727
    "with X, this is the same as a normal gc"
4a2b3b407cae need separate createGC method for bitmaps (for WIN)
Claus Gittinger <cg@exept.de>
parents: 1103
diff changeset
  2728
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2729
    ^ self gcFor:aDrawableId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2730
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2731
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2732
primCreateBitmapFromArray:anArray width:w height:h
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2733
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2734
154
claus
parents: 153
diff changeset
  2735
%{  /* UNLIMITEDSTACK */
claus
parents: 153
diff changeset
  2736
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  2737
    Display *dpy;
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2738
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2739
    Pixmap newBitmap;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2740
    unsigned int b_width, b_height;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2741
    REGISTER unsigned char *cp;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2742
    REGISTER unsigned char *pBits;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2743
    unsigned char *b_bits, *allocatedBits;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2744
    int index, row;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2745
    REGISTER int col;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2746
    unsigned bits;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2747
    static char reverseBitTable[256];
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  2748
    static int firstCall = 1;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2749
    int nBytes;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2750
    unsigned char fastBits[10000];
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2751
    OBJ num, *op;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2752
    int bytesPerRow;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2753
898
677e010d0cf8 exit from image restart, if connection is refused
Claus Gittinger <cg@exept.de>
parents: 892
diff changeset
  2754
    if (! ISCONNECTED) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2755
	RETURN (nil);
898
677e010d0cf8 exit from image restart, if connection is refused
Claus Gittinger <cg@exept.de>
parents: 892
diff changeset
  2756
    }
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  2757
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  2758
    dpy = myDpy;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2759
    if (firstCall) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2760
	for (index=0; index < 256; index++) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2761
	    int t = 0;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2762
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2763
	    if (index & 128) t |=   1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2764
	    if (index &  64) t |=   2;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2765
	    if (index &  32) t |=   4;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2766
	    if (index &  16) t |=   8;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2767
	    if (index &   8) t |=  16;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2768
	    if (index &   4) t |=  32;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2769
	    if (index &   2) t |=  64;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2770
	    if (index &   1) t |= 128;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2771
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2772
	    reverseBitTable[index] = t;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2773
	}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2774
	firstCall = 0;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2775
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2776
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2777
    if (__bothSmallInteger(w, h) && _isNonNilObject(anArray)) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2778
	newBitmap = (Pixmap)0;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2779
	b_width = __intVal(w);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2780
	b_height = __intVal(h);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2781
	bytesPerRow = (b_width + 7) / 8;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2782
	nBytes = b_height * bytesPerRow;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2783
	if (nBytes < sizeof(fastBits)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2784
	    cp = b_bits = fastBits;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2785
	    allocatedBits = 0;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2786
	} else {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2787
	    cp = b_bits = allocatedBits = (unsigned char *) malloc(nBytes);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2788
	    if (! cp) goto fail;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2789
	}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2790
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2791
	if (__isArrayLike(anArray)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2792
	    index = 1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2793
	    op = &(__ArrayInstPtr(anArray)->a_element[index - 1]);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2794
	    for (row = b_height; row; row--) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2795
		for (col = bytesPerRow; col; col--) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2796
		    num = *op++;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2797
		    if (__isSmallInteger(num)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2798
			bits = __intVal(num);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2799
		    } else {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2800
			bits = __longIntVal(num);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2801
			if (bits == 0) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2802
			    goto fail;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2803
			}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2804
		    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2805
		    *cp++ = reverseBitTable[bits & 0xFF];
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2806
		}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2807
	    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2808
	} else {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2809
	    if (__isByteArrayLike(anArray)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2810
		pBits = __ByteArrayInstPtr(anArray)->ba_element;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2811
		for (col = b_height*bytesPerRow; col; col--) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2812
		    *cp++ = reverseBitTable[*pBits++];
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2813
		}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2814
	    } else {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2815
		goto fail;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2816
	    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2817
	}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2818
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2819
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2820
	ENTER_XLIB();
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2821
	newBitmap = XCreateBitmapFromData(dpy, RootWindow(dpy, screen),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2822
					       (char *)b_bits,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2823
					       b_width, b_height);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2824
	LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2825
#ifdef COUNT_RESOURCES
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2826
	if (newBitmap)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2827
	    __cnt_bitmap++;
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2828
#endif
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2829
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
  2830
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2831
fail: ;
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2832
	if (allocatedBits)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2833
	    free(allocatedBits);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  2834
	RETURN ( newBitmap ? __MKEXTERNALADDRESS(newBitmap) : nil );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2835
    }
1838
040e4689dfcd oops - do not return self from failing primCreateBitmap
Claus Gittinger <cg@exept.de>
parents: 1835
diff changeset
  2836
%}.
040e4689dfcd oops - do not return self from failing primCreateBitmap
Claus Gittinger <cg@exept.de>
parents: 1835
diff changeset
  2837
    ^ nil
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2838
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2839
3228
c4d942d8c69a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3227
diff changeset
  2840
primCreateWindowType:t origin:o extent:e minExtent:minE maxExtent:maxE borderWidth:bw superViewId:sv style:st inputOnly:i label:l ownerId:oId iconId:ic iconMaskId:im iconViewId:iv
c4d942d8c69a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3227
diff changeset
  2841
    "for rel5 only"
c4d942d8c69a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3227
diff changeset
  2842
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2843
    ^ self primitiveFailedOrClosedConnection
3228
c4d942d8c69a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3227
diff changeset
  2844
c4d942d8c69a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3227
diff changeset
  2845
!
c4d942d8c69a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3227
diff changeset
  2846
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
  2847
primDestroyViewWithId:aWindowId
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2848
    <context: #return>
3250
250ee58a0634 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  2849
%{
250ee58a0634 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  2850
    if (! ISCONNECTED) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2851
	RETURN ( self );
3250
250ee58a0634 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  2852
    }
250ee58a0634 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  2853
250ee58a0634 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  2854
    if (__isExternalAddress(aWindowId)) {
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2855
	Window win = __WindowVal(aWindowId);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2856
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2857
	if (win) {
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2858
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2859
	    ENTER_XLIB();
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2860
	    XDestroyWindow(myDpy, win);
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2861
	    LEAVE_XLIB();
3250
250ee58a0634 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  2862
#ifdef COUNT_RESOURCES
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2863
	    __cnt_view--;
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2864
#endif
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2865
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  2866
	}
3250
250ee58a0634 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  2867
    }
250ee58a0634 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3245
diff changeset
  2868
%}
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2869
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  2870
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2871
!XWorkstation methodsFor:'clipboard'!
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2872
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2873
getPrimaryBuffer
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2874
    "Returns the contents of PRIMARY selection buffer"
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2875
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2876
    ^ primaryBuffer
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2877
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2878
    "Created: / 27-03-2012 / 14:51:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2879
!
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2880
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2881
primaryBufferAsString
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2882
    "return my current selection as a string"
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2883
5938
f5d6189257d4 comment/format in: #supportedTargetAtoms
Stefan Vogel <sv@exept.de>
parents: 5936
diff changeset
  2884
    ^ self class bufferAsString:self getPrimaryBuffer.
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2885
!
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2886
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2887
setPrimaryBuffer:aString
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2888
    "Sets the contents of PRIMARY selection."
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2889
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2890
    primaryBuffer := aString.
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2891
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2892
    "Created: / 27-03-2012 / 14:41:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2893
!
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2894
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2895
setPrimaryText:aString ownerView:aView
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2896
    "Set the PRIMARY selection - both the local one, and tell the display
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2897
     that we have changed it (i.e. place it into the PRIMARY)."
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2899
    |s viewID|
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2900
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2901
    self setPrimaryBuffer:aString.
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2902
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2903
    s := aString ? ''.
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2904
    s isString ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2905
	s := s asStringWithCRsFrom:1 to:(s size) compressTabs:false withCR:false
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2906
    ].
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2907
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2908
    viewID := aView id.
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2909
    viewID notNil ifTrue:[ "/ if the view is not already closed
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2910
	"/ for now - should add support to pass emphasis information too
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2911
	s := s string.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2912
	self setPrimaryText:s owner:viewID.
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2913
    ]
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2914
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2915
    "Created: / 27-03-2012 / 14:46:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2916
! !
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  2917
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2918
!XWorkstation methodsFor:'color stuff'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2919
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2920
colorCell
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  2921
    "allocate a color cell - return the color index (i.e. colorID).
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  2922
     This method will return nil for StaticGrey, StaticGrey and TrueColor displays."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2923
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2924
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2925
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2926
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2927
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2928
    XColor color;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2929
    unsigned long dummy;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2930
    Status ok;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  2931
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  2932
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2933
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2934
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2935
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2936
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2937
	ok = XAllocColorCells(dpy, DefaultColormap(dpy, screen), (Bool)0,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2938
				   &dummy, 0, &color.pixel, 1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2939
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2940
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2941
	if (ok) {
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2942
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2943
	    __cnt_color++;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2944
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2945
	    RETURN ( __MKSMALLINT(color.pixel) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  2946
	}
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2947
    }
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2948
%}.
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  2949
    ^ nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2950
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  2951
48194c26a46c Initial revision
claus
parents:
diff changeset
  2952
colorNamed:aString
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  2953
    "allocate a color with color name - return the color index (i.e. colorID).
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2954
     On trueColor displays, nothing is actually allocated,
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2955
     and the returned colorID is formed by simply packing the RGB values.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2956
     Don't use this method, colornames are mostly X specific."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2957
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  2958
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  2959
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2960
48194c26a46c Initial revision
claus
parents:
diff changeset
  2961
    char *colorname;
48194c26a46c Initial revision
claus
parents:
diff changeset
  2962
    XColor scolor, ecolor;
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  2963
    int screen = __intVal(__INST(screen));
850
Claus Gittinger <cg@exept.de>
parents: 847
diff changeset
  2964
    int id;
54
29a6b2f8e042 *** empty log message ***
claus
parents: 46
diff changeset
  2965
    Status ok;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  2966
2531
e4d6bdae7bcf use quick-isString / isSymbol
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  2967
    if (ISCONNECTED
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
  2968
     && __isStringLike(aString)) {
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2969
	Display *dpy = myDpy;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2970
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2971
	colorname = (char *) __stringVal(aString);
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2972
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2973
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2974
	ENTER_XLIB();
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2975
	ok = XParseColor(dpy, DefaultColormap(dpy, screen), colorname, &ecolor);
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2976
	LEAVE_XLIB();
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2977
	if (ok) {
847
f7c402bc5983 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 846
diff changeset
  2978
#ifdef QUICK_TRUE_COLORS
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2979
	    if (__INST(visualType) == @symbol(TrueColor)) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2980
		id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2981
		id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2982
		id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2983
		RETURN ( __MKSMALLINT(id) );
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2984
	    }
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2985
#endif
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2986
	    ENTER_XLIB();
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2987
	    ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2988
	    LEAVE_XLIB();
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2989
	}
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2990
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2991
	if (! ok) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2992
	    RETURN ( nil );
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2993
	}
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  2994
#ifdef COUNT_RESOURCES
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2995
	__cnt_color++;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2996
#endif
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  2997
	RETURN ( __MKSMALLINT(ecolor.pixel) );
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  2998
    }
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  2999
%}.
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3000
    ^ super colorNamed:aString
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3001
!
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3002
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3003
colorScaledRed:r scaledGreen:g scaledBlue:b
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  3004
    "allocate a color with rgb values (0..16rFFFF)
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  3005
     - return the color index (i.e. colorID).
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  3006
     On trueColor displays, nothing is actually allocated,
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  3007
     and the returned colorID is formed by simply packing the RGB values."
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3008
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3009
    <context: #return>
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3010
%{
898
677e010d0cf8 exit from image restart, if connection is refused
Claus Gittinger <cg@exept.de>
parents: 892
diff changeset
  3011
    Display *dpy;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3012
    XColor ecolor;
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  3013
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3014
    Status ok;
846
49a4732dec95 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 834
diff changeset
  3015
    int id;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3016
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3017
    if (__bothSmallInteger(r, g)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3018
     && __isSmallInteger(b)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3019
     && ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3020
	ecolor.red = __intVal(r);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3021
	ecolor.green= __intVal(g);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3022
	ecolor.blue = __intVal(b);
846
49a4732dec95 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 834
diff changeset
  3023
#ifdef QUICK_TRUE_COLORS
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3024
	if (__INST(visualType) == @symbol(TrueColor)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3025
	    id = ((ecolor.red >> (16 - __intVal(__INST(bitsRed)))) << __intVal(__INST(redShift))) & __intVal(__INST(redMask));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3026
	    id += ((ecolor.green >> (16 - __intVal(__INST(bitsGreen)))) << __intVal(__INST(greenShift))) & __intVal(__INST(greenMask));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3027
	    id += ((ecolor.blue >> (16 - __intVal(__INST(bitsBlue)))) << __intVal(__INST(blueShift))) & __intVal(__INST(blueMask));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3028
	    RETURN ( __MKSMALLINT(id) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3029
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3030
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3031
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3032
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3033
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3034
	ok = XAllocColor(dpy, DefaultColormap(dpy, screen), &ecolor);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3035
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3036
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3037
	if (! ok) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3038
	    RETURN ( nil );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3039
	}
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  3040
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3041
	__cnt_color++;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3042
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3043
	RETURN ( __MKSMALLINT(ecolor.pixel) );
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3044
    }
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3045
%}.
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3046
    ^ super colorScaledRed:r scaledGreen:g scaledBlue:b
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3047
!
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3048
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3049
deviceColorValueToPercent:aDeviceValue
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3050
    "given a color-component value in percent (0..65k), return the corresponding
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3051
     x-component value (0..100)"
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3052
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3053
    ^ (100.0 * aDeviceValue / 16rFFFF)
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3054
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3055
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3056
     Display deviceColorValueToPercent:0
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3057
     Display deviceColorValueToPercent:16r8000
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3058
     Display deviceColorValueToPercent:16rFFFF
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3059
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3060
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3061
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3062
freeColor:colorIndex
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3063
    "free a display color when its no longer needed"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3064
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3065
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3066
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3067
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  3068
    Display *dpy;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3069
    unsigned long color;
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  3070
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3071
846
49a4732dec95 dont XAlloc/XFree colors on TrueColor systems
Claus Gittinger <cg@exept.de>
parents: 834
diff changeset
  3072
#ifdef QUICK_TRUE_COLORS
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  3073
    if (__INST(visualType) == @symbol(TrueColor)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3074
	/* no need to do anything on TrueColor displays ... */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3075
	RETURN (self);
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3076
    }
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3077
#endif
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3078
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3079
    /*
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3080
     * ignore closed connection
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3081
     */
1211
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  3082
    if (! ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3083
	RETURN (self);
1211
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  3084
    }
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  3085
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  3086
    if (__isSmallInteger(colorIndex)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3087
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3088
	color = (long) __intVal(colorIndex);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3089
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3090
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3091
	XFreeColors(dpy, DefaultColormap(dpy, screen), &color, 1, 0L);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3092
	LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  3093
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3094
	__cnt_color--;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3095
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3096
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3097
	RETURN ( self );
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3098
    }
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3099
%}.
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3100
    self primitiveFailed
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3101
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3102
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3103
getScaledRGBFrom:index
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3104
    "get rgb components (0 .. 16rFFFF) of color in map at:index,
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3105
     and return a 3-element array containing them"
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3106
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3107
    <context: #return>
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3108
%{
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  3109
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3110
    XColor color;
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3111
    int sr, sg, sb;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3112
    int bits, scale, shift;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3113
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3114
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3115
     && __isSmallInteger(index)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3116
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3117
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3118
	color.pixel = __intVal(index);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3119
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3120
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3121
	XQueryColor(dpy, DefaultColormap(dpy, screen), &color);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3122
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3123
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3124
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3125
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3126
	 * have to compensate for an error in X ?, which does not scale
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3127
	 * colors correctly if lesser than 16bits are valid in a color,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3128
	 * (for example, color white on a 4bitsPerRGB server will Return
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3129
	 * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3130
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3131
	bits = __intVal(__INST(bitsPerRGB));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3132
	scale = (1<<bits) - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3133
	shift = 16 - bits;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3134
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3135
	sr = ((double)(color.red>>shift) / scale) * 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3136
	sg = ((double)(color.green>>shift) / scale) * 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3137
	sb = ((double)(color.blue>>shift) / scale) * 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3138
	RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3139
    }
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3140
%}.
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3141
    ^ super getScaledRGBFrom:index
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3142
!
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3143
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3144
getScaledRGBFromName:colorName
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3145
    "get rgb components (0..16rFFFF) of color named colorName,
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3146
     and return a 3-element array containing them"
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3147
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3148
%{
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  3149
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3150
    XColor color;
5034
c2e7d8a07da8 Some machines (hppa) have alignment problems, when casting something unaligned
Stefan Vogel <sv@exept.de>
parents: 5033
diff changeset
  3151
    double dr, dg, db;
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3152
    int sr, sg, sb;
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3153
    int bits, scale, shift;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3154
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3155
    if (ISCONNECTED
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
  3156
     && __isStringLike(colorName)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3157
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3158
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3159
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3160
	if (XParseColor(dpy, DefaultColormap(dpy, screen),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3161
			     (char *) __stringVal(colorName), &color)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3162
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3163
	     * have to compensate for an error in X ?, which does not scale
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3164
	     * colors correctly if lesser than 16bits are valid in a color,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3165
	     * (for example, color white on a 4bitsPerRGB server will Return
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3166
	     * (16rF000 16rF000 16rF000) instead of (16rFFFF 16rFFFF 16rFFFF)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3167
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3168
	    bits = __intVal(__INST(bitsPerRGB));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3169
	    scale = (1<<bits) - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3170
	    shift = 16 - bits;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3171
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3172
	    /* do assignment to doubles (no cast) - avoid alignment problems in HPPA */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3173
	    dr = color.red>>shift;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3174
	    dg = color.green>>shift;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3175
	    db = color.blue>>shift;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3176
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3177
	    sr = (dr / scale) * 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3178
	    sg = (dg / scale) * 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3179
	    sb = (db / scale) * 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3180
	    RETURN ( __ARRAY_WITH3(__MKSMALLINT(sr), __MKSMALLINT(sg), __MKSMALLINT(sb)));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3181
	}
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3182
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3183
    }
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3184
%}.
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3185
    ^ super getScaledRGBFromName:colorName
5034
c2e7d8a07da8 Some machines (hppa) have alignment problems, when casting something unaligned
Stefan Vogel <sv@exept.de>
parents: 5033
diff changeset
  3186
c2e7d8a07da8 Some machines (hppa) have alignment problems, when casting something unaligned
Stefan Vogel <sv@exept.de>
parents: 5033
diff changeset
  3187
    "
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3188
	Screen current getScaledRGBFromName:'red'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3189
	Screen current getScaledRGBFromName:'orange'
5034
c2e7d8a07da8 Some machines (hppa) have alignment problems, when casting something unaligned
Stefan Vogel <sv@exept.de>
parents: 5033
diff changeset
  3190
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3191
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3192
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3193
listOfAvailableColors
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3194
    "return a list of all available colornames.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3195
     This should not be used, since colornames are very
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3196
     display-specific (here X-specific)."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3197
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3198
    |aStream list line index colorName|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3199
3814
0d856538e64f Handle openErrorSignal in preparition for change openErrorSignal
Stefan Vogel <sv@exept.de>
parents: 3806
diff changeset
  3200
    aStream := '/usr/lib/X11/rgb.txt' asFilename readStreamOrNil.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3201
    aStream isNil ifTrue:[^ nil].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3202
    list := OrderedCollection new.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3203
    [aStream atEnd] whileFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3204
	line := aStream nextLine.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3205
	line notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3206
	    "skip the r/g/b numbers"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3207
	    index := 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3208
	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3209
	    [(line at:index) isDigit] whileTrue:[index := index + 1].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3210
	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3211
	    [(line at:index) isDigit] whileTrue:[index := index + 1].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3212
	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3213
	    [(line at:index) isDigit] whileTrue:[index := index + 1].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3214
	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3215
	    colorName := line copyFrom:index.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3216
	    ((colorName occurrencesOf:(Character space)) == 0) ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3217
		list add:colorName
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3218
	    ]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3219
	]
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3220
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3221
    aStream close.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3222
    ^ list sort
1047
b1ab39266b10 Fix #listOfAvailableColors.
Stefan Vogel <sv@exept.de>
parents: 1046
diff changeset
  3223
b1ab39266b10 Fix #listOfAvailableColors.
Stefan Vogel <sv@exept.de>
parents: 1046
diff changeset
  3224
    "
b1ab39266b10 Fix #listOfAvailableColors.
Stefan Vogel <sv@exept.de>
parents: 1046
diff changeset
  3225
     Screen current listOfAvailableColors
b1ab39266b10 Fix #listOfAvailableColors.
Stefan Vogel <sv@exept.de>
parents: 1046
diff changeset
  3226
    "
b1ab39266b10 Fix #listOfAvailableColors.
Stefan Vogel <sv@exept.de>
parents: 1046
diff changeset
  3227
b1ab39266b10 Fix #listOfAvailableColors.
Stefan Vogel <sv@exept.de>
parents: 1046
diff changeset
  3228
    "Modified: 11.9.1996 / 15:26:28 / stefan"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3229
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3230
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3231
percentToDeviceColorValue:aPercentage
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3232
    "given a color-component value in percent (0..100), return the corresponding
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3233
     x-component value (0..65k) as an integer"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3234
3220
e3e2f81a99df reorganized color protocl
Claus Gittinger <cg@exept.de>
parents: 3216
diff changeset
  3235
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3236
%{  /* NOCONTEXT */
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3237
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3238
    if (__isSmallInteger(aPercentage)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3239
	RETURN ( __MKSMALLINT(0xFFFF * __intVal(aPercentage) / 100) );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3240
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3241
    if (__isFloat(aPercentage)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3242
	RETURN ( __MKSMALLINT(0xFFFF * (int)(__floatVal(aPercentage)) / 100) );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3243
    }
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3244
%}.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3245
    ^ (16rFFFF * aPercentage / 100) rounded
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3246
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3247
892
602b15686c95 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
  3248
setColor:index scaledRed:sred scaledGreen:sgreen scaledBlue:sblue
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3249
    "change color in map at:index to rgb (0..16rFFFF).
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3250
     This method is a noop for StaticGrey, StaticGrey and TrueColor displays."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3251
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3252
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3253
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3254
48194c26a46c Initial revision
claus
parents:
diff changeset
  3255
    char *colorname;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3256
    XColor color;
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
  3257
    int screen = __intVal(__INST(screen));
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3258
    int r, g, b;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3259
    int ok = 1;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3260
892
602b15686c95 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
  3261
    if (__isSmallInteger(sred))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3262
	r = __intVal(sred);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3263
    else ok = 0;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3264
892
602b15686c95 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
  3265
    if (__isSmallInteger(sgreen))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3266
	g = __intVal(sgreen);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3267
    else ok = 0;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3268
892
602b15686c95 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 857
diff changeset
  3269
    if (__isSmallInteger(sblue))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3270
	b = __intVal(sblue);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3271
    else ok = 0;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3272
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3273
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3274
     && __isSmallInteger(index) && ok) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3275
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3276
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3277
	color.pixel = __intVal(index);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3278
	color.red = r;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3279
	color.green = g;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3280
	color.blue = b;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3281
	color.flags = DoRed | DoGreen | DoBlue;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3282
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3283
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3284
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3285
	XStoreColor(dpy, DefaultColormap(dpy, screen), &color);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3286
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3287
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3288
	RETURN ( self );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3289
    }
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3290
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3291
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3292
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3293
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3294
!XWorkstation methodsFor:'cursor stuff'!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3295
1563
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3296
builtInCursorShapes
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3297
    "return a collection of standard cursor names.
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3298
     Those are built into the XServer and need not be created as
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3299
     user cursors.
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3300
     (actually, there are more than those below ...)"
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3301
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3302
    "/ if you add something here, also add to #shapeNumberFromCursor ...
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3303
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3304
    ^ #(
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3305
	#upLeftArrow            "/ XC_top_left_arrow
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3306
	#upRightHand            "/ XC_hand1
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3307
	#upDownArrow            "/ XC_sb_v_double_arrow
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3308
	#leftRightArrow         "/ XC_sb_h_double_arrow
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3309
	#upLimitArrow           "/ XC_top_side
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3310
	#downLimitArrow         "/ XC_bottom_side
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3311
	#leftLimitArrow         "/ XC_left_side
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3312
	#rightLimitArrow        "/ XC_right_side
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3313
	#text                   "/ XC_xterm
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3314
	#upRightArrow           "/ XC_draft_large
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3315
	#leftHand               "/ XC_hand2
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3316
	#questionMark           "/ XC_question_arrow
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3317
	#cross                  "/ XC_X_cursor
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3318
	#wait                   "/ XC_watch
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3319
	#crossHair              "/ XC_tcross
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3320
	#origin                 "/ XC_ul_angle
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3321
	#topLeft                "/ XC_ul_angle
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3322
	#corner                 "/ XC_lr_angle
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3323
	#bottomRight            "/ XC_lr_angle
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3324
	#topRight               "/ XC_ur_angle
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3325
	#bottomLeft             "/ XC_ll_angle
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3326
	#square                 "/ XC_dotbox
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3327
	#fourWay                "/ XC_fleur
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3328
	#crossCursor            "/ XC_X_cursor
1563
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3329
      )
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3330
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3331
    "Created: 8.4.1997 / 10:12:30 / cg"
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3332
    "Modified: 8.4.1997 / 10:31:46 / cg"
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3333
!
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3334
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3335
colorCursor:aCursorId foreground:fgColor background:bgColor
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3336
    "change a cursors colors"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3337
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3338
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3339
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3340
    |fgR fgG fgB bgR bgG bgB|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3341
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3342
    fgR := fgColor scaledRed.
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3343
    fgG := fgColor scaledGreen.
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3344
    fgB := fgColor scaledBlue.
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3345
    bgR := bgColor scaledRed.
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3346
    bgG := bgColor scaledGreen.
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3347
    bgB := bgColor scaledBlue.
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3348
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3349
    XColor fgcolor, bgcolor;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3350
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3351
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3352
     && __isExternalAddress(aCursorId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3353
     && __bothSmallInteger(fgG, fgB)
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3354
     && __bothSmallInteger(bgR, bgG)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3355
     && __bothSmallInteger(bgB, fgR)) {
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3356
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3357
	fgcolor.red = __intVal(fgR);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3358
	fgcolor.green= __intVal(fgG);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3359
	fgcolor.blue = __intVal(fgB);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3360
	bgcolor.red = __intVal(bgR);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3361
	bgcolor.green= __intVal(bgG);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3362
	bgcolor.blue = __intVal(bgB);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3363
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3364
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3365
	XRecolorCursor(myDpy, __CursorVal(aCursorId), &fgcolor, &bgcolor);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3366
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3367
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3368
	RETURN ( self );
72
3e84121988c3 *** empty log message ***
claus
parents: 70
diff changeset
  3369
    }
834
f71ba674da2a Color changed to use integer r/g/b components internally (0..16rFFFF)
Claus Gittinger <cg@exept.de>
parents: 830
diff changeset
  3370
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3371
    self primitiveFailedOrClosedConnection
70
3cb3992ead10 *** empty log message ***
claus
parents: 66
diff changeset
  3372
!
3cb3992ead10 *** empty log message ***
claus
parents: 66
diff changeset
  3373
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3374
createCursorShape:aShape
974
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3375
    "create a cursor given a shape-symbol. This only works
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3376
     for a few standard cursors, and returns nil if no such cursor exists.
1838
040e4689dfcd oops - do not return self from failing primCreateBitmap
Claus Gittinger <cg@exept.de>
parents: 1835
diff changeset
  3377
     Senders must always care for a fallBack, in case of a nil return."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3378
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3379
    |shapeNumber|
3226
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3380
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3381
    shapeNumber := self shapeNumberFromSymbol:aShape.
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3382
    shapeNumber isNil ifTrue:[^ nil].
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3383
    ^ self primCreateCursorShapeNumber:shapeNumber
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3384
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3385
974
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3386
createCursorSourceForm:sourceForm maskForm:maskForm hotX:hx hotY:hy width:w height:h
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3387
    "create a cursor given 2 bitmaps (source, mask) and a hotspot"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3388
3227
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3389
    ^ self
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3390
	primCreateCursorSourceFormId:sourceForm id
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3391
	maskFormId:maskForm id
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3392
	hotX:hx hotY:hy
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3393
	width:w height:h
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3394
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3395
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3396
destroyCursor:aCursorId
974
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3397
    "release a cursor - frees any device resources"
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3398
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3399
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3400
%{
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3401
    /*
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3402
     * ignore closed connection
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3403
     */
1211
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  3404
    if (! ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3405
	RETURN ( self );
1211
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  3406
    }
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  3407
06d63d128bde allow destroy & free methods to be called even if unconnected
Claus Gittinger <cg@exept.de>
parents: 1210
diff changeset
  3408
    if (__isExternalAddress(aCursorId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3409
	Cursor curs = __CursorVal(aCursorId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3410
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3411
	if (curs) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3412
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3413
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3414
	    XFreeCursor(myDpy, curs);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3415
	    LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  3416
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3417
	    __cnt_cursor--;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3418
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3419
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3420
	RETURN ( self );
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3421
    }
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3422
%}.
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  3423
    self primitiveFailed
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3424
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3425
974
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3426
needDeviceFormsForCursor
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3427
    ^ true
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3428
!
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3429
3226
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3430
primCreateCursorShapeNumber:aShapeNumber
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3431
    "create a cursor given a shape-number."
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3432
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3433
    <context: #return>
3226
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3434
%{
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3435
    Cursor newCursor;
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3436
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3437
    if (ISCONNECTED
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3438
     && __isSmallInteger(aShapeNumber)) {
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3439
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3440
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3441
	newCursor = XCreateFontCursor(myDpy, __intVal(aShapeNumber));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3442
	LEAVE_XLIB();
3226
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3443
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3444
	if (newCursor)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3445
	    __cnt_cursor++;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3446
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3447
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3448
	if (newCursor != (Cursor)0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3449
	    RETURN (__MKEXTERNALADDRESS(newCursor));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3450
	}
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3451
    }
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3452
%}.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3453
    self primitiveFailedOrClosedConnection.
3226
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3454
    ^ nil
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3455
!
e01fe43e24f0 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3225
diff changeset
  3456
3227
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3457
primCreateCursorSourceFormId:sourceId maskFormId:maskId hotX:hx hotY:hy width:w height:h
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3458
    "create a cursor given 2 bitmaps (source, mask) and a hotspot"
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3459
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3460
    <context: #return>
3227
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3461
%{
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3462
    Cursor newCursor;
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3463
    XColor fgColor, bgColor;
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3464
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3465
    if (ISCONNECTED
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3466
     && __isExternalAddress(sourceId)
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3467
     && __isExternalAddress(maskId)
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3468
     && __bothSmallInteger(hx, hy)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3469
	fgColor.red = 0;        /* fg is black */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3470
	fgColor.green = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3471
	fgColor.blue = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3472
	bgColor.red = 0xFFFF;   /* bg is white */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3473
	bgColor.green = 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3474
	bgColor.blue = 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3475
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3476
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3477
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3478
	newCursor = XCreatePixmapCursor(myDpy,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3479
				__PixmapVal(sourceId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3480
				__PixmapVal(maskId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3481
				&fgColor, &bgColor, __intVal(hx), __intVal(hy));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3482
	LEAVE_XLIB();
3227
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3483
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3484
	if (newCursor)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3485
	    __cnt_cursor++;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3486
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3487
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3488
	if (newCursor != (Cursor)0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3489
	    RETURN (__MKEXTERNALADDRESS(newCursor));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3490
	}
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3491
    }
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3492
%}.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3493
    self primitiveFailedOrClosedConnection.
3227
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3494
    ^ nil
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3495
!
c3a036f3df05 rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3226
diff changeset
  3496
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3497
shapeNumberFromSymbol:shape
974
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3498
    "given a shape-symbol, return the corresponding cursor-number,
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3499
     or nil if no such standard cursor exists."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  3500
1563
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3501
    "/this is pure X-knowlegde - but you may easily add more
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3502
    "/ if you add something here, also add to #builtInCursorShapes ...
5a634cfaffad allow device to specify its builtIn cursors
Claus Gittinger <cg@exept.de>
parents: 1558
diff changeset
  3503
6873
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3504
%{  /* NOCONTEXT */
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3505
    if (shape == @symbol(upLeftArrow)) RETURN ( __MKSMALLINT(XC_top_left_arrow) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3506
    if (shape == @symbol(upRightHand)) RETURN (  __MKSMALLINT(XC_hand1) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3507
    if (shape == @symbol(upDownArrow)) RETURN (  __MKSMALLINT(XC_sb_v_double_arrow) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3508
    if (shape == @symbol(leftRightArrow)) RETURN (  __MKSMALLINT(XC_sb_h_double_arrow) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3509
    if (shape == @symbol(upLimitArrow)) RETURN (  __MKSMALLINT(XC_top_side) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3510
    if (shape == @symbol(downLimitArrow)) RETURN (  __MKSMALLINT(XC_bottom_side) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3511
    if (shape == @symbol(leftLimitArrow)) RETURN (  __MKSMALLINT(XC_left_side) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3512
    if (shape == @symbol(rightLimitArrow)) RETURN (  __MKSMALLINT(XC_right_side) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3513
    if (shape == @symbol(text)) RETURN (  __MKSMALLINT(XC_xterm) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3514
    if (shape == @symbol(upRightArrow)) RETURN (  __MKSMALLINT(XC_draft_large) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3515
    if (shape == @symbol(leftHand)) RETURN (  __MKSMALLINT(XC_hand2) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3516
    if (shape == @symbol(questionMark)) RETURN (  __MKSMALLINT(XC_question_arrow) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3517
    if (shape == @symbol(cross)) RETURN (  __MKSMALLINT(XC_X_cursor) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3518
    if (shape == @symbol(wait)) RETURN (  __MKSMALLINT(XC_watch) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3519
    if (shape == @symbol(crossHair)) RETURN (  __MKSMALLINT(XC_tcross) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3520
    if ((shape == @symbol(origin)) || (shape == @symbol(topLeft))) RETURN (  __MKSMALLINT(XC_ul_angle) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3521
    if ((shape == @symbol(corner)) || (shape == @symbol(bottomRight))) RETURN ( __MKSMALLINT(XC_lr_angle) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3522
    if (shape == @symbol(topRight)) RETURN (  __MKSMALLINT(XC_ur_angle) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3523
    if (shape == @symbol(bottomLeft)) RETURN (  __MKSMALLINT(XC_ll_angle) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3524
    if (shape == @symbol(square)) RETURN (  __MKSMALLINT(XC_dotbox) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3525
    if (shape == @symbol(fourWay)) RETURN (  __MKSMALLINT(XC_fleur) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3526
    if (shape == @symbol(crossCursor)) RETURN (  __MKSMALLINT(XC_X_cursor) );
126b64c8a9c9 simplified primitive
Claus Gittinger <cg@exept.de>
parents: 6768
diff changeset
  3527
%}.
7443
e2d05b756727 Use devices registry
Stefan Vogel <sv@exept.de>
parents: 7416
diff changeset
  3528
"/    Logger info:'invalid cursorShape: %1' with:shape.
974
12797746a1f7 WIN32 changes
Claus Gittinger <cg@exept.de>
parents: 972
diff changeset
  3529
    ^  nil
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3530
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  3531
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  3532
!XWorkstation methodsFor:'drag & drop'!
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  3533
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3534
dndDrop:dropObjects inWindowID:destinationId position:destinationPoint rootPosition:rootPoint
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3535
    "drop something in some alien view, using the DND protocol.
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3536
     Returns false, if the drop could not be performed."
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3537
2531
e4d6bdae7bcf use quick-isString / isSymbol
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  3538
    |msgType dropColl dropCollSize anyFile anyDir anyText anyOther
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3539
     dropType dropTypeCode strings sz idx val|
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3540
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  3541
    (msgType := self atomIDOf:#DndProtocol) notNil ifTrue:[
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3542
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3543
	"/ DND can drop files, file, dir, links, dirLink and text
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3544
	"/ check for this.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3545
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3546
	dropObjects isCollection ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3547
	    dropColl := Array with:dropObjects
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3548
	] ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3549
	    dropColl := dropObjects
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3550
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3551
	anyFile := anyDir := anyText := anyOther := false.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3552
	dropColl do:[:aDropObject |
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3553
	    aDropObject isFileObject ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3554
		aDropObject theObject isDirectory ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3555
		    anyDir := true
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3556
		] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3557
		    anyFile := true
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3558
		]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3559
	    ] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3560
		aDropObject isTextObject ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3561
		    anyText := true
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3562
		] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3563
		    anyOther := true
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3564
		]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3565
	    ]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3566
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3567
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3568
	anyOther ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3569
	    "/ DND does not support this ...
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3570
	    Logger info:'DND can only drop files or text'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3571
	    ^ false
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3572
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3573
	anyText ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3574
	    (anyFile or:[anyDir]) ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3575
		"/ DND does not support mixed types
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3576
		Logger info:'DND cannot drop both files and text'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3577
		^ false
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3578
	    ]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3579
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3580
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3581
	dropCollSize := dropColl size.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3582
	anyFile ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3583
	    dropType := #DndFiles.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3584
	    dropCollSize == 1 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3585
		dropType := #DndFile
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3586
	    ]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3587
	] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3588
	    anyDir ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3589
		dropType := #DndFiles.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3590
		dropCollSize == 1 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3591
		    dropType := #DndDir
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3592
		]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3593
	    ] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3594
		anyText ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3595
		    dropCollSize == 1 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3596
			dropType := #DndText
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3597
		    ] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3598
			"/ can only drop a single text object
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3599
			Logger info:'DND can only drop a single text'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3600
			^ false
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3601
		    ]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3602
		] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3603
		    "/ mhmh ...
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3604
		    Logger info:'DND cannot drop this'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3605
		    ^ false
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3606
		]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3607
	    ]
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3608
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3609
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3610
	dropTypeCode := self dndDropTypes indexOf:dropType.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3611
	dropTypeCode == 0 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3612
	    Logger info:'DND cannot drop this'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3613
	    ^ false
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3614
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3615
	dropTypeCode := dropTypeCode - 1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3616
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3617
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3618
	"/ place the selection inTo the DndSelection property
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3619
	"/ of the rootView ...
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3620
	"/ ... need a single string, with 0-terminated parts.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3621
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3622
	strings := OrderedCollection new.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3623
	sz := 0.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3624
	dropColl do:[:anObject |
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3625
	    |s o|
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3626
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3627
	    o := anObject theObject.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3628
	    anObject isFileObject ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3629
		o := o pathName
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3630
	    ].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3631
	    s := o asString.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3632
	    strings add:s.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3633
	    sz := sz + (s size) + 1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3634
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3635
	val := String new:sz.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3636
	idx := 1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3637
	strings do:[:aString |
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3638
	    |sz|
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3639
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3640
	    sz := aString size.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3641
	    val replaceFrom:idx to:(idx + sz - 1) with:aString startingAt:1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3642
	    idx := idx + sz.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3643
	    val at:idx put:(Character value:0).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3644
	    idx := idx + 1
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3645
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3646
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3647
	self
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3648
	    setProperty:(self atomIDOf:#DndSelection)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3649
	    type:(self atomIDOf:#STRING)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3650
	    value:val
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3651
	    for:rootId.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3652
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3653
	^ self
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3654
	    sendClientEvent:msgType
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3655
	    format:32
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3656
	    to:destinationId
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3657
	    propagate:true
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3658
	    eventMask:nil
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3659
	    window:destinationId
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3660
	    data1:dropTypeCode
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3661
	    data2:0
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3662
	    data3:destinationId
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3663
	    data4:nil
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3664
	    data5:nil.
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3665
    ].
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3666
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3667
    ^ false
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3668
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3669
    "Created: 6.4.1997 / 13:39:37 / cg"
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  3670
    "Modified: 6.4.1997 / 14:30:43 / cg"
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3671
!
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3672
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3673
dndDropTypes
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3674
    "return the dropTypes as supported by DND"
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3675
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3676
    ^ #(
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3677
	    DndUnknown      "/ 0
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3678
	    DndRawData      "/ 1
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3679
	    DndFile         "/ 2
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3680
	    DndFiles        "/ 3
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3681
	    DndText         "/ 4
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3682
	    DndDir          "/ 5
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3683
	    DndLink         "/ 6
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3684
	    DndExe          "/ 7
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3685
       )
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3686
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3687
    "Created: 6.4.1997 / 12:57:56 / cg"
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3688
    "Modified: 6.4.1997 / 13:38:52 / cg"
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3689
!
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3690
1583
ca6e6732dc29 drop argument is always a collection
Claus Gittinger <cg@exept.de>
parents: 1579
diff changeset
  3691
drop:aCollectionOfDropObjects inWindowID:destinationId position:destinationPoint rootPosition:rootPoint
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3692
    "drop something in some alien view.
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3693
     Returns false, if the drop could not be performed."
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3694
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3695
    "/
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  3696
    "/ see, if the display supports the DND protocol ...
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3697
    "/
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  3698
    (self atomIDOf:#DndProtocol) notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3699
	^ self
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3700
	    dndDrop:aCollectionOfDropObjects
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3701
	    inWindowID:destinationId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3702
	    position:destinationPoint
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3703
	    rootPosition:rootPoint
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  3704
    ].
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  3705
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3706
    "/ add more drag&drop protocols here.
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3707
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3708
    ^ false
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  3709
1583
ca6e6732dc29 drop argument is always a collection
Claus Gittinger <cg@exept.de>
parents: 1579
diff changeset
  3710
    "Modified: 11.4.1997 / 12:44:50 / cg"
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  3711
! !
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  3712
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3713
!XWorkstation methodsFor:'drawing'!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3714
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3715
clearRectangleX:x y:y width:width height:height in:aDrawableId with:aGCId
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3716
    "clear (fill with background) a rectangle. If any coordinate is not integer, an error is triggered."
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3717
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3718
    <context: #return>
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3719
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3720
    operationsUntilFlush notNil ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3721
	operationsUntilFlush <= 0 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3722
	    self flush.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3723
	] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3724
	    operationsUntilFlush := operationsUntilFlush - 1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3725
	].
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3726
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3727
%{
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3728
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3729
    int w, h;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3730
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3731
    if (ISCONNECTED
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3732
     && __isExternalAddress(aDrawableId)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3733
     && __bothSmallInteger(x, y)
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3734
     && __bothSmallInteger(width, height)) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3735
	w = __intVal(width);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3736
	h = __intVal(height);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3737
	/*
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3738
	 * need this check here: some servers simply dump core with bad args
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3739
	 */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3740
	if ((w >= 0) && (h >= 0)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3741
	    ENTER_XLIB();
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3742
	    XClearArea(myDpy,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3743
			   __DrawableVal(aDrawableId),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3744
			   __intVal(x), __intVal(y), w, h, 0);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3745
	    LEAVE_XLIB();
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3746
	}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  3747
	RETURN ( self );
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3748
    }
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3749
%}.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3750
    "badGC, badDrawable or coordinates not integer"
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3751
    self primitiveFailedOrClosedConnection
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3752
!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
  3753
1030
ca9d23090688 pass srcGCId to bit-blitters (req'd on WINDOWS)
Claus Gittinger <cg@exept.de>
parents: 1025
diff changeset
  3754
copyFromId:sourceId x:srcX y:srcY gc:srcGCId to:destId x:dstX y:dstY gc:dstGCId width:w height:h
118
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3755
    "do a bit-blt; copy bits from the rectangle defined by
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3756
     srcX/srcY and w/h from the sourceId drawable to the rectangle
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3757
     below dstX/dstY in the destId drawable. Trigger an error if any
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3758
     argument is not integer."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3759
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3760
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3761
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  3762
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3763
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3764
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3765
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3766
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3767
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3768
    ].
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3769
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3770
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  3771
    GC gc;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3772
    Drawable source, dest;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3773
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3774
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3775
     && __isExternalAddress(dstGCId)
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  3776
     && __isExternalAddress(sourceId)
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  3777
     && __isExternalAddress(destId)
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3778
     && __bothSmallInteger(w, h)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3779
     && __bothSmallInteger(srcX, srcY)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3780
     && __bothSmallInteger(dstX, dstY)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3781
	int _sX, _sY, _w, _h, _dX, _dY;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3782
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3783
	_sX = __intVal(srcX);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3784
	_sY = __intVal(srcY);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3785
	_w = __intVal(w);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3786
	_h = __intVal(h);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3787
	_dX = __intVal(dstX);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3788
	_dY = __intVal(dstY);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3789
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3790
	gc = __GCVal(dstGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3791
	source = __DrawableVal(sourceId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3792
	dest =   __DrawableVal(destId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3793
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3794
	XCopyArea(myDpy, source, dest, gc, _sX, _sY, _w, _h, _dX, _dY);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3795
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3796
	RETURN ( self );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3797
    }
118
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3798
%}.
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3799
    "badGC, bad sourceDrawableId or destDrawableID
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3800
     or any non integer coordinate"
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3801
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3802
    self primitiveFailedOrClosedConnection
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3803
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3804
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3805
copyFromPixmapId:sourceId x:srcX y:srcY gc:srcGCId to:destId x:dstX y:dstY gc:dstGCId width:w height:h
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3806
    "do a bit-blt from a pix- or bitmap; copy bits from the rectangle defined by
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3807
     srcX/srcY and w/h from the sourceId drawable to the rectangle
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3808
     below dstX/dstY in the destId drawable. Trigger an error if any
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3809
     argument is not integer.
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3810
     This is basically the same as copyFromId:..., but does not generate expose events."
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3811
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3812
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3813
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  3814
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3815
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3816
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3817
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3818
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3819
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3820
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3821
%{
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3822
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3823
    GC gc;
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3824
    Drawable source, dest;
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3825
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3826
    if (ISCONNECTED
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3827
     && __isExternalAddress(dstGCId)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3828
     && __isExternalAddress(sourceId)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3829
     && __isExternalAddress(destId)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3830
     && __bothSmallInteger(w, h)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3831
     && __bothSmallInteger(srcX, srcY)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3832
     && __bothSmallInteger(dstX, dstY)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3833
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3834
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3835
	gc = __GCVal(dstGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3836
	source = __DrawableVal(sourceId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3837
	dest =   __DrawableVal(destId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3838
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3839
	XSetGraphicsExposures(dpy, gc, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3840
	XCopyArea(dpy, source, dest, gc,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3841
				__intVal(srcX), __intVal(srcY),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3842
				__intVal(w), __intVal(h),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3843
				__intVal(dstX), __intVal(dstY));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3844
	XSetGraphicsExposures(dpy, gc, 1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3845
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3846
	RETURN ( self );
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3847
    }
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3848
%}.
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3849
    "badGC, bad sourceDrawableId or destDrawableID
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3850
     or any non integer coordinate"
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3851
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3852
    self primitiveFailedOrClosedConnection
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3853
!
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3854
1030
ca9d23090688 pass srcGCId to bit-blitters (req'd on WINDOWS)
Claus Gittinger <cg@exept.de>
parents: 1025
diff changeset
  3855
copyPlaneFromId:sourceId x:srcX y:srcY gc:srcGCId to:destId x:dstX y:dstY gc:dstGCId width:w height:h
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3856
    "do a bit-blt, but only copy the low-bit plane;
118
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3857
     copy bits from the rectangle defined by
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3858
     srcX/srcY and w/h from the sourceId drawable to the rectangle
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3859
     below dstX/dstY in the destId drawable. Trigger an error if any
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3860
     argument is not integer."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3861
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3862
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3863
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  3864
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3865
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3866
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3867
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3868
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3869
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3870
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3871
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3872
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  3873
    GC gc;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3874
    Drawable source, dest;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3875
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3876
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3877
     && __isExternalAddress(dstGCId)
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  3878
     && __isExternalAddress(sourceId)
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  3879
     && __isExternalAddress(destId)
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3880
     && __bothSmallInteger(w, h)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3881
     && __bothSmallInteger(srcX, srcY)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3882
     && __bothSmallInteger(dstX, dstY)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3883
	gc = __GCVal(dstGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3884
	source = __DrawableVal(sourceId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3885
	dest =   __DrawableVal(destId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3886
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3887
	XCopyPlane(myDpy, source, dest, gc,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3888
				 __intVal(srcX), __intVal(srcY),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3889
				 __intVal(w), __intVal(h),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3890
				 __intVal(dstX), __intVal(dstY), 1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3891
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3892
	RETURN ( self );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3893
    }
118
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3894
%}.
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3895
    "badGC, bad sourceDrawableId or destDrawableID
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3896
     or any non integer coordinate"
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  3897
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3898
    self primitiveFailedOrClosedConnection
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3899
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  3900
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3901
copyPlaneFromPixmapId:sourceId x:srcX y:srcY gc:srcGCId to:destId x:dstX y:dstY gc:dstGCId width:w height:h
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3902
    "do a bit-blt from a pix- or bitmap, but only copy the low-bit plane;
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3903
     copy bits from the rectangle defined by
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3904
     srcX/srcY and w/h from the sourceId drawable to the rectangle
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3905
     below dstX/dstY in the destId drawable. Trigger an error if any
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3906
     argument is not integer.
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3907
     This is the same as copyPlaneFromId:..., but does not generate graphics exposes"
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3908
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3909
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3910
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  3911
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3912
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3913
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3914
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3915
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3916
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3917
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3918
%{
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3919
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3920
    GC gc;
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3921
    Drawable source, dest;
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3922
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3923
    if (ISCONNECTED
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3924
     && __isExternalAddress(dstGCId)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3925
     && __isExternalAddress(sourceId)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3926
     && __isExternalAddress(destId)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3927
     && __bothSmallInteger(w, h)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3928
     && __bothSmallInteger(srcX, srcY)
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3929
     && __bothSmallInteger(dstX, dstY)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3930
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3931
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3932
	gc = __GCVal(dstGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3933
	source = __DrawableVal(sourceId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3934
	dest =   __DrawableVal(destId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3935
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3936
	XSetGraphicsExposures(dpy, gc, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3937
	XCopyPlane(dpy, source, dest, gc,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3938
				 __intVal(srcX), __intVal(srcY),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3939
				 __intVal(w), __intVal(h),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3940
				 __intVal(dstX), __intVal(dstY), 1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3941
	XSetGraphicsExposures(dpy, gc, 1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3942
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3943
	RETURN ( self );
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3944
    }
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3945
%}.
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3946
    "badGC, bad sourceDrawableId or destDrawableID
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3947
     or any non integer coordinate"
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3948
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3949
    self primitiveFailedOrClosedConnection
1246
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3950
!
f8835fc41467 added copy*FromPixmapId:* - which do not generate graphics exposures
Claus Gittinger <cg@exept.de>
parents: 1227
diff changeset
  3951
652
30a701619098 fill/drawArc..w:h:.. renamed to ...width:height:...
Claus Gittinger <cg@exept.de>
parents: 613
diff changeset
  3952
displayArcX:x y:y width:width height:height from:startAngle angle:angle in:aDrawableId with:aGCId
90
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
  3953
    "draw an arc. If any of x,y, w or h is not an integer, an error is triggered.
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
  3954
     The angles may be floats or integer - they are given in degrees."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3955
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  3956
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3957
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  3958
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3959
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3960
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3961
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3962
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3963
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  3964
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  3965
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3966
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  3967
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  3968
    Window win;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  3969
    int w, h, angle1, angle2;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3970
    double f;
48194c26a46c Initial revision
claus
parents:
diff changeset
  3971
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3972
    if (__isSmallInteger(startAngle))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3973
	angle1 = __intVal(startAngle) * 64;
36
b297468551c6 *** empty log message ***
claus
parents: 31
diff changeset
  3974
    else if (__isFloat(startAngle)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3975
	f = __floatVal(startAngle);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3976
	angle1 = f * 64;
2268
1a774fc02c83 fixed non-float (i.e. fraction) args to fillArc/ displayArc
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3977
    } else if (__isShortFloat(startAngle)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3978
	f = __shortFloatVal(startAngle);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3979
	angle1 = f * 64;
2267
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  3980
    } else goto bad;
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  3981
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3982
    if (__isSmallInteger(angle))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3983
	angle2 = __intVal(angle) * 64;
36
b297468551c6 *** empty log message ***
claus
parents: 31
diff changeset
  3984
    else if (__isFloat(angle)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3985
	f = __floatVal(angle);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3986
	angle2 = f * 64;
2268
1a774fc02c83 fixed non-float (i.e. fraction) args to fillArc/ displayArc
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  3987
    } else if (__isShortFloat(angle)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3988
	f = __shortFloatVal(angle);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3989
	angle2 = f * 64;
2267
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  3990
    } else goto bad;
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  3991
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3992
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  3993
     && __isExternalAddress(aGCId)
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  3994
     && __isExternalAddress(aDrawableId)
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3995
     && __bothSmallInteger(x, y)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  3996
     && __bothSmallInteger(width, height)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3997
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3998
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  3999
	w = __intVal(width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4000
	h = __intVal(height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4001
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4002
	 * need this check here: some servers simply dump core with bad args
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4003
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4004
	if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4005
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4006
	    XDrawArc(myDpy, win, gc, __intVal(x), __intVal(y),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4007
				   w, h, angle1, angle2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4008
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4009
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4010
	RETURN ( self );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4011
    }
2267
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4012
    bad: ;
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4013
%}.
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4014
    "badGC, badDrawable or coordinates not integer
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4015
     or angle(s) not integer or float."
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4016
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4017
    self primitiveFailedOrClosedConnection
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4018
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  4019
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4020
displayLineFromX:x0 y:y0 toX:x1 y:y1 in:aDrawableId with:aGCId
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4021
    "draw a line. If the coordinates are not integers, an error is triggered."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4022
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4023
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4024
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4025
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4026
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4027
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4028
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4029
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4030
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4031
    ].
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4032
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4033
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4034
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4035
    Window win;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4036
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4037
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4038
     && __isExternalAddress(aGCId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4039
     && __isExternalAddress(aDrawableId)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4040
     && __bothSmallInteger(x0, y0)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4041
     && __bothSmallInteger(x1, y1)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4042
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4043
	int ix0, iy0, ix1, iy1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4044
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4045
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4046
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4047
	ix0 = __intVal(x0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4048
	iy0 = __intVal(y0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4049
	ix1 = __intVal(x1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4050
	iy1 = __intVal(y1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4051
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4052
	/* attention: coordinates in X are shorts and wrap; clamp here. */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4053
	if (ix0 > 0x7FFF) ix0 = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4054
	else if (ix0 < -0x8000) ix0 = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4055
	if (iy0 > 0x7FFF) iy0 = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4056
	else if (iy0 < -0x8000) iy0 = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4057
	if (ix1 > 0x7FFF) ix1 = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4058
	else if (ix1 < -0x8000) ix1 = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4059
	if (iy1 > 0x7FFF) iy1 = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4060
	else if (iy1 < -0x8000) iy1 = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4061
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4062
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4063
	if ((ix0 == ix1) && (iy0 == iy1)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4064
	    /* little bit shorter X-lib message (better with slow connections...) */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4065
	    XDrawPoint(dpy, win, gc, ix0, iy0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4066
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4067
	    XDrawLine(dpy, win, gc, ix0, iy0, ix1, iy1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4068
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4069
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4070
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4071
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4072
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4073
    "badGC, badDrawable or coordinates not integer"
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4074
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4075
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4076
1978
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4077
displayLinesFromX:startX step:stepX yValues:yValues scaleY:scaleY transY:transY in:aDrawableId with:aGCId
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4078
    "draw a polygon starting at x; the y values derives from the collection yValues.
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4079
     The associated x is a multiple of step. Each y value will be scaled and translated
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4080
    "
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4081
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4082
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4083
1978
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4084
    |noY|
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4085
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4086
    (noY := yValues size) < 2 ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4087
	^ self
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4088
    ].
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4089
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4090
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4091
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4092
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4093
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4094
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4095
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4096
    ].
1978
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4097
%{
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4098
    OBJ      yA, t;
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4099
    int      i, num;
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4100
    float    y, x, sY, tY, step;
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4101
    GC       gc;
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4102
    XPoint * points;
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4103
    XPoint   qPoints[200];
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4104
    int      mustFree = 0;
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4105
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4106
    Window win;
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4107
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4108
    if (ISCONNECTED
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4109
     && __isExternalAddress(aGCId)
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4110
     && __isExternalAddress(aDrawableId) ) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4111
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4112
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4113
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4114
	if( __isSmallInteger(scaleY) )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4115
	    sY = (float) __intVal( scaleY );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4116
	else if (__isFloat(scaleY))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4117
	    sY = __floatVal( scaleY );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4118
	else if (__isShortFloat(scaleY))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4119
	    sY = __shortFloatVal( scaleY );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4120
	else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4121
	    t = __SSEND0(scaleY, @symbol(asFloat), 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4122
	    if (! __isFloat(t)) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4123
	    sY = __floatVal( t );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4124
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4125
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4126
	if( __isSmallInteger(transY) )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4127
	    tY = (float) __intVal( transY );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4128
	else if (__isFloat(transY))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4129
	    tY = __floatVal( transY );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4130
	else if (__isShortFloat(transY))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4131
	    tY = __shortFloatVal( transY );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4132
	else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4133
	    t = __SSEND0(transY, @symbol(asFloat), 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4134
	    if (! __isFloat(t)) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4135
	    tY = __floatVal( t );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4136
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4137
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4138
	if( __isSmallInteger(startX) )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4139
	    x = (float) __intVal( startX );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4140
	else if (__isFloat(startX))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4141
	    x = __floatVal( startX );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4142
	else if (__isShortFloat(startX))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4143
	    x = __shortFloatVal( startX );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4144
	else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4145
	    t = __SSEND0(startX, @symbol(asFloat), 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4146
	    if (! __isFloat(t)) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4147
	    x = __floatVal( t );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4148
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4149
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4150
	if( __isSmallInteger(stepX) )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4151
	    step = (float) __intVal( stepX );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4152
	else if (__isFloat(stepX))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4153
	    step = __floatVal( stepX );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4154
	else if (__isShortFloat(stepX))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4155
	    step = __shortFloatVal( stepX );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4156
	else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4157
	    t = __SSEND0(stepX, @symbol(asFloat), 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4158
	    if (! __isFloat(t)) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4159
	    step = __floatVal( t );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4160
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4161
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4162
	num = __intVal( noY );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4163
	if( num > 200 ) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4164
	    if( ! (points = (XPoint *) malloc ( sizeof(XPoint) * num )) )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4165
		goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4166
	    mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4167
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4168
	    points = qPoints;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4169
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4170
	for( i = 0; i < num; ++i ) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4171
	    int px, py;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4172
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4173
	    yA  = __AT_(yValues, __MKSMALLINT(i+1) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4174
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4175
	    if( __isFloat(yA) )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4176
		y = __floatVal( yA );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4177
	    else if( __isSmallInteger(yA) )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4178
		y = (float) __intVal( yA );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4179
	    else if( __isShortFloat( yA) )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4180
		y = __shortFloatVal( yA );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4181
	    else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4182
		t = __SSEND0(yA, @symbol(asFloat), 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4183
		if (! __isFloat(t)) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4184
		y = __floatVal( t );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4185
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4186
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4187
	    px = (int) (x + 0.5);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4188
	    py = (int) ((y * sY) + tY + 0.5);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4189
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4190
	    /* attention: coordinates in X are shorts and wrap; clamp here. */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4191
	    if (px > 0x7FFF) px = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4192
	    else if (px < -0x8000) px = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4193
	    if (py > 0x7FFF) py = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4194
	    else if (py < -0x8000) py = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4195
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4196
	    points[i].x = px;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4197
	    points[i].y = py;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4198
	    x = x + step;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4199
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4200
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4201
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4202
	XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4203
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4204
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4205
	if( mustFree ) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4206
	    free( points );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4207
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4208
	RETURN ( self );
1978
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4209
    }
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4210
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4211
fail:
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4212
    if( mustFree )
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4213
	free( points );
3229
e83490cc4472 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
  4214
%}.
e83490cc4472 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3228
diff changeset
  4215
    ^ super displayLinesFromX:startX step:stepX yValues:yValues scaleY:scaleY transY:transY in:aDrawableId with:aGCId
1978
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4216
2146
1c13fdc62a9f displayLinesFromX... - also handle shortFloats inline
Claus Gittinger <cg@exept.de>
parents: 2140
diff changeset
  4217
    "Modified: / 13.6.1998 / 13:51:39 / cg"
1978
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4218
!
3587bf92b94a add new method for optimization:
ca
parents: 1974
diff changeset
  4219
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4220
displayPointX:x y:y in:aDrawableId with:aGCId
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4221
    "draw a point. If x/y are not integers, an error is triggered."
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4222
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4223
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4224
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4225
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4226
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4227
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4228
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4229
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4230
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4231
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4232
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4233
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4234
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4235
    Window win;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4236
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4237
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4238
     && __isExternalAddress(aGCId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4239
     && __isExternalAddress(aDrawableId)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4240
     && __bothSmallInteger(x, y)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4241
	int px, py;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4242
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4243
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4244
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4245
	px = __intVal(x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4246
	py = __intVal(y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4247
	if (px > 0x7FFF) px = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4248
	else if (px < -0x8000) px = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4249
	if (py > 0x7FFF) py = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4250
	else if (py < -0x8000) py = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4251
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4252
	XDrawPoint(myDpy, win, gc, px, py);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4253
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4254
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4255
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4256
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4257
    "badGC, badDrawable or x/y not integer"
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4258
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4259
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4260
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4261
displayPolygon:aPolygon in:aDrawableId with:aGCId
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4262
    "draw a polygon, the argument aPolygon is a Collection of individual points, which
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4263
     define the polygon.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4264
     If any coordinate is not integer, an error is triggered."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4265
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4266
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4267
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4268
    |numberOfPoints newPoints|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4269
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4270
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4271
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4272
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4273
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4274
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4275
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4276
    ].
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4277
    numberOfPoints := aPolygon size.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4278
%{
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4279
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4280
    Window win;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4281
    OBJ point, x, y;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4282
    int i, num;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4283
    XPoint *points;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4284
    XPoint qPoints[100];
377
191915daff5e *** empty log message ***
ah
parents: 374
diff changeset
  4285
    int mustFree = 0;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4286
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4287
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4288
     && __isExternalAddress(aGCId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4289
     && __isExternalAddress(aDrawableId)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4290
     && __isSmallInteger(numberOfPoints)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4291
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4292
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4293
	num = __intVal(numberOfPoints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4294
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4295
	 * avoid a (slow) malloc, if the number of points is small
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4296
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4297
	if (num > 100) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4298
	    points = (XPoint *)malloc(sizeof(XPoint) * num);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4299
	    if (! points) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4300
	    mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4301
	} else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4302
	    points = qPoints;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4303
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4304
	for (i=0; i<num; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4305
	    int px, py;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4306
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4307
	    point = __AT_(aPolygon, __MKSMALLINT(i+1));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4308
	    if (! __isPoint(point)) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4309
	    x = _point_X(point);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4310
	    y = _point_Y(point);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4311
	    if (! __bothSmallInteger(x, y))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4312
		goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4313
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4314
	    px = __intVal(x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4315
	    py = __intVal(y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4316
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4317
	    /* attention: coordinates in X are shorts and wrap; clamp here. */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4318
	    if (px > 0x7FFF) px = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4319
	    else if (px < -0x8000) px = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4320
	    if (py > 0x7FFF) py = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4321
	    else if (py < -0x8000) py = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4322
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4323
	    points[i].x = px;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4324
	    points[i].y = py;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4325
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4326
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4327
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4328
	XDrawLines(myDpy, win, gc, points, num, CoordModeOrigin);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4329
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4330
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4331
	if (mustFree)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4332
	    free(points);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4333
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4334
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4335
fail: ;
377
191915daff5e *** empty log message ***
ah
parents: 374
diff changeset
  4336
    if (mustFree)
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4337
	free(points);
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4338
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4339
    "badGC, badDrawable or coordinates not integer"
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4340
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4341
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4342
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4343
displayRectangleX:x y:y width:width height:height in:aDrawableId with:aGCId
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4344
    "draw a rectangle. If the coordinates are not integers, an error is triggered."
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4345
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4346
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4347
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4348
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4349
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4350
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4351
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4352
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4353
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4354
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4355
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4356
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4357
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4358
    Window win;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4359
    int w, h;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4360
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4361
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4362
     && __isExternalAddress(aGCId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4363
     && __isExternalAddress(aDrawableId)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4364
     && __bothSmallInteger(x, y)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4365
     && __bothSmallInteger(width, height)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4366
	int px, py;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4367
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4368
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4369
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4370
	w = __intVal(width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4371
	h = __intVal(height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4372
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4373
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4374
	 * need this check here: some servers simply dump core with bad args
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4375
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4376
	if ((w >= 0) && (h >= 0)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4377
	    px = __intVal(x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4378
	    py = __intVal(y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4379
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4380
	    /* attention: coordinates in X are shorts and wrap; clamp here. */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4381
	    if (px > 0x7FFF) px = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4382
	    else if (px < -0x8000) px = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4383
	    if (py > 0x7FFF) py = 0x7FFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4384
	    else if (py < -0x8000) py = -0x8000;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4385
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4386
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4387
	    XDrawRectangle(myDpy, win, gc, px, py, w, h);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4388
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4389
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4390
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4391
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4392
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4393
    "badGC, badDrawable or coordinates not integer"
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4394
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4395
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4396
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4397
displayString:aString from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId opaque:opaque
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4398
    "draw a sub-string - if opaque is false, draw foreground only; otherwise, draw both
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4399
     foreground and background characters.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4400
     If the coordinates are not integers, an error is triggered."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4401
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4402
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4403
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4404
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4405
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4406
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4407
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4408
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4409
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4410
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4411
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4412
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4413
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4414
    Window win;
1831
8a03aa87a0ee casts to avoid warnings
Claus Gittinger <cg@exept.de>
parents: 1813
diff changeset
  4415
    char *cp;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4416
    int  i1, i2, l, n;
486
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  4417
#   define NLOCALBUFFER 200
461
4a4b1384ab76 X wants 16bit strings in MSBfirst
Claus Gittinger <cg@exept.de>
parents: 459
diff changeset
  4418
    XChar2b xlatebuffer[NLOCALBUFFER];
481
62f1be5db8aa also support string-subclasses in stringDraw methods
Claus Gittinger <cg@exept.de>
parents: 480
diff changeset
  4419
    int nInstBytes;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4420
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4421
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4422
     && __isExternalAddress(aGCId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4423
     && __isExternalAddress(aDrawableId)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4424
     && __isNonNilObject(aString)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4425
     && __bothSmallInteger(index1, index2)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4426
     && __bothSmallInteger(x, y)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4427
	int lMax = __intVal(@global(MaxStringLength));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4428
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4429
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4430
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4431
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4432
	i1 = __intVal(index1) - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4433
	if (i1 >= 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4434
	    OBJ cls;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4435
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4436
	    i2 = __intVal(index2) - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4437
	    if (i2 < i1) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4438
		RETURN (self);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4439
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4440
	    cp = (char *) __stringVal(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4441
	    l = i2 - i1 + 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4442
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4443
	    if (__isStringLike(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4444
		n = __stringSize(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4445
		if (i2 < n) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4446
		    cp += i1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4447
		    if (l > lMax) l = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4448
		    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4449
		    if (opaque == true)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4450
			XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4451
		    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4452
			XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4453
		    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4454
		    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4455
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4456
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4457
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4458
	    cls = __qClass(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4459
	    nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4460
	    cp += nInstBytes;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4461
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4462
	    if (__isBytes(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4463
		n = __byteArraySize(aString) - nInstBytes - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4464
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4465
		if (i2 < n) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4466
		    cp += i1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4467
		    if (l > lMax) l = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4468
		    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4469
		    if (opaque == true)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4470
			XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4471
		    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4472
			XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4473
		    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4474
		    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4475
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4476
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4477
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4478
	    /* TWOBYTESTRINGS */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4479
	    if (__isWords(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4480
		n = (__byteArraySize(aString) - nInstBytes) / 2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4481
		if (i2 < n) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4482
		    union {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4483
			char b[2];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4484
			unsigned short s;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4485
		    } u;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4486
		    int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4487
		    XChar2b *cp2 = (XChar2b *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4488
		    int mustFree = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4489
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4490
		    cp += (i1 * 2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4491
		    if (l > lMax) l = lMax;
3990
5d9342503bf6 font stuff
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  4492
4029
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4493
#if defined(MSBFIRST) || defined(__MSBFIRST)
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4494
		    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4495
		     * chars already in correct order
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4496
		     */
4029
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4497
#else
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4498
# if ! (defined(LSBFIRST) || defined(__LSBFIRST))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4499
		    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4500
		     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4501
		     * X expects them MSB first
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4502
		     * convert as required
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4503
		     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4504
		    u.s = 0x1234;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4505
		    if (u.b[0] != 0x12)
4029
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4506
# endif
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4507
		    {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4508
			if (l <= NLOCALBUFFER) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4509
			    cp2 = xlatebuffer;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4510
			} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4511
			    cp2 = (XChar2b *)(malloc(l * 2));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4512
			    mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4513
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4514
			for (i=0; i<l; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4515
			    cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4516
			    cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4517
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4518
			cp = (char *) cp2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4519
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4520
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4521
		    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4522
		    if (opaque == true)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4523
			XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4524
		    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4525
			XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4526
		    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4527
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4528
		    if (mustFree) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4529
			free(cp2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4530
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4531
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4532
		    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4533
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4534
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4535
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4536
	    /* FOURBYTESTRINGS */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4537
	    if (__isLongs(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4538
		n = (__byteArraySize(aString) - nInstBytes) / 4;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4539
		if (i2 < n) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4540
		    union {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4541
			char b[2];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4542
			unsigned short s;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4543
		    } u;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4544
		    int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4545
		    XChar2b *cp2 = (XChar2b *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4546
		    int32 *ip;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4547
		    int mustFree = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4548
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4549
		    cp += (i1 * 4);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4550
		    if (l > lMax) l = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4551
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4552
		    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4553
		     * all codePoints <= 16rFFFF are draw; above 16bit range are drawn as 16rFFFF.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4554
		     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4555
		    if (l <= NLOCALBUFFER) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4556
			cp2 = xlatebuffer;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4557
		    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4558
			cp2 = (XChar2b *)(malloc(l * 2));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4559
			mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4560
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4561
		    for (i=0; i<l; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4562
			int32 codePoint = ((int32 *)cp)[i];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4563
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4564
			if (codePoint > 0xFFFF) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4565
			    codePoint = 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4566
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4567
			cp2[i].byte1 = (codePoint >> 8) & 0xFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4568
			cp2[i].byte2 = codePoint & 0xFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4569
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4570
		    cp = (char *) cp2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4571
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4572
		    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4573
		    if (opaque == true)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4574
			XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4575
		    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4576
			XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4577
		    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4578
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4579
		    if (mustFree) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4580
			free(cp2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4581
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4582
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4583
		    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4584
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4585
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4586
	}
486
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  4587
    }
481
62f1be5db8aa also support string-subclasses in stringDraw methods
Claus Gittinger <cg@exept.de>
parents: 480
diff changeset
  4588
#undef NLOCALBUFFER
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4589
%}.
4029
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4590
    (aString isString and:[aString bitsPerCharacter > 16]) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4591
	self displayString:(TwoByteString new:aString size withAll:16rFFFF asCharacter)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4592
	     from:index1 to:index2 x:x y:y in:aDrawableId with:aGCId opaque:opaque.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4593
	^ self.
4029
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4594
    ].
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4595
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4596
    "x/y not integer, badGC or drawable, or not a string"
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4597
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4598
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4599
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4600
displayString:aString x:x y:y in:aDrawableId with:aGCId opaque:opaque
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4601
    "draw a string - if opaque is false, draw foreground only; otherwise, draw both
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4602
     foreground and background characters.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4603
     If the coordinates are not integers, an error is triggered."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4604
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4605
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4606
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4607
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4608
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4609
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4610
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4611
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4612
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4613
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4614
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4615
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4616
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4617
    Window win;
1831
8a03aa87a0ee casts to avoid warnings
Claus Gittinger <cg@exept.de>
parents: 1813
diff changeset
  4618
    char *cp;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4619
    int n;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4620
    OBJ cls;
486
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  4621
#   define NLOCALBUFFER 200
461
4a4b1384ab76 X wants 16bit strings in MSBfirst
Claus Gittinger <cg@exept.de>
parents: 459
diff changeset
  4622
    XChar2b xlatebuffer[NLOCALBUFFER];
481
62f1be5db8aa also support string-subclasses in stringDraw methods
Claus Gittinger <cg@exept.de>
parents: 480
diff changeset
  4623
    int nInstBytes;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4624
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4625
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4626
     && __isExternalAddress(aGCId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4627
     && __isExternalAddress(aDrawableId)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4628
     && __isNonNilObject(aString)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4629
     && __bothSmallInteger(x, y)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4630
	int lMax = __intVal(@global(MaxStringLength));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4631
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4632
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4633
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4634
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4635
	cp = (char *) __stringVal(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4636
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4637
	if (__isStringLike(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4638
	    n = __stringSize(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4639
	    if (n > lMax) n = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4640
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4641
	    if (opaque == true)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4642
		XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4643
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4644
		XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4645
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4646
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4647
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4648
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4649
	cls = __qClass(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4650
	nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4651
	cp += nInstBytes;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4652
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4653
	if (__isBytes(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4654
	    n = __byteArraySize(aString) - nInstBytes - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4655
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4656
	    if (n > lMax) n = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4657
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4658
	    if (opaque == true)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4659
		XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4660
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4661
		XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, n);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4662
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4663
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4664
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4665
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4666
	/* TWOBYTESTRINGS */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4667
	if (__isWords(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4668
	    union {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4669
		char b[2];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4670
		unsigned short s;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4671
	    } u;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4672
	    int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4673
	    XChar2b *cp2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4674
	    int mustFree = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4675
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4676
	    n = (__byteArraySize(aString) - nInstBytes) / 2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4677
	    if (n > lMax) n = lMax;
3990
5d9342503bf6 font stuff
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  4678
4029
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4679
#if defined(MSBFIRST) || defined(__MSBFIRST)
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4680
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4681
	     * chars already in correct order
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4682
	     */
4029
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4683
#else
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4684
# if ! (defined(LSBFIRST) || defined(__LSBFIRST))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4685
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4686
	     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4687
	     * X expects them MSB first
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4688
	     * convert as required
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4689
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4690
	    u.s = 0x1234;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4691
	    if (u.b[0] != 0x12)
4029
959f7a19bc1a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4024
diff changeset
  4692
# endif
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4693
	    {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4694
		if (n <= NLOCALBUFFER) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4695
		    cp2 = xlatebuffer;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4696
		} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4697
		    cp2 = (XChar2b *)(malloc(n * 2));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4698
		    mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4699
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4700
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4701
		for (i=0; i<n; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4702
		    cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4703
		    cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4704
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4705
		cp = (char *) cp2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4706
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4707
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4708
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4709
	    if (opaque == true)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4710
		XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4711
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4712
		XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, n);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4713
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4714
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4715
	    if (mustFree) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4716
		free(cp2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4717
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4718
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4719
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4720
	}
486
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  4721
    }
461
4a4b1384ab76 X wants 16bit strings in MSBfirst
Claus Gittinger <cg@exept.de>
parents: 459
diff changeset
  4722
#undef NLOCALBUFFER
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4723
%}.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4724
    ^ super displayString:aString x:x y:y in:aDrawableId with:aGCId opaque:opaque
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4725
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4726
2537
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4727
drawBits:givenBits bitsPerPixel:bitsPerPixel depth:imageDepth padding:givenPadding
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4728
	width:imageWidth height:imageHeight
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4729
	x:srcx y:srcy
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4730
	into:aDrawableId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4731
	x:dstx y:dsty
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4732
	width:w height:h
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4733
	with:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4734
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4735
    "draw a bitImage which has depth id, width iw and height ih into
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4736
     the drawable. draw a region of w/h pixels from srcx/srcy to dstx/dsty.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4737
     Individual source pixels have bitsPerPixel bits, allowing to draw
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4738
     depth and pixel-units to be different.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4739
     It has to be checked elsewhere, that the server can do it with the given
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4740
     depth - otherwise, primitive failure will be signalled.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4741
     Also it is assumed, that the colormap is setup correctly and the
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4742
     colors are allocated - otherwise the colors may be wrong."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4743
2537
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4744
    |fmt padding bits wantedPadding|
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4745
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4746
    padding := givenPadding.
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4747
    bits := givenBits.
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4748
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4749
    "/ the XF86_VGA16 server seems to report an error when we pass it an
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4750
    "/ 8-bit padded image. (it wants it 32bit padded).
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4751
    "/ as a workaround, repad it here (although, the server and/or Xlib should
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4752
    "/ care for that.
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4753
b8bb3e221b8b repadding support (req'd for 4-bit VGA server) sigh
Claus Gittinger <cg@exept.de>
parents: 2531
diff changeset
  4754
    ((imageDepth == 4) and:[depth == 4]) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4755
	fmt := self supportedImageFormatForDepth:4.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4756
	fmt isNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4757
	    self primitiveFailed. "/ cannot represent this image
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4758
	    ^ nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4759
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4760
	wantedPadding := fmt at:#padding.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4761
	wantedPadding > givenPadding ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4762
	    bits := self
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4763
			    repadBits:givenBits
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4764
			    width:imageWidth
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4765
			    height:imageHeight
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4766
			    depth:imageDepth
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4767
			    from:givenPadding
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4768
			    to:wantedPadding.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4769
	    padding := wantedPadding.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4770
	]
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4771
    ].
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4772
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4773
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4774
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4775
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4776
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4777
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4778
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4779
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4780
    ].
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4781
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4782
     sorry; I had to separate it into 2 methods, since XPutImage needs
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4783
     an unlimited stack, and thus cannot send primitiveFailed
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4784
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4785
    (self
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4786
	primDrawBits:bits
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4787
	bitsPerPixel:bitsPerPixel
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4788
	depth:imageDepth
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4789
	msb:true
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4790
	padding:padding
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4791
	width:imageWidth height:imageHeight
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4792
	x:srcx y:srcy
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4793
	into:aDrawableId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4794
	x:dstx y:dsty
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4795
	width:w height:h
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4796
	with:aGCId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4797
    ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4798
	"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4799
	 also happens, if a segmentation violation occurs in the
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4800
	 XPutImage ...
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4801
	"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4802
	self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4803
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4804
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4805
652
30a701619098 fill/drawArc..w:h:.. renamed to ...width:height:...
Claus Gittinger <cg@exept.de>
parents: 613
diff changeset
  4806
fillArcX:x y:y width:width height:height from:startAngle angle:angle
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4807
	       in:aDrawableId with:aGCId
90
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
  4808
    "fill an arc. If any coordinate is not integer, an error is triggered.
b1f1d7fc96eb *** empty log message ***
claus
parents: 86
diff changeset
  4809
     The angles may be floats or integer - they are given in degrees."
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4810
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4811
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4812
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4813
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4814
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4815
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4816
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4817
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4818
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4819
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4820
%{
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4821
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4822
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4823
    Window win;
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4824
    int w, h, angle1, angle2;
48194c26a46c Initial revision
claus
parents:
diff changeset
  4825
    double f;
48194c26a46c Initial revision
claus
parents:
diff changeset
  4826
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  4827
    if (__isSmallInteger(startAngle))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4828
	angle1 = __intVal(startAngle) * 64;
36
b297468551c6 *** empty log message ***
claus
parents: 31
diff changeset
  4829
    else if (__isFloat(startAngle)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4830
	f = __floatVal(startAngle);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4831
	angle1 = f * 64;
2268
1a774fc02c83 fixed non-float (i.e. fraction) args to fillArc/ displayArc
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  4832
    } else if (__isShortFloat(startAngle)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4833
	f = __shortFloatVal(startAngle);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4834
	angle1 = f * 64;
2267
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4835
    } else goto bad;
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4836
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  4837
    if (__isSmallInteger(angle))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4838
	angle2 = __intVal(angle) * 64;
36
b297468551c6 *** empty log message ***
claus
parents: 31
diff changeset
  4839
    else if (__isFloat(angle)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4840
	f = __floatVal(angle);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4841
	angle2 = f * 64;
2268
1a774fc02c83 fixed non-float (i.e. fraction) args to fillArc/ displayArc
Claus Gittinger <cg@exept.de>
parents: 2267
diff changeset
  4842
    } else if (__isShortFloat(angle)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4843
	f = __shortFloatVal(angle);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4844
	angle2 = f * 64;
2267
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4845
    } else goto bad;
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4846
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4847
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4848
     && __isExternalAddress(aGCId)
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  4849
     && __isExternalAddress(aDrawableId)
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  4850
     && __bothSmallInteger(x, y)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  4851
     && __bothSmallInteger(width, height)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4852
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4853
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4854
	w = __intVal(width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4855
	h = __intVal(height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4856
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4857
	 * need this check here: some servers simply dump core with bad args
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4858
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4859
	if ((w >= 0) && (h >= 0) && (angle1 >= 0) && (angle2 >= 0)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4860
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4861
	    XFillArc(myDpy, win, gc, __intVal(x), __intVal(y),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4862
				   w, h, angle1, angle2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4863
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4864
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4865
	RETURN ( self );
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4866
    }
2267
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4867
    bad: ;
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4868
%}.
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4869
    "badGC, badDrawable or coordinates not integer
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4870
     or non float angle(s)"
f6fbc3e71521 care for float or int angles in fillArc / displayArc
Claus Gittinger <cg@exept.de>
parents: 2231
diff changeset
  4871
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4872
    self primitiveFailedOrClosedConnection
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4873
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  4874
48194c26a46c Initial revision
claus
parents:
diff changeset
  4875
fillPolygon:aPolygon in:aDrawableId with:aGCId
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4876
    "fill a polygon given by its points.
118
25e775072a89 *** empty log message ***
claus
parents: 115
diff changeset
  4877
     If any coordinate is not integer, an error is triggered."
73
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4878
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4879
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4880
73
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4881
    |numberOfPoints|
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4882
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4883
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4884
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4885
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4886
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4887
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4888
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4889
    ].
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4890
    numberOfPoints := aPolygon size.
48194c26a46c Initial revision
claus
parents:
diff changeset
  4891
%{
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4892
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  4893
    Window win;
73
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4894
    OBJ point, x, y;
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4895
    int i, num;
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4896
    XPoint *points;
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4897
    XPoint qPoints[100];
377
191915daff5e *** empty log message ***
ah
parents: 374
diff changeset
  4898
    int mustFree = 0;
73
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4899
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4900
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4901
     && __isExternalAddress(aGCId)
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  4902
     && __isExternalAddress(aDrawableId)
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  4903
     && __isSmallInteger(numberOfPoints)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4904
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4905
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4906
	num = __intVal(numberOfPoints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4907
	if (num < 3) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4908
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4909
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4910
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4911
	 * avoid (slow) malloc, if not many points
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4912
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4913
	if (num > 100) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4914
	    points = (XPoint *) malloc(sizeof(XPoint) * num);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4915
	    if (! points) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4916
	    mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4917
	} else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4918
	    points = qPoints;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4919
	for (i=0; i<num; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4920
	    point = __AT_(aPolygon, __MKSMALLINT(i+1));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4921
	    if (! __isPoint(point)) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4922
	    x = _point_X(point);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4923
	    y = _point_Y(point);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4924
	    if (! __bothSmallInteger(x, y))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4925
		goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4926
	    points[i].x = __intVal(x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4927
	    points[i].y = __intVal(y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4928
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4929
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4930
	XFillPolygon(myDpy, win, gc, points, num, Complex, CoordModeOrigin);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4931
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4932
	if (mustFree)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4933
	    free(points);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4934
	RETURN ( self );
377
191915daff5e *** empty log message ***
ah
parents: 374
diff changeset
  4935
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4936
fail: ;
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4937
	if (mustFree)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4938
	    free(points);
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4939
    }
73
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4940
%}.
dd85c19ec8d9 final before switching to new primitive stuff
claus
parents: 72
diff changeset
  4941
    "badGC, badDrawable or coordinates not integer"
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4942
    self primitiveFailedOrClosedConnection
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  4943
!
48194c26a46c Initial revision
claus
parents:
diff changeset
  4944
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4945
fillRectangleX:x y:y width:width height:height in:aDrawableId with:aGCId
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4946
    "fill a rectangle. If any coordinate is not integer, an error is triggered."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4947
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4948
    <context: #return>
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4949
6153
19d2ead1d7ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6152
diff changeset
  4950
    operationsUntilFlush notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4951
	operationsUntilFlush <= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4952
	    self flush.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4953
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4954
	    operationsUntilFlush := operationsUntilFlush - 1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4955
	].
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  4956
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  4957
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4958
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4959
    int w, h;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4960
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4961
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  4962
     && __isExternalAddress(aGCId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4963
     && __isExternalAddress(aDrawableId)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4964
     && __bothSmallInteger(x, y)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4965
     && __bothSmallInteger(width, height)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4966
	w = __intVal(width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4967
	h = __intVal(height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4968
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4969
	 * need this check here: some servers simply dump core with bad args
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4970
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4971
	if ((w >= 0) && (h >= 0)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4972
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4973
	    XFillRectangle(myDpy,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4974
			   __DrawableVal(aDrawableId), __GCVal(aGCId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4975
			   __intVal(x), __intVal(y), w, h);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4976
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4977
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4978
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4979
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4980
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  4981
    "badGC, badDrawable or coordinates not integer"
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  4982
    self primitiveFailedOrClosedConnection
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  4983
!
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  4984
3609
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4985
primDrawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth msb:msb masks:maskArray padding:bitPadding
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4986
			     extent:imageExtent sourceOrigin:srcOrg
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4987
			       into:aDrawableId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4988
		  destinationOrigin:dstOrg extent:dstExtent
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  4989
			       with:aGCId
3609
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4990
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4991
    <context: #return>
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4992
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4993
    |imageWidth imageHeight rm gm bm srcx srcy dstx dsty w h|
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4994
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4995
    imageWidth := imageExtent x.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4996
    imageHeight := imageExtent y.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4997
    rm := maskArray at:1.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4998
    gm := maskArray at:2.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  4999
    bm := maskArray at:3.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5000
    srcx := srcOrg x.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5001
    srcy := srcOrg y.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5002
    dstx := dstOrg x.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5003
    dsty := dstOrg y.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5004
    w := dstExtent x.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5005
    h := dstExtent y.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5006
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  5007
    "since XPutImage may allocate huge amount of stack space
3609
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5008
     (some implementations use alloca), this must run with unlimited stack."
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5009
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5010
%{  /* UNLIMITEDSTACK */
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5011
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5012
    /*
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5013
     * need unlimited stack, since some Xlibs do a huge alloca in
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5014
     * XPutImage
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5015
     */
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5016
    GC gc;
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5017
    Window win;
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5018
    XImage image;
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5019
    int imgWdth;
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5020
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5021
    if (ISCONNECTED
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5022
     && __isExternalAddress(aGCId)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5023
     && __isExternalAddress(aDrawableId)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5024
     && __bothSmallInteger(srcx, srcy)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5025
     && __bothSmallInteger(dstx, dsty)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5026
     && __bothSmallInteger(w, h)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5027
     && __bothSmallInteger(imageWidth, imageHeight)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5028
     && __bothSmallInteger(imageDepth, bitsPerPixel)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5029
     && __isSmallInteger(bitPadding)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5030
     && __bothSmallInteger(rm, gm)
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5031
     && __isSmallInteger(bm)
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
  5032
     && __isByteArrayLike(imageBits)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5033
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5034
	int pad = __intVal(bitPadding);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5035
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5036
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5037
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5038
	if (! gc || !win)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5039
	    goto fail;
3609
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5040
#ifdef ARGDEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5041
	console_printf("args ok\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5042
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5043
	image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5044
	image.width = imgWdth = __intVal(imageWidth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5045
	image.height = __intVal(imageHeight);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5046
	image.xoffset = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5047
	image.format = ZPixmap;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5048
	image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5049
	image.bitmap_unit = 8;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5050
	image.bitmap_bit_order = MSBFirst;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5051
	image.bitmap_pad = pad;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5052
	image.depth = __intVal(imageDepth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5053
	image.bits_per_pixel = __intVal(bitsPerPixel);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5054
	image.red_mask = __intVal(rm);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5055
	image.green_mask = __intVal(gm);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5056
	image.blue_mask = __intVal(bm);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5057
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5058
	image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5059
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5060
	switch (image.bits_per_pixel) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5061
	    case 1:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5062
	    case 2:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5063
	    case 4:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5064
	    case 8:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5065
	    case 16:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5066
	    case 24:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5067
	    case 32:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5068
		break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5069
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5070
	    default:
3609
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5071
#ifdef ARGDEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5072
		console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5073
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5074
		goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5075
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5076
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5077
	/* ENTER_XLIB(); */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5078
	XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5079
					__intVal(dstx), __intVal(dsty),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5080
					__intVal(w), __intVal(h));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5081
	/* LEAVE_XLIB(); */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5082
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5083
	RETURN ( true );
3609
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5084
    }
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5085
#ifdef ARGDEBUG
4723
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5086
    if (!! __isExternalAddress(aGCId)) console_printf("GC\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5087
    if (!! __isExternalAddress(aDrawableId)) console_printf("aDrawableId\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5088
    if (!! __isSmallInteger(srcx)) console_printf("srcx\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5089
    if (!! __isSmallInteger(srcy)) console_printf("srcy\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5090
    if (!! __isSmallInteger(dstx)) console_printf("dstx\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5091
    if (!! __isSmallInteger(dsty)) console_printf("dsty\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5092
    if (!! __isSmallInteger(w)) console_printf("w\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5093
    if (!! __isSmallInteger(h)) console_printf("h\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5094
    if (!! __isSmallInteger(imageWidth)) console_printf("imageWidth\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5095
    if (!! __isSmallInteger(imageHeight)) console_printf("imageHeight\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5096
    if (!! __isSmallInteger(imageDepth)) console_printf("imageDepth\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5097
    if (!! __isSmallInteger(bitsPerPixel)) console_printf("bitsPerPixel\n");
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
  5098
    if (!! __isByteArrayLike(imageBits)) console_printf("imageBits\n");
3609
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5099
#endif
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5100
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5101
fail: ;
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5102
%}
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5103
.
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5104
    ^ false
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5105
!
5742cce8a004 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3608
diff changeset
  5106
3608
6ac2b6c8fbd8 primDrawBits - additional msb argument
Claus Gittinger <cg@exept.de>
parents: 3603
diff changeset
  5107
primDrawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth msb:msb padding:bitPadding
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5108
			      width:imageWidth height:imageHeight
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5109
				  x:srcx y:srcy
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5110
			       into:aDrawableId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5111
				  x:dstx y:dsty
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5112
			      width:w height:h
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5113
			       with:aGCId
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  5114
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  5115
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  5116
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  5117
    "since XPutImage may allocate huge amount of stack space
132
claus
parents: 129
diff changeset
  5118
     (some implementations use alloca), this must run with unlimited stack."
claus
parents: 129
diff changeset
  5119
12
9f0995fac1fa *** empty log message ***
claus
parents: 7
diff changeset
  5120
%{  /* UNLIMITEDSTACK */
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  5121
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  5122
    /*
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  5123
     * need unlimited stack, since some Xlibs do a huge alloca in
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  5124
     * XPutImage
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  5125
     */
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  5126
    GC gc;
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  5127
    Window win;
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  5128
    XImage image;
377
191915daff5e *** empty log message ***
ah
parents: 374
diff changeset
  5129
    int imgWdth;
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  5130
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  5131
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
  5132
     && __isExternalAddress(aGCId)
206
4284b80bebdf changed to use ExternalAddress handles for all Window, Font,
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
  5133
     && __isExternalAddress(aDrawableId)
97
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  5134
     && __bothSmallInteger(srcx, srcy)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  5135
     && __bothSmallInteger(dstx, dsty)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  5136
     && __bothSmallInteger(w, h)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  5137
     && __bothSmallInteger(imageWidth, imageHeight)
dd6116883ac0 *** empty log message ***
claus
parents: 96
diff changeset
  5138
     && __bothSmallInteger(imageDepth, bitsPerPixel)
1995
1ff668145d23 allow padding to be passed down to Xlib
Claus Gittinger <cg@exept.de>
parents: 1990
diff changeset
  5139
     && __isSmallInteger(bitPadding)
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
  5140
     && __isByteArrayLike(imageBits)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5141
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5142
	int pad = __intVal(bitPadding);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5143
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5144
	gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5145
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5146
	if (! gc || !win)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5147
	    goto fail;
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  5148
#ifdef ARGDEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5149
	console_printf("args ok\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5150
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5151
	image.data = (char *)__ByteArrayInstPtr(imageBits)->ba_element;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5152
	image.width = imgWdth = __intVal(imageWidth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5153
	image.height = __intVal(imageHeight);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5154
	image.xoffset = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5155
	image.format = ZPixmap;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5156
	image.byte_order = (msb == true) ? MSBFirst : LSBFirst;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5157
	image.bitmap_unit = 8;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5158
	image.bitmap_bit_order = MSBFirst;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5159
	image.bitmap_pad = pad;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5160
	image.depth = __intVal(imageDepth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5161
	image.bits_per_pixel = __intVal(bitsPerPixel);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5162
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5163
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5164
	image.bytes_per_line = ((((imgWdth * image.depth) + (pad-1)) / pad) * pad) / 8;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5165
	*/
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5166
	image.bytes_per_line = ((((imgWdth * image.bits_per_pixel) + (pad-1)) / pad) * pad) / 8;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5167
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5168
	switch (image.bits_per_pixel) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5169
	    case 1:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5170
	    case 2:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5171
	    case 4:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5172
	    case 8:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5173
	    case 16:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5174
	    case 24:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5175
	    case 32:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5176
		break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5177
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5178
	    default:
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  5179
#ifdef ARGDEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5180
		console_printf("bits_per_pixel=%d\n",image.bits_per_pixel);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5181
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5182
		goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5183
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5184
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5185
	image.red_mask = 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5186
	image.green_mask = 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5187
	image.blue_mask = 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5188
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5189
	/* ENTER_XLIB(); */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5190
	XPutImage(dpy, win, gc, &image, __intVal(srcx), __intVal(srcy),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5191
					__intVal(dstx), __intVal(dsty),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5192
					__intVal(w), __intVal(h));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5193
	/* LEAVE_XLIB(); */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5194
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5195
	RETURN ( true );
43
1d44cc4da884 *** empty log message ***
claus
parents: 37
diff changeset
  5196
    }
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  5197
#ifdef ARGDEBUG
4723
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5198
    if (!! __isExternalAddress(aGCId)) console_printf("GC\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5199
    if (!! __isExternalAddress(aDrawableId)) console_printf("aDrawableId\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5200
    if (!! __isSmallInteger(srcx)) console_printf("srcx\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5201
    if (!! __isSmallInteger(srcy)) console_printf("srcy\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5202
    if (!! __isSmallInteger(dstx)) console_printf("dstx\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5203
    if (!! __isSmallInteger(dsty)) console_printf("dsty\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5204
    if (!! __isSmallInteger(w)) console_printf("w\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5205
    if (!! __isSmallInteger(h)) console_printf("h\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5206
    if (!! __isSmallInteger(imageWidth)) console_printf("imageWidth\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5207
    if (!! __isSmallInteger(imageHeight)) console_printf("imageHeight\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5208
    if (!! __isSmallInteger(imageDepth)) console_printf("imageDepth\n");
ad10f05ff89b printf -> console_printf
Claus Gittinger <cg@exept.de>
parents: 4711
diff changeset
  5209
    if (!! __isSmallInteger(bitsPerPixel)) console_printf("bitsPerPixel\n");
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
  5210
    if (!! __isByteArrayLike(imageBits)) console_printf("imageBits\n");
46
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  5211
#endif
7b331e9012fd *** empty log message ***
claus
parents: 44
diff changeset
  5212
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  5213
fail: ;
48194c26a46c Initial revision
claus
parents:
diff changeset
  5214
%}
48194c26a46c Initial revision
claus
parents:
diff changeset
  5215
.
12
9f0995fac1fa *** empty log message ***
claus
parents: 7
diff changeset
  5216
    ^ false
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  5217
! !
48194c26a46c Initial revision
claus
parents:
diff changeset
  5218
1338
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5219
!XWorkstation methodsFor:'event forwarding'!
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5220
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5221
buttonMotion:view state:state x:x y:y rootX:rX rootY:rY time:time
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5222
    "forward a buttonMotion event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5223
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5224
    lastEventTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5225
    self buttonMotion:state x:x y:y view:view
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5226
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5227
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5228
buttonPress:view button:button state:state x:x y:y rootX:rX rootY:rY time:time
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5229
    "forward a buttonPress event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5230
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5231
    |logicalButton|
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5232
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5233
    lastEventTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5234
    altDown := state bitTest:altModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5235
    metaDown := state bitTest:metaModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5236
    shiftDown := state bitTest:(self shiftModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5237
    ctrlDown := state bitTest:(self ctrlModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5238
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5239
    eventRootX := rX.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5240
    eventRootY := rY.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5241
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5242
    "/ physical to logical button translation
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5243
    logicalButton := buttonTranslation at:button ifAbsent:button.
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
  5244
3332
a9ada7dccdd6 Comment
Stefan Vogel <sv@exept.de>
parents: 3330
diff changeset
  5245
    "/ special for mouse-wheel implementation
3312
21eca9090ee2 mouseWheel support for hp (and maybe others)
Claus Gittinger <cg@exept.de>
parents: 3305
diff changeset
  5246
    (logicalButton == #wheelFwd or:[logicalButton == #wheelBwd]) ifTrue:[
3329
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5247
      self mouseWheelMotion:state x:x y:y amount:(logicalButton == #wheelFwd ifTrue:[10] ifFalse:[-10]) deltaTime:10 view:view.
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5248
      ^ self.
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5249
    ].
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5250
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5251
    logicalButton isInteger ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5252
	buttonsPressed := buttonsPressed bitOr:(1 bitShift:logicalButton-1).
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5253
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5254
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5255
    (multiClickTimeDelta notNil and:[lastButtonPressTime notNil]) ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5256
	time < (lastButtonPressTime + multiClickTimeDelta) ifTrue:[
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5257
	    lastButtonPressTime := time.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5258
	    self buttonMultiPress:logicalButton x:x y:y view:view.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5259
	    ^ self.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5260
	].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5261
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5262
    lastButtonPressTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5263
3329
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5264
    view isNil ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5265
	"/ event arrived, after I destroyed it myself
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5266
	^ self
3329
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5267
    ].
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5268
    logicalButton == 1 ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5269
	activateOnClick == true ifTrue:[
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5270
	    "/ don't raise above an active popup view.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5271
	    (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5272
		view topView raise.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5273
	    ]
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  5274
	].
3329
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5275
    ].
3330
85fa3a6ce50d *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3329
diff changeset
  5276
    super buttonPress:logicalButton x:x y:y view:view
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5277
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5278
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5279
buttonRelease:view button:button state:state x:x y:y rootX:rX rootY:rY time:time
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5280
    "forward a buttonPress event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5281
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5282
    |logicalButton|
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5283
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5284
    lastEventTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5285
    altDown := state bitTest:altModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5286
    metaDown := state bitTest:metaModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5287
    shiftDown := state bitTest:(self shiftModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5288
    ctrlDown := state bitTest:(self ctrlModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5289
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5290
    eventRootX := rX.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5291
    eventRootY := rY.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5292
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5293
    "/ physical to logical button translation
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5294
    logicalButton := buttonTranslation at:button ifAbsent:button.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5295
3322
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
  5296
    "/ special for HPs mouse-wheel implementation
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
  5297
    (logicalButton == #wheelFwd or:[logicalButton == #wheelBwd]) ifTrue:[
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
  5298
      ^ self
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
  5299
    ].
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
  5300
3329
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5301
    logicalButton isInteger ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5302
	buttonsPressed := buttonsPressed bitClear:(1 bitShift:logicalButton-1).
3329
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
  5303
    ].
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5304
    self buttonRelease:logicalButton x:x y:y view:view
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5305
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5306
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5307
clientMessage:targetView type:typeAtom format:format data:data
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5308
    |sensor|
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5309
4527
8f1a6deabb5e Take care of non-existant view in #clientMessage:type:format:data:
Stefan Vogel <sv@exept.de>
parents: 4480
diff changeset
  5310
    targetView isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5311
	"targetView is gone? Anyway, cannot do anything with this event..."
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5312
	^ self.
4527
8f1a6deabb5e Take care of non-existant view in #clientMessage:type:format:data:
Stefan Vogel <sv@exept.de>
parents: 4480
diff changeset
  5313
    ].
8f1a6deabb5e Take care of non-existant view in #clientMessage:type:format:data:
Stefan Vogel <sv@exept.de>
parents: 4480
diff changeset
  5314
4528
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5315
    "DND drag&drop protocol"
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5316
    (format == 32 and:[typeAtom == (self atomIDOf:#DndProtocol)]) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5317
	self dndMessage:nil data:data view:targetView.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5318
	^ self.
4528
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5319
    ].
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5320
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5321
    sensor := targetView sensor.
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5322
    "not posted, if there is no sensor ..."
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5323
    sensor notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5324
	sensor clientMessage:typeAtom format:format eventData:data view:targetView
4528
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5325
    ].
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5326
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5327
    "Created: 4.4.1997 / 17:49:26 / cg"
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5328
!
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5329
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  5330
configure:view relativeTo:anotherViewId x:x y:y width:w height:h borderWidth:borderWidth above:aboveViewId overrideRedirect:overrideBool
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5331
    "forward a size-change event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5332
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  5333
"/    anotherViewId notNil ifTrue:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  5334
"/        |parentViewOrSelf|
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  5335
"/        parentViewOrSelf := self viewFromId:anotherViewId.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  5336
"/        parentViewOrSelf notNil ifTrue:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  5337
"/        ].
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  5338
"/     ].
3603
3665199a413f #configue:... sends also #coveredBy:view:
Stefan Vogel <sv@exept.de>
parents: 3592
diff changeset
  5339
    self configureX:x y:y width:w height:h view:view.
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  5340
    aboveViewId notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5341
	|aboveView|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5342
	aboveView := self viewFromId:aboveViewId.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5343
	aboveView notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5344
	    "view is now on the top of the window stack"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5345
	    self coveredBy:view view:aboveView.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5346
	].
3603
3665199a413f #configue:... sends also #coveredBy:view:
Stefan Vogel <sv@exept.de>
parents: 3592
diff changeset
  5347
     ].
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5348
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5349
5746
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5350
createWindow:view x:x y:y width:w height:h
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5351
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5352
    view isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5353
	"/ event arrived, after I destroyed it myself
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5354
	^ self
5746
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5355
    ].
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5356
    view sensor createWindow:view x:x y:y width:w height:h
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5357
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5358
    "Created: / 30-05-2011 / 16:05:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5359
    "Modified: / 30-05-2011 / 19:00:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5360
!
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5361
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5362
dndMessage:event data:data view:targetView
4528
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5363
    "handle a drag&drop protocol message"
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5364
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5365
    |sensor property dropType dropValue names i1 i2 propertyType|
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5366
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5367
    dropType := data doubleWordAt:1.
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5368
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5369
    "/ see def's in DragAndDropTypes.h
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  5370
    dropType := (self dndDropTypes) at:dropType+1 ifAbsent:#DndNotDnd.
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5371
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5372
    property := self
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5373
	getProperty:(self atomIDOf:#DndSelection)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5374
	from:rootId
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5375
	delete:false.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5376
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5377
    propertyType := property key.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5378
    dropValue := property value.
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5379
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5380
    "/ preconvert into a collection
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5381
    "/ of fileNames, string or byteArray
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5382
    "/ Notice: we do not yet convert into dropObjects
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5383
    "/ here, to allow arbitrary data to be handled by
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5384
    "/ redefined dropMessage methods in applications.
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5385
    "/ Conversion is done for some well known types
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5386
    "/ in the default dropMessage handling of SimpleView.
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5387
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5388
    dropType == #DndFiles ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5389
	"/ actually, a list of fileNames
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5390
	propertyType ~~ stringAtom ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5391
	    Logger info:'expected a string propertyValue in drop'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5392
	    ^ self
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5393
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5394
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5395
	names := OrderedCollection new.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5396
	i1 := 1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5397
	[i1 ~~ 0] whileTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5398
	    i2 := dropValue indexOf:(Character value:0) startingAt:i1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5399
	    i2 ~~ 0 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5400
		names add:(dropValue copyFrom:i1 to:(i2-1)).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5401
		i1 := i2 + 1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5402
	    ] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5403
		i1 := i2
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5404
	    ].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5405
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5406
	dropValue := names.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5407
	dropValue := dropValue collect:[:nm | nm asFilename].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5408
	dropType := #files.
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5409
    ] ifFalse:[ (dropType == #DndFile) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5410
	propertyType ~~ stringAtom ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5411
	    Logger info:'expected a string propertyValue in drop'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5412
	    ^ self
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5413
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5414
	dropValue := dropValue asFilename.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5415
	dropType := #file.
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5416
    ] ifFalse:[ (dropType == #DndDir) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5417
	propertyType ~~ stringAtom ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5418
	    Logger info:'expected a string propertyValue in drop'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5419
	    ^ self
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5420
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5421
	dropValue := dropValue asFilename.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5422
	dropType := #directory.
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5423
    ] ifFalse:[ (dropType == #DndText) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5424
	propertyType ~~ stringAtom ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5425
	    Logger info:'expected a string propertyValue in drop'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5426
	    ^ self
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5427
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5428
	dropType := #text.
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5429
    ] ifFalse:[ (dropType == #DndExe) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5430
	propertyType ~~ stringAtom ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5431
	    Logger info:'expected a string propertyValue in drop'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5432
	    ^ self
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5433
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5434
	dropType := #executable.
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5435
    ] ifFalse:[ (dropType == #DndLink) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5436
	propertyType ~~ stringAtom ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5437
	    Logger info:'expected a string propertyValue in drop'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5438
	    ^ self
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5439
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5440
	dropType := #link.
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5441
    ] ifFalse:[ (dropType == #DndRawData) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5442
	dropType := #rawData.
1552
969fd0309d2a more drop support
Claus Gittinger <cg@exept.de>
parents: 1543
diff changeset
  5443
    ] ifFalse:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5444
	Logger info:'unsupported dropType: %1 data: %2 ' with:dropType with:dropValue.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5445
	dropType := #unknown.
1558
e1eb73ed3360 support all DND dropTypes.
Claus Gittinger <cg@exept.de>
parents: 1557
diff changeset
  5446
    ]]]]]]].
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5447
4528
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5448
    sensor := targetView sensor.
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5449
    "not posted, if there is no sensor ..."
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5450
    sensor notNil ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
  5451
	sensor dropMessage:dropType data:dropValue view:targetView position:nil handle:nil
4528
386af2509408 #clientMessage:type:format:data - check for nil targetView
Stefan Vogel <sv@exept.de>
parents: 4527
diff changeset
  5452
    ].
1543
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5453
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5454
    "Created: 4.4.1997 / 17:59:37 / cg"
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5455
!
3887e1b2a7aa prepare drop handling;
Claus Gittinger <cg@exept.de>
parents: 1540
diff changeset
  5456
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5457
expose:view x:x y:y width:w height:h count:count
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5458
    "forward an expose event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5459
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5460
    self exposeX:x y:y width:w height:h view:view.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5461
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5462
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5463
focusIn:view mode:mode detail:detail
5234
416116f4deac #fcousInView:.. and #focusOutView:...
Stefan Vogel <sv@exept.de>
parents: 5227
diff changeset
  5464
    "a view got the keyboard focus"
416116f4deac #fcousInView:.. and #focusOutView:...
Stefan Vogel <sv@exept.de>
parents: 5227
diff changeset
  5465
416116f4deac #fcousInView:.. and #focusOutView:...
Stefan Vogel <sv@exept.de>
parents: 5227
diff changeset
  5466
    mode ~~ 1 "NotifyGrab" ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5467
	"mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5468
	self focusInView:view
5234
416116f4deac #fcousInView:.. and #focusOutView:...
Stefan Vogel <sv@exept.de>
parents: 5227
diff changeset
  5469
    ].
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5470
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5471
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5472
focusOut:view mode:mode detail:detail
5234
416116f4deac #fcousInView:.. and #focusOutView:...
Stefan Vogel <sv@exept.de>
parents: 5227
diff changeset
  5473
    "a view lost the keyboard focus"
416116f4deac #fcousInView:.. and #focusOutView:...
Stefan Vogel <sv@exept.de>
parents: 5227
diff changeset
  5474
416116f4deac #fcousInView:.. and #focusOutView:...
Stefan Vogel <sv@exept.de>
parents: 5227
diff changeset
  5475
    mode ~~ 1 "NotifyGrab" ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5476
	"mode NotifyGrab is set for pseudo-focus-changes, when a view grabs the keyboard"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5477
	self focusOutView:view
5234
416116f4deac #fcousInView:.. and #focusOutView:...
Stefan Vogel <sv@exept.de>
parents: 5227
diff changeset
  5478
    ].
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5479
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5480
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5481
graphicsExpose:view x:x y:y width:w height:h count:count
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5482
    "forward a graphics-expose event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5483
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5484
    self graphicsExposeX:x y:y width:w height:h final:(count==0) view:view
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5485
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5486
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5487
keyPress:view key:key code:keyCode state:state x:x y:y rootX:rX rootY:rY time:time
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5488
    "forward a key-press event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5489
4928
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5490
    |commonKey|
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5491
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5492
    lastEventTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5493
    altDown := state bitTest:altModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5494
    metaDown := state bitTest:metaModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5495
    shiftDown := state bitTest:(self shiftModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5496
    ctrlDown := state bitTest:(self ctrlModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5497
    key isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5498
	"/ happens sometimes on some systems
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5499
	"/ (alt-graph on sun has no keysym)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5500
	^ self
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5501
    ].
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5502
    eventRootX := rX.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5503
    eventRootY := rY.
4928
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5504
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5505
    "very low-level mapping of X11 event symbols to common ST/X event symbols"
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5506
    commonKey := rawKeySymTranslation at:key ifAbsent:key.
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5507
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5508
    self keyPress:commonKey x:x y:y view:view.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5509
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5510
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5511
keyRelease:view key:key code:keyCode state:state x:x y:y rootX:rX rootY:rY time:time
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5512
    "forward a key-release event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5513
4928
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5514
    |commonKey|
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5515
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5516
    lastEventTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5517
    altDown := state bitTest:altModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5518
    metaDown := state bitTest:metaModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5519
    shiftDown := state bitTest:(self shiftModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5520
    ctrlDown := state bitTest:(self ctrlModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5521
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5522
    key isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5523
	"/ happens sometimes on some systems
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5524
	"/ (alt-graph on sun has no keysym)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5525
	^ self
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5526
    ].
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5527
    eventRootX := rX.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5528
    eventRootY := rY.
4928
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5529
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5530
    "very low-level mapping of X11 event symbols to common ST/X event symbols"
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5531
    commonKey := rawKeySymTranslation at:key ifAbsent:key.
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5532
4e457b74f5d2 Fix raw keysym translation.
Stefan Vogel <sv@exept.de>
parents: 4845
diff changeset
  5533
    self keyRelease:commonKey x:x y:y view:view.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5534
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5535
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5536
mappingNotify:view request:what event:eB
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5537
    "One of Keyboard-, Modifier- or PointerMap has changed, probably by xmodmap.
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5538
     Tell xlib about the fact."
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5539
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5540
    (what == #mappingKeyboard or:[what == #mappingModifier]) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5541
	self refreshKeyboardMapping:eB.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5542
	"Maybe some of our modifiers have been changed"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5543
	self initializeModifierMappings.
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5544
    ].
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5545
1338
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5546
!
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5547
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5548
pointerEnter:view x:x y:y rootX:rX rootY:rY state:state mode:mode detail:detail time:time
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5549
    "forward a pointer enter event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5550
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5551
    lastEventTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5552
    altDown := state bitTest:altModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5553
    metaDown := state bitTest:metaModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5554
    shiftDown := state bitTest:(self shiftModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5555
    ctrlDown := state bitTest:(self ctrlModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5556
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5557
    eventRootX := rX.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5558
    eventRootY := rY.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5559
    self pointerEnter:state x:x y:y view:view
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5560
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5561
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5562
pointerLeave:view x:x y:y rootX:rX rootY:rY state:state mode:mode detail:detail time:time
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5563
    "forward a pointer leave event for some view"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5564
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5565
    lastEventTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5566
    altDown := state bitTest:altModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5567
    metaDown := state bitTest:metaModifierMask.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5568
    shiftDown := state bitTest:(self shiftModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5569
    ctrlDown := state bitTest:(self ctrlModifierMask).
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5570
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5571
    eventRootX := rX.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5572
    eventRootY := rY.
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5573
    self pointerLeave:state view:view
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5574
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5575
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5576
propertyChange:aView property:propertyId state:aSymbol time:time
1338
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5577
    "sent when an X property changes.
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5578
     This is a very X-specific mechanism."
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5579
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5580
    |selectionFetcher|
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5581
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5582
    lastEventTime := time.
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  5583
    aView isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5584
	"event arrived, after aView has been destroyed"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5585
	^ self
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5586
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5587
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5588
"/    'propertyChange ' infoPrint. (self atomName:propertyId) print. ': ' print. aSymbol printCR.
3856
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5589
"/    aView propertyChange:atom state:aSymbol.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5590
5746
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5591
    "JV@2011-01-06: Forward this event to views, they may
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5592
     be interested (for now, only XEmbedSiteView is)"
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5593
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5594
    aView sensor propertyChange:aView property:propertyId state:aSymbol time:time.
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5595
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
  5596
    aSymbol ~~ #newValue ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5597
	"I am not interested in delete notifications"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5598
	^ self.
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
  5599
    ].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5600
    selectionFetcher := self findSelectionFetcher:aView id.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5601
    selectionFetcher notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5602
	selectionFetcher message:thisContext message.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5603
    ].
5746
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5604
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
  5605
    "Modified: / 01-06-2011 / 13:40:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5606
!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5607
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5608
selectionClear:aView selection:selectionID time:time
3238
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5609
    "sent when another X-client has created a selection.
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5610
     This is a very X-specific mechanism."
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5611
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
  5612
    |selectionFetcher|
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
  5613
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5614
    lastEventTime := time.
4271
6540e99ff64c do not remove seletionNotification
Claus Gittinger <cg@exept.de>
parents: 4268
diff changeset
  5615
6540e99ff64c do not remove seletionNotification
Claus Gittinger <cg@exept.de>
parents: 4268
diff changeset
  5616
    selectionHandlers notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5617
	selectionHandlers do:[:eachHandler |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5618
	    eachHandler selectionClear:selectionID
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5619
	]
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
  5620
    ].
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
  5621
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
  5622
    aView isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5623
	"event arrived, after aView has been destroyed"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5624
	^ self
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
  5625
    ].
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
  5626
    selectionFetcher := self findSelectionFetcher:aView id.
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
  5627
    selectionFetcher notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5628
	selectionFetcher message:thisContext message.
4271
6540e99ff64c do not remove seletionNotification
Claus Gittinger <cg@exept.de>
parents: 4268
diff changeset
  5629
    ].
3758
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3738
diff changeset
  5630
!
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3738
diff changeset
  5631
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3738
diff changeset
  5632
selectionNotify:aView selection:selectionID target:targetID property:propertyID requestor:requestorID time:time
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
  5633
    "This event is sent by the selection owner as a response to our request for a selection.
3238
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5634
     This is a very X-specific mechanism."
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5635
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5636
    |selectionFetcher|
3238
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5637
3985
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
  5638
"/    Transcript show:'seletionNotify selID:'.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  5639
"/    Transcript show:selectionID; show:' ('; show:(self atomName:selectionID); show:') '.
3985
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
  5640
"/    Transcript show:' targetID:'.
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
  5641
"/    Transcript show:targetID; show:' ('; show:(self atomName:targetID); show:') '.
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
  5642
"/    Transcript show:' propertyID:'.
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
  5643
"/    Transcript show:propertyID; show:' ('; show:(self atomName:propertyID); show:') '.
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
  5644
"/    Transcript showCR:''.
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
  5645
"/    Transcript endEntry.
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
  5646
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5647
    lastEventTime := time.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5648
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5649
    aView isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5650
	"event arrived, after aView has been destroyed"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5651
	^ self
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5652
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5653
    selectionFetcher := self findSelectionFetcher:aView id.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5654
    selectionFetcher notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5655
	selectionFetcher message:thisContext message.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5656
    ].
1341
026bdf39f4ea pasteFromClipboard goes via the sensor,
Claus Gittinger <cg@exept.de>
parents: 1339
diff changeset
  5657
!
026bdf39f4ea pasteFromClipboard goes via the sensor,
Claus Gittinger <cg@exept.de>
parents: 1339
diff changeset
  5658
3238
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5659
selectionRequest:aView requestor:requestorID selection:selectionID target:targetID property:propertyID time:time
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5660
    "sent by some other X-client to ask for the selection.
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5661
     This is a very X-specific mechanism."
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5662
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5663
    |selection property bufferGetSelector responseTargetID selectionTime|
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5664
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5665
"/'Selection: ' print. (self atomName:selectionID) printCR. ' TargetId: ' print. (self atomName:targetID) printCR.
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5666
"/' Property: ' print. (self atomName:propertyID) printCR. ' Requestor: ' print. requestorID printCR.
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
  5667
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5668
    lastEventTime := time.
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5669
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  5670
    "JV@2012-03-27: Support both PRIMARY and CLIPBOARD selections"
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  5671
    selectionID == primaryAtom ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5672
	bufferGetSelector := #getPrimaryBuffer.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5673
	selectionTime := primarySelectionTime.
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  5674
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5675
	bufferGetSelector := #getCopyBuffer.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5676
	selectionTime := clipboardSelectionTime.
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5677
    ].
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5678
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5679
    (targetID == (self atomIDOf:#TIMESTAMP)) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5680
	"the other view wants to know when we acquired ownership of the selection"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5681
	responseTargetID := self atomIDOf:#INTEGER.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5682
	selection := selectionTime.
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5683
    ] ifFalse:[(targetID == (self atomIDOf:#TARGETS)) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5684
	"the other view wants to know which targets we support"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5685
	responseTargetID := self atomIDOf:#ATOM.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5686
	selection := self supportedTargetAtoms.
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5687
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5688
	selection := self selectionBuffer:bufferGetSelector as:targetID.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5689
	responseTargetID := selection key.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5690
	selection := selection value.
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
  5691
    ]].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5692
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5693
"/'Send selection: ' print. selection printCR.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5694
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5695
    property := propertyID.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5696
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
  5697
    selection isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5698
	"sending property None tells the client,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5699
	 that I could not convert"
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
  5700
"/        ('XWorkstation: unsupported selection target ', (self atomName:targetID)) errorPrintCR.
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5701
	property := nil.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5702
	responseTargetID := targetID.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5703
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5704
	property == 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5705
	    "Support old (obsolete) clients requesting a None property.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5706
	     Set the propertyID to the targetID"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5707
	    property := responseTargetID.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5708
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5709
	self setProperty:property
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5710
	     type:responseTargetID
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5711
	     value:selection
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5712
	     for:requestorID.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5713
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5714
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
  5715
    self sendNotifySelection:selectionID
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5716
	 property:property
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5717
	 target:responseTargetID
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5718
	 time:time
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5719
	 to:requestorID.
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  5720
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  5721
    "Modified: / 27-03-2012 / 15:22:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3238
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5722
!
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
  5723
3232
aeda024f481d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3230
diff changeset
  5724
visibilityNotify:aView state:how
3856
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5725
3232
aeda024f481d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3230
diff changeset
  5726
    aView notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5727
	aView visibilityChange:how
3232
aeda024f481d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3230
diff changeset
  5728
    ]
3856
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5729
! !
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5730
3886
538d4ca3a587 method category rename
Claus Gittinger <cg@exept.de>
parents: 3885
diff changeset
  5731
!XWorkstation methodsFor:'event forwarding-ignored events'!
3856
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5732
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5733
circulateNotify:aView place:aSymbol
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5734
    "sent, when the stacking order changes.
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5735
     ignored for now."
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5736
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5737
!
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5738
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5739
circulateRequest:aView place:aSymbol
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5740
    "sent, when the stacking order is about to change.
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5741
     ignored for now."
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5742
!
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5743
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5744
colorMapNotify:aView state:aBoolean
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5745
    "sent, when another colormap is installed.
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5746
     This is a very X-specific mechanism."
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5747
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5748
    aView isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5749
	"/ event arrived, after I destroyed it myself
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5750
	^ self
3856
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5751
    ].
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5752
    "/ not yet implemented
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5753
    "/ aView colorMapChange
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5754
!
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5755
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5756
configureRequest:view x:x y:y width:w height:h above:above detail:detail
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5757
    "ignored for now"
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5758
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5759
    "/ view configureRequest
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5760
!
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5761
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5762
gravityNotify:aView x:x y:y
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5763
    "ignored for now"
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5764
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5765
    "/ aView gravityNotify
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5766
!
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5767
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5768
keymapNotify:aView
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5769
    "ignore for now"
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5770
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5771
!
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5772
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5773
mapRequest:aView
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5774
    "ignored for now"
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5775
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5776
    "/ aView mapRequest
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5777
!
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5778
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  5779
reparentedView:aView parentId:parentId x:x y:y
3856
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5780
    "ignored for now"
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5781
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5782
    "/ aView reparented
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5783
!
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5784
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5785
resizeRequest:aView width:width height:height
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5786
    "ignored for now"
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5787
45fccc92d834 Use SynchronousWindoeSensor if no windowGroup
Stefan Vogel <sv@exept.de>
parents: 3814
diff changeset
  5788
    "/ aView resizeRequest
7137
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  5789
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  5790
!
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  5791
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  5792
shmCompletion: aView
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  5793
    "ignored for now"
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  5794
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  5795
1338
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5796
! !
8df6dbb44883 no more direct messages to the view
Claus Gittinger <cg@exept.de>
parents: 1295
diff changeset
  5797
86
032006651226 *** empty log message ***
claus
parents: 83
diff changeset
  5798
!XWorkstation methodsFor:'event handling'!
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  5799
2977
abdb7cf1635a enable pointerMotion events initially
Claus Gittinger <cg@exept.de>
parents: 2974
diff changeset
  5800
defaultEventMask
abdb7cf1635a enable pointerMotion events initially
Claus Gittinger <cg@exept.de>
parents: 2974
diff changeset
  5801
    "return a mask to enable some events by default."
abdb7cf1635a enable pointerMotion events initially
Claus Gittinger <cg@exept.de>
parents: 2974
diff changeset
  5802
abdb7cf1635a enable pointerMotion events initially
Claus Gittinger <cg@exept.de>
parents: 2974
diff changeset
  5803
%{  /* NOCONTEXT */
abdb7cf1635a enable pointerMotion events initially
Claus Gittinger <cg@exept.de>
parents: 2974
diff changeset
  5804
    RETURN (__MKSMALLINT( ExposureMask | StructureNotifyMask |
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5805
			 KeyPressMask | KeyReleaseMask |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5806
			 PointerMotionMask |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5807
			 EnterWindowMask | LeaveWindowMask |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5808
			 ButtonPressMask | ButtonMotionMask | ButtonReleaseMask |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5809
			 PropertyChangeMask ));
2977
abdb7cf1635a enable pointerMotion events initially
Claus Gittinger <cg@exept.de>
parents: 2974
diff changeset
  5810
%}
abdb7cf1635a enable pointerMotion events initially
Claus Gittinger <cg@exept.de>
parents: 2974
diff changeset
  5811
!
abdb7cf1635a enable pointerMotion events initially
Claus Gittinger <cg@exept.de>
parents: 2974
diff changeset
  5812
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5813
dispatchEvent:evArray
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  5814
    "a raw event array as coming from the low level C code is converted
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  5815
     to a message send here.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  5816
     Also, the windowID from the event array is mapped to a view object."
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  5817
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  5818
    |viewId view evType arguments|
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5819
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5820
    viewId := evArray at:1.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5821
    viewId notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5822
	viewId = lastId ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5823
	    view := lastView
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5824
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5825
	    view := self viewFromId:viewId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5826
	].
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5827
    ].
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5828
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5829
    evType := evArray at:3.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5830
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5831
    (self respondsTo:evType) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5832
	arguments := evArray copyFrom:3 to:(3 + evType numArgs - 1).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5833
	arguments at:1 put:view.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5834
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5835
	self perform:evType withArguments:arguments.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5836
	^ true.
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5837
    ].
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  5838
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  5839
    '********** unhandled event:' errorPrintCR.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  5840
    evType errorPrintCR. (evArray at:2) errorPrintCR.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  5841
    '********** see dispatchEvent' errorPrintCR.
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5842
    ^ false
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5843
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5844
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5845
dispatchEventFor:aViewIdOrNil withMask:eventMask
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5846
    "central event handling method:
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5847
     get next event and send appropriate message to the sensor or view.
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5848
     If the argument aViewIdOrNil is nil, events for any view are processed,
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5849
     otherwise only events for the view with given id are processed.
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5850
     If the argument aMask is nonNil, only events for this eventMask are
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5851
     handled.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  5852
     WARNING: this may block to wait for an event - you better check for a
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5853
	      pending event before calling this."
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5854
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5855
    |eventArray|
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5856
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5857
    eventArray := Array new:13.
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5858
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5859
    (self getEventFor:aViewIdOrNil withMask:eventMask into:eventArray) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5860
	AbortOperationRequest handle:[:ex |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5861
	    ex return
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5862
	] do:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5863
	    self dispatchEvent:eventArray.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5864
	]
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5865
    ].
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5866
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5867
    "Modified: 19.8.1997 / 17:10:42 / cg"
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5868
!
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5869
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5870
dispatchExposeEventFor:aViewIdOrNil
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5871
    "get next expose event and send appropriate message to the sensor or view.
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5872
     If the argument aViewIdOrNil is nil, events for any view are processed,
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5873
     otherwise only events for the view with given id are processed.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  5874
     WARNING: this may block to wait for an event - you better check for a
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5875
	      pending event before calling this."
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5876
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5877
    self dispatchEventFor:aViewIdOrNil withMask:(self eventMaskFor:#expose)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5878
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5879
    "Modified: 19.8.1997 / 17:10:26 / cg"
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5880
!
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  5881
3647
91340b09e045 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3630
diff changeset
  5882
dispatchLoop
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5883
    preWaitAction := [self flush].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  5884
    Processor addPreWaitAction:preWaitAction.
3647
91340b09e045 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3630
diff changeset
  5885
    [
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5886
	super dispatchLoop
3778
77a339649f30 Remove preWaitACtion if dispatchLoop is finished.
Stefan Vogel <sv@exept.de>
parents: 3758
diff changeset
  5887
    ] ensure:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5888
	Processor removePreWaitAction:preWaitAction.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5889
	preWaitAction := nil.
3647
91340b09e045 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3630
diff changeset
  5890
    ].
91340b09e045 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3630
diff changeset
  5891
!
91340b09e045 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3630
diff changeset
  5892
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5893
dispatchPendingEvents
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5894
    "central event handling method for modal operation.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5895
     (i.e. this is now only used in the modal debugger)
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5896
     Dispatch any pending events; return when no more are pending.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5897
     This code is somewhat special, since X has a concept of graphic
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5898
     expose events (which are sent after a bitblt). After such a bitblt,
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5899
     we only handle exposes until the graphicsExpose arrives.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5900
     Other systems may not need such a kludge"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5901
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5902
    "interested in exposes only ?"
3800
558328d5675b More Stack for openDisplay
Stefan Vogel <sv@exept.de>
parents: 3799
diff changeset
  5903
558328d5675b More Stack for openDisplay
Stefan Vogel <sv@exept.de>
parents: 3799
diff changeset
  5904
    |eventArray|
558328d5675b More Stack for openDisplay
Stefan Vogel <sv@exept.de>
parents: 3799
diff changeset
  5905
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5906
    dispatchingExpose notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5907
	[self exposeEventPendingFor:dispatchingExpose withSync:false] whileTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5908
	    self dispatchExposeEventFor:dispatchingExpose
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5909
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5910
	^ self
6032
608dc73d32d3 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6026
diff changeset
  5911
    ].
608dc73d32d3 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6026
diff changeset
  5912
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5913
    [self eventPendingWithSync:false] whileTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5914
	eventArray isNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5915
	    eventArray := Array new:13.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5916
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5917
	(self getEventFor:nil withMask:nil into:eventArray) ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5918
	    AbortOperationRequest handle:[:ex |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5919
		ex return
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5920
	    ] do:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5921
		self dispatchEvent:eventArray.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5922
		"/ multi-screen config: give others a chance
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5923
		"/ (needed because we run at high (non-timesliced) prio)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5924
		Processor yield.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5925
	    ]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5926
	].
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5927
    ]
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5928
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5929
    "Modified: 19.8.1997 / 17:11:18 / cg"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5930
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5931
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5932
disposeEventsWithMask:aMask for:aWindowIdOrNil
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5933
    "dispose (throw away) specific events. If aWindowId is nil,
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5934
     events matching the mask are thrown away regardless of which
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  5935
     view they are for. Otherwise, only matching events for that
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5936
     view are flushed."
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5937
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5938
    <context: #return>
3787
58b1a317d361 Need some more UNLIMITEDSTACKS to avoid crashes on Solaris 8 & 9
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
  5939
%{ /* UNLIMITEDSTACK */
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5940
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5941
    XEvent ev;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5942
    Window win;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5943
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5944
    if (ISCONNECTED
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5945
     && __isSmallInteger(aMask)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5946
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5947
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5948
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5949
	if (__isExternalAddress(aWindowIdOrNil)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5950
	    win = __WindowVal(aWindowIdOrNil);
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  5951
	    while (XCheckWindowEvent(dpy, win, __intVal(aMask), &ev))
7147
e914d0679641 silence gcc warning
Claus Gittinger <cg@exept.de>
parents: 7146
diff changeset
  5952
		;;
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5953
	} else {
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  5954
	    while (XCheckMaskEvent(dpy, __intVal(aMask), &ev))
7147
e914d0679641 silence gcc warning
Claus Gittinger <cg@exept.de>
parents: 7146
diff changeset
  5955
		;;
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5956
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5957
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  5958
	RETURN ( self );
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5959
    }
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5960
%}.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5961
    self primitiveFailedOrClosedConnection
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5962
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5963
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5964
eventMaskFor:anEventSymbol
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5965
    "return the eventMask bit-constant corresponding to an event symbol"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5966
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5967
%{  /* NOCONTEXT */
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5968
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5969
    int m = 0;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5970
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5971
    if (anEventSymbol == @symbol(keyPress)) m = KeyPressMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5972
    else if (anEventSymbol == @symbol(keyRelease)) m = KeyReleaseMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5973
    else if (anEventSymbol == @symbol(buttonPress)) m = ButtonPressMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5974
    else if (anEventSymbol == @symbol(buttonRelease)) m = ButtonReleaseMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5975
    else if (anEventSymbol == @symbol(buttonMotion)) m = ButtonMotionMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5976
    else if (anEventSymbol == @symbol(pointerMotion)) m = PointerMotionMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5977
    else if (anEventSymbol == @symbol(expose)) m = ExposureMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5978
    else if (anEventSymbol == @symbol(focusChange)) m = FocusChangeMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5979
    else if (anEventSymbol == @symbol(enter)) m = EnterWindowMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5980
    else if (anEventSymbol == @symbol(leave)) m = LeaveWindowMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5981
    else if (anEventSymbol == @symbol(keymapState)) m = KeymapStateMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5982
    else if (anEventSymbol == @symbol(visibilityChange)) m = VisibilityChangeMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5983
    else if (anEventSymbol == @symbol(structureNotify)) m = StructureNotifyMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5984
    else if (anEventSymbol == @symbol(resizeRedirect)) m = ResizeRedirectMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5985
    else if (anEventSymbol == @symbol(propertyChange)) m = PropertyChangeMask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5986
    else if (anEventSymbol == @symbol(colormapChange)) m = ColormapChangeMask;
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
  5987
    else if (anEventSymbol == @symbol(substructureNotify)) m = SubstructureNotifyMask;
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
  5988
    else if (anEventSymbol == @symbol(substructureRedirect)) m = SubstructureRedirectMask;
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5989
    RETURN (__MKSMALLINT(m));
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5990
%}
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5991
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5992
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5993
eventPending
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  5994
    "return true, if any event is pending.
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5995
     This looks for both the internal queue and the display connection."
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5996
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5997
    "/ ConservativeSync is required for some Xlib implementation,
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5998
    "/ where eventPending returns wrong if we do not flush the buffer.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  5999
    "/ (especially Win32 & Xlib)
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6000
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6001
    dispatchingExpose notNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6002
	^ self exposeEventPendingFor:dispatchingExpose withSync:ConservativeSync
7092
9159201de216 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7086
diff changeset
  6003
    ].
9159201de216 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7086
diff changeset
  6004
    ^ self eventPendingWithSync:ConservativeSync
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6005
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6006
    "Modified: / 28.4.1999 / 11:08:12 / cg"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6007
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6008
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6009
eventPending:anEventSymbol for:aWindowIdOrNil
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6010
    "return true, if a specific event is pending"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6011
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6012
    ^ self eventsPending:(self eventMaskFor:anEventSymbol) for:aWindowIdOrNil withSync:false
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6013
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6014
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6015
eventPending:anEventMask for:aWindowIdOrNil withSync:doSync
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6016
    "return true, if any of the masked events is pending"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6017
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6018
    <context: #return>
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6019
%{  /* UNLIMITEDSTACK */
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6020
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6021
    XEvent ev;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6022
    Window win;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6023
    int thereIsOne;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6024
    OBJ rslt = false;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6025
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6026
    if (ISCONNECTED && __isSmallInteger(anEventMask)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6027
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6028
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6029
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6030
	if (doSync == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6031
	    XSync(dpy, 0);      /* make certain everything is flushed */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6032
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6033
	if (__isExternalAddress(aWindowIdOrNil)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6034
	    win = __WindowVal(aWindowIdOrNil);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6035
	    thereIsOne = XCheckWindowEvent(dpy, win, __intVal(anEventMask), &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6036
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6037
	    thereIsOne = XCheckMaskEvent(dpy, __intVal(anEventMask), &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6038
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6039
	if (thereIsOne) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6040
	    XPutBackEvent(dpy, &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6041
	    rslt = true;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6042
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6043
	LEAVE_XLIB();
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6044
    }
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6045
    RETURN ( rslt );
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6046
%}
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6047
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6048
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6049
eventPendingWithSync:doSync
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  6050
    "return true, if any event is pending.
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6051
     If doSync is true, do a sync output buffer (i.e. send all to the display and wait until its processed)
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6052
     before checking."
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6053
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6054
    <context: #return>
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6055
%{  /* UNLIMITEDSTACK */
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6056
    OBJ rslt = false;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6057
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6058
    if (ISCONNECTED) {
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6059
	Display *dpy = myDpy;
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6060
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6061
	if (XEventsQueued(dpy, QueuedAlready)) {
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6062
	    RETURN (true);
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6063
	}
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6064
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6065
	ENTER_XLIB();
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6066
	if (doSync == true) {
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6067
	    XSync(dpy, 0);      /* make certain everything is flushed */
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6068
	}
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6069
	if (XEventsQueued(dpy, QueuedAfterFlush)) {
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6070
	    rslt = true;
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6071
	}
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6072
	LEAVE_XLIB();
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6073
    }
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6074
    RETURN ( rslt );
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6075
%}
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6076
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6077
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6078
eventQueued
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6079
    "return true, if any event is queued"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6080
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6081
    dispatchingExpose notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6082
	^ self exposeEventPendingFor:dispatchingExpose withSync:false
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6083
    ].
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6084
    ^ self eventQueuedAlready
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6085
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6086
    "Created: 12.12.1995 / 21:43:00 / stefan"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6087
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6088
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6089
eventQueuedAlready
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6090
    "return true, if any event is queued internally.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6091
     (i.e. in X's internal event queue, which is both filled by explicit
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6092
      nextEvent calls AND whenever drawing is done and events are pending on
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6093
      the display connection)."
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6094
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6095
%{  /* UNLIMITEDSTACK */
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6096
    if (ISCONNECTED) {
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6097
	if (XEventsQueued(myDpy, QueuedAlready)) {
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6098
	    RETURN(true);
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  6099
	}
7092
9159201de216 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7086
diff changeset
  6100
    }
9159201de216 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7086
diff changeset
  6101
    RETURN ( false );
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6102
%}
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6103
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6104
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6105
exposeEventPendingFor:aWindowIdOrNil withSync:doSync
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6106
    "return true, if any expose event is pending for a specific view,
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6107
     or any view (if the arg is nil).
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6108
     This is an X specific, only required after a scroll operation."
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6109
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6110
    <context: #return>
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6111
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6112
%{  /* UNLIMITEDSTACK */
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6113
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6114
    XEvent ev;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6115
    Window win;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6116
    int thereIsOne;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6117
    OBJ rslt = false;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6118
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6119
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6120
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6121
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6122
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6123
	if (doSync == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6124
	    XSync(dpy, 0);      /* make certain everything is flushed */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6125
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6126
	if (__isExternalAddress(aWindowIdOrNil)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6127
	    win = __WindowVal(aWindowIdOrNil);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6128
	    thereIsOne = XCheckWindowEvent(dpy, win, ExposureMask, &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6129
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6130
	    thereIsOne = XCheckMaskEvent(dpy, ExposureMask, &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6131
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6132
	if (thereIsOne) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6133
	    XPutBackEvent(dpy, &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6134
	    rslt = true;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6135
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6136
	LEAVE_XLIB();
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6137
    }
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6138
    RETURN ( rslt );
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6139
%}
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6140
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6141
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6142
getEventFor:aViewIdOrNil withMask:eventMask into:anEventArray
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6143
    "read next event if there is one and put event's data into anEventArray.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  6144
     If aViewIdOrNil is nil, events for any view are fetched;
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6145
     otherwise only events for that specific view will be fetched.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6146
     Returns true, if there was an event, false otherwise.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6147
     This method may block - so you better check for pending events
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6148
     before calling for it.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6149
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6150
     The event fields are placed into anEventArray (must be at least size 13):
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6151
     the fields are:
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6152
	1:      windowID
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6153
	2:      eventType-ID
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6154
	3:      eventTypeSymbol
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6155
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6156
	4..     args
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6157
3948
d542be7c1cad debug for james
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
  6158
     Sorry I had to split dispatch into this fetch method and a separate
d542be7c1cad debug for james
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
  6159
     handler method to allow UNLIMITEDSTACK here.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  6160
     (some Xlibs do a big alloca there which cannot be done in
3948
d542be7c1cad debug for james
Claus Gittinger <cg@exept.de>
parents: 3920
diff changeset
  6161
      #dispatchEvent:, since it dispatches out into ST-methods).
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6162
    "
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6163
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6164
%{  /* UNLIMITEDSTACK */
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6165
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6166
    Display *dpy;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6167
    Window win, wWanted;
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6168
    int evMask, returnValue;
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6169
    XEvent ev;
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6170
    OBJ eB;
8038
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
  6171
    KeySym keySym = NoSymbol;
5982
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
  6172
    unsigned char buffer[64];
8038
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
  6173
    int i, nchars, codepoint; 
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6174
    char *keySymString;
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6175
    OBJ arg, sym, t, windowID;
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6176
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6177
    if (! ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6178
	RETURN (false);
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6179
    }
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6180
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6181
    dpy = myDpy;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6182
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6183
    ev.type = 0;
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6184
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6185
    if (__isSmallInteger(eventMask)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6186
	evMask = __intVal(eventMask);
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6187
    } else {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6188
	evMask = ~0;
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6189
    }
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6190
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6191
    if (__isExternalAddress(aViewIdOrNil)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6192
	wWanted = __WindowVal(aViewIdOrNil);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6193
	returnValue = XCheckWindowEvent(dpy, wWanted, evMask, &ev);
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6194
    } else {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6195
	if (evMask == ~0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6196
	    XNextEvent(dpy, &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6197
	    returnValue = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6198
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6199
	    returnValue = XCheckMaskEvent(dpy, evMask, &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6200
	}
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6201
    }
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6202
    if (!returnValue) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6203
	/* there is no event */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6204
	RETURN (false);
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6205
    }
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6206
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6207
    if (anEventArray == nil) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6208
	/* sender is not interested in the event */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6209
	RETURN(true);
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6210
    }
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6211
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6212
    if (!__isArray(anEventArray)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6213
	console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6214
	RETURN (false);
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6215
    }
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6216
    if (__arraySize(anEventArray) < 11) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6217
	console_fprintf(stderr, "XWorkstation: bad argument [%d]\n", __LINE__);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6218
	RETURN (false);
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6219
    }
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6220
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6221
#   define ANYBUTTON   (Button1MotionMask | Button2MotionMask | Button3MotionMask)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6222
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6223
#   define ae ((XAnyEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6224
#   define ee ((XExposeEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6225
#   define ke ((XKeyPressedEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6226
#   define be ((XButtonPressedEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6227
#   define ce ((XConfigureEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6228
#   define cr ((XConfigureRequestEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6229
#   define me ((XMotionEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6230
#   define ele ((XCrossingEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6231
#   define de ((XDestroyWindowEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6232
#   define ve ((XVisibilityEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6233
#   define fe ((XFocusChangeEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6234
#   define cre ((XCreateWindowEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6235
#   define mape ((XMappingEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6236
#   define gre ((XGravityEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6237
#   define rr ((XResizeRequestEvent *)&ev)
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  6238
#   define rpe ((XReparentEvent *)&ev)
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6239
#   define cie ((XCirculateEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6240
#   define pe ((XPropertyEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6241
#   define sce ((XSelectionClearEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6242
#   define cme ((XColormapEvent *)&ev)
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6243
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6244
    if (((t = __INST(lastId)) != nil)
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6245
	 && __isExternalAddress(t)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6246
	 && (__WindowVal(t) == ae->window)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6247
	windowID = t;
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6248
    } else {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6249
	windowID = __MKEXTERNALADDRESS(ae->window);
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6250
    }
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6251
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6252
    __ArrayInstPtr(anEventArray)->a_element[0] = windowID; __STORE(anEventArray, windowID);
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6253
    __ArrayInstPtr(anEventArray)->a_element[1] = __MKSMALLINT(ev.type);
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6254
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6255
    switch (ev.type) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6256
	case KeyRelease:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6257
	    sym = @symbol(keyRelease:key:code:state:x:y:rootX:rootY:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6258
	    goto keyPressAndRelease;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6259
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6260
	case KeyPress:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6261
	    sym = @symbol(keyPress:key:code:state:x:y:rootX:rootY:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6262
	    /* FALL INTO */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6263
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6264
	keyPressAndRelease:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6265
	    arg = nil;
8038
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
  6266
	    XLookupString(ke, (char *)buffer, sizeof(buffer), &keySym, NULL);
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
  6267
	    codepoint = XKeysymToUnicode(keySym);	    
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
  6268
	    if ( codepoint ) {
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
  6269
	    	arg = __MKUCHARACTER( codepoint );
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6270
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6271
		keySymString = XKeysymToString(keySym);
8038
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
  6272
		if (keySymString) {		    
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6273
		    arg = __MKSYMBOL(keySymString, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6274
		}
8038
c7cab63f9ec9 X11: translate national characters early in X11 event processing
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7803
diff changeset
  6275
	    }	   
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6276
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6277
#ifdef IGNORE_UNKNOWN_KEYCODES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6278
	    if (arg == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6279
		/* happens sometimes (alt-graph on sun has no keysym) */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6280
		RETURN (false);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6281
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6282
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6283
	    __ArrayInstPtr(anEventArray)->a_element[2] = sym;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6284
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6285
	    __ArrayInstPtr(anEventArray)->a_element[3] = arg; __STORE(anEventArray, arg);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6286
	    t = __MKUINT(ke->keycode); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6287
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ke->state);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6288
	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ke->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6289
	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ke->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6290
	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ke->x_root);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6291
	    __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ke->y_root);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6292
	    t = __MKUINT(ke->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6293
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6294
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6295
	case ButtonPress:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6296
	    sym = @symbol(buttonPress:button:state:x:y:rootX:rootY:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6297
	    goto buttonPressAndRelease;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6298
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6299
	case ButtonRelease:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6300
	    sym = @symbol(buttonRelease:button:state:x:y:rootX:rootY:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6301
	    /* fall into */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6302
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6303
	buttonPressAndRelease:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6304
	    __ArrayInstPtr(anEventArray)->a_element[2] = sym;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6305
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(be->button);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6306
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ke->state);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6307
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(be->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6308
	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(be->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6309
	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(be->x_root);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6310
	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(be->y_root);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6311
	    t = __MKUINT(be->time); __ArrayInstPtr(anEventArray)->a_element[9] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6312
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6313
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6314
	case MotionNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6315
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(buttonMotion:state:x:y:rootX:rootY:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6316
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6317
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(me->state);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6318
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(me->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6319
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(me->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6320
	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(me->x_root);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6321
	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(me->y_root);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6322
	    t = __MKUINT(me->time); __ArrayInstPtr(anEventArray)->a_element[8] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6323
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6324
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6325
	case FocusIn:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6326
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusIn:mode:detail:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6327
	    goto focusInOut;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6328
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6329
	case FocusOut:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6330
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(focusOut:mode:detail:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6331
	    /* fall into */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6332
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6333
	focusInOut:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6334
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(fe->mode);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6335
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(fe->detail);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6336
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6337
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6338
	case EnterNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6339
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerEnter:x:y:rootX:rootY:state:mode:detail:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6340
	    goto enterLeave;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6341
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6342
	case LeaveNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6343
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(pointerLeave:x:y:rootX:rootY:state:mode:detail:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6344
	    /* fall into */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6345
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6346
	enterLeave:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6347
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ele->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6348
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ele->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6349
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ele->x_root);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6350
	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ele->y_root);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6351
	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ele->state);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6352
	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ele->mode);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6353
	    __ArrayInstPtr(anEventArray)->a_element[9] = __mkSmallInteger(ele->detail);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6354
	    t = __MKUINT(ele->time); __ArrayInstPtr(anEventArray)->a_element[10] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6355
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6356
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6357
	case Expose:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6358
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(expose:x:y:width:height:count:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6359
	    goto expose;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6360
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6361
	case GraphicsExpose:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6362
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(graphicsExpose:x:y:width:height:count:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6363
	    /* fall into */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6364
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6365
	expose:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6366
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(ee->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6367
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ee->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6368
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ee->width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6369
	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ee->height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6370
	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ee->count);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6371
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6372
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6373
	case NoExpose:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6374
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(noExposeView:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6375
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6376
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6377
	case VisibilityNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6378
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(visibilityNotify:state:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6379
	    switch (ve->state) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6380
		case VisibilityUnobscured:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6381
		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(unobscured);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6382
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6383
		case VisibilityPartiallyObscured:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6384
		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(partiallyObscured);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6385
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6386
		case VisibilityFullyObscured:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6387
		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(fullyObscured);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6388
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6389
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6390
		    __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(ve->state);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6391
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6392
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6393
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6394
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6395
	case CreateNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6396
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(createWindow:x:y:width:height:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6397
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cre->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6398
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cre->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6399
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cre->width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6400
	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cre->height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6401
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6402
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6403
	case DestroyNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6404
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(destroyedView:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6405
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6406
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6407
	case UnmapNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6408
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unmappedView:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6409
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6410
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6411
	case MapNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6412
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappedView:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6413
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6414
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6415
	case ConfigureNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6416
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configure:relativeTo:x:y:width:height:borderWidth:above:overrideRedirect:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6417
	    __ArrayInstPtr(anEventArray)->a_element[3] = nil;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6418
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(ce->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6419
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(ce->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6420
	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(ce->width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6421
	    __ArrayInstPtr(anEventArray)->a_element[7] = __mkSmallInteger(ce->height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6422
	    __ArrayInstPtr(anEventArray)->a_element[8] = __mkSmallInteger(ce->border_width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6423
	   __ArrayInstPtr(anEventArray)->a_element[9] = nil;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6424
	    __ArrayInstPtr(anEventArray)->a_element[10] = ce->override_redirect ? true : false;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6425
	    if (ce->event != None) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6426
		t = __MKEXTERNALADDRESS(ce->event); __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6427
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6428
	    if (ce->above != None) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6429
		t = __MKEXTERNALADDRESS(ce->above); __ArrayInstPtr(anEventArray)->a_element[9] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6430
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6431
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6432
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6433
	case GravityNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6434
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(gravityNotify:x:y:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6435
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(gre->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6436
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(gre->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6437
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6438
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6439
	case ResizeRequest:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6440
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(resizeRequest:width:height:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6441
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(rr->width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6442
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rr->height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6443
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6444
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6445
	case ConfigureRequest:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6446
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(configureRequest:x:y:width:height:above:detail:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6447
	    __ArrayInstPtr(anEventArray)->a_element[3] = __mkSmallInteger(cr->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6448
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(cr->y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6449
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(cr->width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6450
	    __ArrayInstPtr(anEventArray)->a_element[6] = __mkSmallInteger(cr->height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6451
	    __ArrayInstPtr(anEventArray)->a_element[7] = nil;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6452
	    if (cr->above != None) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6453
		t = __MKEXTERNALADDRESS(cr->above); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6454
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6455
	    switch (cr->detail) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6456
		case Above:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6457
		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(above);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6458
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6459
		case Below:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6460
		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(below);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6461
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6462
		case TopIf:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6463
		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(topIf);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6464
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6465
		case BottomIf:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6466
		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(bottomIf);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6467
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6468
		case Opposite:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6469
		    __ArrayInstPtr(anEventArray)->a_element[8] = @symbol(opposite);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6470
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6471
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6472
		    __ArrayInstPtr(anEventArray)->a_element[8] = __MKSMALLINT(cr->detail);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6473
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6474
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6475
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6476
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6477
	case CirculateNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6478
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateNotify:place:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6479
	    goto circulate;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6480
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6481
	case CirculateRequest:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6482
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(circulateRequest:place:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6483
	    /* fall into */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6484
	circulate:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6485
	    switch (cie->place) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6486
		case PlaceOnTop:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6487
		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnTop);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6488
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6489
		case PlaceOnBottom:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6490
		    __ArrayInstPtr(anEventArray)->a_element[3] = @symbol(placeOnBottom);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6491
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6492
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6493
		    __ArrayInstPtr(anEventArray)->a_element[3] = __MKSMALLINT(cie->place);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6494
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6495
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6496
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6497
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6498
	case PropertyNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6499
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(propertyChange:property:state:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6500
	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(pe->atom);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6501
	    switch (pe->state) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6502
		case PropertyNewValue:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6503
		    __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(newValue);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6504
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6505
		case PropertyDelete:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6506
		    __ArrayInstPtr(anEventArray)->a_element[4] = @symbol(deleted);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6507
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6508
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6509
		    __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(pe->state);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6510
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6511
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6512
	    t = __MKUINT(pe->time); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6513
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6514
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6515
	case SelectionClear:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6516
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionClear:selection:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6517
	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(sce->selection);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6518
	    t = __MKUINT(sce->time); __ArrayInstPtr(anEventArray)->a_element[4] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6519
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6520
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6521
	case SelectionRequest:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6522
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6523
	     * someone wants the selection
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6524
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6525
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionRequest:requestor:selection:target:property:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6526
	    t = __MKEXTERNALADDRESS(ev.xselectionrequest.requestor); __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6527
	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselectionrequest.selection);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6528
	    __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselectionrequest.target);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6529
	    __ArrayInstPtr(anEventArray)->a_element[6] = __MKATOMOBJ(ev.xselectionrequest.property);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6530
	    t = __MKUINT(ev.xselectionrequest.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6531
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6532
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6533
	case SelectionNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6534
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6535
	     * returned selection value (answer from SelectionRequest)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6536
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6537
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(selectionNotify:selection:target:property:requestor:time:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6538
	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xselection.selection);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6539
	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKATOMOBJ(ev.xselection.target);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6540
	    __ArrayInstPtr(anEventArray)->a_element[5] = __MKATOMOBJ(ev.xselection.property);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6541
	    t = __MKEXTERNALADDRESS(ev.xselection.requestor); __ArrayInstPtr(anEventArray)->a_element[6] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6542
	    t = __MKUINT(ev.xselection.time); __ArrayInstPtr(anEventArray)->a_element[7] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6543
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6544
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6545
	case ColormapNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6546
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(colormapNotify:state:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6547
	    __ArrayInstPtr(anEventArray)->a_element[3] = cme->state == ColormapInstalled ? true : false;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6548
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6549
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6550
	case ClientMessage:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6551
	    if (ev.xclient.message_type == (int) __AtomVal(__INST(protocolsAtom))) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6552
		if ((ev.xclient.data.l[0] == (int) __AtomVal(__INST(quitAppAtom)))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6553
		 || (ev.xclient.data.l[0] == (int) __AtomVal(__INST(deleteWindowAtom)))) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6554
		    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(terminateView:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6555
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6556
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6557
		if (ev.xclient.data.l[0] == (int) __AtomVal(__INST(saveYourselfAtom))) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6558
		    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(saveAndTerminateView:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6559
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6560
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6561
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6562
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6563
	     * any other client message
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6564
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6565
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(clientMessage:type:format:data:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6566
	    __ArrayInstPtr(anEventArray)->a_element[3] = __MKATOMOBJ(ev.xclient.message_type);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6567
	    __ArrayInstPtr(anEventArray)->a_element[4] = __MKSMALLINT(ev.xclient.format);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6568
	    t = __MKBYTEARRAY(&ev.xclient.data, sizeof(ev.xclient.data)); __ArrayInstPtr(anEventArray)->a_element[5] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6569
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6570
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6571
	case MappingNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6572
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mappingNotify:request:event:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6573
	    switch(mape->request) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6574
		case MappingModifier:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6575
		    arg = @symbol(mappingModifier);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6576
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6577
		case MappingKeyboard:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6578
		    arg = @symbol(mappingKeyboard);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6579
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6580
		case MappingPointer:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6581
		    arg = @symbol(mappingPointer);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6582
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6583
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6584
		    arg = __MKSMALLINT(mape->request);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6585
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6586
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6587
	    __ArrayInstPtr(anEventArray)->a_element[3] = arg;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6588
	    t = __MKBYTEARRAY(&ev, sizeof(*mape)); __ArrayInstPtr(anEventArray)->a_element[4] = t;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6589
	    __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6590
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6591
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6592
	case KeymapNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6593
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(keymapNotify:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6594
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6595
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6596
	case MapRequest:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6597
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(mapRequest:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6598
	    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6599
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6600
	case ReparentNotify:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6601
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(reparentedView:parentId:x:y:);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6602
	    t = __MKEXTERNALADDRESS(rpe->parent);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6603
	    __ArrayInstPtr(anEventArray)->a_element[3] = t; __STORE(anEventArray, t);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6604
	    __ArrayInstPtr(anEventArray)->a_element[4] = __mkSmallInteger(rpe->x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6605
	    __ArrayInstPtr(anEventArray)->a_element[5] = __mkSmallInteger(rpe->y);
7137
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  6606
	    break;	   
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6607
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6608
	default:
7137
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  6609
#ifdef SHM
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  6610
	    if (ev.type == ShmCompletionType) {
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  6611
	        __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(shmCompletion:);
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  6612
	        break;
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  6613
	    }
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  6614
#endif
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6615
	    __ArrayInstPtr(anEventArray)->a_element[2] = @symbol(unknownX11Event);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6616
	    break;
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6617
    }
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6618
#undef ae
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6619
#undef ee
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6620
#undef ke
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6621
#undef be
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6622
#undef ce
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6623
#undef cr
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6624
#undef cre
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6625
#undef cle
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6626
#undef gre
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6627
#undef me
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6628
#undef ewe
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6629
#undef ele
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6630
#undef lwe
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6631
#undef de
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6632
#undef mape
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6633
#undef ve
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6634
#undef fe
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6635
#undef rr
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
  6636
#undef rpe
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6637
#undef pe
3799
65c6905e1250 Instvar eventbuffer no longer needed
Stefan Vogel <sv@exept.de>
parents: 3798
diff changeset
  6638
#undef cie
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6639
#undef sce
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6640
#undef cme
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6641
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6642
%}.
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6643
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
  6644
    ^ true
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6645
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6646
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6647
handleAllEvents
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6648
    "from now on, handle any kind of event"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6649
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6650
    dispatchingExpose := nil
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6651
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6652
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6653
handleExposeOnlyFor:aView
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6654
    "from now on, handle expose events only"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6655
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6656
    dispatchingExpose := aView id
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6657
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6658
6009
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6659
registerHotKeyForWindow:aDrawableId withId:anId modifiers:aModifier virtualKeyCode:aVirtualKeyCode
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6660
    "Defines a system-wide hot key."
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6661
    <resource: #todo>
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6662
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6663
    "no-op until implemented"
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6664
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6665
    ^ false.
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6666
!
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6667
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6668
setEventMask:aMask in:aWindowId
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6669
    "tell X that we are only interested in events from aMask, which
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6670
     is the bitwise or of the eventMask bits (see 'eventMaskFor:')"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6671
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6672
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  6673
%{
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6674
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6675
    int mask;
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6676
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6677
    if (ISCONNECTED
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6678
     && __isExternalAddress(aWindowId)
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6679
     && __isSmallInteger(aMask)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6680
	mask = __intVal(aMask);
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6681
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6682
#ifdef OLD
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6683
	/* these may not be disabled */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6684
	mask |= ExposureMask | StructureNotifyMask |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6685
		KeyPressMask | KeyReleaseMask |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6686
		EnterWindowMask | LeaveWindowMask |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6687
		ButtonPressMask | ButtonMotionMask | ButtonReleaseMask;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6688
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6689
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6690
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6691
	XSelectInput(myDpy, __WindowVal(aWindowId), mask);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6692
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6693
	RETURN ( self );
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6694
    }
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6695
%}.
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6696
    self primitiveFailedOrClosedConnection
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6697
!
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6698
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6699
startDispatch
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6700
    "redefined to clear dispatchingExpose, which is a special X feature"
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6701
6252
35df59ca8863 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6231
diff changeset
  6702
    (dispatchProcess notNil and:[dispatchProcess isDead not]) ifTrue:[^ self].
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6703
    dispatchingExpose := nil.
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  6704
    super startDispatch.
6009
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6705
!
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6706
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6707
unregisterHotKeyForWindow:aDrawableId withId:anId
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6708
    "Release a system-wide hot key."
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6709
    <resource: #todo>
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6710
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6711
    "no-op until implemented. Since we never registered anything, the unregister succeeds"
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6712
220e00e49540 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6005
diff changeset
  6713
    ^ true.
6294
55a1757ee198 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6291
diff changeset
  6714
!
55a1757ee198 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6291
diff changeset
  6715
55a1757ee198 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6291
diff changeset
  6716
viewIsRelevantInCheckForEndOfDispatch:aView
55a1757ee198 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6291
diff changeset
  6717
    aView == windowGroupWindow ifTrue:[^ false].
55a1757ee198 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6291
diff changeset
  6718
    ^ super viewIsRelevantInCheckForEndOfDispatch:aView
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6719
! !
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6720
3885
f00086641b23 method category rename
Claus Gittinger <cg@exept.de>
parents: 3883
diff changeset
  6721
!XWorkstation methodsFor:'event handling-old dispatch'!
3319
e3b21cba1c59 Fix mappingNotifyEvents with new dispatcher.
Stefan Vogel <sv@exept.de>
parents: 3312
diff changeset
  6722
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6723
buttonPress:button x:x y:y view:aView
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6724
    "forward a button-press event for some view"
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6725
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6726
    aView isNil ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  6727
	"/ event arrived, after I destroyed it myself
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  6728
	^ self
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6729
    ].
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6730
    button == 1 ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  6731
	activateOnClick == true ifTrue:[
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  6732
	    "/ don't raise above an active popup view.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  6733
	    (activeKeyboardGrab isNil and:[activePointerGrab isNil]) ifTrue:[
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  6734
		aView topView raise.
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6735
"/            ] ifFalse:[
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6736
"/                activeKeyboardGrab printCR.
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6737
"/                activePointerGrab printCR.
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  6738
	    ]
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  6739
	].
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6740
    ].
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  6741
    super buttonPress:button x:x y:y view:aView
0
48194c26a46c Initial revision
claus
parents:
diff changeset
  6742
! !
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  6743
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6744
!XWorkstation methodsFor:'event sending'!
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6745
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
  6746
sendClientEvent:msgType format:msgFormat to:targetWindowID propagate:propagate eventMask:eventMask window:windowID data1:d1 data2:d2 data3:d3 data4:d4 data5:d5
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6747
    "send a ClientMessage to some other (possibly: non-ST/X) view.
1567
71215c933fd9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1566
diff changeset
  6748
     The client message gets message_type and msgFormat as specified by
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6749
     the arguments. The additional data arguments specify up to
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6750
     5 longWords of user data; each may be an integer or nil.
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6751
     It is passed transparently in the events data field.
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6752
     See XProtocol specification for more details."
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6753
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6754
    "/ Event.xclient.type              = ClientMessage;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6755
    "/ Event.xclient.display           = dpy;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6756
    "/ Event.xclient.message_type      = msgType;
1567
71215c933fd9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1566
diff changeset
  6757
    "/ Event.xclient.format            = msgFormat;
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
  6758
    "/ Event.xclient.window            = windowID;
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6759
    "/ Event.xclient.data.l[0]         = d1
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6760
    "/ Event.xclient.data.l[1]         = d2
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6761
    "/ Event.xclient.data.l[2]         = d3
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6762
    "/ Event.xclient.data.l[3]         = d4
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6763
    "/ Event.xclient.data.l[4]         = d5
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6764
    "/
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
  6765
    "/ XSendEvent(dpy, targetWindowID, propagate, eventMask, &Event);
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6766
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  6767
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  6768
%{
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6769
    int type;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6770
    int state;
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
  6771
    int __eventMask;
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6772
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6773
    if (ISCONNECTED
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6774
     && __isInteger(msgType)
1567
71215c933fd9 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1566
diff changeset
  6775
     && __isInteger(msgFormat)
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
  6776
     && (eventMask == nil || __isInteger(eventMask))
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
  6777
     && (__isExternalAddress(windowID) || __isInteger(windowID))
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6778
     && (__isExternalAddress(targetWindowID) || __isInteger(targetWindowID))) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6779
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6780
	XEvent ev;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6781
	Status result;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6782
	Window targetWindow;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6783
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6784
	if (__isInteger(d1)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6785
	    ev.xclient.data.l[0] = __longIntVal(d1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6786
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6787
	    if (__isExternalAddress(d1)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6788
		ev.xclient.data.l[0] = (INT)__externalAddressVal(d1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6789
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6790
		ev.xclient.data.l[0] = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6791
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6792
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6793
	if (__isInteger(d2)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6794
	    ev.xclient.data.l[1] = __longIntVal(d2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6795
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6796
	    if (__isExternalAddress(d2)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6797
		ev.xclient.data.l[1] = (INT)__externalAddressVal(d2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6798
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6799
		ev.xclient.data.l[1] = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6800
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6801
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6802
	if (__isInteger(d3)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6803
	    ev.xclient.data.l[2] = __longIntVal(d3);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6804
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6805
	    if (__isExternalAddress(d3)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6806
		ev.xclient.data.l[2] = (INT)__externalAddressVal(d3);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6807
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6808
		ev.xclient.data.l[2] = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6809
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6810
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6811
	if (__isInteger(d4)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6812
	    ev.xclient.data.l[3] = __longIntVal(d4);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6813
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6814
	    if (__isExternalAddress(d4)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6815
		ev.xclient.data.l[3] = (INT)__externalAddressVal(d4);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6816
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6817
		ev.xclient.data.l[3] = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6818
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6819
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6820
	if (__isInteger(d5)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6821
	    ev.xclient.data.l[4] = __longIntVal(d5);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6822
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6823
	    if (__isExternalAddress(d5)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6824
		ev.xclient.data.l[4] = (INT)__externalAddressVal(d5);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6825
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6826
		ev.xclient.data.l[4] = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6827
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6828
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6829
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6830
	if (__isExternalAddress(windowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6831
	    ev.xclient.window = __WindowVal(windowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6832
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6833
	    ev.xclient.window = (Window)__longIntVal(windowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6834
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6835
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6836
	if (__isExternalAddress(targetWindowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6837
	    targetWindow = __WindowVal(targetWindowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6838
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6839
	    targetWindow = (Window)__longIntVal(targetWindowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6840
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6841
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6842
	ev.xclient.type              = ClientMessage;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6843
	ev.xclient.display           = dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6844
	ev.xclient.message_type      = __longIntVal(msgType);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6845
	ev.xclient.format            = __longIntVal(msgFormat);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6846
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6847
	if (eventMask == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6848
	    __eventMask = NoEventMask;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6849
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6850
	    __eventMask = __longIntVal(eventMask);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6851
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6852
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6853
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6854
	result = XSendEvent(dpy, targetWindow, (propagate == true ? True : False), __eventMask , &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6855
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6856
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6857
	if ((result == BadValue) || (result == BadWindow)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6858
	    DPRINTF(("bad status in sendClientEvent\n"));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6859
	    RETURN ( false )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6860
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  6861
	RETURN (true)
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6862
    }
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6863
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  6864
    self primitiveFailedOrClosedConnection.
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6865
    ^ false
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6866
!
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
  6867
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  6868
sendKeyOrButtonEvent:typeSymbol x:xPos y:yPos keyOrButton:keySymCodeOrButtonNr state:stateMask toViewId:targetId
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6869
    "send a keyPress/Release or buttonPress/Release event to some (possibly alien) view.
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6870
     TypeSymbol must be one of: #keyPress, #keyRelease, #buttonPress , #buttonRelease.
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6871
     For buttonEvents, the keySymCodeOrButtonNr must be the buttons number (1, 2 ...);
6551
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  6872
     for key events, it can be either a symbol (as listed in X's keySyms)
480
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6873
     or a numeric keysym code. If state is nil, the modifier bits (shift & control)
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6874
     are computed from the keyboardMap - if non-nil, these are passed as modifierbits.
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6875
     The non-nil case is the lowlevel entry, where state must include any shift/ctrl information
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6876
     (not very user friendly)"
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6877
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  6878
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  6879
%{
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6880
    int type;
480
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6881
    int state;
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6882
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6883
    if (__isSmallInteger(stateMask)) {
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6884
	state = __intVal(stateMask);
480
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6885
    } else {
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6886
	state = 0;
480
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6887
    }
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6888
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6889
    if (ISCONNECTED
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6890
     && __isSmallInteger(xPos) && __isSmallInteger(yPos)
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
  6891
     && (__isSmallInteger(keySymCodeOrButtonNr) || __isStringLike(keySymCodeOrButtonNr))
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6892
     && (__isExternalAddress(targetId) || __isInteger(targetId))) {
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6893
	Display *dpy = myDpy;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6894
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6895
	XEvent ev;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6896
	Window target;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6897
	Status result;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6898
	KeySym keySym, *syms;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6899
	int screen = __intVal(__INST(screen));
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6900
	int nSyms;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6901
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6902
	if ((typeSymbol == @symbol(keyPress))
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6903
	 || (typeSymbol == @symbol(keyRelease))) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6904
	    if (__isStringLike(keySymCodeOrButtonNr)) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6905
		keySym = XStringToKeysym(__stringVal(keySymCodeOrButtonNr));
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6906
	    } else {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6907
		if (__isCharacter(keySymCodeOrButtonNr)) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6908
		    char s[2];
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6909
		    s[0] = __intVal(__characterVal(keySymCodeOrButtonNr));
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6910
		    s[1] = '\0';
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6911
		    keySym = XStringToKeysym(s);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6912
		} else {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6913
		    if (__isSmallInteger(keySymCodeOrButtonNr)) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6914
			keySym = (KeySym) __intVal(keySymCodeOrButtonNr);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6915
		    } else {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6916
			goto notOk;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6917
		    }
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6918
		}
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6919
	    }
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6920
	    ev.xkey.keycode = XKeysymToKeycode(dpy, keySym);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6921
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6922
	    if (stateMask == nil) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6923
		/*
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6924
		 * get the modifier from the keySym
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6925
		 */
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6926
		nSyms = 0;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6927
		syms = XGetKeyboardMapping(dpy, ev.xkey.keycode, 1, &nSyms);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6928
		if (syms) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6929
		    int i;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6930
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6931
		    for (i=0; i<nSyms; i++) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6932
			if (syms[i] == keySym) {
480
07ab9bbaea5f create modifierState when sending keyboard events
Claus Gittinger <cg@exept.de>
parents: 466
diff changeset
  6933
#ifdef MODIFIERDEBUG
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6934
			    console_printf("modifier-index is %d\n", i);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6935
#endif
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6936
			    if (i) state = (1 << (i-1));
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6937
			    break;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6938
			}
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6939
		    }
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6940
		    XFree(syms);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6941
		}
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6942
	    }
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6943
	} else {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6944
	    if ((typeSymbol == @symbol(buttonPress))
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6945
	     || (typeSymbol == @symbol(buttonRelease))) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6946
		if (__isSmallInteger(keySymCodeOrButtonNr)) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6947
		    ev.xbutton.button = __intVal(keySymCodeOrButtonNr);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6948
		} else {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6949
		    ev.xbutton.button = 1;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6950
		}
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6951
	    } else {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6952
		DPRINTF(("invalid sendEvent typeSymbol\n"));
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6953
		RETURN (false);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6954
	    }
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6955
	}
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6956
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6957
	if (typeSymbol == @symbol(keyPress))
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6958
	    ev.xany.type = KeyPress;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6959
	else if (typeSymbol == @symbol(keyRelease))
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6960
	    ev.xany.type = KeyRelease;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6961
	else if (typeSymbol == @symbol(buttonPress))
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6962
	    ev.xany.type = ButtonPress;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6963
	else if (typeSymbol == @symbol(buttonRelease))
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6964
	    ev.xany.type = ButtonRelease;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6965
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6966
	if (__isExternalAddress(targetId)) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6967
	    target = __WindowVal(targetId);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6968
	} else {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6969
	    target = (Window) __longIntVal(targetId);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6970
	}
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6971
	ev.xkey.window = target;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6972
	ev.xkey.same_screen = 1;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6973
	ev.xkey.subwindow = 0;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6974
	ev.xkey.root = RootWindow(dpy, screen);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6975
	ev.xkey.x = __intVal(xPos);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6976
	ev.xkey.y = __intVal(yPos);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6977
	ev.xkey.state = state;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6978
	ev.xkey.time = CurrentTime;
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6979
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6980
	ENTER_XLIB();
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6981
	result = XSendEvent(dpy, target, False, 0 , &ev);
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6982
	LEAVE_XLIB();
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6983
	if ((result == BadValue) || (result == BadWindow)) {
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6984
	    DPRINTF(("bad status\n"));
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6985
	    RETURN ( false )
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6986
	}
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6987
	RETURN (true)
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6988
    }
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  6989
  notOk: ;
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6990
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  6991
    self primitiveFailedOrClosedConnection.
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  6992
    ^ false
6551
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  6993
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  6994
    "<<END
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  6995
     |v|
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  6996
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  6997
     v := EditTextView extent:200@100.
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  6998
     v contents:'Hello world'.
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  6999
     v openAndWait.
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  7000
     v selectFromCharacterPosition:1 to:5.
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  7001
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  7002
     "/ CTRL-c
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7003
     v device
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7004
	 sendKeyOrButtonEvent:#keyPress
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7005
	 x:10 y:10
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7006
	 keyOrButton:#'Control'
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7007
	 state:(v device ctrlModifierMask)
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7008
	 toViewId: v id.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7009
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7010
     v device
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7011
	 sendKeyOrButtonEvent:#keyPress
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7012
	 x:10 y:10
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7013
	 keyOrButton:'c'
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7014
	 state:(v device ctrlModifierMask)
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7015
	 toViewId: v id.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7016
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7017
     v device
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7018
	 sendKeyOrButtonEvent:#keyRelease
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7019
	 x:10 y:10
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7020
	 keyOrButton:'c'
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7021
	 state:(v device ctrlModifierMask)
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7022
	 toViewId: v id.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7023
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7024
     v device
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7025
	 sendKeyOrButtonEvent:#keyRelease
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7026
	 x:10 y:10
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7027
	 keyOrButton:#'Control'
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7028
	 state:0
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7029
	 toViewId: v id.
6551
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  7030
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  7031
     "/ CTRL-v
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  7032
6567
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7033
     v device
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7034
	 sendKeyOrButtonEvent:#keyPress
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7035
	 x:10 y:10
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7036
	 keyOrButton:#'Control'
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7037
	 state:(v device ctrlModifierMask)
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7038
	 toViewId: v id.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7039
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7040
     v device
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7041
	 sendKeyOrButtonEvent:#keyPress
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7042
	 x:10 y:10
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7043
	 keyOrButton:'v'
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7044
	 state:(v device ctrlModifierMask)
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7045
	 toViewId: v id.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7046
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7047
     v device
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7048
	 sendKeyOrButtonEvent:#keyRelease
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7049
	 x:10 y:10
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7050
	 keyOrButton:'v'
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7051
	 state:(v device ctrlModifierMask)
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7052
	 toViewId: v id.
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7053
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7054
     v device
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7055
	 sendKeyOrButtonEvent:#keyRelease
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7056
	 x:10 y:10
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7057
	 keyOrButton:#'Control'
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7058
	 state:0
803364ec1f7d grab/ungrabKey primitives (for hotkeys)
Claus Gittinger <cg@exept.de>
parents: 6551
diff changeset
  7059
	 toViewId: v id.
6551
eff1347ac76f class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6538
diff changeset
  7060
END"
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7061
! !
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7062
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7063
!XWorkstation methodsFor:'font stuff'!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7064
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7065
createFontFor:aFontName
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7066
    "a basic method for X-font allocation; this method allows
7409
2de3e4caafbb #OTHER by mawalch
mawalch
parents: 7371
diff changeset
  7067
     any font to be acquired (even those not conforming to
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7068
     standard naming conventions, such as cursor, fixed or k14)"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7069
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  7070
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  7071
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  7072
%{  /* STACK: 100000 */
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  7073
    /*** UNLIMITEDSTACK */
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7074
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7075
    XFontStruct *newFont;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7076
2531
e4d6bdae7bcf use quick-isString / isSymbol
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
  7077
    if (ISCONNECTED
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
  7078
     && __isStringLike(aFontName)) {
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
  7079
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7080
	ENTER_XLIB();
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7081
	newFont = XLoadQueryFont(myDpy, (char *)__stringVal(aFontName));
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7082
	LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  7083
#ifdef COUNT_RESOURCES
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7084
	if (newFont)
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7085
	    __cnt_font++;
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7086
#endif
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7087
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7088
	RETURN ( newFont ? __MKEXTERNALADDRESS(newFont) : nil );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7089
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7090
%}.
3461
779f5d3cdcee dont send fail-messages (which raise an exception) from unlimited stack
Claus Gittinger <cg@exept.de>
parents: 3454
diff changeset
  7091
    "/ --- disabled due to UNLIMITEDSTACK -- self primitiveFailedOrClosedConnection.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7092
    ^ nil
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7093
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7094
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7095
decomposeXFontName:aString into:aBlock
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7096
    "extract family, face, style and size from an
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7097
     X-font name
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7098
     1 2     3      4    5     6         7 8      9    10   11   12 13 14       15
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7099
      -brand-family-face-style-moreStyle- -height-size-resX-resY-??-??-registry-encoding;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7100
     evaluate aBlock with these"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7101
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7102
    |family face style moreStyle fheight size
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7103
     resX resY registry encoding coding fields|
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7104
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7105
    aString isNil ifTrue:[^ false].
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7106
    fields := aString asCollectionOfSubstringsSeparatedBy:$-.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7107
    fields size == 3 ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7108
	"take care of old font names: family-style-size"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7109
	family := fields at:1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7110
	style := fields at:2.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7111
	size := Number readFromString:(fields at:3) onError:[^ false].
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7112
    ] ifFalse:[fields size == 2 ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7113
	"take care of old font names: family-size"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7114
	family := fields at:1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7115
	size := Number readFromString:(fields at:2) onError:[^ false].
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7116
    ] ifFalse:[fields size >= 15 ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7117
	family := fields at:3.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7118
	face := fields at:4.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7119
	style := fields at:5.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7120
	style = 'o' ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7121
	    style := 'oblique'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7122
	] ifFalse:[style = 'i' ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7123
	     style := 'italic'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7124
	] ifFalse:[style = 'r' ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7125
	     style := 'roman'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7126
	]]].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7127
	moreStyle := fields at:6.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7128
	(moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7129
	    style := style, '-', moreStyle.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7130
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7131
	fheight := fields at:8.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7132
	size := (Number readFromString:(fields at:9) onError:[^ false]) / 10.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7133
	resX := fields at:10.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7134
	resY := fields at:11.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7135
	registry := fields at:14.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7136
	encoding := fields at:15.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7137
	coding := registry , '-' , encoding.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7138
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7139
	^ false
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7140
    ]]].
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7141
    aBlock value:family value:face value:style value:size value:coding.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7142
    ^ true
3216
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  7143
!
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  7144
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  7145
encodingOf:aFontId
7348
7c39d56e9beb #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7313
diff changeset
  7146
    "the font's encoding - if the font does not provide that info,
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7147
     return nil (and assume #ascii, which is a subset of #iso8859-1)."
3216
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  7148
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7149
    |props reg enc coll|
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7150
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7151
    props := self fontPropertiesOf:aFontId.
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7152
    reg := props at:#'CHARSET_REGISTRY' ifAbsent:nil.
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7153
    enc := props at:#'CHARSET_ENCODING' ifAbsent:nil.
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7154
    coll := props at:#'CHARSET_COLLECTIONS' ifAbsent:nil.
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7155
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7156
    reg notNil ifTrue:[ reg := self atomName:reg].
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7157
    enc notNil ifTrue:[ enc := self atomName:enc].
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7158
    coll notNil ifTrue:[ coll := self atomName:coll].
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7159
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7160
    ^ self extractEncodingFromRegistry:reg encoding:enc charSetCollections:coll
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7161
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7162
     "
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7163
       Screen current encodingOf:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7164
     "
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7165
!
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7166
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7167
extentsOf:aString from:index1 to:index2 inFont:aFontId into:anArray
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7168
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7169
    <context: #return>
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7170
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7171
%{  /* UNLIMITEDSTACK */
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7172
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7173
    XFontStruct *f;
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7174
    char *cp;
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7175
    int len, n, i1, i2, l;
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7176
#   define NLOCALBUFFER 200
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7177
    XChar2b xlatebuffer[NLOCALBUFFER];
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7178
    int nInstBytes;
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7179
    int directionReturn, fontAscentReturn, fontDescentReturn;
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7180
    XCharStruct overAllReturn;
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7181
    OBJ *resultArray;
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7182
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7183
    if (ISCONNECTED
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7184
	 && __bothSmallInteger(index1, index2)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7185
	 && __isExternalAddress(aFontId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7186
	 && __isNonNilObject(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7187
	int lMax = __intVal(@global(MaxStringLength));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7188
	f = __FontVal(aFontId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7189
	if (! f) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7190
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7191
	if (__isArray(anArray) && __arraySize(anArray) > 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7192
	    resultArray = __arrayVal(anArray);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7193
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7194
	    resultArray = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7195
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7196
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7197
	i1 = __intVal(index1) - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7198
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7199
	if (i1 >= 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7200
	    OBJ cls;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7201
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7202
	    i2 = __intVal(index2) - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7203
	    if (i2 < i1) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7204
		RETURN ( __MKSMALLINT(0) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7205
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7206
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7207
	    cp = (char *) __stringVal(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7208
	    l = i2 - i1 + 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7209
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7210
	    if (__isStringLike(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7211
		n = __stringSize(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7212
		if (i2 >= n) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7213
		cp += i1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7214
		len = XTextExtents(f, cp, l,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7215
					&directionReturn, &fontAscentReturn, &fontDescentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7216
					&overAllReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7217
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7218
		cls = __qClass(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7219
		nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7220
		cp += nInstBytes;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7221
		n = __byteArraySize(aString) - nInstBytes;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7222
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7223
		if (__isBytes(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7224
		    if (i2 >= n) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7225
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7226
		    cp += i1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7227
		    len = XTextExtents(f, cp, l,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7228
					    &directionReturn, &fontAscentReturn, &fontDescentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7229
					    &overAllReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7230
		} else  if (__isWords(aString)) { /* TWOBYTESTRINGS */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7231
		    union {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7232
			char b[2];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7233
			unsigned short s;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7234
		    } u;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7235
		    int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7236
		    XChar2b *cp2 = (XChar2b *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7237
		    int mustFree = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7238
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7239
		    n = n / 2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7240
		    if (i2 >= n) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7241
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7242
		    cp += (i1 * 2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7243
		    if (l > lMax) l = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7244
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7245
		    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7246
		     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7247
		     * X expects them MSB first
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7248
		     * convert as required
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7249
		     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7250
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7251
		    u.s = 0x1234;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7252
		    if (u.b[0] != 0x12) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7253
			if (l <= NLOCALBUFFER) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7254
			    cp2 = xlatebuffer;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7255
			} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7256
			    cp2 = (XChar2b *)(malloc(l * 2));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7257
			    mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7258
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7259
			for (i=0; i<l; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7260
			    cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7261
			    cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7262
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7263
			cp = (char *) cp2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7264
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7265
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7266
		    len = XTextExtents16(f, (XChar2b *)cp, l,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7267
					    &directionReturn, &fontAscentReturn, &fontDescentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7268
					    &overAllReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7269
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7270
		    if (mustFree) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7271
			free(cp2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7272
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7273
		} else if (__isLongs(aString)) { /* FOURBYTESTRINGS */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7274
		    union {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7275
			char b[2];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7276
			unsigned short s;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7277
		    } u;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7278
		    int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7279
		    XChar2b *cp2 = (XChar2b *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7280
		    int mustFree = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7281
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7282
		    n = n / 4;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7283
		    if (i2 >= n) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7284
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7285
		    cp += (i1 * 4);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7286
		    if (l > lMax) l = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7287
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7288
		    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7289
		     * For now: X does not support 32bit characters without the new 32Unicode extensions.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7290
		     * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7291
		     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7292
		    if (l <= NLOCALBUFFER) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7293
			cp2 = xlatebuffer;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7294
		    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7295
			cp2 = (XChar2b *)(malloc(l * 2));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7296
			mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7297
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7298
		    for (i=0; i<l; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7299
			int codePoint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7300
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7301
			codePoint = ((unsigned int32 *)cp)[i];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7302
			if (codePoint > 0xFFFF) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7303
			    codePoint = 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7304
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7305
			cp2[i].byte1 = codePoint & 0xFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7306
			cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7307
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7308
		    cp = (char *) cp2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7309
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7310
		    len = XTextExtents16(f, (XChar2b *)cp, l,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7311
					    &directionReturn, &fontAscentReturn, &fontDescentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7312
					    &overAllReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7313
		    if (mustFree) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7314
			free(cp2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7315
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7316
		} else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7317
		    goto fail;      /*unknown string class */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7318
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7319
	    if (resultArray) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7320
		switch (__arraySize(anArray)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7321
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7322
		case 8:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7323
		    resultArray[7] = __MKSMALLINT(directionReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7324
		case 7:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7325
		    resultArray[6] = __MKSMALLINT(fontDescentReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7326
		case 6:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7327
		    resultArray[5] = __MKSMALLINT(fontAscentReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7328
		case 5:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7329
		    resultArray[4] = __MKSMALLINT(overAllReturn.descent);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7330
		case 4:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7331
		    resultArray[3] = __MKSMALLINT(overAllReturn.ascent);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7332
		case 3:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7333
		    resultArray[2] = __MKSMALLINT(overAllReturn.width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7334
		case 2:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7335
		    resultArray[1] = __MKSMALLINT(overAllReturn.rbearing);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7336
		case 1:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7337
		    resultArray[0] = __MKSMALLINT(overAllReturn.lbearing);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7338
		case 0:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7339
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7340
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7341
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7342
	    RETURN ( __MKSMALLINT(overAllReturn.width) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7343
	}
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7344
    }
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7345
#undef NLOCALBUFFER
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7346
fail: ;
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7347
%}.
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7348
    self primitiveFailedOrClosedConnection.
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7349
    ^ 0
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7350
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7351
    "
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7352
      |result|
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7353
      result := Array new:8.
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7354
      Screen current
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7355
	extentsOf:'hello World' from:1 to:11
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7356
	inFont:(Screen current  getFontWithFoundry:'*'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7357
		    family:'courier new'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7358
		    weight:'medium'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7359
		    slant:'r'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7360
		    spacing:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7361
		    pixelSize:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7362
		    size:10
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7363
		    encoding:#'iso10646-1'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7364
	    )
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7365
	into:result.
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7366
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7367
      result
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7368
    "
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7369
!
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7370
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7371
extractEncodingFromRegistry:registry encoding:encoding charSetCollections:charSetCollections
4004
349680545ec4 treat encoding and registry as a single entity
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  7372
    "given registry and encoding as returned by X11,
349680545ec4 treat encoding and registry as a single entity
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  7373
     generate a single symbol naming the ST/X encoding.
349680545ec4 treat encoding and registry as a single entity
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  7374
     I.e. from registry='ISO8859' and encoding='1', generate #'iso8859-1'.
349680545ec4 treat encoding and registry as a single entity
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  7375
     This is pure magic ..."
567
7b735ef0974b separated encoding-extraction into extra method
Claus Gittinger <cg@exept.de>
parents: 558
diff changeset
  7376
7b735ef0974b separated encoding-extraction into extra method
Claus Gittinger <cg@exept.de>
parents: 558
diff changeset
  7377
    |enc charSets|
7b735ef0974b separated encoding-extraction into extra method
Claus Gittinger <cg@exept.de>
parents: 558
diff changeset
  7378
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7379
    (registry size ~~ 0) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7380
	enc := registry asLowercase.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7381
	encoding size ~~ 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7382
	   enc := enc, '-', encoding asLowercase.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7383
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7384
	enc := enc asSymbol.
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7385
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7386
	(encoding size ~~ 0) ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7387
	    enc := encoding asLowercase asSymbol
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7388
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7389
	    charSets := charSetCollections.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7390
	    (charSets notEmptyOrNil) ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7391
		charSets := charSets asUppercase asCollectionOfWords.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7392
		(charSets includes:'ISO8859-1') ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7393
		    enc := #'iso8859-1'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7394
		] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7395
		    (charSets includes:'ISO8859') ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7396
			enc := #iso8859
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7397
		    ] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7398
			(charSets includes:'ASCII') ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7399
			    enc := #ascii
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7400
			] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7401
			    (charSets includes:'ADOBE-STANDARD') ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7402
				enc := #iso8859
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7403
			    ]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7404
			]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7405
		    ]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7406
		]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7407
	    ]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7408
	]
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7409
    ].
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7410
    ^  enc
567
7b735ef0974b separated encoding-extraction into extra method
Claus Gittinger <cg@exept.de>
parents: 558
diff changeset
  7411
7b735ef0974b separated encoding-extraction into extra method
Claus Gittinger <cg@exept.de>
parents: 558
diff changeset
  7412
    "Created: 17.4.1996 / 14:57:06 / cg"
568
ded98de3475f return encoding as a symbol (faster compare)
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
  7413
    "Modified: 17.4.1996 / 17:22:35 / cg"
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7414
!
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7415
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7416
flushListOfAvailableFonts
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7417
    "flush the cached list of all available fonts on this display.
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7418
     Required if new fonts have been added on the display server."
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7419
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  7420
    listOfXFonts := nil.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  7421
    XftFontDescription notNil ifTrue:[
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7422
	XftFontDescription flushListOfAvailableFonts.
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  7423
    ].
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7424
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7425
    "
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7426
     Display flushListOfAvailableFonts.
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7427
     Display listOfAvailableFonts
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7428
    "
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7429
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7430
    "Modified: 27.9.1995 / 10:54:47 / stefan"
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7431
    "Created: 20.2.1996 / 22:55:52 / cg"
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7432
!
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7433
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7434
fontDescriptionFromXFontName:aFontNameString
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7435
    "extract family, face, style and size from an
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7436
     X-font name
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7437
     1 2     3      4    5     6         7 8      9    10   11   12 13 14       15
5224
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  7438
      -brand-family-face-style-moreStyle- -pxlSize-size-resX-resY-??-??-registry-encoding;
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7439
     evaluate aBlock with these"
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7440
6010
6d7184a6456b cast to correct types
Stefan Vogel <sv@exept.de>
parents: 6009
diff changeset
  7441
    |family face style moreStyle size
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7442
     resX resY registry encoding coding fields|
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7443
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7444
    aFontNameString isNil ifTrue:[^ nil].
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7445
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7446
    Error handle:[:ex |
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7447
	family := nil.
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7448
    ] do:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7449
	fields := aFontNameString asCollectionOfSubstringsSeparatedBy:$-.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7450
	fields size == 3 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7451
	    "take care of old font names: family-style-size"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7452
	    family := fields at:1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7453
	    style := fields at:2.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7454
	    size := Number readFromString:(fields at:3).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7455
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7456
	    fields size == 2 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7457
		"take care of old font names: family-size"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7458
		family := fields at:1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7459
		size := Number readFromString:(fields at:2).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7460
	    ] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7461
		fields size >= 15 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7462
		    family := fields at:3.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7463
		    face := fields at:4.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7464
		    style := fields at:5.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7465
		    style = 'o' ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7466
			style := 'oblique'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7467
		    ] ifFalse:[style = 'i' ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7468
			 style := 'italic'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7469
		    ] ifFalse:[style = 'r' ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7470
			 style := 'roman'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7471
		    ]]].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7472
		    moreStyle := fields at:6.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7473
		    (moreStyle ~= 'normal' and:[moreStyle size > 1]) ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7474
			style := style, '-', moreStyle.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7475
		    ].
5224
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  7476
"/                    pxlSize := (Integer readFromString:(fields at:8)).
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7477
		    size := (Number readFromString:(fields at:9)) / 10.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7478
		    resX := fields at:10.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7479
		    resY := fields at:11.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7480
		    registry := fields at:14.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7481
		    encoding := fields at:15.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7482
		    coding := registry , '-' , encoding.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7483
		] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7484
		    "/ very old name (such as cursor, 5x7 etc)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7485
		]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7486
	    ]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7487
	].
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7488
    ].
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7489
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7490
    family notNil ifTrue:[
5224
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  7491
       ^ FontDescription family:family face:face style:style size:size sizeUnit:#pt encoding:coding.
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7492
    ].
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7493
    ^ FontDescription name:aFontNameString
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7494
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7495
    "
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7496
     Screen current fontDescriptionFromXFontName:'-arabic-newspaper-medium-r-normal--32-246-100-100-p-137-iso10646-1'
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7497
    "
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7498
!
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7499
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7500
fontMetricsOf:fontId
3478
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7501
    "return a fonts metrics info object"
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7502
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7503
    <context: #return>
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7504
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7505
    |info avgAscent avgDescent minCode maxCode dir
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7506
     maxAscent maxDescent minWidth maxWidth avgWidth|
991
b3a0b903bd7f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
  7507
4555
a03c1815901d new library naming scheme
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
  7508
%{  /* UNLIMITEDSTACK */
991
b3a0b903bd7f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
  7509
    XFontStruct *f;
b3a0b903bd7f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
  7510
    int len;
b3a0b903bd7f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
  7511
b3a0b903bd7f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 976
diff changeset
  7512
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7513
	if (__isExternalAddress(fontId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7514
	    f = __FontVal(fontId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7515
	    if (f) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7516
		minCode = __MKUINT((f->min_byte1<<8) + f->min_char_or_byte2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7517
		maxCode = __MKUINT((f->max_byte1<<8) + f->max_char_or_byte2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7518
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7519
		if (f->direction == FontLeftToRight) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7520
		    dir = @symbol(LeftToRight);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7521
		} else if (f->direction == FontRightToLeft) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7522
		    dir = @symbol(RightToLeft);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7523
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7524
		avgAscent = __MKSMALLINT(f->ascent);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7525
		avgDescent = __MKSMALLINT(f->descent);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7526
		maxAscent = __MKSMALLINT(f->max_bounds.ascent);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7527
		maxDescent = __MKSMALLINT(f->max_bounds.descent);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7528
		minWidth = __MKSMALLINT(f->min_bounds.width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7529
		maxWidth = __MKSMALLINT(f->max_bounds.width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7530
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7531
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7532
		len = XTextWidth(f, "n", 1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7533
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7534
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7535
		avgWidth = __MKSMALLINT( len );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7536
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7537
	}
3216
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  7538
    }
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  7539
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  7540
    avgAscent == nil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7541
	self primitiveFailedOrClosedConnection.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7542
	^ nil
3670
f61f690d281c maxAscent/Descent should be >= ascent/descent
Michael Beyl <mb@exept.de>
parents: 3650
diff changeset
  7543
    ].
f61f690d281c maxAscent/Descent should be >= ascent/descent
Michael Beyl <mb@exept.de>
parents: 3650
diff changeset
  7544
f61f690d281c maxAscent/Descent should be >= ascent/descent
Michael Beyl <mb@exept.de>
parents: 3650
diff changeset
  7545
    "DingBats font returns 0 for maxAscent/maxDescent"
f61f690d281c maxAscent/Descent should be >= ascent/descent
Michael Beyl <mb@exept.de>
parents: 3650
diff changeset
  7546
    maxAscent := maxAscent max:avgAscent.
f61f690d281c maxAscent/Descent should be >= ascent/descent
Michael Beyl <mb@exept.de>
parents: 3650
diff changeset
  7547
    maxDescent := maxDescent max:avgDescent.
3478
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7548
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7549
    info := DeviceWorkstation::DeviceFontMetrics new.
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7550
    info
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7551
      ascent:avgAscent
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7552
      descent:avgDescent
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7553
      maxAscent:maxAscent
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7554
      maxDescent:maxDescent
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7555
      minWidth:minWidth
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7556
      maxWidth:maxWidth
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7557
      avgWidth:avgWidth
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7558
      minCode:minCode
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7559
      maxCode:maxCode
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7560
      direction:dir.
3478
b9d198097d10 fontMetric stuff changed
Claus Gittinger <cg@exept.de>
parents: 3468
diff changeset
  7561
    ^ info
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7562
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7563
    "
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7564
     Screen current fontMetricsOf:(View defaultFont onDevice:Screen current) fontId
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7565
     CharacterSetView openOn:(View defaultFont onDevice:Screen current)
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7566
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7567
     Screen current fontMetricsOf:(MenuView defaultFont onDevice:Screen current) fontId
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7568
     CharacterSetView openOn:(MenuView defaultFont onDevice:Screen current)
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7569
    "
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7570
!
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7571
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7572
fontProperties:propertyNames of:aFontId
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7573
    "Answer an array with selected property values of a font.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7574
     This is X11-Specific.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7575
     PropertyNames is an array with property names (symbols or strings).
6904
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
  7576
     Nonexistent properties are returned as nil"
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7577
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7578
    |props|
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7579
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7580
    props := self fontPropertiesOf:aFontId.
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7581
    ^ propertyNames collect:[:propName | props at:propName ifAbsent:nil].
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7582
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7583
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7584
     Screen current
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7585
	fontProperties:#(#'PIXEL_SIZE' #'POINT_SIZE' RESOLUTION notExistent)
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7586
	of:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7587
    "
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7588
!
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7589
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7590
fontPropertiesOf:aFontId
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7591
    "Answer an array with all the properties of a font.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7592
     This is X11-Specific.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7593
     Odd indices contain the property name (atom)
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7594
     Even indices contain the property value (atom)
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7595
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7596
     Answer nil, if there are no properties"
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7597
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7598
    |propsArray result|
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7599
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7600
%{
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7601
    XFontStruct *f;
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7602
    XFontProp *prop;
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7603
    int n, i;
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7604
    OBJ x;
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7605
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7606
    if (__isExternalAddress(aFontId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7607
	f = __FontVal(aFontId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7608
	if (f && (prop = f->properties) != 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7609
	    n = f->n_properties;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7610
	    propsArray = __ARRAY_NEW_INT(n*2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7611
	    for (i = 0; n; n--, prop++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7612
		x = __MKUINT(prop->name); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7613
		x = __MKUINT(prop->card32); __ArrayInstPtr(propsArray)->a_element[i++] = x; __STORE(propsArray, x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7614
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7615
	}
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7616
    }
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7617
%}.
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7618
    result := Dictionary new.
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7619
    propsArray notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7620
	propsArray pairWiseDo:[:n :v | result at:(self atomName:n) put:v].
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7621
    ].
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7622
    ^ result
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7623
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7624
    "
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7625
     Screen current fontPropertiesOf:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7626
     Dictionary withKeysAndValues:(Screen current fontPropertiesOf:(Screen current getDefaultFontWithEncoding:#'iso10646-1'))
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7627
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7628
     |d|
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7629
     d := Dictionary new.
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7630
     (Screen current fontPropertiesOf:(Screen current getDefaultFontWithEncoding:#'iso10646-1')) keysAndValuesDo:[:name :value|
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7631
	  d at:name put:((Screen current atomName:value) ? value)
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7632
     ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7633
     d
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7634
    "
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7635
!
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7636
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7637
fontResolutionOf:fontId
1045
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7638
    "return the resolution (as dpiX @ dpiY) of the font - this is usually the displays resolution,
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7639
     but due to errors in some XServer installations, some use 75dpi fonts on higher
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7640
     resolution displays and vice/versa."
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7641
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7642
    |props res resX resY|
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7643
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7644
    props := self fontProperties:#(#'RESOLUTION_X' #'RESOLUTION_Y' RESOLUTION) of:fontId.
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7645
    resX := props at:1.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7646
    resY := props at:2.
1046
Claus Gittinger <cg@exept.de>
parents: 1045
diff changeset
  7647
    (resX notNil and:[resY notNil]) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7648
	^ resX @ resY
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7649
    ].
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7650
    res := props at:3.
1045
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7651
    res notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7652
	^ res @ res
1045
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7653
    ].
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7654
    ^ self resolution
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7655
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7656
    "
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7657
      Screen current fontResolutionOf:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7658
    "
1045
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7659
!
b03222053583 added query for a fonts real resolution (kludge for X)
Claus Gittinger <cg@exept.de>
parents: 1030
diff changeset
  7660
3417
88c4df032e94 Fix possible botch in #rootWindowId.
Stefan Vogel <sv@exept.de>
parents: 3414
diff changeset
  7661
fullFontNameOf:aFontId
7348
7c39d56e9beb #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 7313
diff changeset
  7662
    "the font's fullName - this is very device specific and should only be
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7663
     used for user feed-back (for example: in the fontPanel).
3417
88c4df032e94 Fix possible botch in #rootWindowId.
Stefan Vogel <sv@exept.de>
parents: 3414
diff changeset
  7664
     If the display/font does not provide that info, return nil."
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7665
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7666
    |props fullName|
4012
956fc93c6381 fontName
Claus Gittinger <cg@exept.de>
parents: 4004
diff changeset
  7667
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7668
    props := self fontPropertiesOf:aFontId.
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7669
    #('FONT' 'FONT_NAME' 'FULL_NAME' 'FULLNAME' ) do:[:try |
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7670
	|fullNameID|
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7671
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7672
	fullNameID := props at:try ifAbsent:nil.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7673
	fullNameID notNil ifTrue:[
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7674
	    fullName := self atomName:fullNameID.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7675
	    fullName notEmptyOrNil ifTrue:[
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7676
		^ fullName
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7677
	    ].
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  7678
	]
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7679
    ].
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  7680
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7681
    ^ nil.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7682
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7683
    "
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7684
     Screen current fullFontNameOf:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7685
    "
440
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7686
!
e959b8e18453 font encoding & fullName support
Claus Gittinger <cg@exept.de>
parents: 404
diff changeset
  7687
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7688
getAvailableFontsMatching:pattern
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7689
    "return an Array filled with font names matching aPattern"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7690
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  7691
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  7692
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7693
%{  /* UNLIMITEDSTACK */
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7694
5224
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  7695
    int nnames = 30000;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7696
    int available = nnames + 1;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7697
    char **fonts;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7698
    OBJ arr, str;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7699
    int i;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7700
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7701
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7702
	if (__isStringLike(pattern)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7703
	    for (;;) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7704
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7705
		fonts = XListFonts(myDpy, __stringVal(pattern), nnames, &available);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7706
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7707
		if (fonts == 0) RETURN(nil);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7708
		if (available < nnames) break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7709
		XFreeFontNames(fonts);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7710
		nnames = available * 2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7711
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7712
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7713
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7714
	     * now, that we know the number of font names,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7715
	     * create the array ...
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7716
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7717
	    arr = __ARRAY_NEW_INT(available);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7718
	    if (arr != nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7719
		/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7720
		 * ... and fill it
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7721
		 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7722
		for (i=0; i<available; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7723
		    __PROTECT__(arr);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7724
		    str = __MKSTRING(fonts[i]);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7725
		    __UNPROTECT__(arr);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7726
		    __ArrayInstPtr(arr)->a_element[i] = str; __STORE(arr, str);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7727
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7728
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7729
	    XFreeFontNames(fonts);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7730
	    RETURN (arr);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7731
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7732
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7733
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7734
    ^ nil
3801
9efc83cc0da0 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3800
diff changeset
  7735
9efc83cc0da0 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3800
diff changeset
  7736
    "
9efc83cc0da0 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3800
diff changeset
  7737
      Screen current getAvailableFontsMatching:'*'
9efc83cc0da0 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3800
diff changeset
  7738
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7739
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7740
5908
a5afc7a1721a added: #getDefaultFontWithEncoding:
Stefan Vogel <sv@exept.de>
parents: 5905
diff changeset
  7741
getDefaultFontWithEncoding:encoding
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7742
    "return a default font id - used when class Font cannot
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7743
     find anything usable"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7744
5908
a5afc7a1721a added: #getDefaultFontWithEncoding:
Stefan Vogel <sv@exept.de>
parents: 5905
diff changeset
  7745
    |id|
a5afc7a1721a added: #getDefaultFontWithEncoding:
Stefan Vogel <sv@exept.de>
parents: 5905
diff changeset
  7746
a5afc7a1721a added: #getDefaultFontWithEncoding:
Stefan Vogel <sv@exept.de>
parents: 5905
diff changeset
  7747
    id := self createFontFor:'-misc-fixed-*-*-*-*-*-*-*-*-*-*-', encoding.
a5afc7a1721a added: #getDefaultFontWithEncoding:
Stefan Vogel <sv@exept.de>
parents: 5905
diff changeset
  7748
    id isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7749
	id := self createFontFor:'fixed'
5908
a5afc7a1721a added: #getDefaultFontWithEncoding:
Stefan Vogel <sv@exept.de>
parents: 5905
diff changeset
  7750
    ].
a5afc7a1721a added: #getDefaultFontWithEncoding:
Stefan Vogel <sv@exept.de>
parents: 5905
diff changeset
  7751
    ^ id.
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7752
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7753
     "
5908
a5afc7a1721a added: #getDefaultFontWithEncoding:
Stefan Vogel <sv@exept.de>
parents: 5905
diff changeset
  7754
       Screen current getDefaultFontWithEncoding:#'iso10646-1'
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  7755
     "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7756
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7757
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7758
getFontWithFamily:familyString face:faceString
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7759
	    style:styleArgString size:sizeArgOrNil sizeUnit:sizeUnit encoding:encoding
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7760
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7761
    "try to get the specified font, if not available, try next smaller
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7762
     font. Access to X-fonts by name is possible, by passing the X font name
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7763
     as family and the other parameters as nil. For example, the cursor font
7409
2de3e4caafbb #OTHER by mawalch
mawalch
parents: 7371
diff changeset
  7764
     can be acquired that way."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7765
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7766
    |styleString theName theId xlatedStyle
5224
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  7767
     id spacing encodingMatch idx roundedSize pixelSize pointSize|
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  7768
914
6cf4cc647095 Account for 'narrow' and 'semicondensed' in X11-Fonts.
Stefan Vogel <sv@exept.de>
parents: 911
diff changeset
  7769
    styleString := styleArgString.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7770
5176
0c9f21d81a71 preps for pixel-sized fonts
Claus Gittinger <cg@exept.de>
parents: 5071
diff changeset
  7771
    sizeArgOrNil notNil ifTrue:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7772
	roundedSize := sizeArgOrNil rounded asInteger.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7773
	sizeUnit == #px ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7774
	    pixelSize := roundedSize.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7775
	] ifFalse:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7776
	    pointSize := roundedSize.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7777
	].
3990
5d9342503bf6 font stuff
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  7778
    ].
5d9342503bf6 font stuff
Claus Gittinger <cg@exept.de>
parents: 3988
diff changeset
  7779
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7780
    "special: if face is nil, allow access to X-fonts"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7781
    faceString isNil ifTrue:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7782
	roundedSize notNil ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7783
	    theName := familyString , '-' , roundedSize printString
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7784
	] ifFalse:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7785
	    theName := familyString
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7786
	].
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7787
	theName notNil ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7788
	    theId := self createFontFor:theName.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7789
	].
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7790
	theId isNil ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7791
	    theId := self getDefaultFontWithEncoding:encoding
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7792
	].
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7793
	^ theId
914
6cf4cc647095 Account for 'narrow' and 'semicondensed' in X11-Fonts.
Stefan Vogel <sv@exept.de>
parents: 911
diff changeset
  7794
    ].
6cf4cc647095 Account for 'narrow' and 'semicondensed' in X11-Fonts.
Stefan Vogel <sv@exept.de>
parents: 911
diff changeset
  7795
6cf4cc647095 Account for 'narrow' and 'semicondensed' in X11-Fonts.
Stefan Vogel <sv@exept.de>
parents: 911
diff changeset
  7796
    "/ spacing other than 'normal' is contained as last component
6cf4cc647095 Account for 'narrow' and 'semicondensed' in X11-Fonts.
Stefan Vogel <sv@exept.de>
parents: 911
diff changeset
  7797
    "/ in style
6cf4cc647095 Account for 'narrow' and 'semicondensed' in X11-Fonts.
Stefan Vogel <sv@exept.de>
parents: 911
diff changeset
  7798
1392
45ae91abdfac care for nil styleString in #getFontWithFamily...
Claus Gittinger <cg@exept.de>
parents: 1376
diff changeset
  7799
    (styleString notNil
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7800
     and:[(styleString endsWith:'-narrow')
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7801
	  or:[styleString endsWith:'-semicondensed']]) ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7802
	|i|
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7803
	i := styleString lastIndexOf:$-.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7804
	spacing := styleString copyFrom:(i+1).
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7805
	styleString := styleString copyTo:(i-1).
914
6cf4cc647095 Account for 'narrow' and 'semicondensed' in X11-Fonts.
Stefan Vogel <sv@exept.de>
parents: 911
diff changeset
  7806
    ] ifFalse:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7807
	spacing := 'normal'.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7808
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7809
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7810
    xlatedStyle := styleString.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7811
    xlatedStyle notNil ifTrue:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7812
	xlatedStyle := xlatedStyle first asString
3449
da32a634ca80 Fix name tohuwabohu
Stefan Vogel <sv@exept.de>
parents: 3424
diff changeset
  7813
    ].
da32a634ca80 Fix name tohuwabohu
Stefan Vogel <sv@exept.de>
parents: 3424
diff changeset
  7814
1576
b75c64bb5849 care for encoding & registry
Claus Gittinger <cg@exept.de>
parents: 1567
diff changeset
  7815
    encoding isNil ifTrue:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7816
	encodingMatch := '*-*'.
1576
b75c64bb5849 care for encoding & registry
Claus Gittinger <cg@exept.de>
parents: 1567
diff changeset
  7817
    ] ifFalse:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7818
	idx := encoding indexOf:$-.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7819
	idx ~~ 0 ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7820
	    encodingMatch := encoding
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7821
	] ifFalse:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7822
	    encodingMatch := encoding , '-*'.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7823
	].
1576
b75c64bb5849 care for encoding & registry
Claus Gittinger <cg@exept.de>
parents: 1567
diff changeset
  7824
    ].
b75c64bb5849 care for encoding & registry
Claus Gittinger <cg@exept.de>
parents: 1567
diff changeset
  7825
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7826
    id := self
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7827
	    getFontWithFoundry:'*'
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7828
	    family:familyString asLowercase
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7829
	    weight:faceString
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7830
	    slant:xlatedStyle
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7831
	    spacing:spacing
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7832
	    pixelSize:pixelSize
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7833
	    size:pointSize
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7834
	    encoding:encodingMatch.
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7835
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7836
    id isNil ifTrue:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7837
	(encodingMatch notNil and:[encodingMatch ~= '*']) ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7838
	    "/ too stupid: registries come in both cases
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7839
	    "/ and X does not ignore case
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7840
	    "/
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7841
	    id := self
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7842
		    getFontWithFoundry:'*'
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7843
		    family:familyString asLowercase
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7844
		    weight:faceString
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7845
		    slant:xlatedStyle
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7846
		    spacing:spacing
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7847
		    pixelSize:nil
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7848
		    size:roundedSize
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7849
		    encoding:encodingMatch asUppercase.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7850
	    id isNil ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7851
		id := self
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7852
			getFontWithFoundry:'*'
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7853
			family:familyString asLowercase
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7854
			weight:faceString
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7855
			slant:xlatedStyle
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7856
			spacing:spacing
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7857
			pixelSize:nil
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7858
			size:roundedSize
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7859
			encoding:encodingMatch asLowercase.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7860
	    ]
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
  7861
	]
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7862
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7863
    ^ id
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7864
914
6cf4cc647095 Account for 'narrow' and 'semicondensed' in X11-Fonts.
Stefan Vogel <sv@exept.de>
parents: 911
diff changeset
  7865
    "Modified: 4.7.1996 / 11:38:47 / stefan"
1576
b75c64bb5849 care for encoding & registry
Claus Gittinger <cg@exept.de>
parents: 1567
diff changeset
  7866
    "Modified: 10.4.1997 / 19:20:06 / cg"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7867
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7868
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  7869
getFontWithFoundry:foundry family:family weight:weight
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7870
	      slant:slant spacing:spc pixelSize:pSize size:size
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7871
	      encoding:encoding
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7872
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7873
    "get the specified font, if not available, return nil.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7874
     Individual attributes can be left empty (i.e. '') or nil to match any.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7875
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7876
     foundry: 'adobe', 'misc', 'dec', 'schumacher' ... usually '*'
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7877
     family:  'helvetica' 'courier' 'times' ...
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7878
     weight:  'bold' 'medium' 'demi' ...
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7879
     slant:   'r(oman)' 'i(talic)' 'o(blique)'
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7880
     spacing: 'narrow' 'normal' semicondensed' ... usually '*'
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7881
     pixelSize: 16,18 ... usually left empty
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7882
     size:      size in point (1/72th of an inch)
4004
349680545ec4 treat encoding and registry as a single entity
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  7883
     encoding:  iso8859-*, iso8859-1, iso10646-1 ... '*'
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7884
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7885
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7886
    |theName sizeMatch
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7887
     foundryMatch familyMatch weightMatch slantMatch spcMatch
4004
349680545ec4 treat encoding and registry as a single entity
Claus Gittinger <cg@exept.de>
parents: 3990
diff changeset
  7888
     pSizeMatch encodingMatch|
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7889
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7890
    "this works only on 'Release >= 3' - X-servers"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7891
    "name is:
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7892
	-foundry-family    -weight -slant-
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7893
	 sony    helvetica bold     r
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7894
	 adobe   courier   medium   i
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7895
	 msic    fixed              o
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7896
	 ...     ...
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7897
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7898
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7899
    size isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7900
	sizeMatch := '*'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7901
    ] ifFalse:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7902
	sizeMatch := size printString , '0'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7903
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7904
    foundry isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7905
	foundryMatch := '*'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7906
    ] ifFalse:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7907
	foundryMatch := foundry
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7908
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7909
    family isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7910
	familyMatch := '*'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7911
    ] ifFalse:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7912
	familyMatch := family
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7913
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7914
    weight isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7915
	weightMatch := '*'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7916
    ] ifFalse:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7917
	weightMatch := weight
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7918
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7919
    slant isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7920
	slantMatch := '*'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7921
    ] ifFalse:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7922
	slantMatch := slant
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7923
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7924
    spc isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7925
	spcMatch := '*'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7926
    ] ifFalse:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7927
	spcMatch := spc
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7928
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7929
    pSize isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7930
	pSizeMatch := '*'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7931
    ] ifFalse:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7932
	pSizeMatch := pSize printString
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7933
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7934
    encoding isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7935
	encodingMatch := '*'
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7936
    ] ifFalse:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7937
	encodingMatch := encoding
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7938
    ].
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7939
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7940
    theName := ('-' , foundryMatch,
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7941
		'-' , familyMatch,
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7942
		'-' , weightMatch ,
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7943
		'-' , slantMatch ,
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7944
		'-' , spcMatch ,
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7945
		'-*' ,
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7946
		'-' , pSizeMatch ,
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7947
		'-' , sizeMatch ,
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7948
		'-*-*-*-*' ,
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7949
		'-' , encodingMatch).
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7950
697
cba925eed3da showCr: -> showCR:
Claus Gittinger <cg@exept.de>
parents: 652
diff changeset
  7951
"/  Transcript showCR:theName; endEntry.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7952
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7953
    ^ self createFontFor:theName.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7954
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7955
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7956
    "
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  7957
     Display
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7958
	getFontWithFoundry:'*'
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7959
	family:'courier'
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7960
	weight:'medium'
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7961
	slant:'r'
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7962
	spacing:nil
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7963
	pixelSize:nil
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7964
	size:13
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7965
	encoding:#'iso8859-1'.
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7966
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7967
     Display
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7968
	getFontWithFoundry:'*'
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7969
	family:'courier'
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7970
	weight:'medium'
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7971
	slant:'r'
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7972
	spacing:nil
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7973
	pixelSize:nil
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7974
	size:13
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
  7975
	encoding:#'iso10646-1'
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7976
    "
457
b40bf5d8727c ignore vendor-encoding (use only registry for match)
Claus Gittinger <cg@exept.de>
parents: 449
diff changeset
  7977
1576
b75c64bb5849 care for encoding & registry
Claus Gittinger <cg@exept.de>
parents: 1567
diff changeset
  7978
    "Modified: 10.4.1997 / 19:15:44 / cg"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7979
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  7980
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7981
heightOf:aString from:index1 to:index2 inFont:aFontId
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7982
    |resultArray|
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7983
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7984
    resultArray := Array new:5.
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7985
    self extentsOf:aString from:index1 to:index2 inFont:aFontId into:resultArray.
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7986
    ^ (resultArray at:4) + (resultArray at:5).
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7987
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7988
    "
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  7989
      Screen current
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7990
	heightOf:'hello world' from:1 to:10
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7991
	inFont:(Screen current  getFontWithFoundry:'*'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7992
		    family:'courier new'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7993
		    weight:'medium'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7994
		    slant:'r'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7995
		    spacing:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7996
		    pixelSize:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7997
		    size:13
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7998
		    encoding:#'iso10646-1'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  7999
	    ).
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8000
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8001
      Screen current
7096
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7036 7086
diff changeset
  8002
	heightOf:'hello World ggg' from:1 to:15
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8003
	inFont:(Screen current getDefaultFontWithEncoding:#'iso10646-1')
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8004
    "
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8005
!
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8006
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8007
listOfAvailableFonts
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8008
    "return a list with all available fonts on this display.
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  8009
     Since this takes some time, keep the result of the query for the
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8010
     next time. The elements of the returned collection are instances of
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8011
     FontDescription."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8012
6630
81c3e5842617 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6571
diff changeset
  8013
    |names listOfXftFonts|
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8014
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8015
    listOfXFonts isNil ifTrue:[
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8016
	names := self getAvailableFontsMatching:'*'.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8017
	names isNil ifTrue:[
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8018
	    "no names returned ..."
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8019
	    ^ nil
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8020
	].
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8021
	listOfXFonts := names collect:[:aName | self fontDescriptionFromXFontName:aName].
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8022
	listOfXFonts := FontDescription genericFonts, listOfXFonts.
7119
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
  8023
    ].
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
  8024
ecda1d9eb5d6 #REFACTORING
Stefan Vogel <sv@exept.de>
parents: 7092
diff changeset
  8025
    self supportsXftFonts ifTrue:[
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8026
	UserPreferences current useXFontsOnly ifFalse:[
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8027
	    listOfXftFonts := XftFontDescription listOfAvailableFonts.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8028
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8029
	    UserPreferences current useXftFontsOnly ifTrue:[
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8030
		^ listOfXftFonts
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8031
	    ].
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8032
	    ^ listOfXftFonts , listOfXFonts.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  8033
	].
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8034
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8035
    ^ listOfXFonts
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8036
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8037
    "
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  8038
     Display flushListOfAvailableFonts.
568
ded98de3475f return encoding as a symbol (faster compare)
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
  8039
     Display listOfAvailableFonts.
ded98de3475f return encoding as a symbol (faster compare)
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
  8040
4020
f4bf2bd8272e draw direction
Claus Gittinger <cg@exept.de>
parents: 4016
diff changeset
  8041
     Display getAvailableFontsMatching:'*'.
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  8042
     Display getAvailableFontsMatching:'fixed'.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  8043
     Display fontsInFamily:'fixed' filtering:nil.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8044
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8045
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8046
    "Modified: 27.9.1995 / 10:54:47 / stefan"
568
ded98de3475f return encoding as a symbol (faster compare)
Claus Gittinger <cg@exept.de>
parents: 567
diff changeset
  8047
    "Modified: 17.4.1996 / 15:27:57 / cg"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8048
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8049
5224
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8050
pixelSizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8051
    "return a set of all available font sizes in aFamily/aFace/aStyle
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8052
     on this display.
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8053
     Redefined to handle X's special case of 0-size (which stands for any)"
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8054
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8055
    |sizes|
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8056
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8057
    sizes := super pixelSizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter.
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8058
    (sizes notNil and:[sizes isEmpty or:[sizes includes:0]]) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8059
	"special: in X11R5 and above, size 0 means:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8060
	 there are scaled versions in all sizes available"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8061
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8062
	^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64 72 96 144 192 288)
5224
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8063
    ].
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8064
    ^ sizes
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8065
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8066
    "
6106
6106164b8eec class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6096
diff changeset
  8067
     Display pixelSizesInFamily:'courier' face:'bold' style:'roman' filtering:nil
5224
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8068
    "
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8069
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8070
    "Created: 27.2.1996 / 01:38:15 / cg"
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8071
!
c783e3151cc3 Support pixel-sized fonts
Stefan Vogel <sv@exept.de>
parents: 5194
diff changeset
  8072
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8073
releaseFont:aFontId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8074
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8075
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8076
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8077
    XFontStruct *f;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8078
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  8079
    /*
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  8080
     * ignore closed connection
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
  8081
     */
1212
e06a0a01a817 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1211
diff changeset
  8082
    if (! ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8083
	RETURN ( self );
1212
e06a0a01a817 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1211
diff changeset
  8084
    }
e06a0a01a817 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1211
diff changeset
  8085
e06a0a01a817 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1211
diff changeset
  8086
    if (__isExternalAddress(aFontId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8087
	f = __FontVal(aFontId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8088
	if (f) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8089
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8090
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8091
	    XFreeFont(myDpy, f);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8092
	    LEAVE_XLIB();
923
64bbcd3ee100 added debug counting of X resource allocation
Claus Gittinger <cg@exept.de>
parents: 918
diff changeset
  8093
#ifdef COUNT_RESOURCES
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8094
	    __cnt_font--;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8095
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8096
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8097
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8098
    }
402
f5a53e2a868d check for being connected in font query methods
Claus Gittinger <cg@exept.de>
parents: 397
diff changeset
  8099
%}.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8100
    self primitiveFailed
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8101
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8102
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8103
sizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8104
    "return a set of all available font sizes in aFamily/aFace/aStyle
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8105
     on this display.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8106
     Redefined to handle X's special case of 0-size (which stands for any)"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8107
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8108
    |sizes|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8109
466
257f4414a176 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 463
diff changeset
  8110
    sizes := super sizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8111
    (sizes notNil and:[sizes includes:0]) ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  8112
	"special: in X11R5 and above, size 0 means:
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  8113
	 there are scaled versions in all sizes available"
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  8114
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
  8115
	^ #(4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 20 22 24 28 32 48 64 72 96 144 192 288)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8116
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8117
    ^ sizes
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8118
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8119
    "
6106
6106164b8eec class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6096
diff changeset
  8120
     Display sizesInFamily:'courier' face:'bold' style:'roman' filtering:nil
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8121
    "
466
257f4414a176 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 463
diff changeset
  8122
257f4414a176 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 463
diff changeset
  8123
    "Created: 27.2.1996 / 01:38:15 / cg"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8124
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8125
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8126
widthOf:aString from:index1 to:index2 inFont:aFontId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8127
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8128
    <context: #return>
4555
a03c1815901d new library naming scheme
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
  8129
a03c1815901d new library naming scheme
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
  8130
%{  /* UNLIMITEDSTACK */
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8131
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8132
    XFontStruct *f;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8133
    char *cp;
486
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  8134
    int len, n, i1, i2, l;
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  8135
#   define NLOCALBUFFER 200
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  8136
    XChar2b xlatebuffer[NLOCALBUFFER];
481
62f1be5db8aa also support string-subclasses in stringDraw methods
Claus Gittinger <cg@exept.de>
parents: 480
diff changeset
  8137
    int nInstBytes;
3482
5c86f1218cfc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  8138
    int directionReturn, fontAscentReturn, fontDescentReturn;
5c86f1218cfc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  8139
    XCharStruct overAllReturn;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8140
402
f5a53e2a868d check for being connected in font query methods
Claus Gittinger <cg@exept.de>
parents: 397
diff changeset
  8141
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8142
	if (__bothSmallInteger(index1, index2)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8143
	 && __isExternalAddress(aFontId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8144
	 && __isNonNilObject(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8145
	    int lMax = __intVal(@global(MaxStringLength));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8146
	    f = __FontVal(aFontId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8147
	    if (! f) goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8148
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8149
	    i1 = __intVal(index1) - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8150
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8151
	    if (i1 >= 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8152
		OBJ cls;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8153
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8154
		i2 = __intVal(index2) - 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8155
		if (i2 < i1) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8156
		    RETURN ( __MKSMALLINT(0) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8157
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8158
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8159
		cp = (char *) __stringVal(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8160
		l = i2 - i1 + 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8161
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8162
		if (__isStringLike(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8163
		    n = __stringSize(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8164
		    if (i2 < n) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8165
			cp += i1;
3482
5c86f1218cfc checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3478
diff changeset
  8166
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8167
#if 1
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8168
			len = XTextExtents(f, cp, l,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8169
						&directionReturn, &fontAscentReturn, &fontDescentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8170
						&overAllReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8171
			//console_printf("lBear:%d rBear:%d width:%d\n", overAllReturn.lbearing, overAllReturn.rbearing, overAllReturn.width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8172
			RETURN ( __MKSMALLINT(overAllReturn.width) );
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8173
#else
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8174
			ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8175
			len = XTextWidth(f, cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8176
			LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8177
			RETURN ( __MKSMALLINT(len) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8178
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8179
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8180
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8181
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8182
		cls = __qClass(aString);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8183
		nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8184
		cp += nInstBytes;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8185
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8186
		if (__isBytes(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8187
		    n = __byteArraySize(aString) - nInstBytes;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8188
		    if (i2 < n) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8189
			cp += i1;
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
  8190
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8191
#if 1
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8192
			len = XTextExtents(f, cp, l,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8193
						&directionReturn, &fontAscentReturn, &fontDescentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8194
						&overAllReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8195
			RETURN ( __MKSMALLINT(overAllReturn.width) );
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8196
#else
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8197
			ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8198
			len = XTextWidth(f, cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8199
			LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8200
			RETURN ( __MKSMALLINT(len) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8201
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8202
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8203
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8204
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8205
		/* TWOBYTESTRINGS */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8206
		if (__isWords(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8207
		    n = (__byteArraySize(aString) - nInstBytes) / 2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8208
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8209
		    if (i2 < n) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8210
			union {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8211
			    char b[2];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8212
			    unsigned short s;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8213
			} u;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8214
			int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8215
			XChar2b *cp2 = (XChar2b *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8216
			int mustFree = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8217
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8218
			cp += (i1 * 2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8219
			if (l > lMax) l = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8220
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8221
			/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8222
			 * ST/X TwoByteStrings store the asciiValue in native byteOrder;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8223
			 * X expects them MSB first
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8224
			 * convert as required
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8225
			 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8226
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8227
			u.s = 0x1234;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8228
			if (u.b[0] != 0x12) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8229
			    if (l <= NLOCALBUFFER) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8230
				cp2 = xlatebuffer;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8231
			    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8232
				cp2 = (XChar2b *)(malloc(l * 2));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8233
				mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8234
			    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8235
			    for (i=0; i<l; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8236
				cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8237
				cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8238
			    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8239
			    cp = (char *) cp2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8240
			}
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
  8241
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8242
#if 1
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8243
			len = XTextExtents16(f, (XChar2b *)cp, l,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8244
						&directionReturn, &fontAscentReturn, &fontDescentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8245
						&overAllReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8246
			len = overAllReturn.width;
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8247
#else
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8248
			ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8249
			len = XTextWidth16(f, (XChar2b *)cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8250
			LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8251
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8252
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8253
			if (mustFree) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8254
			    free(cp2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8255
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8256
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8257
			RETURN ( __MKSMALLINT(len) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8258
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8259
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8260
		/* FOURBYTESTRINGS */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8261
		if (__isLongs(aString)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8262
		    int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8263
		    XChar2b *cp2;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8264
		    int mustFree = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8265
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8266
		    n = (__byteArraySize(aString) - nInstBytes) / 4;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8267
		    if (i2 < n) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8268
			union {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8269
			    char b[2];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8270
			    unsigned short s;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8271
			} u;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8272
			int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8273
			XChar2b *cp2 = (XChar2b *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8274
			int mustFree = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8275
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8276
			cp += (i1 * 4);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8277
			if (l > lMax) l = lMax;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8278
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8279
			/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8280
			 * For now: X does not support 32bit characters without the new 32Unicode extensions.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8281
			 * For now, treat chars above 0xFFFF as 0xFFFF (should we use default-char ?).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8282
			 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8283
			if (l <= NLOCALBUFFER) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8284
			    cp2 = xlatebuffer;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8285
			} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8286
			    cp2 = (XChar2b *)(malloc(l * 2));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8287
			    mustFree = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8288
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8289
			for (i=0; i<l; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8290
			    int codePoint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8291
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8292
			    codePoint = ((unsigned int32 *)cp)[i];
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8293
			    if (codePoint > 0xFFFF) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8294
				codePoint = 0xFFFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8295
			    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8296
			    cp2[i].byte1 = codePoint & 0xFF;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8297
			    cp2[i].byte2 = (codePoint >> 8) & 0xFF;;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8298
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8299
			cp = (char *) cp2;
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
  8300
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8301
#if 1
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8302
			len = XTextExtents16(f, (XChar2b *)cp, l,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8303
						&directionReturn, &fontAscentReturn, &fontDescentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8304
						&overAllReturn);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8305
			len = overAllReturn.width;
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
  8306
#else
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8307
			ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8308
			len = XTextWidth16(f, (XChar2b *)cp, l);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8309
			LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8310
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8311
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8312
			if (mustFree) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8313
			    free(cp2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8314
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8315
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8316
			RETURN ( __MKSMALLINT(len) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8317
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8318
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8319
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8320
	}
486
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  8321
    }
0c35ed67797d oops - 16bit drawing was corrupted / fixed widthOf-16bit for byteSwapped displays
Claus Gittinger <cg@exept.de>
parents: 481
diff changeset
  8322
#undef NLOCALBUFFER
995
2f2c0b2bff1a check fontStruct args - could be nil (but only if caller is wrong)
Claus Gittinger <cg@exept.de>
parents: 994
diff changeset
  8323
fail: ;
402
f5a53e2a868d check for being connected in font query methods
Claus Gittinger <cg@exept.de>
parents: 397
diff changeset
  8324
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8325
    self primitiveFailedOrClosedConnection.
1361
784d654780e6 added circulate event hooks;
Claus Gittinger <cg@exept.de>
parents: 1345
diff changeset
  8326
    ^ 0
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8327
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8328
3177
8aa3c800394a category rename
Claus Gittinger <cg@exept.de>
parents: 3146
diff changeset
  8329
!XWorkstation methodsFor:'grabbing'!
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8330
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8331
allowEvents:mode
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8332
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8333
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8334
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8335
    int _mode, ok = 1;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8336
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8337
    if (mode == @symbol(asyncPointer))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8338
	_mode = AsyncPointer;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8339
    else if (mode == @symbol(syncPointer))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8340
	_mode = SyncPointer;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8341
    else if (mode == @symbol(asyncKeyboard))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8342
	_mode = AsyncKeyboard;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8343
    else if (mode == @symbol(syncKeyboard))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8344
	_mode = SyncKeyboard;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8345
    else if (mode == @symbol(syncBoth))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8346
	_mode = SyncBoth;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8347
    else if (mode == @symbol(asyncBoth))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8348
	_mode = AsyncBoth;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8349
    else if (mode == @symbol(replayPointer))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8350
	_mode = ReplayPointer;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8351
    else if (mode == @symbol(replayKeyboard))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8352
	_mode = ReplayKeyboard;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8353
    else
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8354
	ok = 0;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8355
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8356
    if (ok
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8357
     && ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8358
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8359
	XAllowEvents(myDpy, _mode, CurrentTime);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8360
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8361
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8362
	RETURN (self);
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8363
    }
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8364
%}.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8365
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8366
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8367
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8368
grabKeyboardIn:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8369
    "grab the keyboard"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8370
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8371
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8372
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8373
    int result, ok;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8374
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8375
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8376
	if (__isExternalAddress(aWindowId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8377
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8378
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8379
	    result = XGrabKeyboard(myDpy,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8380
				   __WindowVal(aWindowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8381
				   True /* False */,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8382
				   GrabModeAsync,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8383
				   GrabModeAsync,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8384
				   CurrentTime);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8385
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8386
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8387
	    ok = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8388
	    switch(result) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8389
		case AlreadyGrabbed:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8390
		    if (@global(ErrorPrinting) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8391
			console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: AlreadyGrabbed\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8392
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8393
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8394
		case GrabNotViewable:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8395
		    if (@global(ErrorPrinting) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8396
			console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: GrabNotViewable\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8397
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8398
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8399
		case GrabInvalidTime:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8400
		    if (@global(ErrorPrinting) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8401
			console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: InvalidTime\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8402
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8403
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8404
		case GrabFrozen:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8405
		    if (@global(ErrorPrinting) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8406
			console_fprintf(stderr, "XWorkstation [warning]: grab keyboard: Frozen\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8407
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8408
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8409
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8410
		    ok = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8411
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8412
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8413
	    if (! ok) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8414
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8415
		XUngrabKeyboard(myDpy, CurrentTime);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8416
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8417
		RETURN (false);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8418
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8419
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8420
	    RETURN ( true );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8421
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8422
    }
1183
28cfb8ef3504 new messages
Claus Gittinger <cg@exept.de>
parents: 1180
diff changeset
  8423
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8424
    self primitiveFailedOrClosedConnection.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8425
    ^ false
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8426
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8427
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8428
grabPointerIn:aWindowId withCursor:aCursorId eventMask:eventMask pointerMode:pMode keyboardMode:kMode confineTo:confineId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8429
    "grap the pointer - return true if ok"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8430
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8431
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8432
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8433
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8434
    int result, ok, evMask;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8435
    Window confineWin;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8436
    Cursor curs;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8437
    int pointer_mode, keyboard_mode;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8438
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8439
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8440
	if (__isExternalAddress(aWindowId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8441
	    if (__isExternalAddress(confineId))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8442
		confineWin = __WindowVal(confineId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8443
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8444
		confineWin = (Window) None;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8445
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8446
	    if (__isExternalAddress(aCursorId))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8447
		curs = __CursorVal(aCursorId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8448
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8449
		curs = (Cursor) None;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8450
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8451
	    if (pMode == @symbol(sync))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8452
		pointer_mode = GrabModeSync;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8453
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8454
		pointer_mode = GrabModeAsync;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8455
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8456
	    if (kMode == @symbol(sync))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8457
		keyboard_mode = GrabModeSync;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8458
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8459
		keyboard_mode = GrabModeAsync;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8460
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8461
	    if (__isSmallInteger(eventMask))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8462
		evMask = __intVal(eventMask);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8463
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8464
		evMask = ButtonPressMask | ButtonMotionMask | PointerMotionMask | ButtonReleaseMask;
2305
7746d6252645 added supportsBackgroundPixmaps query (for win32 compatibility)
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  8465
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
  8466
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8467
/*
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8468
	    ENTER_XLIB();
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8469
*/
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8470
	    result = XGrabPointer(myDpy,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8471
				  __WindowVal(aWindowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8472
				  False,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8473
				  evMask,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8474
				  pointer_mode, keyboard_mode,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8475
				  confineWin,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8476
				  curs,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8477
				  CurrentTime);
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8478
/*
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8479
	    LEAVE_XLIB();
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8480
*/
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
  8481
2305
7746d6252645 added supportsBackgroundPixmaps query (for win32 compatibility)
Claus Gittinger <cg@exept.de>
parents: 2289
diff changeset
  8482
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8483
	    ok = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8484
	    switch (result) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8485
		case AlreadyGrabbed:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8486
		    if (@global(ErrorPrinting) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8487
			console_fprintf(stderr, "XWorkstation [warning]: grab pointer: AlreadyGrabbed\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8488
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8489
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8490
		case GrabNotViewable:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8491
		    if (@global(ErrorPrinting) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8492
			console_fprintf(stderr, "XWorkstation [warning]: grab pointer: GrabNotViewable\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8493
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8494
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8495
		case GrabInvalidTime:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8496
		    if (@global(ErrorPrinting) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8497
			console_fprintf(stderr, "XWorkstation [warning]: grab pointer: InvalidTime\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8498
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8499
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8500
		case GrabFrozen:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8501
		    if (@global(ErrorPrinting) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8502
			console_fprintf(stderr, "XWorkstation [warning]: grab pointer: Frozen\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8503
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8504
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8505
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8506
		    ok = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8507
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8508
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8509
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8510
	    if (! ok) {
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8511
/*
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8512
		ENTER_XLIB();
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8513
*/
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8514
		XUngrabPointer(myDpy, CurrentTime);
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8515
/*
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8516
		LEAVE_XLIB();
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8517
*/
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8518
		RETURN (false);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8519
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8520
	    RETURN ( true );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8521
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8522
    }
1183
28cfb8ef3504 new messages
Claus Gittinger <cg@exept.de>
parents: 1180
diff changeset
  8523
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8524
    self primitiveFailedOrClosedConnection.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8525
    ^ false
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8526
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8527
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8528
grabPointerIn:aWindowId withCursor:aCursorId pointerMode:pMode keyboardMode:kMode confineTo:confineId
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8529
    "grap the pointer - return true if ok"
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8530
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8531
    ^ self
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8532
	grabPointerIn:aWindowId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8533
	withCursor:aCursorId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8534
	eventMask:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8535
	pointerMode:pMode
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8536
	keyboardMode:kMode
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8537
	confineTo:confineId
2195
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8538
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8539
    "Modified: / 28.7.1998 / 02:47:51 / cg"
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8540
!
f64b74292537 arrange for pointerMotion to be also sent, when grabbing the pointer.
Claus Gittinger <cg@exept.de>
parents: 2176
diff changeset
  8541
3225
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8542
primUngrabKeyboard
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8543
    "release the keyboard"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8544
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8545
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8546
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8547
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8548
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8549
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8550
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8551
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8552
	XUngrabKeyboard(dpy, CurrentTime);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8553
	XSync(dpy, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8554
	LEAVE_XLIB();
3225
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8555
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8556
    }
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8557
%}.
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8558
!
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8559
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8560
primUngrabPointer
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8561
    "release the pointer"
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8562
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8563
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8564
%{
3225
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8565
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8566
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8567
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8568
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8569
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8570
	XUngrabPointer(dpy, CurrentTime);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8571
	XSync(dpy, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8572
	LEAVE_XLIB();
3225
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8573
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8574
    }
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8575
%}.
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8576
!
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8577
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8578
ungrabKeyboard
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8579
    "release the keyboard"
ea4d18da0983 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3223
diff changeset
  8580
3467
66a720085cd7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3464
diff changeset
  8581
    activeKeyboardGrab notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8582
	activeKeyboardGrab := nil.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8583
	self primUngrabKeyboard.
3453
be18ea6dfbad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3449
diff changeset
  8584
    ]
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8585
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8586
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8587
ungrabPointer
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8588
    "release the pointer"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8589
3467
66a720085cd7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3464
diff changeset
  8590
    activePointerGrab notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8591
	activePointerGrab := nil.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8592
	self primUngrabPointer.
3453
be18ea6dfbad *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3449
diff changeset
  8593
    ]
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8594
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8595
6570
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8596
!XWorkstation methodsFor:'grabbing-keys'!
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8597
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8598
grabKey:keySymCodeOrChar modifier:modifierMaskOrNil grabModeKeyboard:modeKbd grabModePointer:modePtr window:aWindowIdOrNil
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8599
    "internal basic entry to grab a single key either for an individual window
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8600
     or the whole screen (if aWindowIdOrNil is nil).
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8601
     The keySymCodeOrChar argument may be a keySym (name of a key) or an integer (the keySymCode)
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8602
     or a character.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8603
     The modifierMaskOrNil is as mask as returned by altModifierMask, ctrlModifierMask, etc.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8604
     if nil, the key is grabbed with AnyModifier.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8605
     ModeKbd and modePtr are symbols GrabModeAsync or GrabModeSync.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8606
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8607
     After that, this key-event will no longer be sent to the window/screen.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8608
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8609
     Use with care: the only useful application is to define a special hotKey
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8610
     to start/stop event recorders without a need for a click or focus change.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8611
     Once grabbed, those key events will be exclusively reported to me.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8612
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8613
     Use GrabModeSync with big care - you can easily lock up your Xserver,
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8614
     and have to kill ST/X or force an ungrab from a remote login if you have.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8615
    "
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8616
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8617
%{
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8618
    int modifierMask = AnyModifier;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8619
    KeySym keySym, *syms;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8620
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8621
    if (__isStringLike(keySymCodeOrChar)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8622
	keySym = XStringToKeysym(__stringVal(keySymCodeOrChar));
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8623
    } else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8624
	if (__isCharacter(keySymCodeOrChar)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8625
	    char s[2];
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8626
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8627
	    s[0] = __intVal(__characterVal(keySymCodeOrChar));
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8628
	    s[1] = '\0';
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8629
	    keySym = XStringToKeysym(s);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8630
	} else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8631
	    if (__isSmallInteger(keySymCodeOrChar)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8632
		keySym = (KeySym) __intVal(keySymCodeOrChar);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8633
	    } else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8634
		goto notOK;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8635
	    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8636
	}
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8637
    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8638
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8639
    if (modifierMaskOrNil != nil) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8640
	if (__isSmallInteger(modifierMaskOrNil)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8641
	    modifierMask = __intVal(modifierMaskOrNil);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8642
	} else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8643
	    goto notOK;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8644
	}
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8645
    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8646
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8647
    if (ISCONNECTED) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8648
	Display *dpy;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8649
	Window window;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8650
	int keyCode;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8651
	int result;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8652
	int mKbd, mPtr;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8653
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8654
	mKbd = modeKbd == @symbol(GrabModeAsync) ? GrabModeAsync :GrabModeSync;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8655
	mPtr = modePtr == @symbol(GrabModeAsync) ? GrabModeAsync :GrabModeSync;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8656
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8657
	dpy = myDpy;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8658
	keyCode = XKeysymToKeycode(dpy, keySym);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8659
	if (__isExternalAddress(aWindowIdOrNil)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8660
	    window = __WindowVal(aWindowIdOrNil);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8661
	} else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8662
	    int screen;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8663
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8664
	    screen = DefaultScreen(dpy);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8665
	    window = RootWindow(dpy, screen);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8666
	}
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8667
	ENTER_XLIB();
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8668
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8669
	result = XGrabKey (dpy,
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8670
	    keyCode, modifierMask, window,
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8671
	    False, mKbd, mPtr );
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8672
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8673
	XSync(dpy, True);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8674
	XFlush(dpy);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8675
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8676
	LEAVE_XLIB();
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8677
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8678
	if (result != Success) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8679
	    if (result == BadAccess) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8680
		__INST(lastError) = @symbol(badAccess);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8681
	    } else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8682
		__INST(lastError) = @symbol(other);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8683
	    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8684
	    RETURN (false);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8685
	}
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8686
	RETURN (true);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8687
    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8688
  notOK: ;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8689
%}.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8690
    self primitiveFailedOrClosedConnection
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8691
!
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8692
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8693
grabKey:keySymCodeOrChar modifier:modifierMaskOrNil window:aWindowIdOrNil
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8694
    "grab a single key either for an individual window
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8695
     or the whole screen (if aWindowIdOrNil is nil).
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8696
     The keySymCodeOrChar argument may be a keySym (name of a key) or an integer (the keySymCode)
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8697
     or a character.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8698
     The modifierMaskOrNil is as mask as returned by altModifierMask, ctrlModifierMask, etc.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8699
     if nil, the key is grabbed with AnyModifier.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8700
     Only the key is passed to myself - no permanent grab is installed.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8701
     (GrabModeAsync)"
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8702
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8703
    ^ self
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8704
	grabKey:keySymCodeOrChar
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8705
	modifier:modifierMaskOrNil
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8706
	grabModeKeyboard:#GrabModeAsync
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8707
	grabModePointer:#GrabModeAsync
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8708
	window:aWindowIdOrNil
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8709
!
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8710
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8711
ungrabKey:keySymCodeOrChar modifier:modifierMaskOrNil window:aWindowIdOrNil
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8712
    "ungrab a single key as previously grabbed via grabKey:
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8713
     Read the comment there."
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8714
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8715
%{
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8716
    int modifierMask = AnyModifier;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8717
    KeySym keySym, *syms;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8718
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8719
    if (__isStringLike(keySymCodeOrChar)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8720
	keySym = XStringToKeysym(__stringVal(keySymCodeOrChar));
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8721
    } else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8722
	if (__isCharacter(keySymCodeOrChar)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8723
	    char s[2];
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8724
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8725
	    s[0] = __intVal(__characterVal(keySymCodeOrChar));
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8726
	    s[1] = '\0';
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8727
	    keySym = XStringToKeysym(s);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8728
	} else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8729
	    if (__isSmallInteger(keySymCodeOrChar)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8730
		keySym = (KeySym) __intVal(keySymCodeOrChar);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8731
	    } else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8732
		goto notOK;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8733
	    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8734
	}
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8735
    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8736
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8737
    if (modifierMaskOrNil != nil) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8738
	if (__isSmallInteger(modifierMaskOrNil)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8739
	    modifierMask = __intVal(modifierMaskOrNil);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8740
	} else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8741
	    goto notOK;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8742
	}
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8743
    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8744
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8745
    if (ISCONNECTED) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8746
	Display *dpy;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8747
	Window window;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8748
	int keyCode;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8749
	int result;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8750
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8751
	dpy = myDpy;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8752
	if (__isExternalAddress(aWindowIdOrNil)) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8753
	    window = __WindowVal(aWindowIdOrNil);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8754
	} else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8755
	    int screen;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8756
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8757
	    screen = DefaultScreen(dpy);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8758
	    window = RootWindow(dpy, screen);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8759
	}
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8760
	keyCode = XKeysymToKeycode(dpy, keySym);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8761
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8762
	ENTER_XLIB();
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8763
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8764
	result = XUngrabKey (dpy, keyCode, modifierMask, window);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8765
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8766
	XSync(dpy, True);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8767
	XFlush(dpy);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8768
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8769
	LEAVE_XLIB();
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8770
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8771
	if (result != Success) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8772
	    if (result == BadAccess) {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8773
		__INST(lastError) = @symbol(badAccess);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8774
	    } else {
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8775
		__INST(lastError) = @symbol(other);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8776
	    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8777
	    RETURN (false);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8778
	}
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8779
	RETURN (true);
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8780
    }
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8781
  notOK: ;
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8782
%}.
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8783
    self primitiveFailedOrClosedConnection
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8784
! !
6751a32c66ec Removed leftover debug print
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6569
diff changeset
  8785
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8786
!XWorkstation methodsFor:'graphic context stuff'!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8787
1709
342fc0eb3517 pass drawableId to clip methods (req'd for Windows)
Claus Gittinger <cg@exept.de>
parents: 1695
diff changeset
  8788
noClipIn:aDrawableId gc:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8789
    "disable clipping rectangle"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8790
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8791
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8792
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8793
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8794
    XGCValues gcv;
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  8795
    GC gc;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8796
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8797
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8798
	if (__isExternalAddress(aGCId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8799
	    gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8800
	    gcv.clip_mask = None;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8801
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8802
	    XChangeGC(myDpy, gc, GCClipMask, &gcv);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8803
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8804
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8805
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8806
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8807
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8808
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8809
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8810
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8811
setBackground:bgColorIndex in:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8812
    "set background color to be drawn with"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8813
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8814
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8815
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8816
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8817
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8818
	if (__isExternalAddress(aGCId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8819
	 && __isSmallInteger(bgColorIndex)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8820
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8821
	    XSetBackground(myDpy, __GCVal(aGCId), __intVal(bgColorIndex));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8822
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8823
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8824
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8825
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8826
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8827
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8828
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8829
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8830
setBitmapMask:aBitmapId in:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8831
    "set or clear the drawing mask - a bitmap mask using current fg/bg"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8832
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8833
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8834
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8835
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  8836
    GC gc;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8837
    Pixmap bitmap;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8838
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8839
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8840
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8841
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8842
	if (__isExternalAddress(aGCId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8843
	    gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8844
	    if (__isExternalAddress(aBitmapId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8845
		bitmap = __PixmapVal(aBitmapId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8846
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8847
		XSetStipple(dpy, gc, bitmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8848
		XSetFillStyle(dpy, gc, FillOpaqueStippled);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8849
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8850
		RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8851
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8852
	    if (aBitmapId == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8853
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8854
		XSetFillStyle(dpy, gc, FillSolid);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8855
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8856
		RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8857
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8858
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8859
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8860
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8861
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8862
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8863
1681
069ede63fb19 pass both drawableId & gcID to setClipByChildren
Claus Gittinger <cg@exept.de>
parents: 1627
diff changeset
  8864
setClipByChildren:aBool in:aDrawableId gc:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8865
    "enable/disable drawing into child views"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8866
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8867
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8868
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8869
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8870
    XGCValues gcv;
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  8871
    GC gc;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8872
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8873
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8874
	if (__isExternalAddress(aGCId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8875
	    gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8876
	    if (aBool == true)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8877
		gcv.subwindow_mode = ClipByChildren;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8878
	    else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8879
		gcv.subwindow_mode = IncludeInferiors;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8880
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8881
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8882
	    XChangeGC(myDpy, gc, GCSubwindowMode, &gcv);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8883
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8884
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8885
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8886
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8887
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8888
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8889
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8890
1709
342fc0eb3517 pass drawableId to clip methods (req'd for Windows)
Claus Gittinger <cg@exept.de>
parents: 1695
diff changeset
  8891
setClipX:clipX y:clipY width:clipWidth height:clipHeight in:drawableId gc:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8892
    "clip to a rectangle"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8893
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8894
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8895
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8896
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8897
    XRectangle r;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8898
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8899
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8900
	if (__isExternalAddress(aGCId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8901
	 && __bothSmallInteger(clipX, clipY)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8902
	 && __bothSmallInteger(clipWidth, clipHeight)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8903
	    r.x = __intVal(clipX);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8904
	    r.y = __intVal(clipY);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8905
	    r.width = __intVal(clipWidth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8906
	    r.height = __intVal(clipHeight);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8907
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8908
	    XSetClipRectangles(myDpy, __GCVal(aGCId), 0, 0, &r, 1, Unsorted);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8909
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8910
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8911
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8912
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8913
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8914
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8915
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8916
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8917
setDashes:dashList dashOffset:offset in:aGCId
788
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8918
    "set line attributes"
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8919
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8920
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8921
%{
788
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8922
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8923
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8924
	if (__isExternalAddress(aGCId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8925
	 && __isSmallInteger(offset)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8926
	 && __isByteArrayLike(dashList)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8927
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8928
	    XSetDashes(myDpy, __GCVal(aGCId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8929
		       __intVal(offset),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8930
		       __ByteArrayInstPtr(dashList)->ba_element,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8931
		       __byteArraySize(dashList));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8932
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8933
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8934
	}
788
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8935
    }
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8936
bad: ;
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8937
%}.
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8938
    "
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8939
     either aGCId is invalid,
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8940
     and/or dashList is not a byteArray
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8941
     and/or offset is not a smallInteger
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8942
    "
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8943
    self primitiveFailedOrClosedConnection
788
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8944
!
23b4d0a26e3c added setDashes: ...
Claus Gittinger <cg@exept.de>
parents: 780
diff changeset
  8945
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8946
setFont:aFontId in:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8947
    "set font to be drawn in"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8948
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8949
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8950
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8951
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8952
    XFontStruct *f;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8953
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8954
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8955
	if (__isExternalAddress(aFontId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8956
	 && __isExternalAddress(aGCId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8957
	    f = (XFontStruct *) __FontVal(aFontId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8958
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8959
	    XSetFont(myDpy, __GCVal(aGCId), f->fid);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8960
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8961
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8962
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8963
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8964
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8965
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8966
     aGCId and/or aFontId are invalid
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8967
    "
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8968
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8969
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8970
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8971
setForeground:fgColorIndex background:bgColorIndex in:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8972
    "set foreground and background colors to be drawn with"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8973
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8974
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  8975
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8976
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  8977
    GC gc;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8978
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  8979
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8980
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8981
	if (__bothSmallInteger(fgColorIndex, bgColorIndex)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8982
	 && __isExternalAddress(aGCId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8983
	    gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8984
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8985
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8986
	    XSetForeground(dpy, gc, __intVal(fgColorIndex));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8987
	    XSetBackground(dpy, gc, __intVal(bgColorIndex));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8988
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8989
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  8990
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8991
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8992
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8993
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8994
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8995
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  8996
setForeground:fgColorIndex in:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8997
    "set foreground color to be drawn with"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  8998
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  8999
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9000
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9001
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  9002
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9003
	if (__isExternalAddress(aGCId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9004
	 && __isSmallInteger(fgColorIndex)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9005
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9006
	    XSetForeground(myDpy, __GCVal(aGCId), __intVal(fgColorIndex));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9007
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9008
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9009
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9010
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9011
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9012
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9013
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9014
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9015
setFunction:aFunctionSymbol in:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9016
    "set alu function to be drawn with"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9017
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9018
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9019
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9020
    int fun = -1;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9021
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  9022
    if (ISCONNECTED) {
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9023
	if (__isExternalAddress(aGCId)) {
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9024
	    GC gc = __GCVal(aGCId);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9025
	    if (aFunctionSymbol == @symbol(copy)) fun = GXcopy;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9026
	    else if (aFunctionSymbol == @symbol(copyInverted)) fun = GXcopyInverted;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9027
	    else if (aFunctionSymbol == @symbol(xor)) fun = GXxor;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9028
	    else if (aFunctionSymbol == @symbol(and)) fun = GXand;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9029
	    else if (aFunctionSymbol == @symbol(andReverse)) fun = GXandReverse;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9030
	    else if (aFunctionSymbol == @symbol(andInverted)) fun = GXandInverted;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9031
	    else if (aFunctionSymbol == @symbol(or)) fun = GXor;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9032
	    else if (aFunctionSymbol == @symbol(orReverse)) fun = GXorReverse;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9033
	    else if (aFunctionSymbol == @symbol(orInverted)) fun = GXorInverted;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9034
	    else if (aFunctionSymbol == @symbol(invert)) fun = GXinvert;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9035
	    else if (aFunctionSymbol == @symbol(clear)) fun = GXclear;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9036
	    else if (aFunctionSymbol == @symbol(set)) fun = GXset;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9037
	    else if (aFunctionSymbol == @symbol(noop)) fun = GXnoop;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9038
	    else if (aFunctionSymbol == @symbol(equiv)) fun = GXequiv;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9039
	    else if (aFunctionSymbol == @symbol(nand)) fun = GXnand;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9040
	    if (fun != -1) {
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9041
		ENTER_XLIB();
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9042
		XSetFunction(myDpy, gc, fun);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9043
		LEAVE_XLIB();
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9044
		RETURN ( self );
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9045
	    }
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9046
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9047
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9048
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9049
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9050
     either aGCId is not an integer, or an invalid symbol
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9051
     was passed ... valid functions are #copy, #copyInverted, #xor, #and, #andReverse,
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9052
     #andInverted, #or, #orReverse, #orInverted. See Xlib documentation for more details.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9053
    "
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9054
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9055
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9056
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9057
setGraphicsExposures:aBoolean in:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9058
    "set or clear the graphics exposures flag"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9059
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9060
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9061
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9062
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  9063
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9064
	if (__isExternalAddress(aGCId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9065
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9066
	    XSetGraphicsExposures(myDpy, __GCVal(aGCId), (aBoolean==true)?1:0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9067
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9068
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9069
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9070
    }
2361
b721237f3265 added #dotted, #dashDot and #dashDotDot styles
Claus Gittinger <cg@exept.de>
parents: 2330
diff changeset
  9071
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9072
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9073
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9074
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9075
setLineWidth:aNumber style:lineStyle cap:capStyle join:joinStyle in:aGCId
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9076
    "set line attributes;
1455
d217819923b3 removed obsolete methods
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
  9077
     lineStyle must be one of #solid, #dashed or #doubleDashed;
d217819923b3 removed obsolete methods
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
  9078
     capStyle one of: #notLast, #butt, #round or #projecting;
d217819923b3 removed obsolete methods
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
  9079
     joinStyle one of: #miter, #bevel or #round."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9080
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9081
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9082
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9083
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9084
    int x_style, x_cap, x_join;
6768
e74f22d951a6 ouch - dash- and dotList were swapped.
Claus Gittinger <cg@exept.de>
parents: 6762
diff changeset
  9085
    static char dotList[2] = { 1,1 };
e74f22d951a6 ouch - dash- and dotList were swapped.
Claus Gittinger <cg@exept.de>
parents: 6762
diff changeset
  9086
    static char dashList[2]  = { 4,4 };
2361
b721237f3265 added #dotted, #dashDot and #dashDotDot styles
Claus Gittinger <cg@exept.de>
parents: 2330
diff changeset
  9087
    static char dashDotList[4]    = { 4,1 , 1,1 };
b721237f3265 added #dotted, #dashDot and #dashDotDot styles
Claus Gittinger <cg@exept.de>
parents: 2330
diff changeset
  9088
    static char dashDotDotList[6] = { 4,1 , 1,1 , 1,1 };
b721237f3265 added #dotted, #dashDot and #dashDotDot styles
Claus Gittinger <cg@exept.de>
parents: 2330
diff changeset
  9089
    char *x_dashes = 0;
b721237f3265 added #dotted, #dashDot and #dashDotDot styles
Claus Gittinger <cg@exept.de>
parents: 2330
diff changeset
  9090
    int x_nDash;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9091
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  9092
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9093
	if (__isExternalAddress(aGCId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9094
	 && __isSmallInteger(aNumber)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9095
	    Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9096
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9097
	    if (lineStyle == @symbol(solid)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9098
		x_dashes = (char *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9099
		x_style = LineSolid;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9100
	    } else if (lineStyle == @symbol(dashed)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9101
		x_dashes = dashList;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9102
		x_nDash = sizeof(dashList);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9103
		x_style = LineOnOffDash;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9104
	    } else if (lineStyle == @symbol(doubleDashed)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9105
		x_dashes = dashList;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9106
		x_nDash = sizeof(dashList);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9107
		x_style = LineDoubleDash;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9108
	    } else if (lineStyle == @symbol(dotted)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9109
		x_dashes = dotList;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9110
		x_nDash = sizeof(dotList);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9111
		x_style = LineOnOffDash;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9112
	    } else if (lineStyle == @symbol(dashDot)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9113
		x_dashes = dashDotList;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9114
		x_nDash = sizeof(dashDotList);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9115
		x_style = LineOnOffDash;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9116
	    } else if (lineStyle == @symbol(dashDotDot)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9117
		x_dashes = dashDotDotList;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9118
		x_nDash = sizeof(dashDotDotList);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9119
		x_style = LineOnOffDash;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9120
	    } else goto bad;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9121
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9122
	    if (capStyle == @symbol(notLast)) x_cap = CapNotLast;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9123
	    else if (capStyle == @symbol(butt)) x_cap = CapButt;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9124
	    else if (capStyle == @symbol(round)) x_cap  = CapRound;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9125
	    else if (capStyle == @symbol(projecting)) x_cap  = CapProjecting;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9126
	    else goto bad;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9127
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9128
	    if (joinStyle == @symbol(miter)) x_join = JoinMiter;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9129
	    else if (joinStyle == @symbol(bevel)) x_join = JoinBevel;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9130
	    else if (joinStyle == @symbol(round)) x_join  = JoinRound;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9131
	    else goto bad;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9132
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9133
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9134
	    if (x_dashes) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9135
		XSetDashes(dpy, __GCVal(aGCId), 0, x_dashes, x_nDash);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9136
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9137
	    XSetLineAttributes(dpy,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9138
			       __GCVal(aGCId), __intVal(aNumber),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9139
			       x_style, x_cap, x_join);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9140
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9141
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9142
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9143
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9144
bad: ;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9145
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9146
    "
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9147
     either aGCId is invalid,
1455
d217819923b3 removed obsolete methods
Claus Gittinger <cg@exept.de>
parents: 1430
diff changeset
  9148
     and/or lineWidth is not a smallInteger,
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9149
     and/or lineStyle is none of #solid, #dashed, #doubleDashed
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9150
     and/or capStyle is none of #notLast, #butt, #round, #projecting
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9151
     and/or joinStyle is none of #miter, #bevel, #round
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9152
    "
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9153
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9154
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9155
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9156
setMaskOriginX:orgX y:orgY in:aGCid
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9157
    "set the mask origin"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9158
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9159
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9160
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9161
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  9162
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9163
	if (__bothSmallInteger(orgX, orgY) && __isExternalAddress(aGCid)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9164
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9165
	    XSetTSOrigin(myDpy, __GCVal(aGCid), __intVal(orgX), __intVal(orgY));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9166
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9167
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9168
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9169
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9170
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9171
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9172
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9173
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9174
setPixmapMask:aPixmapId in:aGCId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9175
    "set or clear the drawing mask - a pixmap mask providing full color"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9176
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9177
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9178
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9179
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
  9180
    GC gc;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9181
    Pixmap pixmap;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9182
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  9183
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9184
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9185
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9186
	if (__isExternalAddress(aGCId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9187
	    gc = __GCVal(aGCId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9188
	    if (__isExternalAddress(aPixmapId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9189
		pixmap = __PixmapVal(aPixmapId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9190
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9191
		XSetTile(dpy, gc, pixmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9192
		XSetFillStyle(dpy, gc, FillTiled);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9193
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9194
		RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9195
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9196
	    if (aPixmapId == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9197
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9198
		XSetFillStyle(dpy, gc, FillSolid);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9199
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9200
		RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9201
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9202
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9203
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9204
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9205
    self primitiveFailedOrClosedConnection
7351
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9206
!
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9207
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9208
setPlaneMask:bits in:aGCId
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9209
    "set foreground color to be drawn with"
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9210
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9211
    <context: #return>
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9212
%{
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9213
    if (ISCONNECTED) {
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9214
	if (__isExternalAddress(aGCId)
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9215
	 && __isSmallInteger(bits)) {
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9216
	    unsigned long mask = __intVal(bits);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9217
	    if (__intVal(bits) == -1) {
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9218
		mask = AllPlanes;
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9219
	    }
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9220
	    ENTER_XLIB();
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9221
	    XSetPlaneMask(myDpy, __GCVal(aGCId), mask);
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9222
	    LEAVE_XLIB();
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9223
	    RETURN ( self );
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9224
	}
7351
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9225
    }
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9226
%}.
f4896612f0de #REFACTORING by stefan
Stefan Vogel <sv@exept.de>
parents: 7348
diff changeset
  9227
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9228
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9229
3883
4e01a59afccb method category rename
Claus Gittinger <cg@exept.de>
parents: 3856
diff changeset
  9230
!XWorkstation methodsFor:'initialization & release'!
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9231
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9232
closeConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9233
    "close down the connection to the X-server"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9234
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9235
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
  9236
3061
060d483207c2 allow color-name query - even if closed
Claus Gittinger <cg@exept.de>
parents: 3058
diff changeset
  9237
"/ 'closing' errorPrintCR.
060d483207c2 allow color-name query - even if closed
Claus Gittinger <cg@exept.de>
parents: 3058
diff changeset
  9238
"/ thisContext fullPrintAll.
060d483207c2 allow color-name query - even if closed
Claus Gittinger <cg@exept.de>
parents: 3058
diff changeset
  9239
3787
58b1a317d361 Need some more UNLIMITEDSTACKS to avoid crashes on Solaris 8 & 9
Stefan Vogel <sv@exept.de>
parents: 3779
diff changeset
  9240
%{ /* UNLIMITEDSTACK */   /* calls XSync()! */
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9241
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9242
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9243
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9244
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9245
	__INST(displayId) = nil;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9246
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9247
	XCloseDisplay(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9248
	LEAVE_XLIB();
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9249
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9250
%}
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9251
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9252
3015
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9253
emergencyCloseConnection
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9254
    "low level close of the displays connection (without sending any buffered
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9255
     requests to the display). Only used in case of emergency (brokenConnection)"
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9256
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9257
%{
3015
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9258
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9259
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9260
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9261
	__INST(displayId) = nil;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9262
	close(ConnectionNumber(dpy));
3015
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9263
    }
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9264
%}
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9265
!
401637ae1c72 emergencyClose
Claus Gittinger <cg@exept.de>
parents: 3001
diff changeset
  9266
3216
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  9267
eventBufferSize
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  9268
%{
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  9269
    RETURN ( __MKSMALLINT(sizeof(XEvent) + 100) );
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  9270
%}
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  9271
!
542b2f1a3e9a rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3215
diff changeset
  9272
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9273
getWindowGroupWindow
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9274
    "Creates a fake WindowGroup view. This window is used
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  9275
     in XWMHints & _NET_WM_LEADER properties to define
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9276
     application window group"
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9277
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9278
    windowGroupWindow isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9279
	windowGroupWindow := WindowGroupWindow new create.
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9280
    ].
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9281
    ^ windowGroupWindow
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9282
!
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
  9283
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9284
initializeDefaultValues
2685
094ce08f9fc5 made activateOnClick an instance method
Claus Gittinger <cg@exept.de>
parents: 2671
diff changeset
  9285
    activateOnClick := false.
6156
dd328de0a324 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6154
diff changeset
  9286
    maxOperationsUntilFlush := nil.
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
  9287
2862
2f43bf146110 moved some init stuff to super
Claus Gittinger <cg@exept.de>
parents: 2856
diff changeset
  9288
    super initializeDefaultValues.
5903
1ae08cd914f6 changed: #initializeDefaultValues
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5902
diff changeset
  9289
1ae08cd914f6 changed: #initializeDefaultValues
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5902
diff changeset
  9290
    "JV@2012: On X11, mouse buttons are: left=1, middle=2, right=3
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  9291
    Even on 2-button mouse (button 2 is simply not reported).
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  9292
    Here the middle button is mapped to button #paste (which in EditTextView
5903
1ae08cd914f6 changed: #initializeDefaultValues
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5902
diff changeset
  9293
    pastes the PRIMARY selection). 128 is here to make clear that this
1ae08cd914f6 changed: #initializeDefaultValues
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5902
diff changeset
  9294
    is somewhat special value.
1ae08cd914f6 changed: #initializeDefaultValues
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5902
diff changeset
  9295
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
  9296
    This remapping kludge is here to have all the widget's code backward/windows
5904
238059ebf678 Make paste button symbolic wia translation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5903
diff changeset
  9297
    compatible while still having X11's middle button behavior.
238059ebf678 Make paste button symbolic wia translation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5903
diff changeset
  9298
7478
4865dd2c05c9 #OTHER by mawalch
mawalch
parents: 7443
diff changeset
  9299
    Also note that buttonTranslation is overwritten in display.rc,
5904
238059ebf678 Make paste button symbolic wia translation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5903
diff changeset
  9300
    the code is here just for a case display.rc is not read/available
238059ebf678 Make paste button symbolic wia translation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5903
diff changeset
  9301
    and for documentation (symbol references does not search .rc files).
238059ebf678 Make paste button symbolic wia translation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5903
diff changeset
  9302
    "
238059ebf678 Make paste button symbolic wia translation
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5903
diff changeset
  9303
6092
92572b3d40ea you shalt not modify literal arrays
Claus Gittinger <cg@exept.de>
parents: 6064
diff changeset
  9304
    buttonTranslation := buttonTranslation copy.
6914
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  9305
    buttonTranslation at: 2 put: #paste.
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  9306
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  9307
    "
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  9308
    Cache hostname in order to set WM_CLIENT_MACHINE 
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  9309
    (defined by ICCCM, Section 4.1.2.9)
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  9310
    "
e2d3459c6309 X11: Set ICCCM property WM_CLIENT_MACHINE
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6913
diff changeset
  9311
    hostname := OperatingSystem getHostName.
5903
1ae08cd914f6 changed: #initializeDefaultValues
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5902
diff changeset
  9312
6915
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9313
    "
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9314
    Create (and cache) class and name for WM_CLASS property. 
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9315
    (defined by ICCCM, Section 4.1.2.5. WM_CLASS Property)
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9316
    "
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9317
    wmClassName := OperatingSystem getEnvironment: 'RESOURCE_NAME'.
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9318
    wmClassName isNil ifTrue:[
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9319
	wmClassName := Smalltalk commandName.
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9320
	"/ strip of any directory names
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9321
	wmClassName := wmClassName copyFrom: (wmClassName lastIndexOf: Filename separator) + 1.
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9322
    ].
6925
4d77a816de2c X11: Set WM_CLASS to "smalltalkx" also if Smalltalk executable is `stx-bin`
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6916
diff changeset
  9323
    (wmClassName = 'stx' or:[wmClassName = 'stx-bin']) ifTrue:[
6915
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9324
    	wmClassName  := 'smalltalkx'.
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9325
	wmClassClass := 'SmalltalkX'.
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9326
    ] ifFalse:[
7f3a3fe5b871 X11: Set ICCCM property WM_CLASS with conformance to ICCCM 2.0
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6914
diff changeset
  9327
	wmClassClass := wmClassName asUppercaseFirst.
6916
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  9328
    ].
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  9329
    "
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  9330
    Cache pid in order to set _NET_WM_PID properu
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  9331
    (defined by EWMH, Section Application Window Properties
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  9332
    "
2a4ce6c4d0b5 X11: Set EWMH property _NET_WM_PID
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6915
diff changeset
  9333
    pid := OperatingSystem getProcessId.
5903
1ae08cd914f6 changed: #initializeDefaultValues
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5902
diff changeset
  9334
1ae08cd914f6 changed: #initializeDefaultValues
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5902
diff changeset
  9335
    "Modified (comment): / 17-04-2012 / 21:18:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9336
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9337
2855
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9338
initializeDeviceSignals
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9339
    super initializeDeviceSignals.
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9340
2984
6a278fd02e74 Signal init.
Stefan Vogel <sv@exept.de>
parents: 2977
diff changeset
  9341
    deviceIOTimeoutErrorSignal := deviceIOErrorSignal newSignal.
2856
95cb0ea5f7cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2855
diff changeset
  9342
    deviceIOTimeoutErrorSignal nameClass:self message:#deviceIOTimeoutErrorSignal.
2855
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9343
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9344
    ObjectMemory registerErrorInterruptHandler:self class forID:#DisplayError.
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9345
    ObjectMemory registerErrorInterruptHandler:self class forID:#DisplayIOError.
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9346
    ObjectMemory registerErrorInterruptHandler:self class forID:#DisplayIOTimeoutError.
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9347
!
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9348
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9349
initializeFor:aDisplayName
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9350
    "initialize the receiver for a connection to an X-Server;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9351
     the argument, aDisplayName may be nil (for the default server from
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9352
     DISPLAY-variable or command line argument) or the name of the server
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9353
     as hostname:number"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9354
2286
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9355
    displayId notNil ifTrue:[
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9356
	"/ already connected - you bad guy try to trick me manually ?
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9357
	^ self
3630
2b2f6649c014 Change Workstation initialization.
Stefan Vogel <sv@exept.de>
parents: 3615
diff changeset
  9358
    ].
2b2f6649c014 Change Workstation initialization.
Stefan Vogel <sv@exept.de>
parents: 3615
diff changeset
  9359
2b2f6649c014 Change Workstation initialization.
Stefan Vogel <sv@exept.de>
parents: 3615
diff changeset
  9360
    displayId := self openConnectionTo:aDisplayName.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9361
    displayId isNil ifTrue:[
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9362
	"/ could not connect.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9363
	DeviceOpenErrorSignal raiseWith:aDisplayName.
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9364
	^ nil
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9365
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9366
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9367
    xlibTimeout := xlibTimeout ? DefaultXLibTimeout.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9368
    xlibTimeoutForWindowCreation := xlibTimeoutForWindowCreation ? DefaultXLibTimeoutForWindowCreation.
4409
fdb60a1f78da remember broken connection
Claus Gittinger <cg@exept.de>
parents: 4401
diff changeset
  9369
    hasConnectionBroken := false.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9370
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9371
    dispatching := false.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9372
    dispatchingExpose := false.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9373
    isSlow := false.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9374
    shiftDown := false.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9375
    ctrlDown := false.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9376
    metaDown := false.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9377
    altDown := false.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9378
    motionEventCompression := true.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9379
    buttonsPressed := 0.
3630
2b2f6649c014 Change Workstation initialization.
Stefan Vogel <sv@exept.de>
parents: 3615
diff changeset
  9380
    displayName := aDisplayName.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9381
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  9382
    listOfXFonts := nil.
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  9383
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
  9384
    atoms := nil.
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  9385
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
  9386
    "These values are initialized by primitive code in #createWindowFor:..."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9387
    protocolsAtom := nil.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9388
    deleteWindowAtom := nil.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9389
    saveYourselfAtom := nil.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9390
    quitAppAtom := nil.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9391
2992
95837ca26ca0 lazy init of ViewStyle stuff
Stefan Vogel <sv@exept.de>
parents: 2984
diff changeset
  9392
    self initializeDeviceResourceTables.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9393
    self initializeScreenProperties.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9394
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9395
    self initializeDefaultValues.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9396
    self initializeSpecialFlags.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9397
    self initializeKeyboardMap.
2855
f1fca530bab1 moved signal creation up in the hierarchy
Claus Gittinger <cg@exept.de>
parents: 2791
diff changeset
  9398
    self initializeDeviceSignals.
2992
95837ca26ca0 lazy init of ViewStyle stuff
Stefan Vogel <sv@exept.de>
parents: 2984
diff changeset
  9399
7313
59b27278b119 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 7229
diff changeset
  9400
    Screen default isNil ifTrue:[
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9401
	"not initialized yet?"
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
  9402
	self initializeViewStyle.
7313
59b27278b119 #BUGFIX by stefan
Stefan Vogel <sv@exept.de>
parents: 7229
diff changeset
  9403
    ].
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9404
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9405
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9406
initializeModifierMappings
3200
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
  9407
    "initialize keyboard modifiers.
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
  9408
     We assume that mod1 are the META modifiers and mod2 are the ALT modifiers,
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
  9409
     but if any of them contains the Num_Lock key, it is disregarded."
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
  9410
4067
95d3cc7b4f62 getEvent: return symbols for keys (used to return strings)
Claus Gittinger <cg@exept.de>
parents: 4061
diff changeset
  9411
    |map|
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9412
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9413
    super initializeModifierMappings.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9414
3322
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
  9415
    rawKeySymTranslation := RawKeySymTranslation.
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
  9416
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9417
    map := self modifierMapping.
342
a52a4e45a294 more on modifiers
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
  9418
    map isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9419
	"/
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9420
	"/ mhmh - a crippled Xlib which does not provide modifier mappings
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9421
	"/ setup some reasonable default. If that is not sufficient,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9422
	"/ you have to change things from your display.rc file.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9423
	"/
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9424
	altModifierMask := self modifier1Mask.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9425
	metaModifierMask := self modifier2Mask.
342
a52a4e45a294 more on modifiers
Claus Gittinger <cg@exept.de>
parents: 341
diff changeset
  9426
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9427
	| mod symbolFromKeyCode nonNilOnes |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9428
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9429
	altModifierMask := 0.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9430
	metaModifierMask := 0.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9431
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9432
	symbolFromKeyCode := [:key | self symbolFromKeycode:key].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9433
	nonNilOnes := [:str | str notNil].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9434
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9435
	mod := map at:1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9436
	mod notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9437
	    shiftModifiers := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9438
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9439
	mod := map at:3.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9440
	mod notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9441
	    ctrlModifiers  := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9442
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9443
	mod := map at:4.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9444
	mod notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9445
	    mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9446
	    (mod includes:#'Num_Lock') ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9447
		metaModifiers := mod.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9448
		metaModifierMask := 1 bitShift:(4-1).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9449
	    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9450
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9451
	mod := map at:5.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9452
	mod notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9453
	    mod := mod collect:symbolFromKeyCode thenSelect:nonNilOnes.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9454
	    (mod includes:#'Num_Lock') ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9455
		altModifiers   := mod.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9456
		altModifierMask := 1 bitShift:(5-1).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9457
	    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9458
	]
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9459
    ].
3200
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
  9460
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
  9461
    "
4067
95d3cc7b4f62 getEvent: return symbols for keys (used to return strings)
Claus Gittinger <cg@exept.de>
parents: 4061
diff changeset
  9462
     Display initializeModifierMappings
3200
f92ccb3cac8e Care for Num_Lock in any of the mod1- or mod2-keys.
Stefan Vogel <sv@exept.de>
parents: 3177
diff changeset
  9463
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9464
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9465
    "Modified: 1.12.1995 / 23:44:40 / stefan"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9466
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9467
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9468
initializeScreenBounds
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9469
    self isXineramaActive ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9470
	|rect|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9471
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9472
	self monitorBounds do:[:eachRect|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9473
	    rect isNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9474
		rect := eachRect.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9475
	    ] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9476
		rect := rect merge:eachRect.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9477
	    ]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9478
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9479
	width := rect width.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9480
	height := rect height.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9481
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9482
	"propagate possible size changes to our rottView"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9483
	rootView notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9484
	    rootView initialize.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9485
	].
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9486
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9487
	width := self queryWidth.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9488
	height := self queryHeight.
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9489
    ].
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9490
    widthMM := self queryWidthMM.
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9491
    heightMM := self queryHeightMM.
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9492
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9493
    "
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9494
      Display initializeScreenBounds
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9495
    "
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9496
!
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
  9497
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9498
initializeScreenProperties
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9499
    |masks|
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9500
815
1e659479b292 call super in initScreenProps
Claus Gittinger <cg@exept.de>
parents: 811
diff changeset
  9501
    super initializeScreenProperties.
1e659479b292 call super in initScreenProps
Claus Gittinger <cg@exept.de>
parents: 811
diff changeset
  9502
7591
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9503
    hasShapeExtension := self hasExtension:#SHAPE.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9504
    hasShmExtension := self hasExtension:#MIT_SHM.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9505
    hasDPSExtension := self hasExtension:#DPS.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9506
    hasXVideoExtension := self hasExtension:#XVideo.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9507
    hasMbufExtension := self hasExtension:#'Multi-Buffering'.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9508
    hasPEXExtension := self hasExtension:#'X3D-PEX'.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9509
    hasImageExtension := self hasExtension:#XIE.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9510
    hasInputExtension := self hasExtension:#XInputExtension.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9511
    hasXineramaExtension := self hasExtension:#XINERAMA.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9512
    hasRenderExtension := self hasExtension:#RENDER.
bce664b396f0 #TUNING by stefan
Stefan Vogel <sv@exept.de>
parents: 7509
diff changeset
  9513
    hasXftLibrary := hasRenderExtension and:[self class hasXftLibrary].
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9514
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  9515
    primaryAtom := self atomIDOf:#PRIMARY.
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
  9516
    stringAtom := self atomIDOf:#STRING.
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
  9517
    clipboardAtom := self atomIDOf:#CLIPBOARD.
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9518
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9519
    altModifierMask := self modifier2Mask.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9520
    metaModifierMask := self modifier1Mask.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9521
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9522
    screen := self queryDefaultScreen.
5890
9bfc1df32428 added: #initializeScreenBounds
Stefan Vogel <sv@exept.de>
parents: 5886
diff changeset
  9523
9bfc1df32428 added: #initializeScreenBounds
Stefan Vogel <sv@exept.de>
parents: 5886
diff changeset
  9524
    self initializeScreenBounds.
9bfc1df32428 added: #initializeScreenBounds
Stefan Vogel <sv@exept.de>
parents: 5886
diff changeset
  9525
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9526
    depth := self queryDepth.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9527
    ncells := self queryCells.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9528
    blackpixel := self queryBlackPixel.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9529
    whitepixel := self queryWhitePixel.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9530
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9531
    monitorType := #unknown.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9532
    visualType := self queryDefaultVisualType.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9533
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9534
    hasColors := hasGreyscales := true.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9535
    (visualType == #StaticGray
5890
9bfc1df32428 added: #initializeScreenBounds
Stefan Vogel <sv@exept.de>
parents: 5886
diff changeset
  9536
     or:[ visualType == #GrayScale]) ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9537
	hasColors := false.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9538
	monitorType := #monochrome.
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9539
    ].
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9540
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9541
    ncells == 2 ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9542
	hasColors := hasGreyscales := false.
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9543
    ].
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9544
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9545
    masks := self queryRGBMasks.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9546
    redMask := masks at:1.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9547
    greenMask := masks at:2.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9548
    blueMask := masks at:3.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9549
    bitsPerRGB := masks at:4.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9550
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9551
    visualType == #TrueColor ifTrue:[
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9552
	redShift := redMask lowBit - 1.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9553
	greenShift := greenMask lowBit - 1.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9554
	blueShift := blueMask lowBit - 1.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9555
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9556
	bitsRed := redMask highBit - redMask lowBit + 1.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9557
	bitsGreen := greenMask highBit - greenMask lowBit + 1.
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9558
	bitsBlue := blueMask highBit - blueMask lowBit + 1.
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9559
    ].
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9560
1627
e7ba6be03b14 removed dangerous NOCONTEXT primitives
Claus Gittinger <cg@exept.de>
parents: 1610
diff changeset
  9561
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9562
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
  9563
    Display *dpy;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9564
    int scr;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9565
    Visual *visual;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9566
    XVisualInfo viproto;
6131
3d27be935360 rgba query
Claus Gittinger <cg@exept.de>
parents: 6106
diff changeset
  9567
    XVisualInfo *vip;                   /* returned info */
3d27be935360 rgba query
Claus Gittinger <cg@exept.de>
parents: 6106
diff changeset
  9568
    int maxRGBDepth, maxRGBADepth;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9569
    int rgbRedMask, rgbGreenMask, rgbBlueMask;
6131
3d27be935360 rgba query
Claus Gittinger <cg@exept.de>
parents: 6106
diff changeset
  9570
    int rgbaRedMask, rgbaGreenMask, rgbaBlueMask, rgbaAlphaMask;
3d27be935360 rgba query
Claus Gittinger <cg@exept.de>
parents: 6106
diff changeset
  9571
    int rgbVisualID, rgbaVisualID;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9572
    int nvi, i;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9573
    char *type, *nm;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9574
    int dummy;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9575
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9576
    if (ISCONNECTED) {
7780
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9577
	dpy = myDpy;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9578
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9579
	/*
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9580
	 * look for RGB visual with the highest depth
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9581
	 */
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9582
	nvi = 0;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9583
	viproto.screen = scr;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9584
	vip = XGetVisualInfo (dpy, VisualScreenMask, &viproto, &nvi);
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9585
	maxRGBDepth = maxRGBADepth = 0;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9586
	for (i = 0; i < nvi; i++) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9587
	    int thisDepth = vip[i].depth;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9588
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9589
	    switch (vip[i].class) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9590
		case TrueColor:
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9591
		    if (thisDepth > maxRGBDepth) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9592
			if (thisDepth <= 24) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9593
			    maxRGBDepth = thisDepth;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9594
			    rgbRedMask = vip[i].red_mask;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9595
			    rgbGreenMask = vip[i].green_mask;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9596
			    rgbBlueMask = vip[i].blue_mask;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9597
			    rgbVisualID = vip[i].visualid;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9598
			} else {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9599
			    if (thisDepth > maxRGBADepth) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9600
				// printf("found rgba visual!\n");
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9601
				maxRGBADepth = thisDepth;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9602
				rgbaRedMask = vip[i].red_mask;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9603
				rgbaGreenMask = vip[i].green_mask;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9604
				rgbaBlueMask = vip[i].blue_mask;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9605
				rgbaVisualID = vip[i].visualid;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9606
			    }
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9607
			}
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9608
		    }
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9609
		    break;
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9610
	    }
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9611
	}
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9612
	if (vip) XFree ((char *) vip);
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9613
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9614
	if (maxRGBDepth) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9615
	    __INST(rgbVisual) = __MKEXTERNALADDRESS(rgbVisualID); __STORESELF(rgbVisual);
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9616
	}
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9617
	if (maxRGBADepth) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9618
	    __INST(rgbaVisual) = __MKEXTERNALADDRESS(rgbaVisualID); __STORESELF(rgbaVisual);
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9619
	    if (!maxRGBDepth) {
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9620
		__INST(rgbVisual) = __INST(rgbaVisual); __STORESELF(rgbVisual);
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9621
	    }
4221620dd940 comment
Claus Gittinger <cg@exept.de>
parents: 7756
diff changeset
  9622
	}
7137
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  9623
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  9624
    }
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  9625
#ifdef SHM
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  9626
    if (__INST(hasShmExtension) == true) {
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  9627
        ShmCompletionType = XShmGetEventBase(dpy) + ShmCompletion;
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  9628
    }
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  9629
#endif    
7a13ed1d9309 XWorksation: Handle ShmCompletion event
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7128
diff changeset
  9630
815
1e659479b292 call super in initScreenProps
Claus Gittinger <cg@exept.de>
parents: 811
diff changeset
  9631
%}.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9632
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9633
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9634
initializeSpecialFlags
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9635
    "perform additional special server implementation flags"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9636
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9637
    "/
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9638
    "/ assume we have it ... (should check)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9639
    "/
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9640
    hasSaveUnder := true.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9641
    ignoreBackingStore := false.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9642
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9643
    (self serverVendor = 'X11/NeWS') ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9644
	"/
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9645
	"/ this is a kludge around a bug in the X11/NeWS server,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9646
	"/ which does not correctly handle saveUnder
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9647
	"/
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9648
	hasSaveUnder := false.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9649
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9650
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9651
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  9652
initializeUniqueID
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  9653
    uniqueDeviceID isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9654
	uniqueDeviceID := UUID genUUID.
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  9655
    ]
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  9656
!
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  9657
6261
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
  9658
invalidateConnection
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
  9659
    super invalidateConnection.
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
  9660
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
  9661
    "the new display may support a different set of fonts"
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
  9662
    self flushListOfAvailableFonts
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
  9663
!
e5d7fb9ba201 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6252
diff changeset
  9664
2286
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9665
openConnectionTo:dpyName
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9666
    "open a connection to some display;
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
  9667
     return the displayId if ok, nil of not ok"
2286
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9668
3800
558328d5675b More Stack for openDisplay
Stefan Vogel <sv@exept.de>
parents: 3799
diff changeset
  9669
%{ /* STACK:100000 */    /* XOpenDisplay() calls gethostbyname() */
2286
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9670
    Display *dpy;
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9671
    int i;
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9672
    char *nm;
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9673
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
  9674
    if (__isStringLike(dpyName))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9675
	nm = (char *) __stringVal(dpyName);
2286
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9676
    else {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9677
	nm = NULL;
2286
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9678
    }
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9679
    dpy = XOpenDisplay(nm);
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9680
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9681
    if (dpy) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9682
	static int firstCall = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9683
	OBJ dpyID;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9684
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9685
	dpyID = __MKEXTERNALADDRESS(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9686
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9687
	if (firstCall) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9688
	    firstCall = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9689
	    XSetErrorHandler(__XErrorHandler__);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9690
	    XSetIOErrorHandler(__XIOErrorHandler__);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9691
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9692
	RETURN (dpyID);
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9693
    }
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9694
%}.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
  9695
    ^ nil
2286
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9696
!
111e4f4993be *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2268
diff changeset
  9697
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9698
queryBlackPixel
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9699
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9700
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9701
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9702
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9703
	int scr;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9704
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9705
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9706
	scr = DefaultScreen(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9707
	RETURN ( __MKSMALLINT(BlackPixel(dpy, scr)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9708
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9709
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9710
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9711
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9712
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9713
     Display queryBlackPixel
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9714
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9715
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9716
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9717
queryCells
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9718
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9719
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9720
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9721
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9722
	int scr;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9723
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9724
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9725
	scr = DefaultScreen(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9726
	RETURN ( __MKSMALLINT(DisplayCells(dpy, scr)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9727
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9728
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9729
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9730
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9731
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9732
     Display queryCells
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9733
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9734
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9735
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9736
queryDefaultScreen
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9737
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9738
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9739
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9740
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9741
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9742
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9743
	RETURN ( __MKSMALLINT(DefaultScreen(dpy)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9744
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9745
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9746
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9747
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9748
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9749
     Display queryDefaultScreen
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9750
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9751
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9752
6571
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9753
queryDefaultVisual
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9754
%{  /* NOCONTEXT */
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9755
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9756
    if (ISCONNECTED) {
6762
8d0545bed2f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6758
diff changeset
  9757
	Display *dpy;
8d0545bed2f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6758
diff changeset
  9758
	Visual *visual;
8d0545bed2f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6758
diff changeset
  9759
8d0545bed2f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6758
diff changeset
  9760
	dpy = myDpy;
8d0545bed2f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6758
diff changeset
  9761
	visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
8d0545bed2f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6758
diff changeset
  9762
	RETURN ( __MKEXTERNALADDRESS( visual ) );
6571
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9763
    }
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9764
%}.
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9765
    ^ nil
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9766
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9767
    "
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9768
     Display queryDefaultVisual
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9769
    "
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9770
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9771
    "Created: / 22-09-2014 / 10:05:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9772
!
ad1e51bf2c3b Added queryDefaultVisual which returns value of DefaultVisual().
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6570
diff changeset
  9773
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9774
queryDefaultVisualType
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9775
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9776
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9777
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9778
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9779
	Visual *visual;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9780
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9781
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9782
	visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9783
	switch (visual->class) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9784
	    case StaticGray:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9785
		RETURN ( @symbol(StaticGray) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9786
	    case GrayScale:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9787
		RETURN ( @symbol(GrayScale) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9788
	    case StaticColor:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9789
		RETURN ( @symbol(StaticColor) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9790
	    case PseudoColor:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9791
		RETURN ( @symbol(PseudoColor) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9792
	    case TrueColor:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9793
		RETURN ( @symbol(TrueColor) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9794
	    case DirectColor:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9795
		RETURN ( @symbol(DirectColor) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9796
	}
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9797
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9798
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9799
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9800
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9801
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9802
     Display queryDefaultVisualType
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9803
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9804
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9805
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9806
queryDepth
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9807
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9808
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9809
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9810
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9811
	int scr;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9812
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9813
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9814
	scr = DefaultScreen(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9815
	RETURN ( __MKSMALLINT(DisplayPlanes(dpy, scr)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9816
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9817
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9818
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9819
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9820
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9821
     Display queryDepth
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9822
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9823
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9824
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9825
queryHeight
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9826
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9827
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9828
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9829
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9830
	int scr;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9831
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9832
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9833
	scr = DefaultScreen(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9834
	RETURN ( __MKSMALLINT(DisplayHeight(dpy, scr)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9835
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9836
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9837
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9838
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9839
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9840
     Display queryHeight
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9841
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9842
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9843
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9844
queryHeightMM
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9845
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9846
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9847
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9848
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9849
	int scr;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9850
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9851
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9852
	scr = DefaultScreen(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9853
	RETURN ( __MKSMALLINT(DisplayHeightMM(dpy, scr)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9854
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9855
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9856
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9857
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9858
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9859
     Display queryHeightMM
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9860
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9861
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9862
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9863
queryRGBMasks
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9864
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9865
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9866
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9867
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9868
	Visual *visual;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9869
	OBJ redMask, greenMask, blueMask, bprgb;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9870
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9871
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9872
	visual = DefaultVisualOfScreen(DefaultScreenOfDisplay(dpy));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9873
	redMask   = __MKSMALLINT(visual->red_mask);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9874
	greenMask = __MKSMALLINT(visual->green_mask);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9875
	blueMask  = __MKSMALLINT(visual->blue_mask);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9876
	bprgb  = __MKSMALLINT(visual->bits_per_rgb);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9877
	RETURN ( __ARRAY_WITH4(redMask, greenMask, blueMask, bprgb) );
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9878
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9879
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9880
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9881
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9882
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9883
     Display queryRGBMasks
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9884
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9885
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9886
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9887
queryWhitePixel
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9888
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9889
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9890
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9891
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9892
	int scr;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9893
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9894
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9895
	scr = DefaultScreen(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9896
	RETURN ( __MKSMALLINT(WhitePixel(dpy, scr)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9897
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9898
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9899
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9900
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9901
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9902
     Display queryWhitePixel
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9903
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9904
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9905
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9906
queryWidth
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9907
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9908
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9909
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9910
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9911
	int scr;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9912
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9913
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9914
	scr = DefaultScreen(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9915
	RETURN ( __MKSMALLINT(DisplayWidth(dpy, scr)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9916
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9917
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9918
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9919
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9920
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9921
     Display queryWidth
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9922
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9923
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9924
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9925
queryWidthMM
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9926
%{  /* NOCONTEXT */
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9927
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9928
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9929
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9930
	int scr;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9931
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9932
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9933
	scr = DefaultScreen(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9934
	RETURN ( __MKSMALLINT(DisplayWidthMM(dpy, scr)));
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9935
    }
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9936
%}.
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9937
    ^ nil
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9938
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9939
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
  9940
     Display queryWidthMM
3487
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9941
    "
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9942
!
5f28d7335961 category change
Claus Gittinger <cg@exept.de>
parents: 3482
diff changeset
  9943
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9944
reinitialize
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9945
    preWaitAction notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9946
	Processor removePreWaitAction:preWaitAction.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9947
	preWaitAction := nil.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9948
    ].
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9949
    virtualRootId := rootId := nil.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9950
    selectionFetchers := nil.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9951
    dispatchingExpose := nil
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9952
!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9953
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9954
releaseDeviceResources
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9955
    preWaitAction notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9956
	Processor removePreWaitAction:preWaitAction.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9957
	preWaitAction := nil.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9958
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9959
    selectionFetchers := nil.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
  9960
    super releaseDeviceResources.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9961
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9962
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9963
!XWorkstation methodsFor:'keyboard mapping'!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
  9964
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9965
altModifierMask
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9966
    "return the mask (in motionEvents) for the alt-key modifier.
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9967
     Notice: ST/X may use the left ALT key as CMD/Meta key,
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9968
     therefore return a variable here, which can be changed during startup."
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9969
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9970
    ^ altModifierMask
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9971
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9972
    "Created: 23.3.1996 / 12:43:22 / cg"
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9973
    "Modified: 23.3.1996 / 12:44:56 / cg"
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9974
!
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9975
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9976
altModifierMask:aSmallInteger
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9977
    "define which key takes the role of an alt-key.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9978
     By default, this is X's modifier1, which is the ALT key on
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9979
     most keyboards. However, there may be exceptions to this,
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9980
     and the setting can be changed with:
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
  9981
	Display altModifierMask:(Display modifier2Mask)
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9982
     Setting the mask to 0 disables the ALT key (in ST/X) altogether.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9983
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9984
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9985
    altModifierMask := aSmallInteger
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9986
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
  9987
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  9988
ctrlModifierMask
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  9989
    "return the Xlib mask bit for the control modifier key"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  9990
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  9991
%{  /* NOCONTEXT */
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  9992
    RETURN (__MKSMALLINT(ControlMask));
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  9993
%}
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  9994
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
  9995
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
  9996
metaModifierMask
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9997
    "return the mask (in motionEvents) for the meta-key modifier.
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9998
     Notice: ST/X may use the left ALT key as CMD/Meta key,
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
  9999
     therefore return a variable here, which can be changed during startup."
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10000
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10001
    ^ metaModifierMask
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10002
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10003
    "Created: 23.3.1996 / 12:43:39 / cg"
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10004
    "Modified: 23.3.1996 / 12:45:09 / cg"
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10005
!
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10006
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10007
metaModifierMask:aSmallInteger
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10008
    "define which key takes the role of a meta key.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10009
     By default, this is X's modifier2, which is the 2nd ALT key on
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10010
     most keyboards (if present at all).
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10011
     However, there may be exceptions to this, and the setting can
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10012
     be changed with:
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10013
	Display metaModifierMask:(Display modifier1Mask)
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10014
     Setting the mask to 0 disables the META key (in ST/X) altogether.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10015
     As reported, some Xservers place the Meta-key onto NumLock,
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10016
     and having NumLock enabled makes ST/X think, that meta is pressed
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10017
     all the time. On those, you should disable the meta key by setting
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10018
     the mask to 0.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10019
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10020
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10021
    metaModifierMask := aSmallInteger
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10022
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10023
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10024
modifier1Mask
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10025
    "return the Xlib mask bit for the 1st modifier key.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10026
     See comment in altModifierMask: / metaModifierMask: for what
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10027
     this could be used."
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10028
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10029
%{  /* NOCONTEXT */
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10030
    RETURN (__MKSMALLINT(Mod1Mask));
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10031
%}
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10032
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10033
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10034
modifier2Mask
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10035
    "return the Xlib mask bit for the 2nd modifier key.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10036
     See comment in altModifierMask: / metaModifierMask: for what
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10037
     this could be used."
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10038
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10039
%{  /* NOCONTEXT */
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10040
    RETURN (__MKSMALLINT(Mod2Mask));
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10041
%}
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10042
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10043
3305
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10044
modifier3Mask
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10045
    "return the Xlib mask bit for the 3rd modifier key.
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10046
     See comment in altModifierMask: / metaModifierMask: for what
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10047
     this could be used."
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10048
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10049
%{  /* NOCONTEXT */
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10050
    RETURN (__MKSMALLINT(Mod3Mask));
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10051
%}
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10052
!
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10053
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10054
modifier4Mask
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10055
    "return the Xlib mask bit for the 4th modifier key.
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10056
     See comment in altModifierMask: / metaModifierMask: for what
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10057
     this could be used."
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10058
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10059
%{  /* NOCONTEXT */
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10060
    RETURN (__MKSMALLINT(Mod4Mask));
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10061
%}
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10062
!
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10063
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10064
modifier5Mask
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10065
    "return the Xlib mask bit for the 5th modifier key.
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10066
     See comment in altModifierMask: / metaModifierMask: for what
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10067
     this could be used."
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10068
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10069
%{  /* NOCONTEXT */
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10070
    RETURN (__MKSMALLINT(Mod5Mask));
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10071
%}
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10072
!
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10073
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10074
modifierMapping
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10075
    "Get the Modifier Mapping.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10076
     We return an array of arrays of keycodes"
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10077
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10078
    |modifierKeyMap maxKeyPerMod ret nextKey|
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10079
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10080
    modifierKeyMap := self rawModifierMapping.
5586
1c02d95a3e80 changed:
Stefan Vogel <sv@exept.de>
parents: 5568
diff changeset
 10081
    modifierKeyMap isEmptyOrNil ifTrue:[^ nil].
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10082
    maxKeyPerMod := modifierKeyMap size // 8.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10083
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10084
    ret := Array new:8.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10085
    nextKey := 1.
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10086
    1 to:8 do:[ :i |
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10087
	(modifierKeyMap at:nextKey) ~= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10088
	    |mod|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10089
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10090
	    mod := OrderedCollection new:maxKeyPerMod.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10091
	    modifierKeyMap from:nextKey to:(nextKey+maxKeyPerMod-1) do:[ :key |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10092
		key ~= 0 ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10093
		    mod add:key
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10094
		].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10095
	    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10096
	    ret at:i put:mod asArray.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10097
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10098
	nextKey := nextKey+maxKeyPerMod.
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10099
    ].
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10100
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10101
    ^ ret
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10102
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10103
    "
3305
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10104
     Display modifierMapping
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10105
    "
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10106
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10107
    "
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10108
     |mapping|
05abfe559bb6 preps for super-key support
Claus Gittinger <cg@exept.de>
parents: 3303
diff changeset
 10109
3322
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10110
     mapping := Display modifierMapping.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10111
     ^ mapping collect:[:eachRow |
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10112
			     eachRow notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10113
				 eachRow collect:[ :key | Display stringFromKeycode:key ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10114
			     ] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10115
				 nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10116
			     ]
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10117
		       ].
3322
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10118
    "
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10119
!
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10120
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10121
rawKeySymTranslation
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10122
    "Get the raw keyboard mapping (maps some special X-keySyms to STX-internal names
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10123
     and can also be used to untranslate a stupid x-mapping (as on hpux)."
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10124
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10125
    ^ rawKeySymTranslation
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10126
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10127
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10128
    "
1c92a842f099 keyboard mapping fixes for hpux
Claus Gittinger <cg@exept.de>
parents: 3321
diff changeset
 10129
     Display rawKeySymTranslation
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10130
    "
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10131
!
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10132
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10133
rawModifierMapping
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10134
    "Get the raw Modifier Mapping."
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10135
5586
1c02d95a3e80 changed:
Stefan Vogel <sv@exept.de>
parents: 5568
diff changeset
 10136
    |modifierKeyMap|
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10137
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10138
%{
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10139
    XModifierKeymap *modmap;
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10140
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10141
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10142
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10143
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10144
	if ((modmap = XGetModifierMapping(dpy)) != 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10145
	   modifierKeyMap = __BYTEARRAY_UNINITIALIZED_NEW_INT(modmap->max_keypermod * 8);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10146
	   if (modifierKeyMap != nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10147
		memcpy((char *)__ByteArrayInstPtr(modifierKeyMap)->ba_element,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10148
		       (char *)modmap->modifiermap, modmap->max_keypermod * 8);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10149
	   }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10150
	   XFreeModifiermap(modmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10151
	}
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10152
    }
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10153
%}.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10154
    ^ modifierKeyMap
3214
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10155
359316f51b9f rel5 migration
Claus Gittinger <cg@exept.de>
parents: 3207
diff changeset
 10156
    "
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10157
	Display rawModifierMapping
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10158
    "
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10159
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10160
3230
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
 10161
shiftModifierMask
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
 10162
    "return the Xlib mask bit for the shift modifier key"
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
 10163
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
 10164
%{  /* NOCONTEXT */
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
 10165
    RETURN (__MKSMALLINT(ShiftMask));
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
 10166
%}
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
 10167
!
e6e06f7b7df4 new event decomposition code.
Claus Gittinger <cg@exept.de>
parents: 3229
diff changeset
 10168
5982
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10169
superModifierMask
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10170
    "return the Xlib mask bit for the super modifier key"
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10171
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10172
    ^ self modifier4Mask
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10173
!
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10174
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10175
symbolFromKeycode:code
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10176
    "Get a KeySymbol (a smalltalk symbol) from the keycode."
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10177
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10178
    |str|
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10179
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10180
%{
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10181
    KeySym keysym;
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10182
    char *keystring;
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10183
5982
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10184
    if (ISCONNECTED && __isSmallInteger(code)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10185
	Display *dpy = myDpy;
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
 10186
5983
d7740b5eb6b4 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5982
diff changeset
 10187
// Our Windows Xlib does not support Xkb as of 2013-01
d7740b5eb6b4 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5982
diff changeset
 10188
//        if ((keysym = XkbKeycodeToKeysym(dpy, __intVal(code), 0, 0)) != NoSymbol
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10189
	if ((keysym = XKeycodeToKeysym(dpy, __intVal(code), 0)) != NoSymbol
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10190
	    && (keystring = XKeysymToString(keysym)) != 0)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10191
	    str = __MKSYMBOL(keystring, 0);
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10192
    }
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10193
%}.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10194
    ^ str
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10195
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10196
    "
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10197
	Display symbolFromKeycode:50
5982
590849deb045 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5979
diff changeset
 10198
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10199
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10200
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10201
!XWorkstation methodsFor:'misc'!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10202
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10203
beep
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10204
    "output an audible beep or bell"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10205
3079
c72afe99c62c allow beeper to be disabled.
ps
parents: 3061
diff changeset
 10206
    UserPreferences current beepEnabled ifTrue:[
6762
8d0545bed2f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6758
diff changeset
 10207
	self beep:0 volume:50
1906
6fa8e10f3a51 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1899
diff changeset
 10208
    ]
3079
c72afe99c62c allow beeper to be disabled.
ps
parents: 3061
diff changeset
 10209
6758
68c8fc0ab607 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6630
diff changeset
 10210
    "
68c8fc0ab607 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6630
diff changeset
 10211
     Screen current beep
68c8fc0ab607 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6630
diff changeset
 10212
    "
68c8fc0ab607 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6630
diff changeset
 10213
3079
c72afe99c62c allow beeper to be disabled.
ps
parents: 3061
diff changeset
 10214
    "Modified: / 3.12.1999 / 17:13:59 / ps"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10215
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10216
5247
01a7136e6d33 Rename beep: to beep:volume: for compatibility with WinWorkstation
Stefan Vogel <sv@exept.de>
parents: 5234
diff changeset
 10217
beep:aSymbolOrInteger volume:volumeInPercent
01a7136e6d33 Rename beep: to beep:volume: for compatibility with WinWorkstation
Stefan Vogel <sv@exept.de>
parents: 5234
diff changeset
 10218
    "output an audible beep. aSymbolOrInteger determines the sound, but is ignored here
01a7136e6d33 Rename beep: to beep:volume: for compatibility with WinWorkstation
Stefan Vogel <sv@exept.de>
parents: 5234
diff changeset
 10219
     (kept for comaptibilty with WinWorkstation)."
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10220
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10221
    <context: #return>
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10222
%{
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10223
    int volume;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10224
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10225
    if (__isSmallInteger(volumeInPercent)
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10226
     && ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10227
	/* stupid: X wants -100 .. 100 and calls this percent */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10228
	volume = __intVal(volumeInPercent) * 2 - 100;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10229
	if (volume < -100) volume = -100;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10230
	else if (volume > 100) volume = 100;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10231
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10232
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10233
	XBell(myDpy, volume);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10234
	LEAVE_XLIB();
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10235
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10236
%}
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10237
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10238
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10239
buffered
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10240
    "buffer drawing - do not send it immediately to the display.
374
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10241
     This is the default anyway.
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10242
     See #unBuffered for additional info."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10243
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10244
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10245
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10246
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10247
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10248
	XSynchronize(myDpy, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10249
	LEAVE_XLIB();
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10250
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10251
%}
374
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10252
    "
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10253
     Display buffered
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10254
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10255
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10256
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10257
flush
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10258
    "send all buffered drawing to the display.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10259
     This may be required to make certain, that all previous operations
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10260
     are really sent to the display before continuing. For example,
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10261
     after a cursor-change with a followup long computation.
374
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10262
     (otherwise, the cursor change request may still be in the output buffer)
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10263
     See also #sync, which even waits until the request has been processed."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10264
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10265
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10266
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10267
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10268
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10269
	XFlush(myDpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10270
	LEAVE_XLIB();
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
 10271
    }
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
 10272
%}.
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
 10273
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
 10274
    operationsUntilFlush := maxOperationsUntilFlush.
310
6ed27eebc243 stefans event queue changes
Claus Gittinger <cg@exept.de>
parents: 303
diff changeset
 10275
!
6ed27eebc243 stefans event queue changes
Claus Gittinger <cg@exept.de>
parents: 303
diff changeset
 10276
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10277
flushDpsContext:aDPSContext
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 10278
    <context: #return>
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 10279
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10280
#ifdef DPS
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10281
    if (ISCONNECTED
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10282
	&& __isExternalAddress(aDPSContext)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10283
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10284
	DPSFlushContext(__DPSContextVal(aDPSContext));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10285
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10286
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10287
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10288
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10289
#endif
374
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10290
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10291
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10292
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10293
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 10294
flushIfAppropriate
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 10295
    "flush the device, if necessary"
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 10296
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 10297
    operationsUntilFlush notNil ifTrue:[
6350
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
 10298
	operationsUntilFlush <= 0 ifTrue:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
 10299
	    self flush.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
 10300
	    ^ true.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
 10301
	] ifFalse:[
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
 10302
	    operationsUntilFlush := operationsUntilFlush - 1.
e15b6facdf7c class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6335
diff changeset
 10303
	].
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 10304
    ].
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 10305
    ^ false.
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 10306
!
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 10307
3326
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10308
primSync
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10309
    "send all buffered drawing to the display AND wait until the display
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10310
     has finished drawing it.
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10311
     This is almost never needed, except if you are about to read previously
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10312
     drawn pixels back from the display screen, or you want to wait for a beep
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10313
     to be finished. See also #flush."
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10314
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10315
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10316
%{
3326
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10317
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10318
    if (ISCONNECTED) {
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10319
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10320
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10321
	XSync(myDpy, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10322
	LEAVE_XLIB();
6152
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
 10323
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
 10324
    }
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
 10325
%}.
1933a8c5de56 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6131
diff changeset
 10326
    operationsUntilFlush := maxOperationsUntilFlush.
3326
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10327
!
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10328
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10329
refreshKeyboardMapping:eB
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10330
    <context: #return>
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10331
%{
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10332
    XMappingEvent *ev;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10333
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
 10334
    if (ISCONNECTED && __isByteArrayLike(eB)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10335
	ev = (XMappingEvent *)(__ByteArrayInstPtr(eB)->ba_element);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10336
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10337
	XRefreshKeyboardMapping(ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10338
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10339
	RETURN ( self );
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10340
    }
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10341
%}.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10342
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10343
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10344
3575
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10345
roundTripTime
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10346
    "answer the round trip time in milliSeconds.
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10347
     May be used to detect slow X11 connections"
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10348
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10349
    self sync.
4119
a770b7e08c72 Use Timestamp/#asTimestamp instead of AbsoluteTime/#asAbsoluteTime
Stefan Vogel <sv@exept.de>
parents: 4114
diff changeset
 10350
    ^ Timestamp millisecondsToRun:[ self primSync ].
3575
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10351
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10352
    "
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10353
     Screen current roundTripTime
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10354
    "
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10355
!
7de8c94fc7fa New method: #roundTripTime
Stefan Vogel <sv@exept.de>
parents: 3537
diff changeset
 10356
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10357
setInputFocusTo:aWindowId
2871
f33c75104fa9 comment
Claus Gittinger <cg@exept.de>
parents: 2862
diff changeset
 10358
    "set the focus to the view as defined by aWindowId.
f33c75104fa9 comment
Claus Gittinger <cg@exept.de>
parents: 2862
diff changeset
 10359
     When released, return the focus to the root window"
f33c75104fa9 comment
Claus Gittinger <cg@exept.de>
parents: 2862
diff changeset
 10360
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10361
"/    self setInputFocusTo:aWindowId revertTo:#parent
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10362
    self setInputFocusTo:aWindowId revertTo:#root
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10363
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10364
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10365
setInputFocusTo:aWindowId revertTo:revertSymbol
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10366
    "set the focus to the view as defined by aWindowId.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10367
     Passing nil set the focus to no window and lets the display discard all
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10368
     input until a new focus is set.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10369
     RevertSymbol specifies what should happen if the view becomes invisible;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10370
     passing one of #parent, #root or nil specifies that the focus should be
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10371
     given to the parent view, the root view or no view."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10372
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10373
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10374
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10375
    int arg;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10376
    Window focusWindow;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10377
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10378
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10379
	if (__isExternalAddress(aWindowId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10380
	    focusWindow = __WindowVal(aWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10381
	} else if (aWindowId == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10382
	    focusWindow = None;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10383
	} else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10384
	    goto err;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10385
	if (revertSymbol == @symbol(parent))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10386
	    arg = RevertToParent;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10387
	else if (revertSymbol == @symbol(root))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10388
	    arg = RevertToPointerRoot;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10389
	else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10390
	    arg = RevertToNone;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10391
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10392
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10393
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10394
	XSetInputFocus(myDpy, focusWindow, arg, CurrentTime);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10395
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10396
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10397
	RETURN ( self );
3650
801f98670917 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3647
diff changeset
 10398
    }
801f98670917 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3647
diff changeset
 10399
err:;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10400
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10401
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10402
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10403
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10404
sync
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10405
    "send all buffered drawing to the display AND wait until the display
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10406
     has finished drawing it.
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10407
     This is almost never needed, except if you are about to read previously
374
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10408
     drawn pixels back from the display screen, or you want to wait for a beep
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10409
     to be finished. See also #flush."
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10410
3326
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10411
    self primSync.
5d58d51bf927 sync checks for pending events
Claus Gittinger <cg@exept.de>
parents: 3322
diff changeset
 10412
    self dispatchPendingEvents.
341
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10413
!
47ac178c3924 modifiermappings - again
Claus Gittinger <cg@exept.de>
parents: 334
diff changeset
 10414
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10415
unBuffered
374
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10416
    "make all drawing be sent immediately to the display.
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10417
     This makes all graphics synchronous and turns off any buffering
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10418
     (i.e. each individual draw-request is sent immediately without
374
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10419
      packing multiple requests into a larger message buffer).
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10420
     Be prepared, that this slows down graphics considerably.
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10421
     However, it allows display errors to be handled immediately and
17c544cc1fad commentary
Claus Gittinger <cg@exept.de>
parents: 366
diff changeset
 10422
     may be useful if you get Xdisplay errors and want to find the request
1813
2622c38573df *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1798
diff changeset
 10423
     which was responsible for it. See also #buffered."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10424
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10425
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10426
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10427
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10428
    if (ISCONNECTED) {
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
 10429
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10430
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10431
	XSynchronize(myDpy, 1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10432
	LEAVE_XLIB();
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
 10433
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10434
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10435
%}
1813
2622c38573df *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1798
diff changeset
 10436
    "
2622c38573df *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1798
diff changeset
 10437
     Display unBuffered
2622c38573df *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1798
diff changeset
 10438
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10439
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10440
1718
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10441
!XWorkstation methodsFor:'pointer stuff'!
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10442
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10443
anyButtonStateMask
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10444
    "return an integer for masking out any button from a
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10445
     buttonStates value."
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10446
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10447
    "/ should use ``Display buttonXMotionMask bitOr:....''
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10448
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10449
    ^ 256 + 512 + 1024
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10450
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10451
    "Modified: 23.3.1996 / 12:41:33 / cg"
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10452
    "Created: 23.3.1996 / 12:46:35 / cg"
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10453
!
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10454
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10455
buttonStates
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10456
    "return an integer representing the state of the pointer buttons;
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10457
     a one-bit in positions 0.. represent a pressed button.
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10458
     See the button1Mask/button2Mask/button3Mask,
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10459
     shiftMask/controlMask and modifierMask methods for the meaning of the bits."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10460
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10461
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10462
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10463
    Window w;
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
 10464
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10465
    Window rootRet, childRet;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10466
    int rootX, rootY, winX, winY;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10467
    unsigned int mask;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10468
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 10469
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10470
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10471
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10472
	w = RootWindow(dpy, screen);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10473
	if (w) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10474
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10475
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10476
	    XQueryPointer(dpy, w, &rootRet, &childRet,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10477
				 &rootX, &rootY,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10478
				 &winX, &winY,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10479
				 &mask);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10480
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10481
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10482
	    RETURN (__MKSMALLINT(mask));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10483
	}
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 10484
    }
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 10485
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10486
    self primitiveFailedOrClosedConnection.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10487
    ^ nil
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10488
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10489
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10490
     Display buttonStates
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10491
    "
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10492
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10493
    "is the control-key pressed ?
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10494
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10495
     Display buttonStates bitTest:(Display controlMask)
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10496
    "
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10497
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10498
    "is the alt/meta-key pressed ?
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10499
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10500
     Display buttonStates bitTest:(Display altModifierMask)
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10501
     Display buttonStates bitTest:(Display metaModifierMask)
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10502
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10503
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10504
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10505
leftButtonStateMask
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10506
    "return an integer for masking out the left button from a
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10507
     buttonStates value"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10508
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10509
    "/ should use ``Display button1MotionMask''
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10510
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10511
    ^ 256
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10512
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10513
    "Modified: 23.3.1996 / 12:41:33 / cg"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10514
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10515
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10516
middleButtonStateMask
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10517
    "return an integer for masking out the middle button from a
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10518
     buttonStates value"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10519
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10520
    "/ should use ``Display button2MotionMask''
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10521
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10522
    ^ 512
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10523
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10524
    "Modified: 23.3.1996 / 12:41:43 / cg"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10525
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10526
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10527
pointerPosition
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10528
    "return the current pointer position in (virtual) root-window coordinates"
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10529
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10530
    <context: #return>
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10531
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10532
    |xpos ypos rootWindowId|
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10533
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10534
    rootWindowId := self rootWindowId.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10535
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10536
%{
555
2705be333c5f underscore macro cleanup
Claus Gittinger <cg@exept.de>
parents: 551
diff changeset
 10537
    int screen = __intVal(__INST(screen));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10538
    Window rootRet, childRet;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10539
    int rootX, rootY, winX, winY;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10540
    unsigned int mask;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10541
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 10542
    if (ISCONNECTED && rootWindowId != nil) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10543
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10544
	Window w = (Window)__externalAddressVal(rootWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10545
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10546
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10547
	XQueryPointer(dpy, w, &rootRet, &childRet,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10548
			      &rootX, &rootY,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10549
			      &winX, &winY,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10550
			      &mask);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10551
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10552
	xpos = __MKSMALLINT(rootX);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10553
	ypos = __MKSMALLINT(rootY);
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
 10554
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 10555
    }
1718
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10556
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10557
    xpos isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10558
	self primitiveFailedOrClosedConnection.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10559
	^ nil
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10560
    ].
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10561
    ^ xpos @ ypos
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10562
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10563
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10564
rightButtonStateMask
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10565
    "return an integer for masking out the right button from a
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10566
     buttonStates value"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10567
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10568
    "/ should use ``Display button3MotionMask''
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10569
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10570
    ^ 1024
540
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10571
c954c490c8be stateMask methods & commentary
Claus Gittinger <cg@exept.de>
parents: 487
diff changeset
 10572
    "Modified: 23.3.1996 / 12:41:52 / cg"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10573
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10574
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 10575
rootPositionOfLastEvent
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10576
    "return the position in root-window coordinates
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10577
     of the last button, key or pointer event"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10578
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10579
    ^ eventRootX @ eventRootY
1718
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10580
!
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10581
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10582
setPointerPosition:newPosition in:aWindowId
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10583
    "change the pointer position to a new position relative to the
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10584
     given windows origin (which may be the rootWindow).
3329
05ac7164c99d Fix mouseWheel stuff.
Stefan Vogel <sv@exept.de>
parents: 3326
diff changeset
 10585
     Be careful with this - its usually not very ergonomically
1718
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10586
     to change the mousePointer position.
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10587
     This interface is provided for special applications (presentation
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10588
     playback) and should not be used in normal applications."
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10589
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10590
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10591
1718
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10592
    |xpos ypos|
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10593
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10594
    xpos := newPosition x.
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10595
    ypos := newPosition y.
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10596
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10597
%{
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10598
    if (ISCONNECTED
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10599
     && __isExternalAddress(aWindowId)
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10600
     && __bothSmallInteger(xpos, ypos)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10601
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10602
	Window w = __WindowVal(aWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10603
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10604
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10605
	XWarpPointer(dpy,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10606
		     None,  /* src window */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10607
		     w,  /* dst window */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10608
		     0,  /* src_x */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10609
		     0,  /* src_y */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10610
		     0,  /* src_w */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10611
		     0,  /* src_h */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10612
		     __intVal(xpos),  /* dst_x */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10613
		     __intVal(ypos)   /* dst_y */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10614
		    );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10615
	LEAVE_XLIB();
1718
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10616
    }
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10617
%}.
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10618
    ^ self
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10619
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10620
    "
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10621
     Display setPointerPosition:1000@1000
886b895eb2f3 added setPointerPosition: for recorder/playback support
Claus Gittinger <cg@exept.de>
parents: 1709
diff changeset
 10622
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10623
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 10624
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10625
!XWorkstation methodsFor:'private'!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10626
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10627
addSelectionHandler:someone
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10628
    "register someone to be notified when the selection changes"
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10629
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10630
    selectionHandlers isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10631
	selectionHandlers := IdentitySet new.
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10632
    ].
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10633
    selectionHandlers add:someone
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10634
!
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10635
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10636
findSelectionFetcher:aDrawableId
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 10637
    "find the SelectionFetcher that receives selection events for aDrawableId.
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 10638
     Answer nil, if there is none"
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10639
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10640
    selectionFetchers isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10641
	^ nil.
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10642
    ].
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10643
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10644
    ^ selectionFetchers at:aDrawableId ifAbsent:[].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10645
!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10646
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10647
registerSelectionFetcher:aSelectionFetcher
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 10648
    "register a SelectionFetcher that receives selection events for aDrawableId"
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10649
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10650
    selectionFetchers isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10651
	selectionFetchers := Dictionary new.
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10652
    ].
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10653
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10654
    selectionFetchers at:aSelectionFetcher drawableID put:aSelectionFetcher.
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10655
!
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10656
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10657
removeSelectionHandler:someone
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10658
    "no longer tell someone about selection changes"
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10659
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10660
    selectionHandlers notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10661
	selectionHandlers remove:someone ifAbsent:nil.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10662
	selectionHandlers := selectionHandlers asNilIfEmpty
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10663
    ].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10664
!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10665
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10666
unregisterSelectionFetcher:aSelectionFetcher
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 10667
    "unregister a SelectionFetcher that received selection events for aDrawableId"
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10668
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 10669
    selectionFetchers removeKey:aSelectionFetcher drawableID.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10670
! !
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10671
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10672
!XWorkstation methodsFor:'properties'!
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10673
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10674
deleteProperty:propertyID for:aWindowID
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10675
    "delete a property in the XServer"
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10676
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10677
    <context: #return>
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10678
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10679
%{
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10680
    if (ISCONNECTED && __isAtomID(propertyID)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10681
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10682
	Atom prop;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10683
	Window window;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10684
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10685
	prop = __AtomVal(propertyID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10686
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10687
	if (__isExternalAddress(aWindowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10688
	    window = __WindowVal(aWindowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10689
	} else if (aWindowID == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10690
	    window = DefaultRootWindow(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10691
	} else if (__isInteger(aWindowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10692
	    window = (Window)__unsignedLongIntVal(aWindowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10693
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10694
	    goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10695
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10696
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10697
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10698
	XDeleteProperty(dpy, window, prop);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10699
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10700
	RETURN(true);
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10701
    }
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
 10702
fail:;
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10703
%}.
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10704
    self primitiveFailedOrClosedConnection.
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10705
!
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 10706
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10707
getProperty:propertySymbolOrAtomID from:aWindowOrWindowIDOrNil delete:doDelete
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10708
    "get a property as an association propertyType->propertyValue"
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10709
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10710
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10711
3974
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10712
    |val typeID propertyID windowID|
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10713
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10714
    propertySymbolOrAtomID isString ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10715
	propertyID := self atomIDOf:propertySymbolOrAtomID create:false.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10716
	propertyID isNil ifTrue:[^ nil].
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 10717
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10718
	propertyID := propertySymbolOrAtomID.
3974
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10719
    ].
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10720
    aWindowOrWindowIDOrNil isView ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10721
	windowID := aWindowOrWindowIDOrNil id.
3974
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10722
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10723
	windowID := aWindowOrWindowIDOrNil.
3650
801f98670917 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3647
diff changeset
 10724
    ].
801f98670917 *** empty log message ***
Stefan Vogel <sv@exept.de>
parents: 3647
diff changeset
 10725
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10726
%{
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10727
    Window window;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10728
    Atom property;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10729
    char *cp, *cp2;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10730
    Atom actual_type;
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 10731
    int actual_format;
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10732
    unsigned long nitems, bytes_after, nread;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10733
    unsigned char *data;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10734
    int ok = 1;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10735
#   define PROP_SIZE    2048
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10736
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10737
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10738
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10739
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10740
	if (__isAtomID(propertyID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10741
	    property = __AtomVal(propertyID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10742
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10743
	    if (__isExternalAddress(windowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10744
		window = __WindowVal(windowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10745
	    } else if (windowID == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10746
		window = DefaultRootWindow(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10747
	    } else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10748
		goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10749
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10750
	    nread = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10751
	    cp = 0;
3974
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10752
#ifdef PROPERTY_DEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10753
	    console_fprintf(stderr, "getProperty %x\n", property);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10754
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10755
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10756
	    do {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10757
		int retVal;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10758
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10759
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10760
		retVal = XGetWindowProperty(dpy, window, property, nread/4, PROP_SIZE,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10761
					    doDelete == true,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10762
					    AnyPropertyType, &actual_type, &actual_format,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10763
					    &nitems, &bytes_after, (unsigned char **)&data);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10764
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10765
		if (retVal != Success) {
3974
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10766
#ifdef PROPERTY_DEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10767
		    console_fprintf(stderr, "- no success\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10768
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10769
		    ok = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10770
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10771
		}
3974
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10772
#ifdef PROPERTY_DEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10773
		console_fprintf(stderr, "- type:%x\n", actual_type);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10774
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10775
		nitems *= (actual_format / 8);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10776
		typeID = __MKATOMOBJ(actual_type);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10777
		if (! cp) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10778
		    cp = cp2 = (char *)malloc(nitems+bytes_after);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10779
		} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10780
		    cp2 = cp + nread;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10781
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10782
		if (! cp) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10783
		    XFree(data);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10784
		    goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10785
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10786
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10787
		nread += nitems;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10788
		bcopy(data, cp2, nitems);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10789
		XFree(data);
3974
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10790
#ifdef PROPERTY_DEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10791
		console_fprintf(stderr, "- <nitems:%d bytes_after:%d>\n", nitems, bytes_after);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10792
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10793
	    } while (bytes_after > 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10794
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10795
	    if (ok) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10796
		switch (actual_format) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10797
		case 32:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10798
		    val = __stArrayFromCUIntArray((unsigned int*)cp, nread/4);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10799
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10800
		case 16:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10801
		    val = __stArrayFromCUShortArray((unsigned short*)cp, nread/2);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10802
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10803
		case 8:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10804
		default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10805
		    if (actual_type == XA_STRING) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10806
			val = __MKSTRING_L(cp, nread);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10807
		    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10808
			val = __MKBYTEARRAY(cp, nread);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10809
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10810
		    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10811
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10812
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10813
	    if (cp)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10814
		free(cp);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10815
	}
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10816
    }
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10817
fail: ;
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10818
%}.
5936
32467c3ce97d Fixed copy/paste problem
Stefan Vogel <sv@exept.de>
parents: 5934
diff changeset
 10819
    (typeID isNil or:[typeID == 0]) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10820
	"typeID == 0 (None): The property does not exist in the specified window"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10821
	^ nil
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10822
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10823
    ^ typeID->val
3977
40eb0d3cb208 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3975
diff changeset
 10824
40eb0d3cb208 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3975
diff changeset
 10825
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 10826
     Display
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10827
	getProperty:#'_NET_WM_ICON_GEOMETRY'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10828
	from:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10829
	delete:false
3974
ed85b0aed5a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3948
diff changeset
 10830
    "
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10831
!
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10832
3975
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10833
propertiesOf:aWindowOrWindowIDOrNil
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10834
    "return a collection of all properties' atomIDs of a window.
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10835
     Returns the rootWindows props for a nil window argument."
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10836
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10837
    <context: #return>
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10838
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10839
    |windowID atoms|
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10840
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10841
    aWindowOrWindowIDOrNil isView ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10842
	windowID := aWindowOrWindowIDOrNil id.
3975
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10843
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10844
	windowID := aWindowOrWindowIDOrNil.
3975
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10845
    ].
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10846
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10847
%{
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10848
    Window window;
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10849
    Atom *atomListPtr;
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10850
    int i;
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10851
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10852
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10853
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10854
	int numProps = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10855
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10856
	if (__isExternalAddress(windowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10857
	    window = __WindowVal(windowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10858
	} else if (windowID == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10859
	    window = DefaultRootWindow(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10860
	} else if (__isInteger(windowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10861
	    window = (Window)__unsignedLongIntVal(windowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10862
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10863
	    goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10864
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10865
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10866
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10867
	atomListPtr = XListProperties(dpy, window, &numProps);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10868
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10869
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10870
	if (atomListPtr == NULL) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10871
	    RETURN (nil);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10872
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10873
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10874
	atoms = __ARRAY_NEW_INT(numProps);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10875
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10876
	if (atoms == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10877
	    goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10878
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10879
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10880
	for (i=0; i<numProps; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10881
	    OBJ atm;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10882
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10883
	    atm = __MKATOMOBJ(atomListPtr[i]);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10884
	    __ArrayInstPtr(atoms)->a_element[i] = atm; __STORE(atoms, atm);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10885
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10886
	XFree(atomListPtr);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10887
	RETURN (atoms);
3975
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10888
    }
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10889
fail: ;
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10890
%}.
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10891
    ^ self primitiveFailed
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10892
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10893
    "
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10894
     Display propertiesOf:nil
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 10895
     Display propertiesOf:Transcript view id
3975
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10896
    "
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10897
    "
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10898
     (Display propertiesOf:nil) do:[:atm |
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10899
	|v prop|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10900
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10901
	Transcript show:((Display atomName:atm) printStringLeftPaddedTo:5).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10902
	Transcript show:': '.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10903
	prop := Display getProperty:atm from:nil delete:false.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10904
	Transcript showCR:prop value.
3975
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10905
     ]
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10906
    "
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10907
!
e8dfa0e5ba1b + propertiesOf:
Claus Gittinger <cg@exept.de>
parents: 3974
diff changeset
 10908
5934
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10909
setIcon:anIcon for:aWindowID
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10910
    |iconAtom typeAtom buffer iWidth iHeight|
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10911
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10912
    iconAtom := self atomIDOf:#'_NET_WM_ICON' create:false.
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10913
    iconAtom isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10914
	"/Hmm, no such property, not running under EWMH compliant WM?
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10915
	^ self
5934
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10916
    ].
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10917
    typeAtom := self atomIDOf:#'CARDINAL' create:false.
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10918
    typeAtom isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10919
	"/Hmm, no such property, not running under EWMH compliant WM?
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10920
	^ self
5934
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10921
    ].
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10922
    iWidth  := anIcon width.
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10923
    iHeight := anIcon height.
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10924
    buffer := IntegerArray new:(iWidth*iHeight+2).
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10925
    buffer at:1 put:iWidth.
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10926
    buffer at:2 put:iHeight.
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10927
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10928
    self setProperty:iconAtom type:typeAtom value:buffer for:aWindowID
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10929
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10930
    "
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10931
	Display setIcon:0 for:0
5934
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10932
    "
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10933
!
456535dcca66 added: #setIcon:for:
Stefan Vogel <sv@exept.de>
parents: 5928
diff changeset
 10934
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10935
setProperty:propertyID type:typeID value:anObject for:aWindowID
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10936
    "set a property in the XServer"
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10937
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 10938
    <context: #return>
3461
779f5d3cdcee dont send fail-messages (which raise an exception) from unlimited stack
Claus Gittinger <cg@exept.de>
parents: 3454
diff changeset
 10939
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 10940
    |retval|
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 10941
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 10942
    retval := false.
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 10943
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 10944
%{  /* UNLIMITEDSTACK */
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 10945
    if (ISCONNECTED && __isAtomID(propertyID) && __isAtomID(typeID)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10946
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10947
	Atom prop, type;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10948
	Window window;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10949
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10950
	prop = __AtomVal(propertyID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10951
	type = __AtomVal(typeID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10952
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10953
	if (__isExternalAddress(aWindowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10954
	    window = __WindowVal(aWindowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10955
	} else if (aWindowID == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10956
	    window = DefaultRootWindow(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10957
	} else if (__isInteger(aWindowID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10958
	    window = (Window)__unsignedLongIntVal(aWindowID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10959
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10960
	    RETURN(false);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10961
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10962
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10963
	retval = true;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10964
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10965
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10966
	if (__isInteger(anObject)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10967
	    unsigned INT value = __longIntVal(anObject);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10968
	    XChangeProperty(dpy, window, prop, type, 32,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10969
			    PropModeReplace,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10970
			    (unsigned char *)&value, 1);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10971
	} else if (__isByteArrayLike(anObject)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10972
	    XChangeProperty(dpy, window, prop, type, 8,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10973
			    PropModeReplace,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10974
			    __byteArrayVal(anObject),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10975
			    __byteArraySize(anObject));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10976
	} else if (__isWords(anObject)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10977
	    /* wordArray-like (16bit-string) object */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10978
	    XChangeProperty(dpy, window, prop, type, 16,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10979
			    PropModeReplace,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10980
			    __stringVal(anObject),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10981
			    __wordArraySize(anObject));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10982
	} else if (__isIntegerArray(anObject)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10983
	    /* array of atoms */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10984
	    XChangeProperty(dpy, window, prop, type, 32,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10985
			    PropModeReplace,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10986
			    (char *)__integerArrayVal(anObject),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10987
			    __integerArraySize(anObject));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10988
	} else if (__isStringLike(anObject)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10989
	    XChangeProperty(dpy, window, prop, type, 8,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10990
			    PropModeReplace,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10991
			    __stringVal(anObject),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10992
			    __stringSize(anObject));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10993
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10994
	    retval = false;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10995
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10996
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10997
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 10998
	DPRINTF(("changeProp win=%"_lx_" prop=%"_lx_" type=%"_lx_"\n", (INT)window, (INT)prop, (INT)type));
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 10999
    }
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11000
%}.
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11001
    ^ retval
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11002
! !
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11003
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11004
!XWorkstation methodsFor:'queries'!
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11005
5872
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11006
defaultExtentForTopViews
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11007
    "redefined, to define the default extent for the default monitor"
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11008
    |extent|
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11009
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11010
    "the standard monitor is the first entry in monitorBounds"
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11011
    extent := self monitorBounds first extent.
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11012
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11013
    self isPDA ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11014
	^ extent - (16 @ 20)
5872
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11015
    ].
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11016
    ^ extent * 2 // 3
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11017
!
246b9c11d5a4 added: #defaultExtentForTopViews
Stefan Vogel <sv@exept.de>
parents: 5870
diff changeset
 11018
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 11019
isOpen
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 11020
    "answer true, if device can be used"
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 11021
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 11022
    ^ displayId notNil and:[hasConnectionBroken not].
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 11023
!
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 11024
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11025
isXineramaActive
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11026
%{  /* NOCONTEXT */
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11027
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11028
#ifdef XINERAMA
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11029
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11030
	Display *dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11031
	dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11032
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11033
	if (XineramaIsActive(dpy)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11034
	    RETURN ( true );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11035
	}
5869
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11036
    }
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11037
#endif
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11038
%}.
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11039
    ^ false
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11040
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11041
    "
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11042
     Display isXineramaActive
93ccf272ad13 added:6 methods
Stefan Vogel <sv@exept.de>
parents: 5865
diff changeset
 11043
    "
1556
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 11044
! !
cdc53ab8ceff added #sendClientEvent...
Claus Gittinger <cg@exept.de>
parents: 1554
diff changeset
 11045
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11046
!XWorkstation methodsFor:'resources'!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11047
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 11048
atomIDOf:aStringOrSymbol
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 11049
    "return an X11 atoms ID.
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11050
     This is highly X specific and only for local use (with selections).
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11051
     The default is to create the atom, if it does not exist, in order to
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11052
     speed up future lookups"
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11053
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11054
    ^ self atomIDOf:aStringOrSymbol create:true
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11055
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11056
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11057
     Display atomIDOf:#'FACE_NAME'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11058
     Display atomIDOf:#'FULL_NAME'
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11059
     Display atomIDOf:#DndProtocol
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11060
     Display atomIDOf:#DndSelection
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11061
    "
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11062
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 11063
    "Modified: 4.4.1997 / 13:38:48 / cg"
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11064
!
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11065
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 11066
atomIDOf:aStringOrSymbol create:create
3988
ccbd870bbfe3 clipboard UTF8 encoding
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
 11067
    "return an Atoms ID given its name.
ccbd870bbfe3 clipboard UTF8 encoding
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
 11068
     If it already exists, return its ID.
ccbd870bbfe3 clipboard UTF8 encoding
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
 11069
     If not and the create argument is true, it is created.
ccbd870bbfe3 clipboard UTF8 encoding
Claus Gittinger <cg@exept.de>
parents: 3986
diff changeset
 11070
     Otherwise, nil is returned.
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11071
     This is highly X specific and only for local use (with selections)."
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11072
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11073
    |atomSymbol atom|
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11074
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11075
    atomSymbol := aStringOrSymbol asSymbol.
7371
d88ae8653ca8 #REFACTORING by cg
Claus Gittinger <cg@exept.de>
parents: 7352
diff changeset
 11076
    (atoms notNil and:[(atom := atoms at:atomSymbol ifAbsent:[nil]) notNil]) ifTrue:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
 11077
	^ atom.
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11078
    ].
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11079
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11080
    atom := self primAtomIDOf:atomSymbol create:create.
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11081
    atom notNil ifTrue:[
7413
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
 11082
	atoms isNil ifTrue:[
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
 11083
	    atoms := IdentityDictionary new.
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
 11084
	].
3ecf41208027 #FEATURE by stefan
Stefan Vogel <sv@exept.de>
parents: 7409
diff changeset
 11085
	atoms at:atomSymbol put:atom.
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11086
    ].
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11087
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11088
    ^ atom
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11089
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11090
    "
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11091
     Display atomIDOf:#'VT_SELECTION' create:false
3797
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11092
     Display atomIDOf:#CLIPBOARD create:false
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11093
     Display atomIDOf:'STRING' create:false
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11094
     Display atomIDOf:'PRIMARY' create:false
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11095
     Display atomIDOf:'blabla' create:false
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11096
    "
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11097
!
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11098
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 11099
atomName:anAtomID
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11100
    "given an AtomID, return its name.
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11101
     This is highly X specific and only for local use (with selections)."
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11102
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11103
    <context: #return>
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11104
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11105
%{
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11106
    OBJ str;
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11107
    char *name;
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11108
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11109
    if (ISCONNECTED && __isAtomID(anAtomID)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11110
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11111
	name = XGetAtomName(myDpy, __AtomVal(anAtomID));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11112
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11113
	if (name == 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11114
	    RETURN (nil);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11115
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11116
	str = __MKSTRING(name);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11117
	XFree(name);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11118
	RETURN ( str );
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11119
    }
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11120
%}.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11121
    self primitiveFailedOrClosedConnection.
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11122
    ^ nil
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11123
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11124
    "
3418
33b8326559a7 Font properties.
Stefan Vogel <sv@exept.de>
parents: 3417
diff changeset
 11125
     Display atomName:1    'PRIMARY'
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11126
     Display atomName:130  '_DEC_DEVICE_FONTNAMES'
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11127
     Display atomName:132  'FONTNAME_REGISTRY'
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11128
     Display atomName:135 'FOUNDRY'
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11129
     Display atomName:150  'CHARSET_REGISTRY'
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11130
     Display atomName:151  'ISO8859'
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11131
     Display atomName:152 'CHARSET_ENCODING'
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11132
     Display atomName:154
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11133
    "
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11134
!
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11135
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 11136
getResource:name class:cls
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11137
    "access the displays resource database for a default value
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11138
     of name in a resource class.
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11139
     This is highly X specific and  currently not used.
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11140
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11141
     Notice:
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11142
	we do not plan to use X's resources for ST/X's defaults,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11143
	styles or resources. This would make porting of applications
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11144
	to different platforms much more difficult (Windows has no resource
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11145
	database). If you stay within ST/X's resource files, these can be
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11146
	easily transported to other platforms.
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11147
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11148
     This method is provided for special applications which want to access
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11149
     existing X resources and are not planned to be ever ported to other
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11150
     platforms."
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11151
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11152
%{
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11153
    char *rslt;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11154
2531
e4d6bdae7bcf use quick-isString / isSymbol
Claus Gittinger <cg@exept.de>
parents: 2501
diff changeset
 11155
    if (ISCONNECTED
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
 11156
     && __isStringLike(name)
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
 11157
     && __isStringLike(cls)) {
3131
88293c577ba6 got rid of BEGIN_INTERRUPTS_BLOCKED .. END_INTERRUPTS_BLOCKED;
Claus Gittinger <cg@exept.de>
parents: 3079
diff changeset
 11158
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11159
	rslt = XGetDefault(myDpy, (char *) __stringVal(cls),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11160
				  (char *) __stringVal(name));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11161
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11162
	RETURN (rslt ? __MKSTRING(rslt) : nil );
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11163
    }
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11164
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11165
    self primitiveFailedOrClosedConnection.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11166
    ^ nil.
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11167
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11168
    "if your ~/.Xdefaults contains an entry such as:
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11169
	OpenWindows.Beep:       notices
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11170
     the following returns 'notices'.
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11171
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11172
	 Display getResource:'Beep' class:'OpenWindows'
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11173
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11174
     if your ~/.Xdefaults contains an entry such as:
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11175
	*.beNiceToColormap:       false
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11176
     the following return 'false'.
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11177
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11178
	 Display getResource:'beNiceToColormap' class:'any'
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11179
	 Display getResource:'beNiceToColormap' class:''
487
f6ac7231749e category changes & comments in atomXXX methods
Claus Gittinger <cg@exept.de>
parents: 486
diff changeset
 11180
    "
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11181
!
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11182
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11183
primAtomIDOf:aStringOrSymbol create:create
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11184
    "return an Atoms ID; if create is true, create it if not already present.
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11185
     This is highly X specific and only for local use (with selections)."
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11186
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11187
    <context: #return>
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11188
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11189
%{
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11190
    Atom prop;
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11191
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11192
    if (ISCONNECTED
5467
0685d08ef9b4 isStringLike / isArrayLike
Claus Gittinger <cg@exept.de>
parents: 5247
diff changeset
 11193
     && __isStringLike(aStringOrSymbol)) {
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11194
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11195
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11196
	prop = XInternAtom(myDpy, __stringVal(aStringOrSymbol),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11197
				  (create == true) ? False : True);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11198
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11199
	if (prop == None) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11200
	    RETURN (nil);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11201
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11202
	RETURN ( __MKATOMOBJ(prop) );
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11203
    }
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11204
%}.
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11205
    self primitiveFailedOrClosedConnection.
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11206
    ^ nil
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11207
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11208
    "
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11209
     Display primAtomIDOf:'VT_SELECTION' create:false
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11210
     Display primAtomIDOf:'CUT_BUFFER0' create:false
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11211
     Display primAtomIDOf:'STRING' create:false
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11212
     Display primAtomIDOf:'PRIMARY' create:false
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11213
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11214
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11215
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11216
!XWorkstation methodsFor:'retrieving pixels'!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11217
1462
f8b2909deb3c renamed getBitsFrom to getBitsFromId
Claus Gittinger <cg@exept.de>
parents: 1455
diff changeset
 11218
getBitsFromId:aDrawableId x:srcx y:srcy width:w height:h into:imageBits
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11219
    "get bits from a drawable into the imageBits. The storage for the bits
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11220
     must be big enough for the data to fit. If ok, returns an array with some
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11221
     info and the bits in imageBits. The info contains the depth, bitOrder and
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11222
     number of bytes per scanline. The number of bytes per scanline is not known
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11223
     in advance, since the X-server is free to return whatever it thinks is a good padding."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11224
397
094b8604ea72 return more info from getBits (bitsPerPixel); return it as a dictionary
Claus Gittinger <cg@exept.de>
parents: 395
diff changeset
 11225
    |rawInfo info|
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11226
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11227
    ((w <= 0) or:[h <= 0]) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11228
	self primitiveFailed.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11229
	^ nil
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11230
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11231
397
094b8604ea72 return more info from getBits (bitsPerPixel); return it as a dictionary
Claus Gittinger <cg@exept.de>
parents: 395
diff changeset
 11232
    rawInfo := Array new:8.
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11233
		  "1 -> bit order"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11234
		  "2 -> depth"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11235
		  "3 -> bytes_per_line"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11236
		  "4 -> byte_order"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11237
		  "5 -> format"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11238
		  "6 -> bitmap_unit"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11239
		  "7 -> bitmap_pad"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11240
		  "8 -> bits_per_pixel"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11241
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11242
    "/ had to extract the getPixel call into a separate method, to specify
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11243
    "/ unlimitedStack (some implementations use alloca and require huge amounts
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11244
    "/ of temporary stack space
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11245
397
094b8604ea72 return more info from getBits (bitsPerPixel); return it as a dictionary
Claus Gittinger <cg@exept.de>
parents: 395
diff changeset
 11246
    (self primGetBitsFrom:aDrawableId x:srcx y:srcy width:w height:h into:imageBits infoInto:rawInfo) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11247
	info := IdentityDictionary new.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11248
	info at:#bitOrder put:(rawInfo at:1).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11249
	info at:#depth put:(rawInfo at:2).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11250
	info at:#bytesPerLine put:(rawInfo at:3).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11251
	info at:#byteOrder put:(rawInfo at:4).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11252
	info at:#format put:(rawInfo at:5).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11253
	info at:#bitmapUnit put:(rawInfo at:6).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11254
	info at:#bitmapPad put:(rawInfo at:7).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11255
	info at:#bitsPerPixel put:(rawInfo at:8).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11256
	^ info
7506
184d2085d4fd #OTHER by mawalch
mawalch
parents: 7486
diff changeset
 11257
    ].
184d2085d4fd #OTHER by mawalch
mawalch
parents: 7486
diff changeset
 11258
    "
184d2085d4fd #OTHER by mawalch
mawalch
parents: 7486
diff changeset
 11259
     some error occurred - either args are not smallintegers, imageBits is not a ByteArray
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11260
     or is too small to hold the bits
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11261
    "
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11262
    self primitiveFailedOrClosedConnection.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11263
    ^ nil
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11264
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11265
2713
1aef3acb4e04 need dummy GCId in getPixel (for win32)
Claus Gittinger <cg@exept.de>
parents: 2685
diff changeset
 11266
getPixelX:x y:y from:aDrawableId with:dummyGCId
790
05ea637c94c3 care for null return from XGetImage
Claus Gittinger <cg@exept.de>
parents: 788
diff changeset
 11267
    "return the pixel value at x/y; coordinates start at 0/0 for the upper left.
05ea637c94c3 care for null return from XGetImage
Claus Gittinger <cg@exept.de>
parents: 788
diff changeset
 11268
     Nil is returned for invalid coordinates or if any other problem arises."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11269
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11270
    <context: #return>
3461
779f5d3cdcee dont send fail-messages (which raise an exception) from unlimited stack
Claus Gittinger <cg@exept.de>
parents: 3454
diff changeset
 11271
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11272
%{  /* UNLIMITEDSTACK */
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11273
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
 11274
    Window win;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11275
    XImage *img;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11276
    int ret;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11277
    int xpos, ypos;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11278
1209
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
 11279
    if (ISCONNECTED
98d9f8a5a2a6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1207
diff changeset
 11280
     && __isExternalAddress(aDrawableId) && __bothSmallInteger(x, y)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11281
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11282
	xpos = __intVal(x);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11283
	ypos = __intVal(y);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11284
	if ((xpos < 0) || (ypos < 0)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11285
	    RETURN ( __MKSMALLINT(0) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11286
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11287
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11288
	img = XGetImage(myDpy, win, xpos, ypos, 1, 1, (unsigned)~0, ZPixmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11289
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11290
	if (img != 0) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11291
	    ret = XGetPixel(img, 0, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11292
	    XDestroyImage(img);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11293
	    RETURN (  __MKSMALLINT(ret) );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11294
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11295
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11296
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11297
    ^ nil
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11298
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11299
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 11300
primGetBitsFrom:aDrawableId x:srcx y:srcy width:w height:h into:imageBits infoInto:info
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11301
    "since XGetImage may allocate huge amount of stack space
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11302
     (some implementations use alloca), this must run with unlimited stack."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11303
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11304
    <context: #return>
3461
779f5d3cdcee dont send fail-messages (which raise an exception) from unlimited stack
Claus Gittinger <cg@exept.de>
parents: 3454
diff changeset
 11305
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11306
%{  /* UNLIMITEDSTACK */
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11307
303
f2021d90f12d dont access GC's Windows before checking them for being ExternalBytes instances
Claus Gittinger <cg@exept.de>
parents: 295
diff changeset
 11308
    Window win;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11309
    XImage *image = (XImage *)0;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11310
    int pad, bytes_per_line, numBytes;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11311
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 11312
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 11313
     && __isExternalAddress(aDrawableId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11314
     && __bothSmallInteger(srcx, srcy)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11315
     && __bothSmallInteger(w, h)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11316
     && __isArray(info)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11317
     && __isByteArray(imageBits)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11318
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11319
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11320
	win = __WindowVal(aDrawableId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11321
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11322
	image = XGetImage(dpy, win, __intVal(srcx), __intVal(srcy),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11323
				    __intVal(w), __intVal(h),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11324
				    (unsigned)AllPlanes, ZPixmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11325
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11326
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11327
	if (! image) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11328
	    RETURN ( false );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11329
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11330
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11331
	pad = image->bitmap_pad;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11332
#ifdef SUPERDEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11333
	console_printf("pad:%d depth:%d\n", image->bitmap_pad, image->depth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11334
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11335
	switch (image->depth) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11336
	    case 1:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11337
	    case 2:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11338
	    case 4:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11339
	    case 8:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11340
	    case 16:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11341
	    case 24:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11342
	    case 32:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11343
		numBytes = image->bytes_per_line * image->height;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11344
		break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11345
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11346
	    default:
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11347
		/* unsupported depth ? */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11348
		console_fprintf(stderr, "possibly unsupported depth:%d in primGetBits\n", image->depth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11349
		numBytes = image->bytes_per_line * image->height;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11350
		break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11351
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11352
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11353
#ifdef SUPERDEBUG
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11354
	console_printf("bytes need:%d bytes given:%d\n", numBytes, __byteArraySize(imageBits));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11355
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11356
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11357
	if (numBytes > __byteArraySize(imageBits)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11358
	    /* imageBits too small */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11359
	    console_fprintf(stderr, "Workstation [warning]: byteArray too small in primGetBits\n");
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11360
	    console_fprintf(stderr, "  bytes need:%d given:%d\n", numBytes, (int)__byteArraySize(imageBits));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11361
	    console_fprintf(stderr, "  pad:%d depth:%d imgBytesPerLine:%d\n",
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11362
				image->bitmap_pad, image->depth, image->bytes_per_line);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11363
	    goto fail;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11364
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11365
	if (image->bitmap_bit_order == MSBFirst)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11366
	    __ArrayInstPtr(info)->a_element[0] = @symbol(msbFirst);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11367
	else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11368
	    __ArrayInstPtr(info)->a_element[0] = @symbol(lsbFirst);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11369
	__ArrayInstPtr(info)->a_element[1] = __MKSMALLINT(image->depth);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11370
	__ArrayInstPtr(info)->a_element[2] = __MKSMALLINT(image->bytes_per_line);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11371
	if (image->byte_order == MSBFirst)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11372
	    __ArrayInstPtr(info)->a_element[3] = @symbol(msbFirst);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11373
	else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11374
	    __ArrayInstPtr(info)->a_element[3] = @symbol(lsbFirst);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11375
	if (image->format == XYBitmap)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11376
	    __ArrayInstPtr(info)->a_element[4] = @symbol(XYBitmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11377
	else if (image->format == XYPixmap)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11378
	    __ArrayInstPtr(info)->a_element[4] = @symbol(XYPixmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11379
	else if (image->format == ZPixmap)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11380
	    __ArrayInstPtr(info)->a_element[4] = @symbol(ZPixmap);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11381
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11382
	__ArrayInstPtr(info)->a_element[5] = __MKSMALLINT(image->bitmap_unit);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11383
	__ArrayInstPtr(info)->a_element[6] = __MKSMALLINT(image->bitmap_pad);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11384
	__ArrayInstPtr(info)->a_element[7] = __MKSMALLINT(image->bits_per_pixel);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11385
	bcopy(image->data, __ByteArrayInstPtr(imageBits)->ba_element, numBytes);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11386
	XDestroyImage(image);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11387
	RETURN ( true );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11388
    }
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11389
fail:
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11390
    if (image) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11391
	XDestroyImage(image);
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11392
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11393
%}.
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11394
    ^ false
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11395
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11396
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11397
!XWorkstation methodsFor:'selection fetching'!
3758
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3738
diff changeset
 11398
4280
52421b26c983 get selection interface changed
ca
parents: 4277
diff changeset
 11399
getClipboardObjectFor:drawableId
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11400
    "get the object selection.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11401
     Returns nil, if no selection is available.
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11402
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11403
     Smalltalk puts ST_OBJECT only into the CLIPBOARD"
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11404
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11405
    |selectionOwnerWindowId selection|
3797
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11406
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11407
    selectionOwnerWindowId := self getSelectionOwnerOf:clipboardAtom.
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11408
    selectionOwnerWindowId isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11409
	"no selection. There is the possibilty that one of our (modal)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11410
	 views has been closed. Get the selection from the copyBuffer"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11411
	^ copyBuffer.
3797
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11412
    ].
4268
f1726c185220 Selection fixes
Stefan Vogel <sv@exept.de>
parents: 4258
diff changeset
 11413
    selectionOwnerWindowId = selectionOwner ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11414
	"I still hold the selection, so return my locally buffered data"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11415
	^ copyBuffer
4845
962f39074c53 Do not try to fetch a X11 selection (clipboard) into a window without drawableId
Stefan Vogel <sv@exept.de>
parents: 4723
diff changeset
 11416
    ].
962f39074c53 Do not try to fetch a X11 selection (clipboard) into a window without drawableId
Stefan Vogel <sv@exept.de>
parents: 4723
diff changeset
 11417
962f39074c53 Do not try to fetch a X11 selection (clipboard) into a window without drawableId
Stefan Vogel <sv@exept.de>
parents: 4723
diff changeset
 11418
    drawableId notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11419
	"sorry, cannot fetch a selection, if there is no drawableId.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11420
	 Should I borrow a drawableId from another window?"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11421
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11422
	selection := SelectionFetcher
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11423
	    requestSelection:clipboardAtom
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11424
	    type:(self atomIDOf:#'ST_OBJECT')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11425
	    onDevice:self for:drawableId.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11426
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11427
	"/ should not happen
6064
1cc8b8daaff5 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6041
diff changeset
 11428
false ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11429
	"/ cg: disabled the code below: I don't want any string here (when asking for an object)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11430
	selection isEmptyOrNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11431
	    selection := SelectionFetcher
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11432
		requestSelection:clipboardAtom
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11433
		type:(self atomIDOf:#'UTF8_STRING')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11434
		onDevice:self for:drawableId.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11435
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11436
	    selection isNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11437
		selection := SelectionFetcher
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11438
		    requestSelection:clipboardAtom
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11439
		    type:(self atomIDOf:#STRING)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11440
		    onDevice:self for:drawableId.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11441
	    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11442
	].
6064
1cc8b8daaff5 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6041
diff changeset
 11443
].
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11444
    ].
5993
979e2a2f250b class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 5989
diff changeset
 11445
    selection isEmptyOrNil ifTrue:[ ^ copyBuffer ].
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11446
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11447
    ^ selection.
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11448
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11449
    "
5928
a06ebbe0d07a comment/format in: #getClipboardObjectFor:
Stefan Vogel <sv@exept.de>
parents: 5914
diff changeset
 11450
       Display getClipboardObjectFor:Transcript id
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11451
    "
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11452
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11453
4280
52421b26c983 get selection interface changed
ca
parents: 4277
diff changeset
 11454
getClipboardText:selectionBufferSymbol for:drawableId
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11455
    "get the text selection.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11456
     Returns nil, if no selection is available"
3779
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11457
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11458
    |selectionId selectionOwnerWindowId selection|
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11459
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11460
    selectionBufferSymbol == #selection ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11461
	selectionId := primaryAtom.
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11462
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11463
	selectionId := clipboardAtom.
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11464
    ].
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11465
3797
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11466
    selectionOwnerWindowId := self getSelectionOwnerOf:selectionId.
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11467
    selectionOwnerWindowId isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11468
	"no selection. There is the possibilty that one of our (modal)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11469
	 views has been closed. Get the selection from the copyBuffer"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11470
	^ self copyBufferAsString.
3797
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11471
    ].
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11472
4268
f1726c185220 Selection fixes
Stefan Vogel <sv@exept.de>
parents: 4258
diff changeset
 11473
    selectionOwnerWindowId = selectionOwner ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11474
	"I still hold the selection, so return my locally buffered data"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11475
	"JV@2012-04-02: Added support for PRIMARY/SELECTION buffers."
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11476
	^ selectionId == primaryAtom ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11477
	    self primaryBufferAsString
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11478
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11479
	    self copyBufferAsString.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11480
	]
4845
962f39074c53 Do not try to fetch a X11 selection (clipboard) into a window without drawableId
Stefan Vogel <sv@exept.de>
parents: 4723
diff changeset
 11481
    ].
962f39074c53 Do not try to fetch a X11 selection (clipboard) into a window without drawableId
Stefan Vogel <sv@exept.de>
parents: 4723
diff changeset
 11482
962f39074c53 Do not try to fetch a X11 selection (clipboard) into a window without drawableId
Stefan Vogel <sv@exept.de>
parents: 4723
diff changeset
 11483
    drawableId notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11484
	"sorry, cannot fetch a selection, if there is no drawableId.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11485
	 Should I borrow a drawableId from another window?"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11486
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11487
	selection := SelectionFetcher
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11488
	    requestSelection:selectionId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11489
	    type:(self atomIDOf:#'UTF8_STRING')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11490
	    onDevice:self for:drawableId.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11491
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11492
	selection isNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11493
	    selection := SelectionFetcher
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11494
		requestSelection:selectionId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11495
		type:(self atomIDOf:#STRING)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11496
		onDevice:self for:drawableId.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11497
	].
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11498
    ].
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11499
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11500
    ^ selection
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11501
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11502
     "
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11503
       Display getTextSelection:#clipboard for:Transcript id
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11504
       Display getTextSelection:#selection for:Transcript id
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11505
     "
5899
3049e637309f fix: #getClipboardText:for: (support from PRIMARY selection)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5898
diff changeset
 11506
3049e637309f fix: #getClipboardText:for: (support from PRIMARY selection)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5898
diff changeset
 11507
    "Modified: / 02-04-2012 / 10:34:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11508
! !
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11509
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11510
!XWorkstation methodsFor:'selection sending'!
3779
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11511
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11512
selectionBuffer:bufferGetSelector as:aTargetAtomID
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11513
    "convert the current selection to the format defined by aTargetAtom.
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11514
     Answer an association with the type of converted selection (an atomID)
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11515
     and the converted selection"
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11516
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11517
    |buffer bufferAsString|
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11518
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11519
    buffer := self perform:bufferGetSelector.
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11520
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11521
    (aTargetAtomID == (self atomIDOf:#'ST_OBJECT')) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11522
	"/ 'st-object' printCR.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11523
	"send the selection in binaryStore format"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11524
	"require libboss to be loaded"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11525
	(Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11526
	    Logger error:'cannot use binary store for copy buffer (libboss missing)'.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11527
	    ^ nil -> nil.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11528
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11529
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11530
	[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11531
	    ^ aTargetAtomID -> (buffer binaryStoreBytes).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11532
	] on:Error do:[:ex|
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11533
	    Logger info:'error on binary store of copy buffer: %1' with: ex description.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11534
	    ^ nil -> nil.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11535
	].
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11536
    ].
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11537
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11538
    bufferAsString := self class bufferAsString:buffer.
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11539
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11540
    (aTargetAtomID == (self atomIDOf:#STRING)
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11541
     or:[aTargetAtomID == (self atomIDOf:#'text/plain')]
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11542
    ) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11543
	"/ 'string' printCR.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11544
	"the other view wants the selection as string"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11545
	^ aTargetAtomID -> (bufferAsString asSingleByteStringReplaceInvalidWith:$#).
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11546
    ].
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11547
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11548
    (aTargetAtomID == (self atomIDOf:#UTF8_STRING)
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11549
     or:[aTargetAtomID == (self atomIDOf:#'text/plain;codeset=utf-8')]
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11550
    ) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11551
	"/ 'utf string' printCR.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11552
	"the other view wants the selection as utf8 string"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11553
	^ aTargetAtomID -> (bufferAsString utf8Encoded).
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11554
    ].
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11555
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11556
    aTargetAtomID == (self atomIDOf:#LENGTH) ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11557
	"the other one wants to know the size of our selection.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11558
	 LENGTH is deprecated, since we do not know how the selection is
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11559
	 going to be converted. The client must not rely on the length returned"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11560
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 11561
	^ (self atomIDOf:#INTEGER) -> (bufferAsString size).
3797
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11562
    ].
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11563
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11564
    "we do not support the requestet target type"
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11565
    ^ nil -> nil.
4559
95854882475c boss stuff separated
Claus Gittinger <cg@exept.de>
parents: 4555
diff changeset
 11566
95854882475c boss stuff separated
Claus Gittinger <cg@exept.de>
parents: 4555
diff changeset
 11567
    "Modified: / 23-08-2006 / 15:56:08 / cg"
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11568
!
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11569
4277
8f458181af3f set selection interface changed
ca
parents: 4271
diff changeset
 11570
setClipboardObject:anObject owner:aWindowId
3779
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11571
    "set the object selection, and make aWindowId be the owner.
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11572
     This can be used by other Smalltalk(X) applications only.
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11573
     We set only the CLIPBOARD selection"
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11574
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11575
    clipboardSelectionTime := lastEventTime.
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11576
    self setSelectionOwner:aWindowId of:clipboardAtom time:clipboardSelectionTime
3779
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11577
!
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11578
4277
8f458181af3f set selection interface changed
ca
parents: 4271
diff changeset
 11579
setClipboardText:aString owner:aWindowId
3779
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11580
    "set the text selection, and make aWindowId be the owner.
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11581
     This can be used by any other X application.
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11582
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11583
     We set both the PRIMARY and CLIPBOARD, so that you can paste
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11584
     into xterm."
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11585
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11586
    clipboardSelectionTime := primarySelectionTime := lastEventTime.
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11587
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11588
    self setSelectionOwner:aWindowId of:clipboardAtom time:clipboardSelectionTime.
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11589
    self setSelectionOwner:aWindowId of:primaryAtom time:primarySelectionTime.
3779
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11590
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11591
    "Modified: / 17.6.1998 / 19:48:54 / cg"
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11592
!
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11593
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11594
setPrimaryText:aString owner:aWindowId
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11595
    "set the PRIMARY selection, and make aWindowId be the owner.
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11596
     This can be used by any other X application when middle-click
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11597
     pasting. X Window specific."
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11598
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11599
    primarySelectionTime := lastEventTime.
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11600
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11601
    self setSelectionOwner:aWindowId of:primaryAtom time:primarySelectionTime.
5898
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11602
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11603
    "Created: / 27-03-2012 / 14:16:29 / Jan Vrany <jan.vrany@fit.cvut.cz>"
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11604
!
3fbf04bffa7a Support for X's PRIMARY selection
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5893
diff changeset
 11605
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11606
supportedTargetAtoms
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11607
    "answer an integer array containing the list of supported targets
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11608
     i.e. supported clipboard formats"
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11609
5938
f5d6189257d4 comment/format in: #supportedTargetAtoms
Stefan Vogel <sv@exept.de>
parents: 5936
diff changeset
 11610
    "Note: some sender code assumes that ST_OBJECT is first"
6160
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11611
    ^ #(ST_OBJECT STRING UTF8_STRING TIMESTAMP TARGETS LENGTH
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11612
      #'text/plain' #'text/plain;codeset=utf-8'
3ea2f08308ae class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6159
diff changeset
 11613
    ) collect:[:eachTargetSymbol|
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11614
	    self atomIDOf:eachTargetSymbol
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11615
	] as:IntegerArray.
3779
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11616
! !
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11617
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11618
!XWorkstation methodsFor:'selections-basic'!
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11619
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11620
getSelectionOwnerOf:selectionAtomSymbolOrID
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11621
    "get the owner of a selection, aDrawableID.
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11622
     Answer nil, if there is no owner"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11623
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11624
    <context:#return>
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11625
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11626
    |selectionAtomID|
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11627
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11628
    selectionAtomSymbolOrID isString ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11629
	selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11630
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11631
	selectionAtomID := selectionAtomSymbolOrID.
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11632
    ].
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11633
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11634
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11635
    Window window;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11636
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11637
    if (__isAtomID(selectionAtomID) && ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11638
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11639
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11640
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11641
	window = XGetSelectionOwner(dpy, __AtomVal(selectionAtomID));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11642
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11643
	RETURN ((window == None) ? nil : __MKEXTERNALADDRESS(window));
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11644
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11645
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11646
    self primitiveFailedOrClosedConnection.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11647
    ^ nil
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11648
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11649
4271
6540e99ff64c do not remove seletionNotification
Claus Gittinger <cg@exept.de>
parents: 4268
diff changeset
 11650
requestSelection:selectionID type:typeID for:aWindowId intoProperty:propertyID
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11651
    "ask the server to send us the selection - the view with id aWindowID
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11652
     will later receive a SelectionNotify event for it (once the Xserver replies
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11653
     with the selections value)."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11654
3794
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11655
    <context:#return>
3b5fbd07d46d Delete property in X-Server when no longer used
Stefan Vogel <sv@exept.de>
parents: 3792
diff changeset
 11656
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11657
    |anIntegerTimestamp|
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11658
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11659
    anIntegerTimestamp := lastEventTime.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11660
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11661
%{
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11662
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11663
    if (ISCONNECTED
3779
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11664
     && __isAtomID(typeID)
84c9c261f510 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3778
diff changeset
 11665
     && __isAtomID(propertyID)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11666
     && __isAtomID(selectionID)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11667
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11668
	Window w;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11669
	Time time;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11670
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11671
	if (__isExternalAddress(aWindowId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11672
	    w = __WindowVal(aWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11673
	} else if (aWindowId == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11674
	    w = (Window)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11675
	} else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11676
	    goto err;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11677
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11678
	if (anIntegerTimestamp == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11679
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11680
	     * the ICCCM convention says: you should set the time to the time when
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11681
	     * the selection was requested and not to CurrentTime
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11682
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11683
	    time = CurrentTime;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11684
	} else if (__isInteger(anIntegerTimestamp)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11685
	    time = __unsignedLongIntVal(anIntegerTimestamp);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11686
	} else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11687
	    goto err;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11688
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11689
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11690
	XConvertSelection(dpy, __AtomVal(selectionID), __AtomVal(typeID),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11691
			       __AtomVal(propertyID), w, time);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11692
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11693
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11694
	RETURN (true);
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11695
err:;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11696
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11697
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11698
    self primitiveFailedOrClosedConnection.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11699
    ^ false
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11700
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11701
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11702
     Display
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11703
	requestSelection:(Display atomIDOf:'PRIMARY')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11704
	property:(Display atomIDOf:'VT_SELECTION')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11705
	type:(Display atomIDOf:'STRING')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11706
	for:Transcript id
3985
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
 11707
    "
91e8c80b2a23 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3977
diff changeset
 11708
    "
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11709
     Display
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11710
	requestSelection:(Display atomIDOf:'PRIMARY')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11711
	property:(Display atomIDOf:'VT_SELECTION')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11712
	type:(Display atomIDOf:'C_STRING')
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11713
	for:Transcript id
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11714
    "
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11715
!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11716
4286
6a2d3474db8a Fix name botch on solaris
Stefan Vogel <sv@exept.de>
parents: 4285
diff changeset
 11717
sendNotifySelection:selectionID property:propertyID target:targetID time:aTime to:requestorID
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11718
    "send a selectionNotify back from a SelectionRequest.
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11719
     PropertyID should be the same as requested  or nil, if the selection
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11720
     could not be converted.
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11721
     TargetId should be the same as requested.
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 11722
     Time should be the time when the selection has been acquired"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11723
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11724
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11725
%{
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 11726
    if (ISCONNECTED
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11727
	&& (__isAtomID(propertyID) || propertyID == nil)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11728
	&& __isAtomID(targetID) && __isAtomID(selectionID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11729
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11730
	XEvent ev;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11731
	Window requestor;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11732
	Status result;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11733
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11734
	if (__isExternalAddress(requestorID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11735
	    requestor = __WindowVal(requestorID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11736
	} else if (__isSmallInteger(requestorID)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11737
	    requestor = (Window)__smallIntegerVal(requestorID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11738
	} else if (requestorID == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11739
	    requestor = DefaultRootWindow(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11740
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11741
	    requestor = (Window)__unsignedLongIntVal(requestorID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11742
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11743
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11744
	ev.xselection.type = SelectionNotify;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11745
	ev.xselection.display = dpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11746
	ev.xselection.selection = __AtomVal(selectionID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11747
	ev.xselection.target = __AtomVal(targetID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11748
	ev.xselection.requestor = requestor;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11749
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11750
	if (__isExternalAddress(aTime)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11751
	    ev.xselection.time = (INT)(__externalAddressVal(aTime));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11752
	} else if (__isSmallInteger(aTime)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11753
	    ev.xselection.time = __smallIntegerVal(aTime);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11754
	} else if (aTime == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11755
	    ev.xselection.time = CurrentTime;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11756
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11757
	    ev.xselection.time = (INT)__unsignedLongIntVal(aTime);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11758
	}
3238
542bbbf55014 event stuff
Claus Gittinger <cg@exept.de>
parents: 3234
diff changeset
 11759
#if 0
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11760
	console_printf("ev.xselection.selection: %x\n", ev.xselection.selection);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11761
	console_printf("ev.xselection.target: %x\n", ev.xselection.target);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11762
	console_printf("ev.xselection.requestor: %x\n", ev.xselection.requestor);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11763
	console_printf("ev.xselection.time: %x\n", ev.xselection.time);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11764
	console_printf("requestor: %x\n", requestor);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11765
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11766
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11767
	/* send nil property if selection cannot be converted */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11768
	if (propertyID == nil)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11769
	    ev.xselection.property = None;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11770
	else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11771
	    ev.xselection.property = __AtomVal(propertyID);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11772
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11773
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11774
	DPRINTF(("sending SelectionNotify sel=%"_lx_" prop=%"_lx_" target=%"_lx_" requestor=%"_lx_" to %"_lx_"\n",
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11775
		(INT)ev.xselection.selection,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11776
		(INT)ev.xselection.property,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11777
		(INT)ev.xselection.target,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11778
		(INT)ev.xselection.requestor,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11779
		(INT)requestor));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11780
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11781
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11782
	result = XSendEvent(dpy, requestor, False, 0 , &ev);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11783
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11784
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11785
	if ((result == BadValue) || (result == BadWindow)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11786
	    DPRINTF(("bad status\n"));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11787
	    RETURN (false);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11788
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11789
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11790
	XFlush(dpy);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11791
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11792
	RETURN (true)
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11793
    }
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11794
%}.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11795
    self primitiveFailedOrClosedConnection.
382
92200ee9f558 added sendKey/sendButtonEvent
ah
parents: 378
diff changeset
 11796
    ^ false
2156
0cb3b353630f fixed selection stuff (time must be passed back)
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
 11797
0cb3b353630f fixed selection stuff (time must be passed back)
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
 11798
    "Modified: / 17.6.1998 / 20:23:20 / cg"
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11799
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11800
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11801
setSelectionOwner:aWindowId of:selectionAtomSymbolOrID time:anIntegerTimestamp
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11802
    "set the owner of a selection; return false if failed"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11803
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11804
    <context: #return>
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11805
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11806
    |selectionAtomID|
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11807
3798
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
 11808
    "store the current owner of the selection.
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
 11809
     If we still own the selection on paste,
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
 11810
     we can avoid the X11 overhead"
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
 11811
17ceda3c711f Handle local selections locally.
Stefan Vogel <sv@exept.de>
parents: 3797
diff changeset
 11812
    selectionOwner := aWindowId.
3797
a5b60da8de9a Prepare local selection handling
Stefan Vogel <sv@exept.de>
parents: 3794
diff changeset
 11813
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11814
    selectionAtomSymbolOrID isString ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11815
	selectionAtomID := self atomIDOf:selectionAtomSymbolOrID create:false.
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11816
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11817
	selectionAtomID := selectionAtomSymbolOrID.
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11818
    ].
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11819
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 11820
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11821
    Window win;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11822
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11823
    if (__isExternalAddress(aWindowId)
3320
20c37636e4b8 Fixes for newDisplatchLastEvent.
Stefan Vogel <sv@exept.de>
parents: 3319
diff changeset
 11824
     && __isAtomID(selectionAtomID)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11825
     && ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11826
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11827
	Time time;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11828
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11829
	win = __WindowVal(aWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11830
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11831
	if (anIntegerTimestamp == nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11832
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11833
	     * the ICCCM convention says: you should set the time to the time when
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11834
	     * the selection was acquired and not to CurrentTime
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11835
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11836
	    time = CurrentTime;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11837
	} else if (__isInteger(anIntegerTimestamp)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11838
	    time = __unsignedLongIntVal(anIntegerTimestamp);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11839
	} else
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11840
	    goto err;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11841
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11842
	DPRINTF(("setOwner prop=%"_lx_" win=%"_lx_"\n", (INT)__AtomVal(selectionAtomID), (INT)win));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11843
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11844
	XSetSelectionOwner(dpy, __AtomVal(selectionAtomID), win, time);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11845
	RETURN (self);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11846
	LEAVE_XLIB();
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11847
    }
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 11848
err:;
2156
0cb3b353630f fixed selection stuff (time must be passed back)
Claus Gittinger <cg@exept.de>
parents: 2146
diff changeset
 11849
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 11850
    self primitiveFailedOrClosedConnection.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11851
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 11852
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11853
!XWorkstation methodsFor:'window queries'!
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11854
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11855
allChildIdsOf:aWindowId
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11856
    "return all children-ids of the given window.
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11857
     Allows for all windows to be enumerated, if we start at the root."
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11858
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11859
    |childIDs allChildIDs|
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11860
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11861
    allChildIDs := OrderedCollection new.
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11862
    childIDs := self childIdsOf:aWindowId.
4411
5e5d008efba2 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4410
diff changeset
 11863
    childIDs notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11864
	allChildIDs addAll:childIDs.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11865
	childIDs do:[:eachChildId |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11866
	    allChildIDs addAll:(self allChildIdsOf:eachChildId).
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11867
	].
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11868
    ].
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11869
    ^ allChildIDs
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11870
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11871
    "
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11872
     Display allChildIdsOf:(Display rootWindowId)
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11873
    "
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11874
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11875
    "
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11876
     |deviceIDAtom uuidAtom|
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11877
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11878
     deviceIDAtom := (Display atomIDOf:#'STX_DEVICE_ID').
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11879
     uuidAtom     := (Display atomIDOf:#'UUID').
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11880
     (Display allChildIdsOf:(Display rootWindowId))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11881
	select:[:id |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11882
	    |uuid|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11883
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11884
	    Display
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11885
		getProperty:deviceIDAtom
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11886
		from:id
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11887
		delete:false
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11888
		into:[:type :value |
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11889
		    type == uuidAtom ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11890
			uuid := UUID fromBytes:value.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11891
		    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11892
		].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11893
	    uuid notNil.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11894
	]
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11895
    "
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11896
!
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11897
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11898
childIdsOf:aWindowId
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11899
    "return all children-ids of the given window. Allows for all windows to be
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11900
     enumerated, if we start at the root."
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11901
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11902
    |childIdArray|
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11903
%{
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11904
    OBJ id;
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11905
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11906
    if (ISCONNECTED
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11907
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11908
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11909
	Window win = __WindowVal(aWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11910
	Window rootReturn, parentReturn;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11911
	Window* children = (Window *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11912
	unsigned int numChildren;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11913
	int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11914
	int rslt;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11915
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11916
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11917
	rslt = XQueryTree(dpy, win,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11918
		       &rootReturn, &parentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11919
		       &children, &numChildren);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11920
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11921
	if (rslt) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11922
	    childIdArray = __ARRAY_NEW_INT(numChildren);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11923
	    if (childIdArray != nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11924
		for (i=0; i < numChildren; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11925
		    if (children[i]) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11926
			OBJ childId;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11927
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11928
			childId = __MKEXTERNALADDRESS(children[i]);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11929
			__ArrayInstPtr(childIdArray)->a_element[i] = childId;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11930
			__STORE(childIdArray, childId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11931
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11932
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11933
		if (children) XFree(children);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11934
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11935
	    RETURN (childIdArray);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11936
	}
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11937
    }
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11938
%}.
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11939
    ^ nil.
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11940
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11941
    "
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11942
      Display childIdsOf:(Display rootWindowId)
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11943
    "
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11944
!
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11945
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11946
realRootWindowId
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11947
    "return the id of the real root window.
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11948
     This may not be the window you see as background,
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11949
     since some window managers install a virtual root window on top
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11950
     of it. Except for very special cases, use #rootWindowId, which takes
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11951
     care of any virtual root."
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11952
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11953
%{
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11954
    int screen = __intVal(__INST(screen));
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11955
    Window root;
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11956
    OBJ id;
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11957
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11958
    if (__INST(rootId) != nil) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11959
	RETURN (__INST(rootId));
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11960
    }
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11961
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11962
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11963
	root = RootWindow(myDpy, screen);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11964
	if (! root) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11965
	    id = nil;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11966
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11967
	    id = __MKEXTERNALADDRESS(root); __INST(rootId) = id; __STORE(self, id);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11968
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11969
	RETURN (id);
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11970
    }
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11971
%}.
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11972
    self primitiveFailedOrClosedConnection.
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11973
    ^ nil
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 11974
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 11975
    "
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 11976
      Display rootWindowId
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 11977
      Display realRootWindowId
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 11978
    "
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11979
!
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11980
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11981
rootWindowId
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11982
    "return the id of the root window.
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11983
     This is the window you see as background,
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11984
     however, it may or may not be the real physical root window,
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11985
     since some window managers install a virtual root window on top
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11986
     of the real one. If this is the case, that views id is returned here."
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11987
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11988
%{
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11989
    int screen = __intVal(__INST(screen));
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11990
    Window rootWin, vRootWin = 0;
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11991
    OBJ id;
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11992
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11993
    if (__INST(virtualRootId) != nil) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11994
	RETURN (__INST(virtualRootId));
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11995
    }
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11996
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 11997
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11998
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 11999
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12000
	rootWin = RootWindow(dpy, screen);
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12001
#ifndef IRIS
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12002
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12003
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12004
	 * on IRIS, this creates a badwindow error - why ?
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12005
	 * children contains a funny window (000034)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12006
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12007
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12008
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12009
	 * care for virtual root windows (tvtwm & friends)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12010
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12011
	{
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12012
	    Atom vRootAtom, kwinAtom;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12013
	    int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12014
	    Window rootReturn, parentReturn;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12015
	    Window* children = (Window *)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12016
	    unsigned int numChildren;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12017
	    int ignoreVRoot = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12018
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12019
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12020
	     * Take care of KDE 2.1.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12021
	     * they define _SWM_ROOT but this is not the parent of
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12022
	     * the application windows.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12023
	     * Instead it is used for background painting
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12024
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12025
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12026
	    kwinAtom = XInternAtom(dpy, "KWIN_RUNNING", True);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12027
	    if (kwinAtom != None) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12028
		Atom actual_type;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12029
		int actual_format;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12030
		unsigned long nitems, bytesafter;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12031
		unsigned char *retVal = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12032
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12033
		ignoreVRoot = XGetWindowProperty(dpy, rootWin, kwinAtom,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12034
				       0L, 1L, False, kwinAtom,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12035
				       &actual_type, &actual_format,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12036
				       &nitems, &bytesafter, &retVal) == Success
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12037
			      && actual_type != 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12038
		if (retVal)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12039
		    XFree(retVal);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12040
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12041
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12042
	    if (!ignoreVRoot) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12043
		vRootAtom = XInternAtom(dpy, "__SWM_VROOT", True);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12044
		if (vRootAtom != None) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12045
		    if (XQueryTree(dpy, rootWin,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12046
				       &rootReturn, &parentReturn,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12047
				       &children, &numChildren)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12048
			for (i=0; i < numChildren; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12049
			    Atom actual_type;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12050
			    int actual_format;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12051
			    unsigned long nitems, bytesafter;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12052
			    Window* newRoot = (Window*) 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12053
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12054
			    if (children[i]) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12055
				if (XGetWindowProperty(dpy, children[i], vRootAtom,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12056
						       0L, 1L, False, XA_WINDOW,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12057
						       &actual_type, &actual_format,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12058
						       &nitems, &bytesafter,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12059
						       (unsigned char**) &newRoot
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12060
						      ) == Success && newRoot) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12061
				    vRootWin = *newRoot;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12062
				    XFree(newRoot); /* XXX */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12063
				    break;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12064
				}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12065
			    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12066
			}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12067
			if (children) XFree(children);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12068
		    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12069
		}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12070
	     }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12071
	}
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12072
#endif
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12073
    }
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12074
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12075
    if (! vRootWin) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12076
	vRootWin = rootWin;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12077
	if (! vRootWin) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12078
	    RETURN ( nil );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12079
	}
4410
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12080
    }
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12081
    id = __MKEXTERNALADDRESS(rootWin); __INST(rootId) = id; __STORE(self, id);
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12082
    id = __MKEXTERNALADDRESS(vRootWin); __INST(virtualRootId) = id; __STORE(self, id);
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12083
    RETURN ( id );
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12084
%}
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12085
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12086
    "
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12087
      Display rootWindowId
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12088
    "
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12089
! !
4001d5ec5fcf uniqueID for Alstom
Claus Gittinger <cg@exept.de>
parents: 4409
diff changeset
 12090
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12091
!XWorkstation methodsFor:'window stuff'!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12092
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12093
clearRectangleX:x y:y width:width height:height in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12094
    "clear a rectangular area to viewbackground"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12095
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12096
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12097
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12098
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12099
    int w, h;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12100
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12101
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12102
	if (__isExternalAddress(aWindowId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12103
	 && __bothSmallInteger(x, y)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12104
	 && __bothSmallInteger(width, height)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12105
	    w = __intVal(width);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12106
	    h = __intVal(height);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12107
	    /*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12108
	     * need this check here: some servers simply dump core with bad args
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12109
	     */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12110
	    if ((w >= 0) && (h >= 0)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12111
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12112
		XClearArea(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y), w, h, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12113
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12114
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12115
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12116
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12117
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12118
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12119
    self primitiveFailedOrClosedConnection.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12120
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12121
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12122
clearWindow:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12123
    "clear a window to viewbackground"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12124
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12125
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12126
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12127
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12128
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12129
	if (__isExternalAddress(aWindowId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12130
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12131
	    XClearWindow(myDpy, __WindowVal(aWindowId));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12132
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12133
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12134
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12135
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12136
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12137
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12138
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12139
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12140
configureWindow:aWindowId sibling:siblingId stackMode:modeSymbol
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12141
    "configure stacking operation of aWindowId w.r.t siblingId"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12142
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12143
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12144
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12145
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12146
    XWindowChanges chg;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12147
    int mask = CWSibling | CWStackMode;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12148
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12149
    if (ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12150
	if (__isExternalAddress(aWindowId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12151
	 && __isExternalAddress(siblingId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12152
	    if (modeSymbol == @symbol(above)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12153
		chg.stack_mode = Above;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12154
	    } else if (modeSymbol == @symbol(below)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12155
		chg.stack_mode = Below;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12156
	    } else if (modeSymbol == @symbol(topIf)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12157
		chg.stack_mode = TopIf;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12158
	    } else if (modeSymbol == @symbol(bottomIf)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12159
		chg.stack_mode = BottomIf;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12160
	    } else if (modeSymbol == @symbol(opposite)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12161
		chg.stack_mode = Opposite;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12162
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12163
		mask = CWSibling;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12164
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12165
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12166
	    chg.sibling = __WindowVal(siblingId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12167
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12168
	    XConfigureWindow(myDpy, __WindowVal(aWindowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12169
				    mask, &chg);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12170
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12171
	    RETURN ( self );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12172
	}
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12173
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12174
bad: ;
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12175
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12176
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12177
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12178
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12179
getGeometryOf:aWindowId
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12180
    "get a windows geometry.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12181
     NOTICE: X-WindowManagers usually do wrap client topViews into their own
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12182
     decoration views (top label, resize boundaries etc.).
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12183
     Thus, the numbers returned here for topViews are the physical (real) dimensions
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12184
     relative to such a wrapper.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12185
     In contrast, the values found in the views instance variables are virtual dimensions
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12186
     (i.e. ST/X makes this decoration view transparent to the program."
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12187
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12188
    <context: #return>
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12189
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12190
    |x y width height depth borderWidth info|
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12191
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12192
%{
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 12193
    int x_ret, y_ret;
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12194
    unsigned int width_ret, height_ret,
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12195
		 border_width_ret, depth_ret;
3790
43261db5b846 Fix clipboard handling.
Stefan Vogel <sv@exept.de>
parents: 3789
diff changeset
 12196
    Window root_ret;
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12197
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12198
    if (ISCONNECTED
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12199
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12200
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12201
	XGetGeometry(myDpy, __WindowVal(aWindowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12202
		     &root_ret,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12203
		     &x_ret, &y_ret,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12204
		     &width_ret, &height_ret, &border_width_ret,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12205
		     &depth_ret);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12206
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12207
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12208
	x = __MKSMALLINT(x_ret);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12209
	y = __MKSMALLINT(y_ret);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12210
	width = __MKSMALLINT(width_ret);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12211
	height = __MKSMALLINT(height_ret);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12212
	depth = __MKSMALLINT(depth_ret);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12213
	borderWidth = __MKSMALLINT(border_width_ret);
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12214
    }
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12215
%}.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12216
    borderWidth isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12217
	self primitiveFailedOrClosedConnection.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12218
	^ nil
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12219
    ].
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12220
    info := Dictionary new.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12221
    info at:#origin put:(x @ y).
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12222
    info at:#extent put:(width @ height).
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12223
    info at:#depth  put:depth.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12224
    info at:#borderWidth put:borderWidth.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12225
    ^ info
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12226
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12227
    "
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12228
     Transcript topView device
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12229
	getGeometryOf:(Transcript id)
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12230
    "
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12231
    "
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12232
     Transcript topView device
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12233
	getGeometryOf:(Transcript topView id)
4024
ca50cff73e41 comment
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
 12234
    "
ca50cff73e41 comment
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
 12235
    "
ca50cff73e41 comment
Claus Gittinger <cg@exept.de>
parents: 4020
diff changeset
 12236
     Display
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12237
	getGeometryOf:(Display viewIdFromUser)
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12238
    "
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12239
    "
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12240
     |d|
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12241
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12242
     d := Transcript topView device.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12243
     d getGeometryOf:(d parentWindowIdOf:Transcript topView id)
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12244
    "
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12245
!
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12246
2457
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12247
isValidWindowId:aWindowId
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12248
    "return true, if the given window ID is (still) valid.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12249
     Especially useful, if the passed windowID is
2457
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12250
     an alien (external) windows id."
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12251
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12252
    |ret|
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12253
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12254
%{
2457
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12255
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12256
    if (ISCONNECTED
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12257
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12258
	char *name = NULL;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12259
	Status ok;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12260
	Window root, parent, *children = NULL;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12261
	unsigned int nChildren;
2457
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12262
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12263
/*        ENTER_XLIB(); */
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12264
	ok = XQueryTree(myDpy, __WindowVal(aWindowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12265
			&root, &parent, &children, &nChildren);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12266
	if (children) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12267
	    XFree(children);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12268
	}
2457
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12269
/*        LEAVE_XLIB();   */
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12270
	if (ok) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12271
	    RETURN (true);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12272
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12273
	RETURN (false);
2457
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12274
    }
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12275
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12276
    self primitiveFailedOrClosedConnection.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12277
    ^ false
2457
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12278
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12279
    "
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12280
     |v aWindowId ok|
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12281
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12282
     v := StandardSystemView new.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12283
     v label:'hello'.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12284
     v openAndWait.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12285
     aWindowId := v id.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12286
     ok := Display isValidWindowId:aWindowId.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12287
     Transcript showCR:'ok is: ' , ok printString.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12288
     Delay waitForSeconds:1.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12289
     v destroy.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12290
     ok := Display isValidWindowId:aWindowId.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12291
     Transcript showCR:'ok is: ' , ok printString.
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12292
    "
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12293
!
2a00e88fb04f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2449
diff changeset
 12294
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12295
lowerWindow:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12296
    "bring a window to back"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12297
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12298
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12299
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12300
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12301
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12302
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12303
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12304
	XLowerWindow(myDpy, __WindowVal(aWindowId));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12305
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12306
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12307
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12308
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12309
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12310
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12311
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12312
mapView:aView id:aWindowId iconified:aBoolean atX:xPos y:yPos
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12313
	      width:w height:h minExtent:minExt maxExtent:maxExt
2650
f7183e9c71b1 comment
Claus Gittinger <cg@exept.de>
parents: 2647
diff changeset
 12314
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12315
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12316
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12317
    "make a window visible - either as icon or as a real view
2650
f7183e9c71b1 comment
Claus Gittinger <cg@exept.de>
parents: 2647
diff changeset
 12318
     in addition, allow change of extend, position, minExtend and maxExtent.
f7183e9c71b1 comment
Claus Gittinger <cg@exept.de>
parents: 2647
diff changeset
 12319
     Needed for restart, to allow recreating a view as iconified,
f7183e9c71b1 comment
Claus Gittinger <cg@exept.de>
parents: 2647
diff changeset
 12320
     and to collaps/expand windows."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12321
4480
3e1449309dfa Set icon mask in #mapWindow:....
Stefan Vogel <sv@exept.de>
parents: 4478
diff changeset
 12322
    |wicon wiconId iconMaskId wiconView wiconViewId wlabel minW minH maxW maxH|
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12323
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12324
    aBoolean ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12325
	wicon := aView icon.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12326
	wicon notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12327
	    wiconId := wicon id.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12328
	    wicon mask notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12329
		iconMaskId := wicon mask id.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12330
	    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12331
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12332
	wiconView := aView iconView.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12333
	wiconView notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12334
	    wiconViewId := wiconView id
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12335
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12336
	wlabel := aView label.
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12337
    ].
2105
1c1277d63a2c pass minExtent/maxExtent to mapView:...
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
 12338
    minExt notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12339
	minW := minExt x.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12340
	minH := minExt y.
2105
1c1277d63a2c pass minExtent/maxExtent to mapView:...
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
 12341
    ].
1c1277d63a2c pass minExtent/maxExtent to mapView:...
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
 12342
    maxExt notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12343
	maxW := maxExt x.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12344
	maxH := maxExt y.
2105
1c1277d63a2c pass minExtent/maxExtent to mapView:...
Claus Gittinger <cg@exept.de>
parents: 2076
diff changeset
 12345
    ].
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12346
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12347
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12348
    XWMHints wmhints;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12349
    XSizeHints szhints;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12350
    Window win;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12351
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12352
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12353
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12354
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12355
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12356
	win = __WindowVal(aWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12357
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12358
	szhints.flags = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12359
	if (__bothSmallInteger(xPos, yPos)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12360
	    szhints.x = __intVal(xPos);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12361
	    szhints.y = __intVal(yPos);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12362
	    szhints.flags |= USPosition;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12363
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12364
	if (__bothSmallInteger(w, h)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12365
	    szhints.width = __intVal(w);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12366
	    szhints.height = __intVal(h);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12367
	    szhints.flags |= USSize;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12368
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12369
	if (__bothSmallInteger(minW, minH)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12370
	    szhints.flags |= PMinSize;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12371
	    szhints.min_width = __intVal(minW);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12372
	    szhints.min_height = __intVal(minH);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12373
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12374
	if (__bothSmallInteger(maxW, maxH)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12375
	    szhints.flags |= PMaxSize;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12376
	    szhints.max_width = __intVal(maxW);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12377
	    szhints.max_height = __intVal(maxH);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12378
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12379
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12380
	if (aBoolean == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12381
	    char *windowName = "";
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12382
	    Pixmap iconBitmap = (Pixmap)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12383
	    Pixmap iconMask = (Pixmap)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12384
	    Window iconWindow = (Window)0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12385
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12386
	    if (__isExternalAddress(wiconId))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12387
		iconBitmap = __PixmapVal(wiconId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12388
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12389
	    if (__isExternalAddress(iconMaskId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12390
		iconMask = __PixmapVal(iconMaskId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12391
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12392
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12393
	    if (__isExternalAddress(wiconViewId))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12394
		iconWindow = __WindowVal(wiconViewId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12395
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12396
	    if (__isStringLike(wlabel))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12397
		windowName = (char *) __stringVal(wlabel);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12398
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12399
	    if (iconBitmap || windowName) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12400
		ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12401
		XSetStandardProperties(dpy, win,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12402
					windowName, windowName,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12403
					iconBitmap,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12404
					0, 0, &szhints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12405
		LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12406
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12407
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12408
	    wmhints.flags = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12409
	    if (iconBitmap) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12410
		wmhints.flags |= IconPixmapHint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12411
		wmhints.icon_pixmap = iconBitmap;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12412
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12413
	    if (iconMask) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12414
		wmhints.flags |= IconMaskHint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12415
		wmhints.icon_mask = iconMask;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12416
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12417
	    if (iconWindow) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12418
		wmhints.flags |= IconWindowHint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12419
		wmhints.icon_window = iconWindow;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12420
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12421
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12422
	    wmhints.initial_state = IconicState;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12423
	    wmhints.flags |= StateHint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12424
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12425
	    XSetWMHints(dpy, win, &wmhints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12426
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12427
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12428
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12429
	if (szhints.flags) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12430
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12431
	    XSetNormalHints(dpy, win, &szhints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12432
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12433
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12434
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12435
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12436
	XMapWindow(dpy, win);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12437
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12438
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12439
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12440
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12441
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12442
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12443
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12444
mapWindow:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12445
    "make a window visible"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12446
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12447
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12448
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12449
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12450
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12451
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12452
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12453
	XMapWindow(myDpy, __WindowVal(aWindowId));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12454
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12455
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12456
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12457
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12458
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12459
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12460
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12461
moveResizeWindow:aWindowId x:x y:y width:w height:h
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12462
    "move and resize a window"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12463
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12464
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12465
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12466
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12467
    int newWidth, newHeight;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12468
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12469
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12470
     && __isExternalAddress(aWindowId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12471
     && __bothSmallInteger(w, h)
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12472
     && __bothSmallInteger(x, y)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12473
	newWidth = __intVal(w);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12474
	newHeight = __intVal(h);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12475
	if (newWidth < 1) newWidth = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12476
	if (newHeight < 1) newHeight = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12477
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12478
	XMoveResizeWindow(myDpy, __WindowVal(aWindowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12479
			      __intVal(x), __intVal(y),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12480
			      newWidth, newHeight);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12481
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12482
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12483
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12484
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12485
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12486
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12487
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12488
moveWindow:aWindowId x:x y:y
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12489
    "move a window"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12490
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12491
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12492
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12493
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12494
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12495
     && __isExternalAddress(aWindowId) && __bothSmallInteger(x, y)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12496
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12497
	XMoveWindow(myDpy, __WindowVal(aWindowId), __intVal(x), __intVal(y));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12498
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12499
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12500
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12501
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12502
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12503
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12504
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12505
parentWindowIdOf:aWindowId
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12506
    "return a windows parent-window id.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12507
     Useful with getGeometryOf:, to compute information about the decoration."
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12508
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12509
%{
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12510
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12511
    if (ISCONNECTED
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12512
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12513
	Status ok;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12514
	Window root, parent, *children = NULL;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12515
	unsigned int nChildren;
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12516
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12517
/*        ENTER_XLIB(); */
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12518
	ok = XQueryTree(myDpy, __WindowVal(aWindowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12519
			&root, &parent, &children, &nChildren);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12520
	if (children) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12521
	    XFree(children);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12522
	}
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12523
/*        LEAVE_XLIB();   */
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12524
	if (! ok) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12525
	    RETURN ( nil );
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12526
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12527
	RETURN ( __MKEXTERNALADDRESS(parent) );
3789
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12528
    }
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12529
%}.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12530
    self primitiveFailedOrClosedConnection.
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12531
    ^ false
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12532
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12533
    "
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12534
     |id|
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12535
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12536
     id := Transcript device parentWindowIdOf:(Transcript id).
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12537
     self assert: ( Transcript container id = id ).
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12538
    "
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12539
!
712d129efee8 added parentWindowIdOf: and getGeometryOf:
Claus Gittinger <cg@exept.de>
parents: 3788
diff changeset
 12540
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12541
raiseWindow:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12542
    "bring a window to front"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12543
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12544
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12545
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12546
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12547
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12548
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12549
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12550
	XRaiseWindow(myDpy, __WindowVal(aWindowId));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12551
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12552
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12553
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12554
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12555
    self primitiveFailedOrClosedConnection
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12556
!
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12557
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12558
reparentWindow:windowId to:newParentWindowId
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12559
    "change a windows parent (an optional interface)"
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12560
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12561
    <context: #return>
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12562
%{
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12563
    if (ISCONNECTED
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12564
     && __isExternalAddress(windowId)
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12565
     && __isExternalAddress(newParentWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12566
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12567
	Window _child, _newParent;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12568
	int i;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12569
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12570
	_child = __WindowVal(windowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12571
	_newParent = __WindowVal(newParentWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12572
	ENTER_XLIB();
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12573
2428
191f961209f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2426
diff changeset
 12574
#if 0
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12575
	XWithdrawWindow (dpy, _child, DefaultScreen(dpy));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12576
	XSync (dpy, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12577
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12578
	/*
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12579
	 * Code 'stolen' from xswallow source ...
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12580
	 * ... mhmh - what is this loop for ?
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12581
	 */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12582
	for (i=0; i<5; i++) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12583
	    XReparentWindow (dpy, _child, _newParent, 0, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12584
	    XSync (dpy, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12585
	}
2428
191f961209f8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2426
diff changeset
 12586
#if 0
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12587
	XMapWindow (dpy, _child);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12588
	XSync (dpy, 0);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12589
#endif
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12590
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12591
	RETURN ( true );
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12592
    }
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12593
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12594
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12595
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12596
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12597
resizeWindow:aWindowId width:w height:h
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12598
    "resize a window"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12599
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12600
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12601
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12602
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12603
    int newWidth, newHeight;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12604
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12605
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12606
     && __isExternalAddress(aWindowId) && __bothSmallInteger(w, h)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12607
	newWidth = __intVal(w);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12608
	newHeight = __intVal(h);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12609
	if (newWidth < 1) newWidth = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12610
	if (newHeight < 1) newHeight = 1;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12611
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12612
	XResizeWindow(myDpy, __WindowVal(aWindowId), newWidth, newHeight);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12613
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12614
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12615
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12616
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12617
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12618
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12619
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12620
setBackingStore:how in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12621
    "turn on/off backing-store for a window"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12622
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12623
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12624
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12625
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12626
    XSetWindowAttributes wa;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12627
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12628
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12629
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12630
	if (__INST(ignoreBackingStore) != true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12631
	    if (how == @symbol(always)) wa.backing_store = Always;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12632
	    else if (how == @symbol(whenMapped)) wa.backing_store = WhenMapped;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12633
	    else if (how == true) wa.backing_store = Always;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12634
	    else wa.backing_store = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12635
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12636
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12637
	    XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBackingStore, &wa);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12638
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12639
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12640
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12641
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12642
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12643
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12644
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12645
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12646
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12647
setBitGravity:how in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12648
    "set bit gravity for a window"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12649
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12650
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12651
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12652
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12653
    XSetWindowAttributes wa;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12654
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12655
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12656
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12657
	if (how == @symbol(NorthWest)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12658
	    wa.bit_gravity = NorthWestGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12659
	} else if (how == @symbol(NorthEast)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12660
	    wa.bit_gravity = NorthEastGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12661
	} else if (how == @symbol(SouthWest)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12662
	    wa.bit_gravity = SouthWestGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12663
	} else if (how == @symbol(SouthEast)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12664
	    wa.bit_gravity = SouthEastGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12665
	} else if (how == @symbol(Center)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12666
	    wa.bit_gravity = CenterGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12667
	} else if (how == @symbol(North)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12668
	    wa.bit_gravity = NorthGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12669
	} else if (how == @symbol(South)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12670
	    wa.bit_gravity = SouthGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12671
	} else if (how == @symbol(West)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12672
	    wa.bit_gravity = WestGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12673
	} else if (how == @symbol(East)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12674
	    wa.bit_gravity = EastGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12675
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12676
	    wa.bit_gravity = NorthWestGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12677
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12678
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12679
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12680
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12681
	XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWBitGravity, &wa);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12682
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12683
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12684
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12685
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12686
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12687
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12688
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12689
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12690
setCursor:aCursorId in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12691
    "define a windows cursor"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12692
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12693
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12694
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12695
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12696
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12697
     && __isExternalAddress(aWindowId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12698
     && __isExternalAddress(aCursorId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12699
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12700
	Window w = __WindowVal(aWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12701
	Cursor c = __CursorVal(aCursorId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12702
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12703
	if (w && c) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12704
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12705
	    XDefineCursor(dpy, w, c);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12706
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12707
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12708
	RETURN ( self );
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12709
    }
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12710
%}.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12711
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12712
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12713
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12714
setForegroundWindow:aWindowId
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12715
    "bring a window to front.
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12716
     Send a specific message to the WindowManager"
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12717
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12718
    |activeWindowAtom|
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12719
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 12720
"/    self raiseWindow:aWindowId.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 12721
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 12722
    activeWindowAtom := self atomIDOf:#'_NET_ACTIVE_WINDOW' create:false.
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12723
    activeWindowAtom notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12724
	self
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12725
	    sendClientEvent:activeWindowAtom
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12726
	    format:32
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12727
	    to:(self rootWindowId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12728
	    propagate:false
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12729
	    eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12730
	    window:aWindowId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12731
	    data1:2                 "activate request from pager. This is a trick: kwm ignores requests from applications (1)"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12732
	    data2:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12733
	    data3:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12734
	    data4:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12735
	    data5:nil.
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12736
    ].
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 12737
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 12738
    "
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 12739
      Transcript topView setForegroundWindow
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 12740
    "
5033
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12741
!
27bc058343f0 implement #setForegroundWindow: via WM controls
Stefan Vogel <sv@exept.de>
parents: 4928
diff changeset
 12742
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12743
setIconName:aString in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12744
    "define a windows iconname"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12745
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12746
    <context: #return>
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12747
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12748
    |utf8StringAtom utf8String simpleString|
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12749
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12750
    utf8StringAtom := self atomIDOf:#UTF8_STRING create:true.
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12751
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12752
    utf8String := aString utf8Encoded.
5967
d86c05b36723 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5938
diff changeset
 12753
    aString isWideString ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12754
	"/ X does not like 2-byte labels ...
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12755
	simpleString := aString asSingleByteStringReplaceInvalidWith:$?
5071
4528b3bad057 care for twoByte window labels
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
 12756
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12757
	simpleString := aString.
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12758
    ].
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12759
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12760
%{
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12761
    XTextProperty titleProperty;
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12762
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12763
    if (ISCONNECTED
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12764
     && __isStringLike(utf8String)
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12765
     && __isStringLike(simpleString)
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12766
     && __isExternalAddress(aWindowId)) {
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12767
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12768
	titleProperty.value =  __stringVal(utf8String);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12769
	titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12770
	titleProperty.format = 8;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12771
	titleProperty.nitems = __stringSize(utf8String);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12772
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12773
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12774
	XSetIconName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12775
	/* alternative settings for UTF8-Strings */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12776
	XSetWMIconName(myDpy, __WindowVal(aWindowId), &titleProperty);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12777
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12778
	RETURN ( self );
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12779
    }
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12780
%}.
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 12781
    self primitiveFailedOrClosedConnection
5071
4528b3bad057 care for twoByte window labels
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
 12782
!
4528b3bad057 care for twoByte window labels
Claus Gittinger <cg@exept.de>
parents: 5065
diff changeset
 12783
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12784
setSaveUnder:yesOrNo in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12785
    "turn on/off save-under for a window"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12786
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12787
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12788
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12789
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12790
    XSetWindowAttributes wa;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12791
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12792
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12793
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12794
	if (__INST(hasSaveUnder) == true) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12795
	    wa.save_under = (yesOrNo == true) ? 1 : 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12796
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12797
	    XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWSaveUnder, &wa);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12798
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12799
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12800
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12801
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12802
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12803
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12804
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12805
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12806
setTransient:aWindowId for:aMainWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12807
    "set aWindowId to be a transient of aMainWindow"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12808
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12809
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12810
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12811
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12812
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12813
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12814
	Window w;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12815
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12816
	if ((aMainWindowId == nil) || (aMainWindowId == __MKSMALLINT(0))) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12817
	    w = (Window) 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12818
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12819
	    if (__isExternalAddress(aMainWindowId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12820
		w = __WindowVal(aMainWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12821
	    } else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12822
		goto getOutOfHere;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12823
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12824
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12825
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12826
	XSetTransientForHint(myDpy, __WindowVal(aWindowId), w);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12827
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12828
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12829
    }
353
5be3ae3c8838 sorry stefan - need eventPending (instead of eventQueued)
Claus Gittinger <cg@exept.de>
parents: 350
diff changeset
 12830
 getOutOfHere: ;
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12831
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12832
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12833
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12834
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12835
setWindowBackground:aColorIndex in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12836
    "set the windows background color. This is the color with which
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12837
     the view is filled whenever exposed. Do not confuse this with
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12838
     the background drawing color, which is used with opaque drawing."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12839
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12840
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12841
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12842
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12843
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12844
     && __isExternalAddress(aWindowId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12845
     && __isSmallInteger(aColorIndex)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12846
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12847
	XSetWindowBackground(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12848
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12849
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12850
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12851
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12852
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12853
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12854
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12855
setWindowBackgroundPixmap:aPixmapId in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12856
    "set the windows background pattern to be a form.
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12857
     This is the pattern with which the view is filled whenever exposed.
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12858
     Do not confuse this with the background drawing color, which is used
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12859
     with opaque drawing."
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12860
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12861
    <context: #return>
4555
a03c1815901d new library naming scheme
Claus Gittinger <cg@exept.de>
parents: 4528
diff changeset
 12862
%{  /* STACK: 64000 */
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12863
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12864
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12865
     && __isExternalAddress(aWindowId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12866
     && __isExternalAddress(aPixmapId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12867
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12868
	XSetWindowBackgroundPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12869
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12870
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12871
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12872
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12873
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12874
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12875
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12876
setWindowBorderColor:aColorIndex in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12877
    "set the windows border color"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12878
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12879
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12880
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12881
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12882
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12883
     && __isExternalAddress(aWindowId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12884
     && __isSmallInteger(aColorIndex)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12885
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12886
	XSetWindowBorder(myDpy, __WindowVal(aWindowId), __intVal(aColorIndex));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12887
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12888
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12889
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12890
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12891
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12892
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12893
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12894
setWindowBorderPixmap:aPixmapId in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12895
    "set the windows border pattern"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12896
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12897
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12898
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12899
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12900
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12901
     && __isExternalAddress(aWindowId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12902
     && __isExternalAddress(aPixmapId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12903
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12904
	XSetWindowBorderPixmap(myDpy, __WindowVal(aWindowId), __PixmapVal(aPixmapId));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12905
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12906
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12907
    }
2426
7cb649f45f93 added support to reparent a window
Claus Gittinger <cg@exept.de>
parents: 2422
diff changeset
 12908
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12909
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12910
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12911
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12912
setWindowBorderShape:aPixmapId in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12913
    "set the windows border shape"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12914
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12915
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12916
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12917
    hasShapeExtension ifFalse:[^ self].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12918
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12919
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12920
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12921
#ifdef SHAPE
2758
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 12922
    Pixmap shapeBitmap;
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 12923
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 12924
    if (__isExternalAddress(aPixmapId))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12925
	shapeBitmap = __PixmapVal(aPixmapId);
2758
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 12926
    else
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12927
	shapeBitmap = (Pixmap)0;
2758
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 12928
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12929
    if (ISCONNECTED
2758
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 12930
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12931
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12932
	XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeBounding,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12933
			  0, 0, shapeBitmap, ShapeSet);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12934
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12935
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12936
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12937
#endif
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12938
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12939
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12940
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12941
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12942
setWindowBorderWidth:aNumber in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12943
    "set the windows border width"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12944
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12945
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12946
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12947
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12948
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12949
     && __isExternalAddress(aWindowId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12950
     && __isSmallInteger(aNumber)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12951
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12952
	XSetWindowBorderWidth(myDpy, __WindowVal(aWindowId), __intVal(aNumber));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12953
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12954
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12955
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12956
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12957
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12958
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12959
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12960
setWindowClass:wClass name:wName in:aWindowId
857
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12961
    "define class and name of a window.
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12962
     This may be used by the window manager to
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12963
     select client specific resources."
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12964
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12965
    <context: #return>
857
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12966
%{
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12967
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 12968
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12969
	XClassHint classhint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12970
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12971
	classhint.res_class = classhint.res_name = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12972
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12973
	if (__isStringLike(wClass)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12974
	    classhint.res_class = (char *) __stringVal(wClass);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12975
	} else if (wClass != nil)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12976
	    goto error;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12977
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12978
	if (__isStringLike(wName)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12979
	    classhint.res_name = (char *) __stringVal(wName);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12980
	} else if (wName != nil)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12981
	    goto error;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12982
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12983
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12984
	XSetClassHint(myDpy, __WindowVal(aWindowId), &classhint);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12985
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 12986
	RETURN ( self );
857
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12987
error:;
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12988
    }
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12989
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12990
    self primitiveFailedOrClosedConnection
857
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12991
!
df5125310d86 New method #setWindowClass:name:in: to give a hint to the window manager.
Stefan Vogel <sv@exept.de>
parents: 850
diff changeset
 12992
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 12993
setWindowGravity:how in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12994
    "set window gravity for a window"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12995
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 12996
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 12997
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12998
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 12999
    XSetWindowAttributes wa;
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13000
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 13001
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 13002
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13003
	if (how == @symbol(NorthWest)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13004
	    wa.win_gravity = NorthWestGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13005
	} else if (how == @symbol(NorthEast)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13006
	    wa.win_gravity = NorthEastGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13007
	} else if (how == @symbol(SouthWest)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13008
	    wa.win_gravity = SouthWestGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13009
	} else if (how == @symbol(SouthEast)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13010
	    wa.win_gravity = SouthEastGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13011
	} else if (how == @symbol(Center)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13012
	    wa.win_gravity = CenterGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13013
	} else if (how == @symbol(North)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13014
	    wa.win_gravity = NorthGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13015
	} else if (how == @symbol(South)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13016
	    wa.win_gravity = SouthGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13017
	} else if (how == @symbol(West)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13018
	    wa.win_gravity = WestGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13019
	} else if (how == @symbol(East)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13020
	    wa.win_gravity = EastGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13021
	} else {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13022
	    wa.win_gravity = NorthWestGravity;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13023
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13024
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13025
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13026
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13027
	XChangeWindowAttributes(myDpy, __WindowVal(aWindowId), CWWinGravity, &wa);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13028
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13029
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13030
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13031
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13032
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13033
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13034
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13035
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 13036
setWindowIcon:aForm in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13037
    "define a bitmap to be used as icon"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13038
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13039
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13040
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13041
    |iconId|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13042
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13043
    aForm notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13044
	iconId := aForm id
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13045
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13046
%{
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 13047
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 13048
     && __isExternalAddress(iconId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13049
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13050
	XWMHints hints;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13051
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13052
	hints.icon_pixmap = __PixmapVal(iconId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13053
	hints.flags = IconPixmapHint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13054
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13055
	XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13056
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13057
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13058
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13059
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13060
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13061
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13062
1376
8b2ceb27230d prepare for iconMasks
Claus Gittinger <cg@exept.de>
parents: 1366
diff changeset
 13063
setWindowIcon:aForm mask:aMaskForm in:aWindowId
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13064
    "define a windows icon and (optional) iconMask."
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13065
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13066
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13067
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13068
    |iconId maskId|
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13069
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13070
    aForm notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13071
	iconId := aForm id
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13072
    ].
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13073
    aMaskForm notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13074
	maskId := aMaskForm id.
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13075
    ].
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13076
%{
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13077
    if (ISCONNECTED
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13078
     && __isExternalAddress(iconId)
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13079
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13080
	XWMHints hints;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13081
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13082
	hints.icon_pixmap = __PixmapVal(iconId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13083
	hints.flags = IconPixmapHint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13084
	if ((maskId != nil)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13085
	 && __isExternalAddress(maskId)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13086
	    hints.icon_mask = __PixmapVal(maskId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13087
	    hints.flags |= IconMaskHint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13088
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13089
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13090
	XSetWMHints(myDpy, __WindowVal(aWindowId), &hints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13091
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13092
	RETURN ( self );
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13093
    }
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13094
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13095
    self primitiveFailedOrClosedConnection
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13096
1376
8b2ceb27230d prepare for iconMasks
Claus Gittinger <cg@exept.de>
parents: 1366
diff changeset
 13097
!
8b2ceb27230d prepare for iconMasks
Claus Gittinger <cg@exept.de>
parents: 1366
diff changeset
 13098
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 13099
setWindowIconWindow:aView in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13100
    "define a window to be used as icon"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13101
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13102
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13103
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13104
    |iconWindowId|
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13105
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13106
    aView notNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13107
	iconWindowId := aView id
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13108
    ].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13109
%{
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 13110
    if (ISCONNECTED
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 13111
     && __isExternalAddress(iconWindowId)
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13112
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13113
	XWMHints wmhints;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13114
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13115
	wmhints.icon_window = __WindowVal(iconWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13116
	wmhints.flags = IconWindowHint;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13117
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13118
	XSetWMHints(myDpy, __WindowVal(aWindowId), &wmhints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13119
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13120
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13121
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13122
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13123
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13124
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13125
3245
b548dcf4993f cleanup
Claus Gittinger <cg@exept.de>
parents: 3238
diff changeset
 13126
setWindowMinExtentX:minW y:minH maxExtentX:maxW y:maxH in:aWindowId
2647
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13127
    "set a windows minimum & max extents.
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13128
     nil arguments are ignored."
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13129
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13130
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 13131
%{
2647
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13132
    if (ISCONNECTED
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13133
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13134
	Display *dpy = myDpy;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13135
	XSizeHints szhints;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13136
	Window win;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13137
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13138
	win = __WindowVal(aWindowId);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13139
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13140
	szhints.flags = 0;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13141
	if (__bothSmallInteger(minW, minH)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13142
	    szhints.flags |= PMinSize;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13143
	    szhints.min_width = __intVal(minW);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13144
	    szhints.min_height = __intVal(minH);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13145
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13146
	if (__bothSmallInteger(maxW, maxH)) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13147
	    szhints.flags |= PMaxSize;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13148
	    szhints.max_width = __intVal(maxW);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13149
	    szhints.max_height = __intVal(maxH);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13150
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13151
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13152
	if (szhints.flags) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13153
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13154
	    XSetNormalHints(dpy, win, &szhints);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13155
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13156
	}
2647
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13157
    }
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13158
%}.
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13159
!
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13160
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 13161
setWindowName:aString in:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13162
    "define a windows name"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13163
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13164
    <context: #return>
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13165
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13166
    |utf8StringAtom utf8String simpleString|
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13167
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13168
    utf8StringAtom := self atomIDOf:#UTF8_STRING create:true.
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13169
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13170
    utf8String := aString utf8Encoded.
5967
d86c05b36723 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5938
diff changeset
 13171
    aString isWideString ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13172
	"/ X does not like 2-byte labels ...
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13173
	simpleString := aString asSingleByteStringReplaceInvalidWith:$?
4127
2be685c11752 to utf8 or not - that is the question
Michael Beyl <mb@exept.de>
parents: 4119
diff changeset
 13174
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13175
	simpleString := aString.
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13176
    ].
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13177
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13178
%{
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13179
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13180
    XTextProperty titleProperty;
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13181
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13182
    if (ISCONNECTED
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13183
     && __isStringLike(utf8String)
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13184
     && __isStringLike(simpleString)
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13185
     && __isExternalAddress(aWindowId)) {
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13186
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13187
	titleProperty.value =  __stringVal(utf8String);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13188
	titleProperty.encoding = __smallIntegerVal(utf8StringAtom);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13189
	titleProperty.format = 8;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13190
	titleProperty.nitems = __stringSize(utf8String);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13191
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13192
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13193
	XStoreName(myDpy, __WindowVal(aWindowId), (char *) __stringVal(simpleString));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13194
	/* alternative settings for UTF8-Strings */
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13195
	XSetWMName(myDpy, __WindowVal(aWindowId), &titleProperty);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13196
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13197
	RETURN ( self );
5525
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13198
    }
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13199
%}.
9aae1d80c58e comment/format in: #initializeFor:
Stefan Vogel <sv@exept.de>
parents: 5510
diff changeset
 13200
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13201
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13202
5974
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13203
setWindowPid:anIntegerOrNil in:aWindowId
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13204
    "Sets the _NET_WM_PID property for the window.
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13205
     This may be used by the window manager to group windows.
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13206
     If anIntegerOrNil is nil, then PID of currently running
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13207
     Smalltalk is used"
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13208
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13209
    | propertyID typeId pid |
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13210
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13211
    propertyID := self atomIDOf: '_NET_WM_PID' create: false.
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13212
    propertyID isNil ifTrue:[ ^ self ].
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13213
    pid := anIntegerOrNil isNil ifTrue:[OperatingSystem getProcessId] ifFalse:[anIntegerOrNil].
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13214
    typeId := self atomIDOf:#'CARDINAL' create:false.
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13215
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13216
    self setProperty:propertyID type:typeId value:pid for:aWindowId
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13217
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13218
    "Created: / 04-01-2013 / 16:03:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13219
!
b3499f80b70c ICCCM 2.0 Compliancy: correctly set NET_WM_CLASS and _NET_WM_PID properties
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5972
diff changeset
 13220
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 13221
setWindowShape:aPixmapId in:aWindowId
2647
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13222
    "set the windows shape.
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13223
     Returns false, if the display does not support the
3c65550477c0 allow change of minExtent/maxExtent
Claus Gittinger <cg@exept.de>
parents: 2635
diff changeset
 13224
     X shape extension."
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13225
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13226
    <context: #return>
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13227
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13228
    hasShapeExtension ifFalse:[^ self].
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13229
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 13230
%{
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13231
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13232
#ifdef SHAPE
2758
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 13233
    Pixmap shapeBitmap;
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 13234
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 13235
    if (__isExternalAddress(aPixmapId))
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13236
	shapeBitmap = __PixmapVal(aPixmapId);
2758
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 13237
    else
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13238
	shapeBitmap = (Pixmap)0;
2758
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 13239
1207
274dbb13f15a always check if display connection is valid, before doing anything
Claus Gittinger <cg@exept.de>
parents: 1206
diff changeset
 13240
    if (ISCONNECTED
2758
329098f17dd9 allow for a shape to be unset
Claus Gittinger <cg@exept.de>
parents: 2748
diff changeset
 13241
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13242
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13243
	XShapeCombineMask(myDpy, __WindowVal(aWindowId), ShapeClip,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13244
			  0, 0,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13245
			  shapeBitmap, ShapeSet);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13246
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13247
	RETURN ( self );
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13248
    }
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13249
#endif
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13250
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13251
    self primitiveFailedOrClosedConnection
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13252
!
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13253
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13254
setWindowState:aSymbol in:aWindowId
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13255
    "tell the window type to the window manager.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13256
     Send a specific message to the WindowManager"
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13257
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13258
    |netWmWindowStateAtom stateAtom|
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13259
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13260
    netWmWindowStateAtom := self atomIDOf:#'_NET_WM_WINDOW_STATE' create:false.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13261
    stateAtom := self atomIDOf:aSymbol create:false.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13262
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13263
    (netWmWindowStateAtom notNil and:[stateAtom notNil]) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13264
	self
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13265
	    sendClientEvent:netWmWindowStateAtom
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13266
	    format:32
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13267
	    to:(self rootWindowId)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13268
	    propagate:true
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13269
	    eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13270
	    window:aWindowId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13271
	    data1:(self atomIDOf:#'_NET_WM_STATE_ADD' create:false)
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13272
	    data2:stateAtom
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13273
	    data3:nil
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13274
	    data4:1
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13275
	    data5:nil.
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13276
    ] ifFalse:[self halt.].
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13277
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13278
    "
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13279
      |v|
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13280
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13281
      v := TopView new create.
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13282
      Display setWindowState:#'_NET_WM_WINDOW_STATE_STICKY' in:v id.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13283
      v open.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13284
    "
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13285
!
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13286
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13287
setWindowType:aSymbol in:aWindowId
5914
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13288
    "Tell the window type to the window manager.
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13289
     See Extended Window Manager Hints 1.3,
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13290
     chapter 'Application Window Properties'
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13291
     http://standards.freedesktop.org/wm-spec/1.3/
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13292
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13293
    JV@2012-05-15: There was some code prior 2012-05-15,
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13294
    but that code does not work anymore and I wonder if it
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13295
    ever worked correctly. I changed it to be
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13296
    EWMH compatible, as this improve UX on modern Linxu
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13297
    machines.
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13298
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13299
    It also helps to fix super-annoying problem with window autoraiser
5914
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13300
    on X11 in a proper way - window manager should manage top-level
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13301
    window stacking, that's why it is called a 'window manager' :-)
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13302
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13303
    "
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13304
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13305
    | nameAtom typeAtom valueAtom |
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13306
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13307
    self assert:(#(_NET_WM_WINDOW_TYPE_DESKTOP
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13308
		  _NET_WM_WINDOW_TYPE_DOCK
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13309
		  _NET_WM_WINDOW_TYPE_TOOLBAR
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13310
		  _NET_WM_WINDOW_TYPE_MENU
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13311
		  _NET_WM_WINDOW_TYPE_UTILITY
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13312
		  _NET_WM_WINDOW_TYPE_SPLASH
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13313
		  _NET_WM_WINDOW_TYPE_DIALOG
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13314
		  _NET_WM_WINDOW_TYPE_NORMAL) includes: aSymbol).
5914
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13315
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13316
    nameAtom := self atomIDOf:#'_NET_WM_WINDOW_TYPE' create:false.
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13317
    nameAtom isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13318
	"/Hmm, no such property, not running under EWMH compliant WM?
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13319
	self breakPoint: #jv.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13320
	^self
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13321
    ].
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13322
    "/ Hmm, hmm, no access to XA_ATOM, XA_INTEGER and so on...
5914
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13323
    typeAtom := self atomIDOf:#'ATOM' create:false.
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13324
    typeAtom isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13325
	self error:'Oops, no ATOM atom'.
5914
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13326
    ].
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13327
    valueAtom := self atomIDOf: aSymbol create:false.
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13328
    valueAtom isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13329
	"/Hmm, no such property, not running under EWMH compliant WM?
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13330
	self breakPoint: #jv.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13331
	^self
5914
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13332
    ].
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13333
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13334
    self setProperty: nameAtom type: typeAtom value: valueAtom for: aWindowId.
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13335
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13336
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13337
"/   Original code that does not work (if ever worked)
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13338
"/
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13339
"/    |netWmWindowTypeAtom typeAtom|
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13340
"/
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13341
"/    netWmWindowTypeAtom := self atomIDOf:#'_NET_WM_WINDOW_TYPE' create:false.
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13342
"/    typeAtom := self atomIDOf:aSymbol create:false.
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13343
"/
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13344
"/    (netWmWindowTypeAtom notNil and:[typeAtom notNil]) ifTrue:[
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13345
"/        self
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13346
"/            sendClientEvent:netWmWindowTypeAtom
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13347
"/            format:32
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13348
"/            to:(self rootWindowId)
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13349
"/            propagate:true
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13350
"/            eventMask:((self eventMaskFor:#substructureNotify) bitOr:(self eventMaskFor:#substructureRedirect))
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13351
"/            window:aWindowId
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13352
"/            data1:typeAtom
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13353
"/            data2:nil
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13354
"/            data3:nil
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13355
"/            data4:nil
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13356
"/            data5:nil.
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13357
"/    ].
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13358
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13359
    "
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13360
      |v|
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13361
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13362
      v := TopView new create.
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13363
      Display setWindowType:#'_NET_WM_WINDOW_TYPE_DOCK' in:v id.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13364
      v open.
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13365
5886
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
 13366
      |v|
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
 13367
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13368
      v := TopView new create.
5886
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
 13369
      Display setWindowType:#'_NET_WM_WINDOW_TYPE_UTILITY' in:v id.
e72320525e18 comment/format in: #setWindowType:in:
Stefan Vogel <sv@exept.de>
parents: 5885
diff changeset
 13370
      v open.
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13371
    "
5914
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13372
0b702d8f1439 changed: #setWindowType:in: to be EWMH compliant
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5908
diff changeset
 13373
    "Modified (comment): / 15-05-2012 / 10:49:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
5862
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13374
!
8270a6c0c613 Virtual root handling for multiple screens
Stefan Vogel <sv@exept.de>
parents: 5850
diff changeset
 13375
1344
f19217b30901 oops - corrupted
Claus Gittinger <cg@exept.de>
parents: 1341
diff changeset
 13376
unmapWindow:aWindowId
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13377
    "make a window invisible"
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13378
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13379
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 13380
%{
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
 13381
    /*
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
 13382
     * ignore closed connection
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
 13383
     */
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
 13384
    if (! ISCONNECTED) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13385
	RETURN ( self );
1214
e68cfc3ba4ce *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1213
diff changeset
 13386
    }
e68cfc3ba4ce *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1213
diff changeset
 13387
e68cfc3ba4ce *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1213
diff changeset
 13388
    if (__isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13389
	ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13390
	XUnmapWindow(myDpy, __WindowVal(aWindowId));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13391
	LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13392
	RETURN ( self );
4292
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
 13393
    }
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
 13394
%}.
153fc6f79fff Do not signal closedConnection in methods where a closed connection is ignored.
Stefan Vogel <sv@exept.de>
parents: 4286
diff changeset
 13395
    self primitiveFailed
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13396
!
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13397
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13398
windowIsIconified:aWindowId
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13399
    "return true, if some window is iconified.
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13400
     The passed windowID may be an alien windows id."
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13401
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13402
    <context: #return>
4245
d28b613dfc06 timeout handling changed
Claus Gittinger <cg@exept.de>
parents: 4169
diff changeset
 13403
%{
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13404
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13405
    if (ISCONNECTED
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13406
     && __isExternalAddress(aWindowId)) {
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13407
	Atom JunkAtom;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13408
	int JunkInt;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13409
	unsigned long WinState,JunkLong;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13410
	unsigned char *Property;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13411
	Atom WM_STATE_Atom;
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13412
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13413
	if (__INST(wmStateAtom) != nil) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13414
	    WM_STATE_Atom = __AtomVal(__INST(wmStateAtom));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13415
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13416
	    ENTER_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13417
	    XGetWindowProperty(myDpy, __WindowVal(aWindowId),
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13418
			       WM_STATE_Atom,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13419
			       0L, 2L, False, AnyPropertyType,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13420
			       &JunkAtom,&JunkInt,&WinState,&JunkLong,
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13421
			       &Property);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13422
	    LEAVE_XLIB();
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13423
	    WinState=(unsigned long)(*((long*)Property));
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13424
	    if (WinState==3) {
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13425
		RETURN (true);
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13426
	    }
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13427
	}
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13428
	RETURN (false);
1535
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13429
    }
a347ad2379bc added isIconified query;
Claus Gittinger <cg@exept.de>
parents: 1533
diff changeset
 13430
%}.
3303
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13431
    self primitiveFailedOrClosedConnection.
8a2e99ebccb3 primitiveFailed vs. primitiveFailedOrClosedConnection
Claus Gittinger <cg@exept.de>
parents: 3287
diff changeset
 13432
    ^ false "/ or true or what ?
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13433
! !
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 13434
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13435
!XWorkstation::SelectionFetcher class methodsFor:'documentation'!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13436
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13437
documentation
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13438
"
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13439
    This class is responsible for fetching the clipboard.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13440
    The X11 clipboard is implemented via asynchonous messages.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13441
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13442
    For each fetch operation an instance of this class is created.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13443
    The asynchronous messages are queued and executed in the
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13444
    process that requests the clipboard.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13445
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13446
    [author:]
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13447
	Stefan Vogel (stefan@zwerg)
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13448
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13449
    [instance variables:]
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13450
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13451
    [class variables:]
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13452
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13453
    [see also:]
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13454
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13455
"
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13456
! !
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13457
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13458
!XWorkstation::SelectionFetcher class methodsFor:'selections'!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13459
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13460
requestSelection:selectionId type:aTargetId onDevice:aDisplay for:aDrawableId
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13461
    ^ self new requestSelection:selectionId type:aTargetId onDevice:aDisplay for:aDrawableId
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13462
! !
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13463
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13464
!XWorkstation::SelectionFetcher methodsFor:'accessing'!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13465
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13466
drawableID
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13467
    ^ drawableID
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13468
!
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13469
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13470
getSelection
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13471
    "convert the data in buffer to a selection"
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13472
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13473
    |selection|
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13474
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13475
    buffer isNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13476
	^ nil.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13477
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13478
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13479
    targetID == (display atomIDOf:#STRING) ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13480
	display clipboardEncoding notNil ifTrue:[
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13481
	    selection := buffer decodeFrom:display clipboardEncoding
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13482
	].
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13483
	selection := buffer.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13484
    ] ifFalse:[targetID == (display atomIDOf:#'UTF8_STRING') ifTrue:[
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13485
"/ Transcript show:'UTF8: '; showCR:buffer storeString.
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13486
	selection := buffer utf8Decoded.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13487
    ] ifFalse:[targetID == (display atomIDOf:#TEXT) ifTrue:[
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13488
"/ Transcript show:'TEXT: '; showCR:buffer storeString.
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13489
	selection := buffer asString
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13490
    ] ifFalse:[targetID == (display atomIDOf:#'COMPOUND_TEXT') ifTrue:[
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13491
"/ Transcript show:'COMPOUND_TEXT: '; showCR:buffer storeString.
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13492
	selection := buffer asString
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13493
    ]]]].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13494
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13495
    selection notNil ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13496
	(selection endsWith:Character cr) ifTrue:[
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13497
	    selection := selection asStringCollection copyWith:''
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13498
	].
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13499
	^ selection.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13500
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13501
4268
f1726c185220 Selection fixes
Stefan Vogel <sv@exept.de>
parents: 4258
diff changeset
 13502
    targetID == (display atomIDOf:#'TARGETS') ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13503
	^ buffer
4268
f1726c185220 Selection fixes
Stefan Vogel <sv@exept.de>
parents: 4258
diff changeset
 13504
    ].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13505
    targetID == (display atomIDOf:#'ST_OBJECT') ifTrue:[
7146
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13506
	"require libboss to be loaded"
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13507
	(Smalltalk isClassLibraryLoaded:'libstx_libboss') ifFalse:[
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13508
	    'SelectionFetch: cannot decode object (libboss library missing)' errorPrintCR.
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13509
	    ^ nil
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13510
	].
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13511
	^ (Object
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13512
	    readBinaryFrom:(ReadStream on:buffer)
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13513
	    onError:[:ex |
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13514
		('SelectionFetch: error while decoding binary object: ',ex description) errorPrintCR.
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13515
		nil
19b4ad17ca3a better error message
Claus Gittinger <cg@exept.de>
parents: 7141
diff changeset
 13516
	    ])
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13517
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13518
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13519
    'XWorkstation: unimplemented property targetID: ' infoPrint. (display atomName:targetID) infoPrint.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13520
    ' buffer:' infoPrint. buffer infoPrintCR.
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13521
    ^ nil
4559
95854882475c boss stuff separated
Claus Gittinger <cg@exept.de>
parents: 4555
diff changeset
 13522
95854882475c boss stuff separated
Claus Gittinger <cg@exept.de>
parents: 4555
diff changeset
 13523
    "Modified: / 23-08-2006 / 15:56:04 / cg"
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13524
! !
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13525
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13526
!XWorkstation::SelectionFetcher methodsFor:'event handling'!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13527
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13528
message:aMessage
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13529
    "got an asynchronous event from the display.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13530
     Save and wake up waiters"
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13531
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13532
    aMessage selector == #propertyChange:property:state:time: ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13533
	(aMessage arguments at:2) ~~ propertyID ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13534
	    "I am only interested in changes of the property used to
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13535
	     store the selection"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13536
	    ^ self.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13537
	].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13538
	message notNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13539
	    "this should not happen - bad selection holder?"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13540
	    'XWorkstation(error): message overflow: ' errorPrint. display errorPrintCR.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13541
	    ^ self.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13542
	].
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13543
    ].
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13544
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13545
    "we get a propertyChange before the selectionNotify.
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13546
     Since the propertyChange will be ignored anyway (because we are not in incremental mod,
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13547
     a selectionNotify message may overwrite a propertyChange message"
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13548
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13549
    message := aMessage.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13550
    sema signal.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13551
!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13552
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13553
propertyChange:aView property:aPropertyId state:stateSymbol time:time
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13554
    "this is a forwarded propretyChange event from XWorkstation"
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13555
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13556
    |property propertyValue|
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13557
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13558
    incremental ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13559
	"ignore property changes until we are in incremental mode"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13560
	^ self.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13561
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13562
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13563
    property := display getProperty:propertyID from:drawableID delete:true.
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13564
    propertyValue := property value.
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13565
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13566
    propertyValue size == 0 ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13567
	"property with size 0 signals end of transfer"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13568
	done := true.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13569
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13570
	buffer isNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13571
	    targetID := property key.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13572
	    buffer := propertyValue.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13573
	] ifFalse:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13574
	    targetID ~= property key ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13575
		'XWorkstation(warning): targetID change in incremental select: ' errorPrint. display errorPrintCR.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13576
	    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13577
	    buffer := buffer, propertyValue.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13578
	].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13579
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13580
!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13581
6157
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13582
selectionClear:aView selection:selectionId time:time
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13583
    "sent when another X-client has created a selection.
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13584
     This is a very X-specific mechanism."
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13585
!
244e739e05e9 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6156
diff changeset
 13586
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13587
selectionNotify:aView selection:aSelectionID target:aTargetID property:aPropertyID requestor:requestorID time:time
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13588
    "this is a forwarded selectionNotify event from XWorkstation"
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13589
5936
32467c3ce97d Fixed copy/paste problem
Stefan Vogel <sv@exept.de>
parents: 5934
diff changeset
 13590
    |property propertyKey atomName|
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13591
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13592
    aSelectionID ~~ selectionID ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13593
	"ignore notification that is not for our selection"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13594
	^ self.
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13595
    ].
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13596
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13597
    aPropertyID == 0 ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13598
	"the selection owner could not convert the selection to our target type"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13599
	done := true.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13600
	^ self.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13601
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13602
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13603
    property := display getProperty:aPropertyID from:drawableID delete:true.
5936
32467c3ce97d Fixed copy/paste problem
Stefan Vogel <sv@exept.de>
parents: 5934
diff changeset
 13604
    property isNil ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13605
	"the property does not exist in the specified window"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13606
	done := true.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13607
	^ self
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13608
    ].
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13609
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13610
    propertyKey := property key.
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13611
    propertyKey == aTargetID ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13612
	"good, the property is consistent with our request.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13613
	 The whole selection is in the property"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13614
	buffer := property value.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13615
	done := true.
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13616
    ] ifFalse:[propertyKey == (display atomIDOf:#INCR) ifTrue:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13617
	"this is an incremental transfer. Wait for property change"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13618
	incremental := true.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13619
    ] ifFalse:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13620
	atomName := (display atomName:propertyKey) ? propertyKey.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13621
	'XWorkstation(error): unexpected targetID (' errorPrint.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13622
	atomName errorPrint.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13623
	') in selectionNotify: ' errorPrint.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13624
	display errorPrintCR.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13625
	done := true.
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13626
    ]].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13627
! !
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13628
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13629
!XWorkstation::SelectionFetcher methodsFor:'selection actions'!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13630
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13631
requestSelection:aSelectionId type:aTargetId onDevice:aDisplay for:aDrawableId
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13632
    "request the selection of type targetId.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13633
     Wait for next asynchronous message and process it,
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13634
     until done"
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13635
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13636
    display := aDisplay.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13637
    drawableID := aDrawableId.
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13638
    selectionID := aSelectionId.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13639
    propertyID := display atomIDOf:#'VT_SELECTION'.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13640
    targetID := aTargetId.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13641
    sema := Semaphore new name:'X11SelectionFetcher'.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13642
    done := false.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13643
    incremental := false.
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13644
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13645
    [
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13646
	|timeout|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13647
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13648
	display registerSelectionFetcher:self.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13649
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13650
	display
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13651
	    requestSelection:aSelectionId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13652
	    type:aTargetId
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13653
	    for:drawableID
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13654
	    intoProperty:propertyID.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13655
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13656
	timeout := display xlibTimeout.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13657
	[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13658
	    |currentMessage|
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13659
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13660
	    (sema waitWithTimeout:timeout) isNil ifTrue:[
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13661
		"the selection owner didn't respond within reasonable time"
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13662
		'XWorkstation(error): selection owner does not respond:' infoPrint. display infoPrintCR.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13663
		^ nil.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13664
	    ].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13665
	    currentMessage := message.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13666
	    message := nil.
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13667
	    currentMessage notNil ifTrue:[currentMessage sendTo:self].
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13668
	] doUntil:[done].
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13669
    ] ensure:[
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13670
	display unregisterSelectionFetcher:self.
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13671
    ].
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13672
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13673
    ^ self getSelection
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13674
! !
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13675
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13676
!XWorkstation::SelectionFetcher methodsFor:'testing'!
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13677
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13678
matchesDrawableId:aDrawableId
4258
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13679
    "return true, if this SelectionFetcher fetches for aDrawableId"
a4b5ac616c69 Fix a race condition when getching a selection.
Stefan Vogel <sv@exept.de>
parents: 4252
diff changeset
 13680
4252
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13681
    ^ drawableID = aDrawableId
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13682
! !
9dca820cd786 Fix selection handling (utf8 / incremental transmission)
Stefan Vogel <sv@exept.de>
parents: 4245
diff changeset
 13683
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13684
!XWorkstation::WindowGroupWindow class methodsFor:'documentation'!
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13685
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13686
documentation
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13687
"
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13688
    A special window to serve as window group id. This window
6291
65b57dca9902 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6265
diff changeset
 13689
    is newer mapped. This window is used
6913
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
 13690
    in XWMHints, _NET_WM_LEADER and WM_CLIENT_LEADER properties 
12bc34f97b84 X11: Set ICCCM property WM_CLIENT_LEADER
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 6905
diff changeset
 13691
    to define application window group
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13692
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13693
    [author:]
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13694
	Jan Vrany <jan.vrany@fit.cvut.cz>
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13695
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13696
    [instance variables:]
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13697
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13698
    [class variables:]
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13699
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13700
    [see also:]
6517
3aae5fa95a99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6363
diff changeset
 13701
	Inter-Client Communication Conventions Manual [http://tronche.com/gui/x/icccm/]
5998
04c91c9d90f4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5993
diff changeset
 13702
5984
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13703
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13704
"
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13705
! !
7380209f1108 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5983
diff changeset
 13706
6291
65b57dca9902 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6265
diff changeset
 13707
!XWorkstation::WindowGroupWindow methodsFor:'testing'!
65b57dca9902 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6265
diff changeset
 13708
65b57dca9902 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6265
diff changeset
 13709
isICCCWindowGroupWindow
65b57dca9902 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6265
diff changeset
 13710
    ^ true
65b57dca9902 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6265
diff changeset
 13711
! !
65b57dca9902 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 6265
diff changeset
 13712
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13713
!XWorkstation::X11GraphicsContext methodsFor:'accessing'!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13714
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13715
depth
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13716
    ^ depth
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13717
!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13718
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13719
xftDrawId
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13720
    ^ xftDrawId
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13721
! !
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13722
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13723
!XWorkstation::X11GraphicsContext methodsFor:'destroying'!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13724
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13725
destroy
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13726
    xftDrawId notNil ifTrue:[
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13727
	self destroyXftDrawId.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13728
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13729
    super destroy.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13730
!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13731
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13732
destroyXftDrawId
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13733
    |id|
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13734
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13735
    id := xftDrawId.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13736
    xftDrawId := nil.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13737
%{
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13738
#ifdef XFT
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13739
    if (__isExternalAddress(id)) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13740
	XftDraw *address = (XftDraw *)__externalAddressVal(id);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13741
	if (address) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13742
	    XftDrawDestroy(address);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13743
	    __externalAddressVal(id) = 0;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13744
	}
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13745
    }
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13746
#endif
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13747
%}.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13748
! !
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13749
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13750
!XWorkstation::X11GraphicsContext methodsFor:'displaying'!
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13751
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13752
displayDeviceString:aString from:index1 to:index2 x:x y:y opaque:opaque
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13753
    "draw a sub-string - if opaque is false, draw foreground only; otherwise, draw both
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13754
     foreground and background characters.
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13755
     If the coordinates are not integers, an error is triggered."
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13756
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13757
    <context: #return>
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13758
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13759
    |displayId|
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13760
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13761
    font isXftFont ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13762
	self displayDeviceXftString:aString from:index1 to:index2 x:x y:y opaque:opaque.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13763
	^ self.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13764
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13765
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13766
    device flushIfAppropriate.
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13767
    displayId := device displayIdOrErrorIfBroken.
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13768
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13769
%{
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13770
    GC gc;
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13771
    Window win;
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13772
    char *cp;
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13773
    int  i1, i2, l, n;
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13774
#   define NLOCALBUFFER 200
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13775
    XChar2b xlatebuffer[NLOCALBUFFER];
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13776
    int nInstBytes;
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13777
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13778
    if (__isExternalAddress(displayId)
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13779
     && __isExternalAddress(__INST(gcId))
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13780
     && __isExternalAddress(__INST(drawableId))
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13781
     && __isNonNilObject(aString)
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13782
     && __bothSmallInteger(index1, index2)
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13783
     && __bothSmallInteger(x, y)) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13784
	int lMax = __intVal(@global(XWorkstation:MaxStringLength));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13785
	Display *dpy = __DisplayVal(displayId);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13786
	gc = __GCVal(__INST(gcId));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13787
	win = __WindowVal(__INST(drawableId));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13788
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13789
	i1 = __intVal(index1) - 1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13790
	if (i1 >= 0) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13791
	    OBJ cls;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13792
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13793
	    i2 = __intVal(index2) - 1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13794
	    if (i2 < i1) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13795
		RETURN (self);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13796
	    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13797
	    cp = (char *) __stringVal(aString);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13798
	    l = i2 - i1 + 1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13799
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13800
	    if (__isStringLike(aString)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13801
		n = __stringSize(aString);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13802
		if (i2 < n) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13803
		    cp += i1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13804
		    if (l > lMax) l = lMax;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13805
		    __ENTER_XLIB(1000 * __intVal(@global(XWorkstation:DefaultXLibTimeout)));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13806
		    if (opaque == true)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13807
			XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13808
		    else
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13809
			XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13810
		    LEAVE_XLIB();
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13811
		    RETURN ( self );
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13812
		}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13813
	    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13814
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13815
	    cls = __qClass(aString);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13816
	    nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13817
	    cp += nInstBytes;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13818
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13819
	    if (__isBytes(aString)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13820
		n = __byteArraySize(aString) - nInstBytes - 1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13821
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13822
		if (i2 < n) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13823
		    cp += i1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13824
		    if (l > lMax) l = lMax;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13825
		    __ENTER_XLIB(1000 * __intVal(@global(XWorkstation:DefaultXLibTimeout)));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13826
		    if (opaque == true)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13827
			XDrawImageString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13828
		    else
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13829
			XDrawString(dpy, win, gc, __intVal(x), __intVal(y), cp, l);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13830
		    LEAVE_XLIB();
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13831
		    RETURN ( self );
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13832
		}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13833
	    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13834
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13835
	    /* TWOBYTESTRINGS */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13836
	    if (__isWords(aString)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13837
		n = (__byteArraySize(aString) - nInstBytes) / 2;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13838
		if (i2 < n) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13839
		    union {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13840
			char b[2];
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13841
			unsigned short s;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13842
		    } u;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13843
		    int i;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13844
		    XChar2b *cp2 = (XChar2b *)0;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13845
		    int mustFree = 0;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13846
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13847
		    cp += (i1 * 2);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13848
		    if (l > lMax) l = lMax;
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13849
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13850
#if defined(MSBFIRST) || defined(__MSBFIRST)
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13851
		    /*
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13852
		     * chars already in correct order
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13853
		     */
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13854
#else
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13855
# if ! (defined(LSBFIRST) || defined(__LSBFIRST))
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13856
		    /*
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13857
		     * ST/X TwoByteStrings store the asciiValue in native byteOrder;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13858
		     * X expects them MSB first
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13859
		     * convert as required
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13860
		     */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13861
		    u.s = 0x1234;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13862
		    if (u.b[0] != 0x12)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13863
# endif  // ! (defined(LSBFIRST) || defined(__LSBFIRST))
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13864
		    {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13865
			if (l <= NLOCALBUFFER) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13866
			    cp2 = xlatebuffer;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13867
			} else {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13868
			    cp2 = (XChar2b *)(malloc(l * 2));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13869
			    mustFree = 1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13870
			}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13871
			for (i=0; i<l; i++) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13872
			    cp2[i].byte1 = (((XChar2b *)cp)[i]).byte2;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13873
			    cp2[i].byte2 = (((XChar2b *)cp)[i]).byte1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13874
			}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13875
			cp = (char *) cp2;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13876
		    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13877
#endif  // ! (defined(MSBFIRST) || defined(__MSBFIRST))
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13878
		    __ENTER_XLIB(1000 * __intVal(@global(XWorkstation:DefaultXLibTimeout)));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13879
		    if (opaque == true)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13880
			XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13881
		    else
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13882
			XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp, l);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13883
		    LEAVE_XLIB();
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13884
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13885
		    if (mustFree) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13886
			free(cp2);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13887
		    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13888
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13889
		    RETURN ( self );
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13890
		}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13891
	    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13892
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13893
	    /* FOURBYTESTRINGS */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13894
	    if (__isLongs(aString)) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13895
		n = (__byteArraySize(aString) - nInstBytes) / 4;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13896
		if (i2 < n) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13897
		    union {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13898
			char b[2];
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13899
			unsigned short s;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13900
		    } u;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13901
		    int i;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13902
		    XChar2b *cp2 = (XChar2b *)0;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13903
		    int32 *ip;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13904
		    int mustFree = 0;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13905
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13906
		    cp += (i1 * 4);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13907
		    if (l > lMax) l = lMax;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13908
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13909
		    /*
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13910
		     * all codePoints <= 16rFFFF are draw; above 16bit range are drawn as 16rFFFF.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13911
		     */
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13912
		    if (l <= NLOCALBUFFER) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13913
			cp2 = xlatebuffer;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13914
		    } else {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13915
			cp2 = (XChar2b *)(malloc(l * 2));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13916
			mustFree = 1;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13917
		    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13918
		    for (i=0; i<l; i++) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13919
			int32 codePoint = ((int32 *)cp)[i];
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13920
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13921
			if (codePoint > 0xFFFF) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13922
			    codePoint = 0xFFFF;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13923
			}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13924
			cp2[i].byte1 = (codePoint >> 8) & 0xFF;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13925
			cp2[i].byte2 = codePoint & 0xFF;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13926
		    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13927
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13928
		    __ENTER_XLIB(1000 * __intVal(@global(XWorkstation:DefaultXLibTimeout)));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13929
		    if (opaque == true)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13930
			XDrawImageString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp2, l);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13931
		    else
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13932
			XDrawString16(dpy, win, gc, __intVal(x), __intVal(y), (XChar2b *)cp2, l);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13933
		    LEAVE_XLIB();
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13934
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13935
		    if (mustFree) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13936
			free(cp2);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13937
		    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13938
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13939
		    RETURN ( self );
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13940
		}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13941
	    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13942
	}
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13943
    }
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 13944
#undef NLOCALBUFFER
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13945
%}.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13946
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13947
    "x/y not integer, badGC or drawable, or not a string"
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13948
    device primitiveFailedOrClosedConnection
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13949
!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13950
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13951
displayDeviceXftString:aString from:index1 to:index2Arg x:drawX y:drawY opaque:opaque
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13952
    "draw a sub-string - if opaque is false, draw foreground only; otherwise, draw both
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13953
     foreground and background characters.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13954
     If the coordinates are not integers, an error is triggered."
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13955
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13956
    <context: #return>
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13957
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13958
    |index2 bytesPerCharacter
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13959
     clipX clipY clipW clipH
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13960
     fgR fgG fgB fgA fgPixel bgR bgG bgB bgA bgPixel
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13961
     displayId screen error stringLen
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13962
     newXftDrawId pixmapDepth fontId|
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13963
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13964
"/    device flushIfAppropriate.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13965
    displayId := device displayIdOrErrorIfBroken.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13966
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13967
    "limit the string len, otherwise bad output is generated"
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13968
    stringLen := index2Arg - index1 + 1.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13969
    stringLen > 1000 "8000" ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13970
	index2 := index1 + 1000 "8000" - 1.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13971
    ]  ifFalse:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13972
	stringLen <= 0 ifTrue:[^ self].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13973
	index2 := index2Arg.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13974
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13975
    bytesPerCharacter := aString bytesPerCharacter.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13976
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13977
    clipRect notNil ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13978
	clipX := clipRect left.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13979
	clipY := clipRect top.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13980
	clipW := clipRect width.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13981
	clipH := clipRect height.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13982
"/clipW > 32767 ifTrue:['clipW > 32767: ' errorPrint. clipW errorPrintCR. clipW := 32767].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13983
"/(clipX > 16384 or:[clipX < -16384]) ifTrue:['clipX > 16384: ' errorPrint. clipX errorPrintCR.].
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13984
	"/ YES YES YES: this MUST be transformed!!
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13985
	"/ (see htmlView) fix the notebook, please.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13986
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13987
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13988
    fgR := paint scaledRed.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13989
    fgR notNil ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13990
	fgG := paint scaledGreen.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13991
	fgB := paint scaledBlue.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13992
	fgA := paint scaledAlpha.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 13993
    ] ifFalse:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13994
	"/ when drawing into a pixmap...
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13995
	fgPixel := paint colorId.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13996
	fgPixel == 0 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13997
	    fgR := fgG := fgB := 0.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13998
	] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 13999
	    fgR := fgG := fgB := 16rFFFF.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14000
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14001
	fgA := 16rFFFF.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14002
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14003
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14004
    opaque ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14005
	bgPaint isColor ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14006
	    bgR := bgPaint scaledRed.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14007
	    bgR notNil ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14008
		bgG := bgPaint scaledGreen.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14009
		bgB := bgPaint scaledBlue.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14010
		bgA := bgPaint scaledAlpha.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14011
	    ] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14012
		"/ when drawing into a pixmap...
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14013
		bgPixel := bgPaint colorId.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14014
		bgPixel == 0 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14015
		    bgR := bgG := bgB := 0.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14016
		] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14017
		    bgR := bgG := bgB := 16rFFFF.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14018
		].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14019
		bgA := 16rFFFF.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14020
	    ].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14021
	] ifFalse:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14022
	    "images as background are not yet implemented"
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14023
	    "/ #todo: fill background rectangle
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14024
	    bgR := bgG := bgB := bgA := 16rFFFF.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14025
	].
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14026
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14027
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14028
    screen := device screen.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14029
    self isPixmap ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14030
	pixmapDepth := depth.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14031
    ].
7443
e2d05b756727 Use devices registry
Stefan Vogel <sv@exept.de>
parents: 7416
diff changeset
 14032
    fontId := font getXftFontId.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14033
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14034
%{ /* STACK: 64000 */
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14035
#ifdef XFT
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14036
    XftColor color;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14037
    XGlyphInfo extents;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14038
    XRectangle clipRX;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14039
    char *string;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14040
    int len;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14041
    int __bytesPerCharacter;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14042
    XftDraw *__xftDrawId;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14043
    XftFont *__xftFont;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14044
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14045
    if (!(__bothSmallInteger(drawX, drawY)
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14046
	  && __bothSmallInteger(index1, index2)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14047
	  && __isSmallInteger(bytesPerCharacter)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14048
	  && (__isSmallInteger(fgPixel) || (__bothSmallInteger(fgR, fgG) && __bothSmallInteger(fgB, fgA)))
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14049
	  && (opaque == false || __isSmallInteger(bgPixel) || (__bothSmallInteger(bgR, bgG) && __bothSmallInteger(bgB, bgA)))
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14050
	  && __isNonNilObject(aString)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14051
	  && __isExternalAddress(displayId)
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14052
	  && __isExternalAddressLike(fontId)
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14053
    )) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14054
	error = @symbol(badArgument);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14055
	goto out;
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14056
    }
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14057
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14058
    __xftFont = XFT_FONT(fontId);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14059
    __bytesPerCharacter = __intVal(bytesPerCharacter);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14060
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14061
    if (__INST(xftDrawId) != nil) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14062
	__xftDrawId = __externalAddressVal(__INST(xftDrawId));
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14063
    } else {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14064
	if (pixmapDepth != nil) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14065
	    int __pixmapDepth = __intVal(pixmapDepth);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14066
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14067
	    if (__pixmapDepth == 1) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14068
		__xftDrawId = XftDrawCreateBitmap(DISPLAY(displayId), DRAWABLE(__INST(drawableId)));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14069
	    } else {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14070
		__xftDrawId = XftDrawCreateAlpha(DISPLAY(displayId), DRAWABLE(__INST(drawableId)), __pixmapDepth);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14071
	    }
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14072
	} else {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14073
	    __xftDrawId = XftDrawCreate(DISPLAY(displayId),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14074
					   DRAWABLE(__INST(drawableId)),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14075
					   DefaultVisual(DISPLAY(displayId), SCREEN(screen)),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14076
					   DefaultColormap(DISPLAY(displayId), SCREEN(screen)));
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14077
	}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14078
	__INST(xftDrawId) = newXftDrawId = XFT_DRAW_HANDLE_NEW(__xftDrawId);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14079
	__STORE(self, newXftDrawId);
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14080
    }
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14081
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14082
    string = __stringVal(aString) + ((__intVal(index1) - 1 ) * __bytesPerCharacter);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14083
    len = __intVal(index2) - __intVal(index1) + 1;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14084
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14085
    if (clipX != nil) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14086
	clipRX.x = __intVal(clipX);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14087
	clipRX.y = __intVal(clipY);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14088
	clipRX.width = __intVal(clipW);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14089
	clipRX.height = __intVal(clipH);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14090
	XftDrawSetClipRectangles(__xftDrawId, 0, 0, &clipRX, 1);
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14091
    } else {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14092
	XftDrawSetClip(__xftDrawId, 0);
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14093
    }
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14094
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14095
    if (opaque == true) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14096
	if (bgPixel != nil) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14097
	    color.pixel = (unsigned long)__intVal(bgPixel);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14098
	}
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14099
	color.color.red = __intVal(bgR);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14100
	color.color.green = __intVal(bgG);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14101
	color.color.blue = __intVal(bgB);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14102
	color.color.alpha = __intVal(bgA);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14103
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14104
	switch (__bytesPerCharacter) {
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14105
	case 1:
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14106
	    XftTextExtents8(DISPLAY(displayId), __xftFont, (FcChar8*)string, len, &extents);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14107
	    break;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14108
	case 2:
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14109
	    XftTextExtents16(DISPLAY(displayId), __xftFont, (FcChar16*)string, len, &extents);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14110
	    break;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14111
	case 4:
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14112
	    XftTextExtents32(DISPLAY(displayId), __xftFont, (FcChar32*)string, len, &extents);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14113
	    break;
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14114
	}
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14115
if (extents.width < 0) printf("width: %d  < 0\n", extents.width);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14116
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14117
	XftDrawRect(__xftDrawId, &color, __intVal(drawX) - extents.x, __intVal(drawY) - __xftFont->ascent, extents.width, __xftFont->height);
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14118
    }
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14119
    if (__isSmallInteger(fgPixel)) {
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14120
	color.pixel = (unsigned long)__intVal(fgPixel);
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14121
    }
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14122
    color.color.red = __intVal(fgR);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14123
    color.color.green = __intVal(fgG);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14124
    color.color.blue = __intVal(fgB);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14125
    color.color.alpha = __intVal(fgA);
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14126
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14127
    switch (__bytesPerCharacter) {
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14128
    case 1:
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14129
	XftDrawString8(__xftDrawId, &color,__xftFont,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14130
			__intVal(drawX),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14131
			__intVal(drawY),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14132
			(FcChar8*)string,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14133
			len);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14134
	break;
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14135
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14136
    case 2:
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14137
	XftDrawString16(__xftDrawId, &color, __xftFont,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14138
			__intVal(drawX),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14139
			__intVal(drawY),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14140
			(FcChar16*)string,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14141
			len);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14142
	break;
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14143
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14144
    case 4:
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14145
	XftDrawString32(__xftDrawId, &color, __xftFont,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14146
			__intVal(drawX),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14147
			__intVal(drawY),
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14148
			(FcChar32*)string,
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14149
			len);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14150
	break;
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14151
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14152
    default:
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14153
	error = @symbol(invalidStringSize);
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14154
	goto out;
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14155
    }
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14156
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14157
out:;
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14158
#endif
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14159
%}.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14160
    error notNil ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14161
	self primitiveFailed: error.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14162
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14163
! !
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14164
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14165
!XWorkstation::X11GraphicsContext methodsFor:'drawing'!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14166
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14167
XXclearDeviceRectangleX:x y:y width:width height:height
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14168
    device clearRectangleX:x y:y width:width height:height in:drawableId with:gcId
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14169
!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14170
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14171
XXclearRectangleX:x y:y width:w height:h
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14172
    "draw a filled rectangle; apply transformation if nonNil"
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14173
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14174
    |pX pY nW nH pO pC|
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14175
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14176
    gcId isNil ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14177
	self initGC
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14178
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14179
    transformation notNil ifTrue:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14180
	pO := transformation transformPoint:x@y.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14181
	pC := transformation transformPoint:(x+w-1)@(y+h-1).
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14182
	pX := pO x.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14183
	pY := pO y.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14184
	nW := pC x - pX + 1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14185
	nH := pC y - pY + 1.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14186
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14187
	nW < 0 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14188
	      nW := nW abs.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14189
	      pX := pX - nW.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14190
	].
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14191
	nH < 0 ifTrue:[
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14192
	      nH := nH abs.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14193
	      pY := pY - nH.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14194
	].
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14195
    ] ifFalse:[
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14196
	pX := x.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14197
	pY := y.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14198
	nW := w.
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14199
	nH := h.
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14200
    ].
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14201
    pX := pX rounded.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14202
    pY := pY rounded.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14203
    nW := nW rounded.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14204
    nH := nH rounded.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14205
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14206
    device
7509
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14207
	clearRectangleX:pX
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14208
		     y:pY
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14209
		 width:nW
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14210
		height:nH
d18f375ac80d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 7507
diff changeset
 14211
		    in:drawableId with:gcId
7416
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14212
! !
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14213
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14214
!XWorkstation::X11GraphicsContext methodsFor:'view creation'!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14215
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14216
createBitmapFromArray:data width:width height:height
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14217
    depth := 1.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14218
    super createBitmapFromArray:data width:width height:height
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14219
!
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14220
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14221
createPixmapWidth:w height:h depth:d
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14222
    depth := d.
bd3b9e9edd9e Delegate GraphicsContext objects
Stefan Vogel <sv@exept.de>
parents: 7413
diff changeset
 14223
    super createPixmapWidth:w height:h depth:d
6332
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 14224
! !
792a2b79c651 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 6328
diff changeset
 14225
1171
a40ea3d796fd newStyle info & error messages
Claus Gittinger <cg@exept.de>
parents: 1138
diff changeset
 14226
!XWorkstation class methodsFor:'documentation'!
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 14227
5938
f5d6189257d4 comment/format in: #supportedTargetAtoms
Stefan Vogel <sv@exept.de>
parents: 5936
diff changeset
 14228
version
6904
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
 14229
    ^ '$Header$'
5938
f5d6189257d4 comment/format in: #supportedTargetAtoms
Stefan Vogel <sv@exept.de>
parents: 5936
diff changeset
 14230
!
f5d6189257d4 comment/format in: #supportedTargetAtoms
Stefan Vogel <sv@exept.de>
parents: 5936
diff changeset
 14231
5473
d5687a021b55 __isByteArray() to __isByteArrayLike() in primitive code
Stefan Vogel <sv@exept.de>
parents: 5467
diff changeset
 14232
version_CVS
6904
eff65cefac62 class: XWorkstation
Claus Gittinger <cg@exept.de>
parents: 6873
diff changeset
 14233
    ^ '$Header$'
5746
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
 14234
!
1ba87f4f40ca Jan's changes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 5741
diff changeset
 14235
7166
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
 14236
version_HG
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
 14237
1f7489fd814e Allow to configure a graphics context class to use with given graphics device type
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 7148
diff changeset
 14238
    ^ '$Changeset: <not expanded> $'
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 14239
! !
3758
c484f793f9b1 selection change handling
Claus Gittinger <cg@exept.de>
parents: 3738
diff changeset
 14240
5979
c50771acccc6 class: XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5974
diff changeset
 14241
295
08cd959204c7 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 291
diff changeset
 14242
XWorkstation initialize!