WinWorkstation.st
author Stefan Vogel <sv@exept.de>
Fri, 08 May 2009 15:23:32 +0200
changeset 5248 638f38d57e14
parent 5246 b9025a68e914
child 5269 228502f3be02
permissions -rw-r--r--
Rename beep: to beep:volume: for compatibility with XWorkstation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     1
"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     2
COPYRIGHT (c) 1996 by Claus Gittinger
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     3
	      All Rights Reserved
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     4
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     5
 This software is furnished under a license and may be used
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     6
 only in accordance with the terms of that license and with the
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     8
 be provided or otherwise made available to, or used by, any
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
     9
 other person.  No title to or ownership of the software is
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
    10
 hereby transferred.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
    11
"
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
    12
"{ Package: 'stx:libview' }"
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
    13
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
    14
DeviceWorkstation subclass:#WinWorkstation
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    15
	instanceVariableNames:'blackpixel whitepixel listOfFonts rootWin rootDC buttonsPressed
4748
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
    16
		eventTrace eventBuffer isWin95 isWinXP
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
    17
		lastClipboardSequenceNumber'
4261
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
    18
	classVariableNames:'BeepDuration NativeDialogs NativeWidgets NativeWidgetClassTable
2682
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
    19
		StandardColorValues IgnoreSysColorChanges IgnoreFontChanges
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
    20
		SystemColorValues CanEndSession VerboseNativeDialogs'
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
    21
	poolDictionaries:''
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    22
	category:'Interface-Graphics'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    23
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    24
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
    25
ByteArray variableByteSubclass:#CopyDataStructStructure
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
    26
	instanceVariableNames:''
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
    27
	classVariableNames:''
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
    28
	poolDictionaries:''
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
    29
	privateIn:WinWorkstation
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
    30
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
    31
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
    32
DeviceHandle subclass:#PrinterDeviceContextHandle
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
    33
	instanceVariableNames:''
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
    34
	classVariableNames:''
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
    35
	poolDictionaries:''
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
    36
	privateIn:WinWorkstation
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
    37
!
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
    38
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    39
!WinWorkstation primitiveDefinitions!
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
    40
%{
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
    41
#define TRACE_ALL_EVENTS      /* */
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
    42
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
    43
#define COUNT_RESOURCES       /* */
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
    44
#define COUNT_BMP_RESOURCES   /* */
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
    45
#define DEBUG_DELETEOBJECT    /* */
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
    46
#define DEBUG_DC_REUSE        /* */
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
    47
#define xxDEBUG_COLORIZE_WM_PAINT_RECTS1
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
    48
#define xxDEBUG_COLORIZE_WM_PAINT_RECTS2
4367
0486a7345d7f *** empty log message ***
penk
parents: 4366
diff changeset
    49
#define LOCK_DEBUG
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
    50
#define xxSTARTUP_DISPATCHTHREAD_DEBUG
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
    51
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    52
#define ADJUSTWINDOW
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    53
#define ALWAYSTRUECOLOR
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
    54
#define WIN32THREADS
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
    55
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
    56
/* #define DEBUGMASK            /* */
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
    57
#define SET_FOCUS_IN_WINTHREAD
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
    58
#define SET_CURSOR_IN_WINTHREAD
2752
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
    59
#define DELAY_ENTER_LEAVE_WHILE_IN_SIZE_MOVE /* */
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
    60
#define xxBEEP_IN_WINTHREAD    /* */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
    61
#define xxKEEP_STD_CURSORS     /* not useful - those are allocated only once, in any case */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
    62
#define xxHANDLE_VIEWGRAVITY   /* not yet working */
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
    63
#define COMPRESS_WINDOWPOSCHANGED
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
    64
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
    65
#define USE_DRAW_MUTEX
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
    66
#define xxLATE_GENERATE_EXPOSE              /* get update region from stx thread */
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
    67
#define xxNO_CLEAR_FOR_WM_PAINT           /* do not fill exposed areas with bgColor */
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
    68
#define xxLATE_CLEAR_FOR_WM_PAINT         /* fill exposed areas with bgColor in ST/X thread (instead of in event-thread) */
2755
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
    69
					/* seems to be needed to avoid DC conflicts */
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
    70
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
    71
#if 0 /* DOES NOT WORK */
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
    72
#define CACHE_LAST_DC                   /* remember last DC in gcData */
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
    73
#define CACHE_LAST_PEN                  /* remember last pen in gcData */
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
    74
#define CACHE_LAST_BRUSH                /* remember last brush in gcData */
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
    75
#define CACHE_LAST_WM_PAINT_BRUSH       /* remember last viewBackground brush */
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
    76
#define CACHE_LAST_WM_PAINT_DC          /* remember last viewBackground paints dc */
3589
34e3adb59adb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3584
diff changeset
    77
#define CACHE_LAST_TMP_FONT             /* */
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
    78
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
    79
#endif
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
    80
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    81
#define CACHE_PEN
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    82
#define CACHE_BRUSH
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
    83
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
    84
#ifndef PRE_07_APR_04
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
    85
# define CACHE_LAST_DC
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
    86
#endif
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
    87
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    88
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    89
#ifdef CACHE_PEN
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    90
# define NUM_PEN_CACHED_W95   8          /* that many solid pens are globally remembered */
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    91
# define NUM_PEN_CACHED_NT    16         /* that many solid pens are globally remembered */
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    92
# define MAX_NUM_PEN_CACHED   32         /* upper limit */
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
    93
#else
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
    94
# define NUM_PEN_CACHED_W95   0
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
    95
# define NUM_PEN_CACHED_NT    0
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
    96
# define MAX_NUM_PEN_CACHED   0
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    97
#endif
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    98
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
    99
#ifdef CACHE_BRUSH
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
   100
# define NUM_BRUSH_CACHED_W95 8          /* that many brushes are globally remembered */
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
   101
# define NUM_BRUSH_CACHED_NT  16         /* that many brushes are globally remembered */
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
   102
# define MAX_NUM_BRUSH_CACHED 32         /* upper limit */
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   103
#else
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
   104
# define NUM_BRUSH_CACHED_W95 0
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
   105
# define NUM_BRUSH_CACHED_NT  0
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
   106
# define MAX_NUM_BRUSH_CACHED 0
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   107
#endif
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   108
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   109
#if defined(NO_CLEAR_FOR_WM_PAINT)
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   110
# define WM_PAINT_CLEAR_EARLY       0
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   111
# define WM_PAINT_CLEAR_LATE        0
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   112
#else
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
   113
# if defined(LATE_CLEAR_FOR_WM_PAINT)
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   114
#  define WM_PAINT_CLEAR_EARLY       0
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   115
#  define WM_PAINT_CLEAR_LATE        1
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   116
# else
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   117
#  define WM_PAINT_CLEAR_EARLY       1
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   118
#  define WM_PAINT_CLEAR_LATE        0
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   119
# endif
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   120
#endif
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
   121
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   122
#undef INT
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   123
#define INT WIN_INT
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   124
#undef Array
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   125
#define Array WIN_Array
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   126
#undef Number
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   127
#define Number WIN_Number
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   128
#undef Method
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   129
#define Method WIN_Method
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   130
#undef Point
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   131
#define Point WIN_Point
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   132
#undef Rectangle
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
   133
/* #define Rectangle WIN_Rectangle */
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   134
#undef True
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   135
#define True WIN_True
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   136
#undef False
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   137
#define False WIN_False
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   138
#undef Block
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   139
#define Block WIN_Block
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   140
#undef Context
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   141
#define Context WIN_Context
2766
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   142
#undef Date
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   143
#define Date WIN_Date
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   144
#undef Time
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   145
#define Time WIN_Time
3119
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   146
#undef Delay
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   147
#define Delay WIN_Delay
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   148
#undef Signal
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   149
#define Signal WIN_Signal
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   150
#undef Set
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   151
#define Set WIN_Set
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   152
#undef Process
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   153
#define Process WIN_Process
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   154
#undef Processor
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   155
#define Processor WIN_Processor
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   156
#undef Message
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   157
#define Message WIN_Message
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   158
2328
478ec9b5cbe1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2327
diff changeset
   159
#include <stdio.h>
3583
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
   160
#include <errno.h>
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   161
/* #include <malloc.h> */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   162
/* #include <math.h> */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   163
/* #include <string.h> */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   164
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   165
/*#include <stdarg.h>   */
2328
478ec9b5cbe1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2327
diff changeset
   166
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   167
#ifdef __BORLANDC__
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   168
# define NOATOM
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   169
# define NOGDICAPMASKS
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   170
# define NOMETAFILE
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   171
# define NOMINMAX
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   172
# define NOOPENFILE
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   173
# define NOSOUND
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   174
# define NOWH
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   175
# define NOCOMM
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   176
# define NOKANJI
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   177
# define NOCRYPT
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   178
# define NOMCX
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   179
# define WIN32_LEAN_AND_MEAN
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   180
# include <windows.h>
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   181
# include <shellapi.h>
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   182
# include <sys\timeb.h>
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   183
# include <dir.h>
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   184
#else
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   185
# define _USERENTRY /**/
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   186
# define NOATOM
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   187
# define NOGDICAPMASKS
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   188
# define NOMETAFILE
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   189
# define NOMINMAX
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   190
# define NOOPENFILE
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   191
# define NOSOUND
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   192
# define NOWH
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   193
# define NOCOMM
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   194
# define NOKANJI
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   195
# define NOCRYPT
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   196
# define NOMCX
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   197
# define WIN32_LEAN_AND_MEAN
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   198
# define _WIN32_WINNT 0x0500    /* need this to get certain defines from winuser.h (WM_NCXBUTTONDOWN) */
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   199
# include <windows.h>
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   200
# include <shellapi.h>
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   201
# include <sys\timeb.h>
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   202
#endif
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   203
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   204
#ifndef MAXPATH
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   205
# define MAXPATH 2048   // not define in MS Visual C 8
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   206
#endif
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   207
3521
951a266969d1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3509
diff changeset
   208
#include <commdlg.h>
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   209
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   210
#include <process.h>
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   211
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   212
#ifdef __DEF_Array
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   213
# undef Array
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   214
# define Array __DEF_Array
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   215
#endif
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   216
#ifdef __DEF_Number
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   217
# undef Number
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   218
# define Number __DEF_Number
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   219
#endif
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   220
#ifdef __DEF_Method
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   221
# undef Method
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   222
# define Method __DEF_Method
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   223
#endif
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   224
#ifdef __DEF_Point
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   225
# undef Point
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   226
# define Point __DEF_Point
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   227
#endif
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
   228
#ifdef __DEF_Rectangle
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
   229
# undef Rectangle
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
   230
# define Rectangle __DEF_Rectangle
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
   231
#else
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
   232
# undef Rectangle
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
   233
#endif
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   234
#ifdef __DEF_Block
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   235
# undef Block
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   236
# define Block __DEF_Block
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   237
#endif
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   238
#ifdef __DEF_Context
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   239
# undef Context
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   240
# define Context __DEF_Context
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   241
#endif
2766
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   242
#ifdef __DEF_Date
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   243
# undef Date
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   244
# define Date __DEF_Date
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   245
#endif
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   246
#ifdef __DEF_Time
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   247
# undef Time
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   248
# define Time __DEF_Time
0774c5887e47 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2759
diff changeset
   249
#endif
3119
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   250
# ifdef __DEF_Set
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   251
#  undef Set
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   252
#  define Set __DEF_Set
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   253
# endif
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   254
# ifdef __DEF_Signal
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   255
#  undef Signal
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   256
#  define Signal __DEF_Signal
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   257
# endif
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   258
# ifdef __DEF_Delay
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   259
#  undef Delay
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   260
#  define Delay __DEF_Delay
4365df3a4247 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3117
diff changeset
   261
# endif
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   262
# ifdef __DEF_Process
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   263
#  undef Process
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   264
#  define Process __DEF_Process
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   265
# endif
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   266
# ifdef __DEF_Processor
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   267
#  undef Processor
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   268
#  define Processor __DEF_Processor
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   269
# endif
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   270
# ifdef __DEF_Message
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   271
#  undef Message
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   272
#  define Message __DEF_Message
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   273
# endif
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   274
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   275
#if 0 /* does not work, anyway */
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   276
#ifndef WM_UNICHAR
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   277
# define WM_UNICHAR                              0x0109
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   278
#endif
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   279
#ifndef UNICODE_NOCHAR
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   280
# define UNICODE_NOCHAR                          0xFFFF
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   281
#endif
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   282
#endif
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
   283
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   284
#undef INT
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   285
#define INT int
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   286
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   287
/*
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   288
 * some defines - tired of typing ...
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   289
 */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   290
#define _HANDLEVal(o)        (HANDLE)(__MKCP(o))
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
   291
#define _HBITMAPVAL(o)       (HBITMAP)(__MKCP(o))
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   292
#define _HWNDVal(o)          (HWND)(__MKCP(o))
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
   293
#define _HDCVal(o)           (HDC)(__MKCP(o))
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   294
#define _HPALETTEVal(o)      (HPALETTE)(__MKCP(o))
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   295
#define _HCURSORVal(o)       (HCURSOR)(__MKCP(o))
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   296
#define _HGDIOBJVal(o)       (HGDIOBJ)(__MKCP(o))
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   297
#define _LOGPALETTEVal(o)    (LOGPALETTE *)(__MKCP(o))
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   298
#define _COLORREFVal(o)      (COLORREF)(__MKCP(o))
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   299
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   300
#define _GCDATA(o)           ((struct gcData *)(__MKCP(o)))
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   301
3498
890cfcba79a5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3497
diff changeset
   302
#define WIDECHAR unsigned short
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
   303
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   304
#ifdef LATER
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   305
  /* for multi-WIN display support, we need this as an instance var (as below)
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   306
   * however, there are many more places, where a single static datum is
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   307
   * used currently - therefore dont care for this - at least now.
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   308
   */
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   309
# define __rootDC             (HDC)(__MKCP(__INST(rootDC)))
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   310
#endif
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   311
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   312
#define ISCONNECTED         1
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   313
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   314
struct gcData {
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
   315
    union {
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
   316
	HDC         __hDC;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
   317
	struct gcData *__nextFree;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
   318
    } u;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   319
    HWND        hWnd;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   320
    HBITMAP     hBitmap;
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
   321
    HBITMAP     save_hBitmap;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   322
    HBITMAP     hMask;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   323
    short       clipX;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   324
    short       clipY;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   325
    short       clipW;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   326
    short       clipH;
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   327
    char        clipping;
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   328
    char        clipByChildren;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   329
    char        bkMode;
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
   330
    char        bitmapColorBitCount;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   331
    short       maskOrgX;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   332
    short       maskOrgY;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   333
    short       lineWidth;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   334
    short       fontAscent;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   335
    int         lStyle;   /* is lineStyle | joinStyle | capStyle */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   336
    int         rop2;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   337
    int         bitbltrop2;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   338
    COLORREF    fgColor;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   339
    COLORREF    bgColor;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   340
    HFONT       hFont;
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   341
    HFONT       save_hFont;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   342
    HPEN        hPen;
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
   343
    HPEN        save_hPen;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   344
    HBRUSH      hBrush;
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
   345
    HBRUSH      save_hBrush;
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
   346
    char        doNotCacheOrRelease;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
   347
    char        reserve1;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
   348
    char        reserve2;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
   349
    char        reserve3;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
   350
    char        reserve4;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
   351
    int         reserve5;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   352
};
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
   353
#define _hDC u.__hDC
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   354
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   355
/*
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   356
 * some synthetic values
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   357
 */
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   358
/*****************************************************************
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   359
 * EVENT DEFINITIONS
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   360
 *****************************************************************/
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   361
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   362
/* Input Event Masks. Used as event-mask window attribute and as arguments
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   363
   to Grab requests.  Not to be confused with event names.  */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   364
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   365
#define NoEventMask                     0L
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   366
#define KeyPressMask                    (1L<<0)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   367
#define KeyReleaseMask                  (1L<<1)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   368
#define ButtonPressMask                 (1L<<2)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   369
#define ButtonReleaseMask               (1L<<3)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   370
#define EnterWindowMask                 (1L<<4)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   371
#define LeaveWindowMask                 (1L<<5)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   372
#define PointerMotionMask               (1L<<6)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   373
#define PointerMotionHintMask           (1L<<7)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   374
#define Button1MotionMask               (1L<<8)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   375
#define Button2MotionMask               (1L<<9)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   376
#define Button3MotionMask               (1L<<10)
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   377
#if 0
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   378
# define Button4MotionMask               (1L<<11)
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   379
# define Button5MotionMask               (1L<<12)
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   380
#endif
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   381
#define ButtonMotionMask                (1L<<13)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   382
#define KeymapStateMask                 (1L<<14)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   383
#define ExposureMask                    (1L<<15)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   384
#define VisibilityChangeMask            (1L<<16)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   385
#define StructureNotifyMask             (1L<<17)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   386
#define ResizeRedirectMask              (1L<<18)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   387
#define SubstructureNotifyMask          (1L<<19)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   388
#define SubstructureRedirectMask        (1L<<20)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   389
#define FocusChangeMask                 (1L<<21)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   390
#define PropertyChangeMask              (1L<<22)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   391
#define ColormapChangeMask              (1L<<23)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   392
#define OwnerGrabButtonMask             (1L<<24)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   393
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   394
/* Event names.  Used in "type" field in XEvent structures.  Not to be
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   395
confused with event masks above.  They start from 2 because 0 and 1
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   396
are reserved in the protocol for errors and replies. */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   397
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   398
#define KeyPress                2
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   399
#define KeyRelease              3
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   400
#define ButtonPress             4
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   401
#define ButtonRelease           5
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   402
#define MotionNotify            6
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   403
#define EnterNotify             7
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   404
#define LeaveNotify             8
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   405
#define FocusIn                 9
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   406
#define FocusOut                10
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   407
#define KeymapNotify            11
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   408
#define Expose                  12
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   409
#define GraphicsExpose          13
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   410
#define NoExpose                14
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   411
#define VisibilityNotify        15
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   412
#define CreateNotify            16
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   413
#define DestroyNotify           17
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   414
#define UnmapNotify             18
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   415
#define MapNotify               19
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   416
#define MapRequest              20
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   417
#define ReparentNotify          21
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   418
#define ConfigureNotify         22
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   419
#define ConfigureRequest        23
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   420
#define GravityNotify           24
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   421
#define ResizeRequest           25
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   422
#define CirculateNotify         26
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   423
#define CirculateRequest        27
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   424
#define PropertyNotify          28
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   425
#define SelectionClear          29
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   426
#define SelectionRequest        30
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   427
#define SelectionNotify         31
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   428
#define ColormapNotify          32
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   429
#define ClientMessage           33
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   430
#define MappingNotify           34
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   431
#define LASTEvent               35      /* must be bigger than any event # */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   432
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   433
/* Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   434
   state in various key-, mouse-, and button-related events. */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   435
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   436
/* modifier names.  Used to build a SetModifierMapping request or
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   437
   to read a GetModifierMapping request.  These correspond to the
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   438
   masks defined above. */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   439
#define ShiftMapIndex           0
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   440
#define LockMapIndex            1
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   441
#define ControlMapIndex         2
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   442
#define Mod1MapIndex            3
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   443
#define Mod2MapIndex            4
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   444
#define Mod3MapIndex            5
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   445
#define Mod4MapIndex            6
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   446
#define Mod5MapIndex            7
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   447
4946
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   448
#define ShiftMask               (1<<ShiftMapIndex)
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   449
#define LockMask                (1<<LockMapIndex)
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   450
#define ControlMask             (1<<ControlMapIndex)
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   451
#define Mod1Mask                (1<<Mod1MapIndex)
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   452
#define Mod2Mask                (1<<Mod2MapIndex)
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   453
#define Mod3Mask                (1<<Mod3MapIndex)
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   454
#define Mod4Mask                (1<<Mod4MapIndex)
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   455
#define Mod5Mask                (1<<Mod5MapIndex)
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   456
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   457
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   458
/* button masks.  Used in same manner as Key masks above. Not to be confused
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   459
   with button names below. */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   460
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   461
#define Button1Mask            Button1MotionMask
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   462
#define Button2Mask            Button2MotionMask
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   463
#define Button3Mask            Button3MotionMask
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   464
#if 0
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   465
# define Button4Mask            Button4MotionMask
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   466
# define Button5Mask            Button5MotionMask
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   467
#endif
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   468
#define AnyButtonMask           (Button1Mask|Button2Mask|Button3Mask)
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   469
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   470
#if 0
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   471
# define AnyModifier             (1<<15)  /* used in GrabButton, GrabKey */
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   472
#endif
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   473
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   474
/* button names. Used as arguments to GrabButton and as detail in ButtonPress
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   475
   and ButtonRelease events.  Not to be confused with button masks above.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   476
   Note that 0 is already defined above as "AnyButton".  */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   477
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   478
#define Button1                 1
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   479
#define Button2                 2
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   480
#define Button3                 3
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   481
#if 0
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   482
# define Button4                 4
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   483
# define Button5                 5
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   484
#endif
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   485
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   486
#define CAPTURE_NONE     0
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   487
#define CAPTURE_IMPLICIT 7
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   488
#define CAPTURE_EXPLICIT 8
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
   489
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   490
#define BK_UNDEF         0
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   491
#define BK_TRANSPARENT   1
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   492
#define BK_OPAQUE        2
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
   493
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   494
#define GRAVITY_NONE        0
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   495
#define GRAVITY_S           1
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   496
#define GRAVITY_SW          2
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   497
#define GRAVITY_SE          3
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   498
#define GRAVITY_N           4
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   499
#define GRAVITY_NW          5
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   500
#define GRAVITY_NE          6
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   501
#define GRAVITY_E           7
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   502
#define GRAVITY_W           8
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   503
4946
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   504
#if 0
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   505
# define ControlMask            8
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   506
# define ShiftMask              16
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
   507
#endif
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   508
#define LeftAltMask            Mod1Mask
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   509
#define RightAltMask           Mod2Mask
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   510
#define TRANSLATED_KEY         Mod5Mask
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   511
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   512
#define WIN32PADDING 32
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
   513
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   514
/*
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   515
 * synthetic events
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   516
 */
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   517
#define __WM_MOUSEENTER        0x10001
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   518
#define __WM_MOUSELEAVE        0x10002
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   519
#define __WM_GEXPOSE           0x10003
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   520
#define __WM_NOGEXPOSE         0x10004
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
   521
#define __WM_ICONIFIED         0x10005
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
   522
#define __WM_PAINT             0x10006
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
   523
1920
ad75cae453f7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1912
diff changeset
   524
static int AltMask = RightAltMask;
ad75cae453f7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1912
diff changeset
   525
static int MetaMask = LeftAltMask;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   526
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   527
#define WhitePixel     RGB(0xFF, 0xFF, 0xFF)
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   528
#define BlackPixel     RGB(0, 0, 0)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   529
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   530
/* #undef DEBUG /* */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   531
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   532
#ifdef DEBUG
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   533
# define PRINTF(x)              { console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   534
# define CPRINTF(x)             { if (__debug__ > 1) console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   535
# define RESPRINTF(x)           /*{ if (__debug__) console_printf x;}*/
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   536
# define RES1PRINTF(x)          /*{ if (__debug__) console_printf x;}*/
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   537
# define RES_BMP_PRINTF(x)      /*{ if (__debug__) console_printf x;}*/
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   538
# define TH_DPRINTF(x)          /*{ if (__debug__) console_printf x;}*/
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   539
# define DPRINTF(x)             { if (__debug__) console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   540
# define NDPRINTF(x)            { if (__debugNative__) console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   541
# define NDPRINTF2(x)           { if (__debugNative__ > 1) console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   542
# define DDPRINTF(x)            { if (__debug__ > 1) console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   543
# define BMDPRINTF(x)           { if (__debug__ > 1) console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   544
# define EVENT_PRINTF(x)        { if (__debug__) console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   545
# define EVENT_PRINTF2(x)       { if (__debug__ > 1) console_printf x;}
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
   546
# define EVENT_PRINTF3(x)       /* */
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   547
# define DPRINTFIF(flag, x)                 { if (flag) console_printf x;}
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   548
# define EVENT_PRINTFIF(flag, x)            { if (flag && __debug__) console_printf x;}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   549
# define UNHANDLED_EVENT_PRINTF(x)          { if (__debug__) { console_printf("unhandled: "); console_printf x; } }
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   550
# define UNHANDLED_EVENT_PRINTFIF(flag, x)  { if (flag && __debug__) { console_printf("unhandled: "); console_printf x; } }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   551
#else
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
   552
# define PRINTF(x)              /* */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   553
# define CPRINTF(x)             /* */
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
   554
# define RES_BMP_PRINTF(x)      /* */
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
   555
# define RESPRINTF(x)           /* */
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
   556
# define RES1PRINTF(x)          /* */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   557
# define TH_DPRINTF(x)          /* */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   558
# define DPRINTF(x)             /* */
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   559
# define NDPRINTF(x)            /* */
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
   560
# define NDPRINTF2(x)           /* */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   561
# define DDPRINTF(x)            /* */
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
   562
# define BMDPRINTF(x)           /* */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   563
# define EVENT_PRINTF(x)        /* */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   564
# define EVENT_PRINTF2(x)       /* */
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
   565
# define EVENT_PRINTF3(x)       /* */
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
   566
# define DPRINTFIF(flag, x)             /* */
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   567
# define EVENT_PRINTFIF(flag, x)        /* */
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   568
# define UNHANDLED_EVENT_PRINTF(x)      /* */
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
   569
# define UNHANDLED_EVENT_PRINTFIF(x)    /* */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   570
#endif
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   571
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
   572
/* # define EVENT_PRINTF(x)        { printf x;} */
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
   573
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   574
#define INFOFPRINTF(__x__)                 \
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
   575
    if (@global(InfoPrinting) == true) { \
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   576
	console_fprintf __x__;           \
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   577
    }
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   578
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   579
#define DEBUGFPRINTF(__x__)                 \
3469
7e157b8e7a9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3416
diff changeset
   580
    if (@global(InfoPrinting) == true) { \
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
   581
	console_fprintf __x__;           \
3469
7e157b8e7a9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3416
diff changeset
   582
    }
7e157b8e7a9e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3416
diff changeset
   583
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   584
#define BR_SOLID       0
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   585
#define BR_PATTERN     1
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   586
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   587
#define LINE_SOLID     0
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   588
#define LINE_DASH      1
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   589
#define LINE_DDASH     2
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   590
1685
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   591
#ifdef KEEP_STD_CURSORS
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   592
# define _C_ARROW       1
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   593
# define _C_CROSS       2
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   594
# define _C_IBEAM       3
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   595
# define _C_ICON        4
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   596
# define _C_NO          5
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   597
# define _C_SIZE        6
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   598
# define _C_SIZEALL     7
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   599
# define _C_SIZENESW    8
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   600
# define _C_SIZENS      9
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   601
# define _C_SIZENWSE    10
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   602
# define _C_UPARROW     11
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   603
# define _C_WAIT        12
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   604
1685
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   605
 static HCURSOR H_C_ARROW = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   606
 static HCURSOR H_C_CROSS = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   607
 static HCURSOR H_C_IBEAM = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   608
 static HCURSOR H_C_ICON = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   609
 static HCURSOR H_C_NO = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   610
 static HCURSOR H_C_SIZE = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   611
 static HCURSOR H_C_SIZEALL = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   612
 static HCURSOR H_C_SIZENESW = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   613
 static HCURSOR H_C_SIZENS = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   614
 static HCURSOR H_C_SIZENWSE = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   615
 static HCURSOR H_C_UPARROW = (HCURSOR)0;
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   616
 static HCURSOR H_C_WAIT = (HCURSOR)0;
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
   617
 static HCURSOR H_C_APPSTARTING = (HCURSOR)0;
1685
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
   618
#endif /* KEEP_STD_CURSORS */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   619
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   620
#ifdef EXIT_WITH_3_CTRL_Cs
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
   621
static int ctrl_c_count = 0;            /* CTRL-C count */
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
   622
#endif
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
   623
#ifdef RELEASE_CAPTURE_WITH_3_ESCAPEs
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
   624
static int escape_count = 0;            /* ESCAPE count */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   625
#endif
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
   626
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   627
static int evRootX, evRootY;
4476
4ba4a3ac09bc fix: double click in popup windows (affects ExtendedComboBox)
Claus Gittinger <cg@exept.de>
parents: 4462
diff changeset
   628
static int multiClickCount = 0;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   629
static UINT lastMSGTime;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   630
static UINT lastMouseWheelTime = 0;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   631
static int lastClickX, lastClickY;
3584
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
   632
static int lastMotionX = -9999, lastMotionY = -9999;
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
   633
static HWND lastMotionWnd = 0;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   634
static int deltaDoubleClickX = -999;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   635
static int deltaDoubleClickY = -999;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   636
static UINT nextMultiClickTime;
4610
4e7993041072 fix: do not treat two quick presses as double-click, if the button is different.
Claus Gittinger <cg@exept.de>
parents: 4578
diff changeset
   637
static OBJ lastButton = 0;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   638
static int inSizeMove = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   639
static int inSize = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   640
static int inMove = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   641
static HWND needDelayedMouseLeaveWindow = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   642
static HWND needDelayedMouseEnterWindow = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   643
static int delayedMouseEnterX, delayedMouseEnterY;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   644
static int destroyWin;
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   645
static HDC   __tmpDC;
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   646
#ifdef CACHE_LAST_TMP_FONT
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   647
static HFONT __tmpDC_hfont = 0, __tmpDC_prev_hfont = 0;
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
   648
#endif
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
   649
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
   650
static int __isWin95 = 0;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
   651
static int __isWinNT = 0;
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
   652
static int __isWinNT_NEW_BEHAVIOUR = 0;
3714
84947d7fb23d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3713
diff changeset
   653
static int __isWinXP = 0;
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
   654
static int __isWin2k = 0;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
   655
static int __isWinVista = 0;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
   656
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   657
static int __logPixelSY;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
   658
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
   659
static int NUM_PEN_CACHED   = NUM_PEN_CACHED_W95;       /* that many solid pens are globally remembered */
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
   660
static int NUM_BRUSH_CACHED = NUM_BRUSH_CACHED_W95;     /* that many brushes are globally remembered */
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
   661
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
   662
#ifdef CACHE_LAST_DC
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   663
static struct gcData *lastGcData = 0;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   664
static int            lastGcOwnerThreadID = 0;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
   665
static HWND           lastGcHWIN;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
   666
static HBITMAP        lastGcHBITMAP;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
   667
#endif
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
   668
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   669
#ifndef __rootDC
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   670
 static HDC __rootDC;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
   671
#endif
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   672
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
   673
#ifdef CACHE_PEN
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
   674
struct __penCache {
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   675
    HPEN            pen;
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
   676
    unsigned int    clr;
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
   677
} __penCache[MAX_NUM_PEN_CACHED];
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
   678
#endif
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
   679
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
   680
#ifdef CACHE_BRUSH
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   681
struct __brushCache {
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   682
    HBRUSH          brush;
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
   683
    unsigned int    clr;
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
   684
} __brushCache[MAX_NUM_BRUSH_CACHED];
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   685
#endif
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
   686
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
   687
/*
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
   688
 * globally cached - never released
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
   689
 */
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
   690
static HPEN __blackPen = 0;
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
   691
static HPEN __whitePen = 0;
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   692
static HPEN __nullPen = 0;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   693
static HBRUSH __blackBrush = 0;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   694
static HBRUSH __whiteBrush = 0;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
   695
2620
519011e49878 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2619
diff changeset
   696
static HPEN __bgPen = 0;
519011e49878 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2619
diff changeset
   697
static int __bgPenColor = 0;
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
   698
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
   699
#define WM_THREAD_CREATEWINDOW   (WM_USER + 0x101)
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
   700
#define WM_THREAD_DESTROYWINDOW  (WM_USER + 0x102)
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
   701
#define WM_THREAD_SETFOCUS       (WM_USER + 0x103)
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
   702
#define WM_THREAD_SETCAPTURE     (WM_USER + 0x104)
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
   703
#define WM_THREAD_SETCURSOR      (WM_USER + 0x105)
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
   704
#define WM_THREAD_BEEP           (WM_USER + 0x106)
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
   705
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
   706
#define WM_TRAY_MESSAGE          (WM_USER + 0x200)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   707
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   708
#define hasEventQueued() (eventQueueHead != NULL)
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
   709
#define EVENT_THREAD_STACKSIZE  (4096*10)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   710
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   711
typedef int (*intf)(int);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   712
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   713
/*
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   714
 * keep the windows cursor and others local in the HWND struct.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   715
 */
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   716
#define LI_TOPWIN       0x0001
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   717
#define LI_INPUTWIN     0x0002
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   718
#define LI_NATIVEWIN    0x0004
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   719
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
   720
typedef struct {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   721
	HCURSOR         hCursor;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   722
	HBRUSH          viewBgBrush;  /* if that is nil, it has a solid bg color */
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   723
	COLORREF        viewBgColor;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   724
	int             eventMask;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   725
	short           flag;         /* LI_ - flags bits */
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   726
	short           minWidth;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   727
	short           maxWidth;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   728
	short           minHeight;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   729
	short           maxHeight;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   730
	short           bw;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   731
	unsigned char   iconified;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   732
	unsigned char   viewGravity;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   733
	unsigned char   unmapping;
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   734
#if 0
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   735
	short           bgOffsX;      /* bg-pattern offset */
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   736
	short           bgOffsY;      /* bg-pattern offset */
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   737
#endif
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   738
	short           mouseX;       /* last mouseX */
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   739
	short           mouseY;       /* last mouseY */
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   740
	COLORREF        bdColor;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   741
} localWindowInfo;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   742
typedef localWindowInfo *plocalWindowInfo;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   743
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   744
typedef struct createWindowInfo {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   745
	localWindowInfo *localWindowInfo;  /* in param */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   746
	HANDLE          newWinHandle;      /* out param */
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
   747
	wchar_t         *windowName;       /* in params */
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
   748
	wchar_t         *className;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   749
	int             winStyleBits;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   750
	int             winStyleBitsEx;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   751
	HANDLE          parentHandle;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   752
	int             x;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   753
	int             y;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   754
	int             dx;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   755
	int             dy;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   756
	HANDLE          hCreateEvent;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   757
	short           infoWasRead;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   758
	unsigned short  sequenceNr;
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
   759
	unsigned        errCode;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   760
} createWindowInfo;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   761
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   762
#define INVALIDATED_CWI 0xFFFF             /* seqNr for invalidated CWI */
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   763
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   764
static createWindowInfo *pendingCREATEWINDOWInfo = 0;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   765
static unsigned short pendingSequenceNr = INVALIDATED_CWI;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   766
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   767
#ifdef OLD
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   768
# define GWL_LOCALINFO  0
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   769
#else
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   770
# define GWL_LOCALINFO  GWL_USERDATA
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   771
#endif
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   772
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   773
#define N_WINDOW_PRIVATE (sizeof(plocalWindowInfo))
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   774
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   775
#define GETLOCALWINDOWINFOPTR(__hWnd__) \
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   776
	((localWindowInfo *)GetWindowLong(__hWnd__, GWL_LOCALINFO))
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   777
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   778
#define SETLOCALWINDOWINFOPTR(__hWnd__,__ptr__) \
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   779
	SetWindowLong(__hWnd__, GWL_LOCALINFO , (DWORD)__ptr__)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   780
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   781
#define SetWindow_Cursor(__hWnd__, __hCurs__) \
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   782
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->hCursor = __hCurs__) : 0)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   783
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   784
#define GetWindow_Cursor(__hWnd__) \
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   785
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->hCursor : 0)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   786
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   787
#define SetWindow_viewBgColor(__hWnd__, __viewBgColor__) \
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   788
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->viewBgColor = __viewBgColor__) : 0)
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   789
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   790
#define GetWindow_viewBgColor(__hWnd__) \
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   791
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->viewBgColor : 0)
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   792
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
   793
#define SetWindow_bdColor(__hWnd__, __bdColor__) \
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
   794
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->bdColor = __bdColor__) : 0)
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
   795
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
   796
#define GetWindow_bdColor(__hWnd__) \
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
   797
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->bdColor : 0)
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
   798
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
   799
#define SetWindow_iconified(__hWnd__, __iconified__) \
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
   800
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->iconified = __iconified__) : 0)
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
   801
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
   802
#define GetWindow_iconified(__hWnd__) \
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
   803
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->iconified : 0)
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
   804
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   805
#define SetWindow_unmapping(__hWnd__, __unmapping__) \
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   806
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->unmapping = __unmapping__) : 0)
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   807
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   808
#define GetWindow_unmapping(__hWnd__) \
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   809
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->unmapping : 0)
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   810
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   811
#define SetWindow_mouseX(__hWnd__, __mouseX__) \
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   812
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->mouseX = __mouseX__) : 0)
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   813
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   814
#define GetWindow_mouseX(__hWnd__) \
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   815
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->mouseX : 0)
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   816
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   817
#define SetWindow_mouseY(__hWnd__, __mouseY__) \
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   818
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->mouseY = __mouseY__) : 0)
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   819
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   820
#define GetWindow_mouseY(__hWnd__) \
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   821
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->mouseY : 0)
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   822
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   823
#define SetWindow_mouseXY(__hWnd__, __mouseX__, __mouseY__) \
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   824
	{ SetWindow_mouseX(__hWnd__, __mouseX__); SetWindow_mouseY(__hWnd__, __mouseY__); }
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   825
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   826
#define SetWindow_viewBgBrush(__hWnd__, __viewBgBrush__) \
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   827
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->viewBgBrush = __viewBgBrush__) : 0)
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   828
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   829
#define GetWindow_viewBgBrush(__hWnd__) \
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
   830
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->viewBgBrush : 0)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   831
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   832
#define SetWindow_bw(__hWnd__, __bw__) \
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   833
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->bw = __bw__) : 0)
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   834
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   835
#define GetWindow_bw(__hWnd__) \
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   836
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->bw : 0)
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
   837
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   838
#define GetWindow_paintInfoPtr(__hWnd__) \
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   839
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? &(GETLOCALWINDOWINFOPTR(__hWnd__)->paintInfo) : 0)
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
   840
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   841
#define GetWindow_sizeInfoPtr(__hWnd__) \
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   842
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? &(GETLOCALWINDOWINFOPTR(__hWnd__)->sizeInfo) : 0)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   843
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   844
#define SetWindow_flag(__hWnd__, __flag__) \
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   845
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->flag = __flag__) : 0)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   846
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   847
#define GetWindow_flag(__hWnd__) \
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   848
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? GETLOCALWINDOWINFOPTR(__hWnd__)->flag : 0)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   849
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   850
#define GetWindow_eventMask(__hWnd__) \
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   851
	(GETLOCALWINDOWINFOPTR(__hWnd__) ? (GETLOCALWINDOWINFOPTR(__hWnd__)->eventMask) : 0)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
   852
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   853
struct queuedEvent {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   854
	struct queuedEvent     *ev_next;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   855
	int                     count;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   856
	int                     ev_flag;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   857
	HWND                    ev_hWnd;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   858
	UINT                    ev_message;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   859
	UINT                    ev_wParam;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   860
	int                     ev_arg1;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   861
	int                     ev_arg2;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   862
	int                     ev_arg3;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   863
	int                     ev_arg4;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
   864
	UINT                    ev_time;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   865
};
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   866
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   867
#define ev_x    ev_arg1
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   868
#define ev_y    ev_arg2
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   869
#define ev_w    ev_arg3
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   870
#define ev_h    ev_arg4
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   871
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   872
#define ev_keyCode   ev_wParam
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   873
#define ev_scanCode  ev_arg3
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   874
#define ev_modifiers ev_arg4
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
   875
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   876
#define EV_CHUNK_CNT    10000
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
   877
#define xxEV_CHUNK_CNT    1000
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   878
#define EV_CHUNK_SZ     (EV_CHUNK_CNT*sizeof(struct queuedEvent))
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   879
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   880
#define BITBLT_COPY             SRCCOPY
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   881
#define BITBLT_COPYINVERTED     NOTSRCCOPY
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   882
#define BITBLT_XOR              SRCINVERT
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   883
#define BITBLT_AND              SRCAND
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   884
#define BITBLT_OR               SRCPAINT
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   885
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   886
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   887
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   888
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   889
!WinWorkstation primitiveVariables!
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   890
%{
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   891
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   892
static int firstInstance = 1;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   893
static char *app_name = "ST/X";
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   894
static char *app_nameRoot = "ST/X:Root";
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
   895
static char *app_namePopup = "ST/X:Popup";
3714
84947d7fb23d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3713
diff changeset
   896
static char *app_nameDialog = "ST/X:Dialog";
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   897
static wchar_t wapp_name[] = { 'S','T','/','X',0 };
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   898
static wchar_t wapp_nameRoot[] = { 'S','T','/','X',':','R','o','o','t',0 };
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   899
static wchar_t wapp_namePopup[] = { 'S','T','/','X',':','P','o','p','u','p',0 };
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   900
static wchar_t wapp_nameDialog[] = { 'S','T','/','X',':','D','i','a','l','o','g',0 };
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   901
static int __debug__ = 0;
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   902
static int __debug_WM_MOUSEENTER__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   903
static int __debug_WM_MOUSELEAVE__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   904
static int __debug_WM_MOUSEMOVE__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   905
static int __debug_WM_MOUSEACTIVATE__ = 0;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
   906
static int __debug_WM_CHAR__ = 0;
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   907
static int __debug_WM_KEYUP__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   908
static int __debug_WM_KEYDOWN__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   909
static int __debug_WM_BUTTONUP__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   910
static int __debug_WM_BUTTONDOWN__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   911
static int __debug_WM_PAINT__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   912
static int __debug_WM_MOVING__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   913
static int __debug_WM_ERASEBKGND__ = 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
   914
static int __debug_WM_SETTEXT__ = 0;
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
   915
static int __debug_WM_CTLCOLORSCROLLBAR__ = 0;
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
   916
static int __debug_WM_GETICON__ = 0;
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
   917
static int __debug_WM_EXPOSE__ = 0;
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
   918
static int __debug_WM_SIZE__ = 0;
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
   919
static int __debug_WM_WINDOWPOSCHANGING__ = 0;
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
   920
static int __debug_WM_COPYDATA__ = 0;
5230
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
   921
static int __debug_WM_DROPFILES__ = 0;
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
   922
static int __debug_WM_SHOWWINDOW__ = 0;
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
   923
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
   924
static int __debugNative__ = 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   925
static int __depth;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   926
static int __realDepth;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   927
static HWND __rootWin = NULL;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   928
static HWND __rootWinSpezial = NULL;
2336
e7a3b0ec8d52 keypad key-events
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
   929
#if 0
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
   930
static HDESK __rootDesk;
2336
e7a3b0ec8d52 keypad key-events
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
   931
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   932
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   933
static int __activateOnClick = 1;
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
   934
static int __focusFollowsMouse = 0;
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   935
static int __eatingMouseEvents = 0;
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
   936
static int __ignoreButtonPressOnActivate = 0;
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   937
static int __rightButtonIsLowerWindow = 1;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
   938
static int __shiftedLeftButtonIsLowerWindow = 1;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   939
static int __currentCapture = CAPTURE_NONE;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   940
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   941
static HANDLE __currentPointerView = (HANDLE)0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   942
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   943
/* MessageDispatchThread */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
   944
2336
e7a3b0ec8d52 keypad key-events
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
   945
#ifndef WIN32THREADS
4448
e0a48f445d17 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4445
diff changeset
   946
static HANDLE _masterThread = NULL;
2336
e7a3b0ec8d52 keypad key-events
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
   947
#endif
4443
96e956cf9acf plugin stuff now in librun
Claus Gittinger <cg@exept.de>
parents: 4441
diff changeset
   948
static DWORD _masterThreadId = 0;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
   949
static DWORD _dispatchThreadId = 0;
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
   950
static DWORD _dispatchThreadId2 = 0;
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
   951
#ifdef LOCK_DEBUG
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
   952
static int lockCountEvents = 0;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
   953
#endif
4448
e0a48f445d17 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4445
diff changeset
   954
static HANDLE hEventsMutex = NULL;
4504
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
   955
static char *hEventsMutexOwner = NULL;
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   956
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
   957
#ifdef USE_PAINT_MUTEX
4448
e0a48f445d17 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4445
diff changeset
   958
static HANDLE hPaintMutex = NULL;
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   959
# define AQUIRE_PAINT_MUTEX    { WaitForSingleObject(hPaintMutex, 100L); }
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   960
# define RELEASE_PAINT_MUTEX   { ReleaseMutex(hPaintMutex);              }
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   961
#else
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   962
# define AQUIRE_PAINT_MUTEX    { /* nothing */ }
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   963
# define RELEASE_PAINT_MUTEX   { /* nothing */ }
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   964
#endif
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   965
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   966
#ifdef USE_DRAW_MUTEX
4448
e0a48f445d17 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4445
diff changeset
   967
static HANDLE hDrawMutex = NULL;
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   968
# define AQUIRE_DRAW_MUTEX     { WaitForSingleObject(hDrawMutex, 100L);  }
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   969
# define RELEASE_DRAW_MUTEX    { ReleaseMutex(hDrawMutex);  }
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   970
#else
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   971
# define AQUIRE_DRAW_MUTEX     { /* nothing */ }
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   972
# define RELEASE_DRAW_MUTEX    { /* nothing */ }
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   973
#endif
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
   974
4448
e0a48f445d17 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4445
diff changeset
   975
static HANDLE hCreateEvent = NULL;
e0a48f445d17 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4445
diff changeset
   976
static HANDLE hNeverTriggered = NULL;
e0a48f445d17 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4445
diff changeset
   977
static HANDLE hInputEvent = NULL;
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
   978
static HANDLE hDispatchThreadRunningEvent = NULL;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   979
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   980
#ifdef COUNT_RESOURCES
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   981
 static int __cnt_gcData;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   982
 static int __cnt_createWindows;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   983
 static int __cnt_cur;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   984
 static int __cnt_font;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   985
#endif
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   986
#ifdef COUNT_BMP_RESOURCES
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   987
 static int __cnt_bitmap;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   988
#endif
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
   989
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
   990
static struct queuedEvent *eventFreeList  = (struct queuedEvent *) 0;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
   991
static struct queuedEvent *eventQueueHead = (struct queuedEvent *) 0;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
   992
static struct queuedEvent *eventQueueTail = (struct queuedEvent *) 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   993
static int eventsendcount = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
   994
static int eventempfcount = 0;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
   995
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
   996
/*
2754
21cbbc8fbe09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2752
diff changeset
   997
 * up to NUM_FREE_GC gc's are kept in a local list
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
   998
 * (away from free/malloc)
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
   999
 */
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1000
#define NUM_FREE_GC     50
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1001
static struct gcData *gcDataFreeList = (struct gcData *)0;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1002
static int gcDataNumFree = 0;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1003
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1004
/*
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1005
 * remember the last background-paint brush
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1006
 * will be reused by next bg-paint, if it needs
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1007
 * the same color. Otherwise, the next bg-erase
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1008
 * will destroy this brush.
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1009
 */
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1010
#ifdef CACHE_LAST_WM_PAINT_BRUSH
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1011
 static HBRUSH last_wm_paint_brush = (HBRUSH) 0;
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1012
 static int    last_wm_paint_brush_clr = (HWND) 0;
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1013
#endif
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1014
#ifdef CACHE_LAST_WM_PAINT_DC
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1015
 static HWND last_wm_paint_win = 0;
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  1016
 static HDC  last_wm_paint_dc = 0;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1017
#endif
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1018
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1019
#ifdef COMPRESS_WINDOWPOSCHANGED
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1020
 static HWND lastPos_win = 0;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1021
 static int lastPos_w;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1022
 static int lastPos_h;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1023
 static int lastPos_x;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1024
 static int lastPos_y;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  1025
#endif
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1026
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1027
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1028
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1029
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1030
!WinWorkstation primitiveFunctions!
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1031
%{
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1032
2253
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
  1033
#ifdef xxWIN32THREADS
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1034
extern void __suspendAktThread();
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1035
extern void __resumeAktThread();
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1036
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  1037
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  1038
void __debugEvent__() {}
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1039
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1040
#ifdef DEBUGMASK
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1041
static void
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  1042
printMask(int mask) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1043
	if (mask & KeyPressMask)        console_printf("KeyPressMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1044
	if (mask & KeyReleaseMask)      console_printf("KeyReleaseMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1045
	if (mask & ButtonPressMask)     console_printf("ButtonPressMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1046
	if (mask & ButtonReleaseMask)   console_printf("ButtonReleaseMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1047
	if (mask & ButtonMotionMask)    console_printf("ButtonMotionMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1048
	if (mask & PointerMotionMask)   console_printf("PointerMotionMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1049
	if (mask & ExposureMask)        console_printf("ExposureMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1050
	if (mask & FocusChangeMask)     console_printf("FocusChangeMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1051
	if (mask & EnterWindowMask)     console_printf("EnterWindowMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1052
	if (mask & LeaveWindowMask)     console_printf("LeaveWindowMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1053
	if (mask & KeymapStateMask)     console_printf("KeymapStateMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1054
	if (mask & VisibilityChangeMask)console_printf("VisibilityChangeMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1055
	if (mask & StructureNotifyMask) console_printf("StructureNotifyMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1056
	if (mask & ResizeRedirectMask)  console_printf("ResizeRedirectMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1057
	if (mask & PropertyChangeMask)  console_printf("PropertyChangeMask\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1058
	if (mask & ColormapChangeMask)  console_printf("ColormapChangeMask\n");
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1059
}
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1060
#endif
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1061
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1062
static int
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1063
st2RGB(color, gcData)
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1064
    int color;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1065
    struct gcData *gcData;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1066
{
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1067
	int ir,ig,ib;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1068
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1069
	if (gcData) {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1070
	    if (gcData->bitmapColorBitCount == 1) {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1071
	      if (color)
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1072
		  return WhitePixel;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1073
	      else
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1074
		  return BlackPixel;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1075
	    }
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1076
	}
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  1077
#ifdef ALWAYSTRUECOLOR
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1078
	return (color & 0xffffff);
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  1079
#else
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1080
	if (__depth < 15) {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1081
	    return 0;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1082
	} else {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1083
	    if ((__depth == 16) || (__depth == 15)) {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1084
		ib = (color & 0x1f) << 3;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1085
		ig = ((color >> 5) & 0x3f) << 2;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1086
		ir = ((color >> 11) & 0x1f) << 3;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1087
		ir |= 7;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1088
		ig |= 3;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1089
		ib |= 7;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1090
		return RGB(ir,ig,ib);
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1091
	    }
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1092
	    return (color & 0xffffff);
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1093
	}
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  1094
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1095
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1096
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1097
static int
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1098
RGB2st(r, g, b)
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1099
    int r, g, b;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  1100
{
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1101
	int ir,ig,ib,id;
2418
1c4566aeee44 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2417
diff changeset
  1102
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  1103
#ifdef ALWAYSTRUECOLOR
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1104
	ir = (r >> 8) & 0xff;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1105
	ig = (g >> 8) & 0xff;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1106
	ib = (b >> 8) & 0xff;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1107
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1108
	id = RGB( ir, ig, ib);
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  1109
#else
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1110
	if (__depth < 15) {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1111
	    id = 0;
2418
1c4566aeee44 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2417
diff changeset
  1112
	} else {
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1113
	    if ((__depth == 16) || (__depth == 15)) {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1114
		ir = (r >> 11) & 0x1f;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1115
		ig = (g >> 10) & 0x3f;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1116
		ib = (b >> 11) & 0x1f;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1117
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1118
		id = ( ir << 11 ) | ( ig << 5 ) | ib;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1119
	    } else {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1120
		ir = (r >> 8) & 0xff;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1121
		ig = (g >> 8) & 0xff;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1122
		ib = (b >> 8) & 0xff;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1123
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1124
		id = RGB( ir, ig, ib);
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1125
	    }
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1126
	}
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1127
#endif
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1128
	return id;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1129
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1130
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1131
#if 0
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1132
/*
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1133
 * return a windows top-window
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1134
 */
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1135
static HWND
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1136
GetTopParent(hWnd)
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1137
    HWND hwnd;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1138
{
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1139
	HWND lastParent = hWnd;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1140
	HWND nextParent;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1141
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1142
	while (nextParent = GetParent(lastParent)) {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1143
	    lastParent = nextParent;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1144
	}
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  1145
	return lastParent;
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1146
}
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1147
#endif
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  1148
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1149
#ifdef DEBUG_DELETEOBJECT
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1150
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1151
static int
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1152
_DeleteObject(o, lineNr)
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1153
    HANDLE o;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1154
{
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1155
    int r = DeleteObject(o);
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1156
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1157
    if (r == 0)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1158
	console_fprintf(stderr, "WinWorkstation [warning]: ERROR in DeleteObject %x [%d]\n", o, lineNr);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1159
    return r;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1160
}
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1161
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1162
#else
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1163
# define _DeleteObject(o,lnr)  DeleteObject(o)
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1164
#endif
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1165
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1166
static void
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1167
_DeleteFont(f, lineNr)
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1168
    HFONT f;
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1169
{
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1170
#ifdef CACHE_LAST_TMP_FONT
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1171
    if (f == __tmpDC_hfont) {
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1172
	SelectObject(__tmpDC, __tmpDC_prev_hfont);
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1173
	__tmpDC_hfont = NULL;
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1174
    }
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1175
#endif
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1176
    _DeleteObject(f, lineNr);
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1177
}
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
  1178
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1179
static int
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1180
_DeleteBrush(br, lineNr)
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1181
    HBRUSH br;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1182
{
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1183
    int r;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1184
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1185
    if ((br != __whiteBrush)
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1186
     && (br != __blackBrush)) {
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1187
	r = DeleteObject(br);
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1188
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1189
	if (r == 0)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1190
	    console_fprintf(stderr, "WinWorkstation [warning]: ERROR in DeleteBrush %x [%d]\n", br, lineNr);
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1191
	return r;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1192
    }
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1193
    return 1;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1194
}
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1195
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1196
static int
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1197
_DeletePen(p, lineNr)
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1198
    HPEN p;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1199
{
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1200
    int r;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1201
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1202
    if ((p != __whitePen)
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1203
     && (p != __blackPen)) {
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1204
	r = DeleteObject(p);
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1205
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1206
	if (r == 0)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1207
	    console_fprintf(stderr, "WinWorkstation [warning]: ERROR in DeletePen %x [%d]\n", p, lineNr);
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1208
	return r;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1209
    }
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1210
    return 1;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1211
}
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  1212
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
  1213
#ifdef CACHE_PEN
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1214
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1215
static int
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1216
_DeletePenIfNotInCache(p, lineNr)
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1217
    HPEN p;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1218
{
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1219
    int i, r;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1220
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1221
    if ((p == __whitePen)
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1222
     || (p == __blackPen)) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1223
	return 1; /* not deleted, but OK */
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1224
    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1225
    for (i=0; i<NUM_PEN_CACHED;i++) {
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1226
	if (__penCache[i].pen == p) {
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1227
	    return 1; /* not deleted, but OK */
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1228
	}
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1229
    }
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1230
    r = DeleteObject(p);
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1231
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1232
    if (r == 0)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1233
	console_fprintf(stderr, "WinWorkstation [warning]: ERROR in DeletePen2 %x [%d]\n", p, lineNr);
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1234
    return r;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1235
}
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1236
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1237
#else
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1238
# define _DeletePenIfNotInCache(p, lineNr)   _DeletePen(p, lineNr)
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
  1239
#endif /* CACHE_PEN */
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
  1240
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
  1241
#ifdef CACHE_BRUSH
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1242
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1243
static int
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  1244
_DeleteBrushIfNotInCache(br, lineNr)
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  1245
    HBRUSH br;
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1246
{
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1247
    int i, r;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1248
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1249
    for (i=0; i<NUM_BRUSH_CACHED;i++) {
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  1250
	if (__brushCache[i].brush == br) {
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1251
	    return 1; /* not deleted, but OK */
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1252
	}
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1253
    }
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  1254
    if ((br == __whiteBrush)
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  1255
     || (br == __blackBrush)) {
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1256
	return 1; /* not deleted, but OK */
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1257
    }
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  1258
    r = DeleteObject(br);
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1259
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1260
    if (r == 0)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1261
	console_fprintf(stderr, "WinWorkstation [warning]: ERROR in DeleteBrush2 %x [%d]\n", br, lineNr);
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1262
    return r;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1263
}
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1264
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1265
#else
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  1266
# define _DeleteBrushIfNotInCache(br, lineNr)   _DeleteBrush(br, lineNr)
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
  1267
#endif /* CACHE_BRUSH */
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1268
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1269
static struct gcData *
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1270
newGcData() {
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1271
    struct gcData *gcData;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1272
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1273
    if (gcDataFreeList) {
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1274
	gcData = gcDataFreeList;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1275
	gcDataFreeList = gcData->u.__nextFree;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1276
	gcDataNumFree--;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1277
    } else {
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1278
	gcData = (struct gcData *) malloc(sizeof(struct gcData));
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1279
	if (! gcData) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1280
	    console_fprintf(stderr, "WinWorkstat [warning]: failed to allocate gcData\n");
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1281
	    return 0;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1282
	}
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1283
    }
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1284
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1285
    memset(gcData, 0, sizeof(struct gcData));
2264
817f27555776 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
  1286
    gcData->fgColor = 0xffffff;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1287
    /* gcData->bgColor = 0; - not needed - memset does it */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1288
    gcData->clipping = FALSE;
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1289
    gcData->clipByChildren = TRUE;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1290
    gcData->bitbltrop2 = BITBLT_COPY;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1291
    gcData->lineWidth = 1;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1292
    gcData->lStyle = PS_SOLID | PS_JOIN_MITER | PS_ENDCAP_FLAT;
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1293
    /* gcData->brushOrgX = gcData->brushOrgY = 0; - not needed - memset does it */
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1294
    /* gcData->hPen = 0; - not needed - memset does it */
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1295
    /* gcData->hBrush = 0; - not needed - memset does it */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1296
    return gcData;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1297
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1298
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1299
static void
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1300
freeGcData(gcData)
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1301
    struct gcData *gcData;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1302
{
2754
21cbbc8fbe09 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2752
diff changeset
  1303
    if (gcDataNumFree < NUM_FREE_GC) {
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1304
	gcData->u.__nextFree = gcDataFreeList;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1305
	gcDataFreeList = gcData;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1306
	gcDataNumFree++;
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1307
    } else {
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1308
	free(gcData);
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1309
    }
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1310
}
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1311
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1312
#ifdef CACHE_LAST_DC
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1313
# define FLUSH_CACHED_DC(__gcData__) \
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1314
    if (lastGcData == __gcData__) {  \
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1315
	_releaseDC(lastGcData);      \
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1316
    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1317
#else
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1318
# define FLUSH_CACHED_DC(x)     /* */
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1319
#endif
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1320
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1321
#ifdef CACHE_LAST_PEN
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1322
# define FLUSH_CACHED_PEN(__gcData__) \
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1323
    if (__gcData__->hPen) {           \
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1324
	if (__gcData__->save_hPen) {  \
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1325
	    SelectObject(__gcData__->_hDC, __gcData__->save_hPen); \
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1326
	    __gcData__->save_hPen = 0;   \
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1327
	} \
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1328
	_DeletePenIfNotInCache(__gcData__->hPen, __LINE__); \
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1329
	__gcData__->hPen = 0; \
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1330
    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1331
#else
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1332
# define FLUSH_CACHED_PEN(x)    /* */
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1333
#endif
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1334
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1335
#ifdef CACHE_LAST_BRUSH
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1336
# define FLUSH_CACHED_BRUSH(__gcData__) \
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1337
    if (__gcData__->hBrush) {           \
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1338
	if (__gcData__->save_hBrush) {  \
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1339
	    SelectObject(__gcData__->_hDC, __gcData__->save_hBrush); \
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1340
	    __gcData__->save_hBrush = 0;   \
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1341
	} \
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1342
	_DeleteBrushIfNotInCache(__gcData__->hBrush, __LINE__); \
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1343
	__gcData__->hBrush = 0; \
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1344
    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1345
#else
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1346
# define FLUSH_CACHED_BRUSH(x)    /* */
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1347
#endif
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1348
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  1349
static void
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1350
_releaseDC(gcData)
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1351
    struct gcData *gcData;
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  1352
{
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1353
    HDC hDC = gcData->_hDC;
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1354
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1355
    if (gcData->doNotCacheOrRelease ) {
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1356
	return;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1357
    }
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1358
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1359
    if (gcData->save_hPen) {
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1360
	SelectObject(hDC, gcData->save_hPen);
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1361
	gcData->save_hPen = 0;
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1362
    }
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1363
    if (gcData->save_hBrush) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1364
	SelectObject(hDC, gcData->save_hBrush);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1365
	gcData->save_hBrush = 0;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1366
    }
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1367
    if (gcData->save_hFont) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1368
	SelectObject(hDC, gcData->save_hFont);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1369
	gcData->save_hFont = 0;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1370
    }
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1371
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1372
    if (gcData->hWnd) {
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1373
	if (hDC) {
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1374
	    ReleaseDC(gcData->hWnd, hDC);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1375
#ifdef CACHE_LAST_WM_PAINT_DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1376
	    if (hDC == last_wm_paint_dc) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1377
		last_wm_paint_dc = last_wm_paint_win = 0;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  1378
# ifdef DEBUG_DC_REUSE
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1379
		console_fprintf(stderr, "WinWorkstation [info]: Oops - releasing bg_paint-dc\n");
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  1380
# endif
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1381
	    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1382
#endif
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1383
	}
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1384
    } else if (gcData->hBitmap) {
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1385
	SelectObject(hDC, gcData->save_hBitmap);
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1386
	DeleteDC(hDC);
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1387
    }
2383
9a5be0903b57 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2378
diff changeset
  1388
    gcData->_hDC = 0;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1389
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1390
#ifdef CACHE_LAST_DC
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1391
    if (lastGcData == gcData) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1392
	lastGcData = 0;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1393
    }
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1394
#endif
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1395
#ifdef CACHE_LAST_PEN
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1396
    if (gcData->hPen) {
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1397
	_DeletePenIfNotInCache(gcData->hPen, __LINE__);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1398
	gcData->hPen = 0;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1399
    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1400
#endif
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1401
#ifdef CACHE_LAST_BRUSH
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1402
    if (gcData->hBrush) {
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1403
	_DeleteBrushIfNotInCache(gcData->hBrush, __LINE__);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1404
	gcData->hBrush = 0;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1405
    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1406
#endif
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  1407
}
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  1408
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1409
static HDC
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1410
_getDC(gcData)
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1411
    struct gcData *gcData;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1412
{
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1413
    HDC hDC;
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1414
    int currThreadId;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1415
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1416
    if (gcData->doNotCacheOrRelease ) {
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1417
	return gcData->_hDC;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1418
    }
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1419
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1420
#ifdef CACHE_LAST_DC
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1421
    currThreadId = GetCurrentThreadId();
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  1422
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1423
    if (lastGcData) {
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1424
	if ((lastGcData == gcData)
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1425
	 && (lastGcHWIN == gcData->hWnd)
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1426
	 && (lastGcHBITMAP == gcData->hBitmap)
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1427
	 && (lastGcOwnerThreadID == currThreadId)
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1428
	 && gcData->_hDC
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  1429
	) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1430
# ifdef CACHE_LAST_WM_PAINT_DC /* DDD */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1431
	    if (last_wm_paint_dc == gcData->_hDC) {
2732
bb3d3b26a81c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2728
diff changeset
  1432
#  ifdef DEBUG_DC_REUSE
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1433
		console_fprintf(stderr, "WinWorkstation [info]: Oops wm_paint_dc reuse [%d]\n", __LINE__);
2732
bb3d3b26a81c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2728
diff changeset
  1434
#  endif
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1435
		last_wm_paint_dc = last_wm_paint_win = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1436
	    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1437
# endif
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1438
	    return gcData->_hDC;
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1439
	}
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  1440
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1441
	_releaseDC(lastGcData);
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1442
	lastGcData = 0;
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1443
    }
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  1444
#endif
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1445
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1446
    hDC = 0;
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1447
    if (gcData->hWnd != 0) {
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1448
	if (__isWinNT && (gcData->hWnd == __rootWin)) {
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1449
	    hDC = gcData->_hDC = GetDCEx(gcData->hWnd, 0, DCX_WINDOW);
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1450
	    //gcData->_hDC = GetDC(gcData->hWnd);
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1451
	} else {
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1452
	    if (gcData->clipByChildren) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1453
		//gcData->_hDC = GetDCEx(gcData->hWnd, 0, DCX_CLIPCHILDREN);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1454
		hDC = gcData->_hDC = GetDC(gcData->hWnd);
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1455
	    } else
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1456
		hDC = gcData->_hDC = GetDCEx(gcData->hWnd, 0, DCX_PARENTCLIP);
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1457
	}
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1458
    } else if (gcData->hBitmap) {
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1459
	hDC = gcData->_hDC = CreateCompatibleDC(__tmpDC);
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1460
	gcData->save_hBitmap = SelectObject(gcData->_hDC,gcData->hBitmap);
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1461
    }
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1462
    gcData->bkMode = BK_UNDEF;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1463
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1464
    if (hDC) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1465
#if 0
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1466
	SetTextColor(hDC, gcData->bgColor);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1467
	SetBkColor(hDC, gcData->fgColor);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1468
#else
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1469
	SetTextColor(hDC, gcData->fgColor);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1470
	SetBkColor(hDC, gcData->bgColor);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1471
#endif
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1472
	if (gcData->rop2)
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1473
	    SetROP2(hDC, gcData->rop2);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  1474
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1475
	if (gcData->clipping) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1476
	    HRGN region = CreateRectRgn( gcData->clipX, gcData->clipY,
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1477
					 gcData->clipX + gcData->clipW,
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1478
					 gcData->clipY + gcData->clipH);
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1479
	    if (region == NULL ) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1480
		console_fprintf(stderr, "WinWorkstat [warning]: clipping region creation failed\n");
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1481
	    } else {
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1482
		if (SelectClipRgn(hDC, region) == ERROR ) {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  1483
		    DPRINTF(("WinWorkstat [warning]: select clipping region failed\n" ));
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1484
		}
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1485
		_DeleteObject(region, __LINE__);
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1486
	    }
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1487
	} else {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1488
	    SelectClipRgn(hDC, NULL);
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1489
	}
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1490
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1491
	if (gcData->hFont) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1492
	    HFONT prevFont;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1493
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1494
	    prevFont = SelectObject(hDC, gcData->hFont);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1495
	    if (! gcData->save_hFont) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1496
		gcData->save_hFont = prevFont;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1497
	    }
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1498
	}
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1499
    }
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1500
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1501
#ifdef CACHE_LAST_DC
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1502
    lastGcData = gcData;
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  1503
    lastGcOwnerThreadID = currThreadId;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1504
    lastGcHWIN = gcData->hWnd;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1505
    lastGcHBITMAP = gcData->hBitmap;
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  1506
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1507
    gcData->_hDC = hDC;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1508
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1509
# ifdef CACHE_LAST_WM_PAINT_DC /* DDD */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1510
    if (last_wm_paint_dc == hDC) {
2732
bb3d3b26a81c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2728
diff changeset
  1511
#  ifdef DEBUG_DC_REUSE
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1512
	console_fprintf(stderr, "WinWorkstation [info]: Oops wm_paint_dc reuse [%d]\n", __LINE__);
2732
bb3d3b26a81c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2728
diff changeset
  1513
#  endif
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1514
	last_wm_paint_dc = last_wm_paint_win = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1515
    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1516
# endif
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1517
#endif
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  1518
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1519
    return hDC;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1520
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1521
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1522
static HBRUSH
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1523
GcDataGetBrush(hDC, gcData)
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1524
    HDC hDC;
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1525
    struct gcData *gcData;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1526
{
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1527
    HBRUSH hBrush = 0;
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1528
    HBRUSH prevBrush;
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1529
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1530
#ifdef CACHE_LAST_BRUSH
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1531
    if (hBrush = gcData->hBrush) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1532
	if (! gcData->save_hBrush) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1533
	    gcData->save_hBrush = SelectObject(gcData->_hDC, hBrush);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1534
	}
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1535
	return hBrush;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1536
    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1537
#endif
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1538
    if (gcData->hMask) {
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1539
	hBrush = CreatePatternBrush(gcData->hMask);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1540
	SetBrushOrgEx(hDC, gcData->maskOrgX, gcData->maskOrgY, 0);
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  1541
	RESPRINTF(("CreatePatternBrush %x\n",gcData->hMask));
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
  1542
    } else {
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1543
	if (gcData->fgColor == BlackPixel) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1544
	    hBrush = __blackBrush;
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1545
	} else if (gcData->fgColor == WhitePixel) {
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1546
	    hBrush = __whiteBrush;
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1547
	} else {
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
  1548
#ifdef CACHE_BRUSH
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1549
	    {
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1550
		int i;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1551
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1552
		for (i=0; i<NUM_BRUSH_CACHED; i++) {
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1553
		    if (__brushCache[i].clr == gcData->fgColor) {
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1554
			hBrush = __brushCache[i].brush;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1555
			/*
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1556
			 * move it up in the cache
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1557
			 */
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1558
			if (i > 0) {
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1559
			    HBRUSH t = __brushCache[i-1].brush;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1560
			    int c = __brushCache[i-1].clr;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1561
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1562
			    __brushCache[i-1].brush = hBrush;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1563
			    __brushCache[i-1].clr = gcData->fgColor;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1564
			    __brushCache[i].brush = t;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1565
			    __brushCache[i].clr = c;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1566
			}
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1567
# ifdef CACHE_LAST_BRUSH
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1568
			prevBrush = SelectObject(gcData->_hDC, hBrush);
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1569
			if (! gcData->save_hBrush) {
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1570
			    gcData->save_hBrush = prevBrush;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1571
			}
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1572
			gcData->hBrush = hBrush;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1573
# endif
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1574
			return hBrush;
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1575
		    }
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1576
		}
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1577
	    }
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1578
#endif /* BRUSH_CACHE */
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1579
	    hBrush = CreateSolidBrush(gcData->fgColor);
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1580
	    RESPRINTF(("CreateSolidBrush %x\n",gcData->fgColor));
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1581
	}
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1582
    }
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1583
    gcData->hBrush = hBrush;
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1584
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1585
    prevBrush = SelectObject(gcData->_hDC, hBrush);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1586
    if (! gcData->save_hBrush) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1587
	gcData->save_hBrush = prevBrush;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1588
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1589
    return hBrush;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1590
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1591
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1592
#ifdef CACHE_LAST_BRUSH
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1593
# define GcDataReleaseBrush(hDC, gcData)  /* nothing*/
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1594
#else
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1595
static void
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1596
GcDataReleaseBrush(hDC, gcData)
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1597
    HDC hDC;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1598
    struct gcData *gcData;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1599
{
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1600
    HBRUSH hBrush;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1601
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1602
    hBrush = gcData->hBrush;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1603
    if (gcData->save_hBrush) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1604
	SelectObject(hDC, gcData->save_hBrush);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1605
	gcData->save_hBrush = NULL;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1606
    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1607
    _DeleteBrushIfNotInCache(hBrush, __LINE__);
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1608
    gcData->hBrush = 0;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1609
}
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1610
#endif
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1611
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1612
static HPEN
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1613
GcDataGetPen(hDC, gcData)
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1614
    HDC hDC;
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1615
    struct gcData *gcData;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1616
{
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1617
    HPEN hPen = 0;
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1618
    HPEN prevPen;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1619
    LOGBRUSH Brush;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1620
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1621
#ifdef CACHE_LAST_PEN
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1622
    if (hPen = gcData->hPen) {
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1623
	if (! gcData->save_hPen) {
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1624
	    gcData->save_hPen = SelectObject(gcData->_hDC, hPen);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1625
	}
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1626
	return hPen;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1627
    }
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1628
#endif
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1629
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1630
    if (((gcData->lStyle & PS_STYLE_MASK) == PS_SOLID)
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1631
     && (gcData->hMask == 0)
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1632
     && (gcData->lineWidth <= 1)) {
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1633
	if (gcData->fgColor == BlackPixel) {
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1634
	    gcData->hPen = hPen = __blackPen;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1635
	    prevPen = SelectObject(hDC, hPen);
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1636
	    if (! gcData->save_hPen) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1637
		gcData->save_hPen = prevPen;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1638
	    }
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1639
	    return hPen;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1640
	}
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1641
	if (gcData->fgColor == WhitePixel) {
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1642
	    gcData->hPen = hPen = __whitePen;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1643
	    prevPen = SelectObject(hDC, hPen);
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1644
	    if (! gcData->save_hPen) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1645
		gcData->save_hPen = prevPen;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1646
	    }
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1647
	    return hPen;
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1648
	}
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1649
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
  1650
#ifdef CACHE_PEN
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1651
	{
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1652
	    int i;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1653
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1654
	    for (i=0; i<NUM_PEN_CACHED; i++) {
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1655
		if (__penCache[i].clr == gcData->fgColor) {
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1656
		    hPen = __penCache[i].pen;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1657
		    /*
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1658
		     * move it up in the cache
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1659
		     */
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1660
		    if (i > 0) {
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1661
			HPEN t = __penCache[i-1].pen;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1662
			int c = __penCache[i-1].clr;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1663
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1664
			__penCache[i-1].pen = hPen;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1665
			__penCache[i-1].clr = gcData->fgColor;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1666
			__penCache[i].pen = t;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1667
			__penCache[i].clr = c;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1668
		    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  1669
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  1670
		    gcData->hPen = hPen;
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1671
		    prevPen = SelectObject(hDC, hPen);
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1672
		    if (! gcData->save_hPen) {
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1673
			gcData->save_hPen = prevPen;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1674
		    }
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1675
		    return hPen;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1676
		}
2663
b03c1fdd073c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
  1677
	    }
b03c1fdd073c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
  1678
	}
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1679
#endif /* PEN_CACHE */
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1680
    }
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1681
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1682
    hPen = (HPEN) 0;
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1683
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1684
    if (__isWinNT) {
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1685
	int lw = gcData->lineWidth;
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1686
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1687
	if (lw == 0) {
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1688
	    lw = 1;
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1689
	}
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1690
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1691
	/*
2627
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1692
	 * NT supports masked drawing with any lineStyle,
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1693
	 * and also non-solid lines with any lineWidth.
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1694
	 */
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1695
	if (gcData->hMask) {
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  1696
	    Brush.lbStyle = BS_PATTERN;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  1697
	    Brush.lbHatch = (DWORD)gcData->hMask;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  1698
	    Brush.lbColor = gcData->fgColor;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1699
	} else {
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1700
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1701
#ifndef PRE_07_APR_04
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1702
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1703
	    hPen = CreatePen((gcData->lStyle & PS_STYLE_MASK), lw, gcData->fgColor);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1704
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1705
	    RESPRINTF(("CreatePen %x %d(%d) %x %x\n",
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1706
			gcData->lStyle,
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1707
			lw, gcData->lineWidth,
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1708
			gcData->fgColor, gcData->hMask));
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1709
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1710
	    SetBkMode(hDC, TRANSPARENT);
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1711
	    gcData->bkMode = BK_TRANSPARENT;
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1712
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1713
#else
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  1714
	    Brush.lbStyle = BS_SOLID;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  1715
	    Brush.lbHatch = 0;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  1716
	    Brush.lbColor = gcData->fgColor;
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1717
#endif
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1718
	}
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1719
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1720
	if (! hPen)
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1721
	{
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1722
	    hPen = ExtCreatePen(PS_GEOMETRIC | gcData->lStyle,
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1723
			    lw, /* gcData->lineWidth, */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  1724
			    &Brush,
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  1725
			    0, 0);
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1726
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1727
	    RESPRINTF(("ExtCreatePen1 %x %d(%d) %x %x\n",
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1728
			gcData->lStyle,
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  1729
			lw, gcData->lineWidth,
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1730
			gcData->fgColor, gcData->hMask));
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1731
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1732
	    if (gcData->hMask) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1733
		SetBrushOrgEx(hDC, gcData->maskOrgX, gcData->maskOrgY, 0);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1734
	    }
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1735
	}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1736
    } else {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1737
	/*
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1738
	 * W95 only supports masked drawing with SOLID lines
2627
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1739
	 * also, we should use COSMETIC pens if possible
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1740
	 * with non-solid lineStyles.
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1741
	 */
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1742
	if ((gcData->lStyle & PS_STYLE_MASK) == PS_SOLID) {
2627
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1743
	    int ps = PS_GEOMETRIC;
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1744
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1745
	    if (gcData->hMask) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1746
		Brush.lbStyle = BS_PATTERN;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1747
		Brush.lbHatch = (DWORD)gcData->hMask;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1748
		Brush.lbColor = gcData->fgColor;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1749
	    } else {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1750
		Brush.lbStyle = BS_SOLID;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1751
		Brush.lbHatch = 0;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1752
		Brush.lbColor = gcData->fgColor;
2627
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1753
		if (gcData->lineWidth <= 1) {
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1754
		    ps = PS_COSMETIC;
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1755
		}
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1756
	    }
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1757
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1758
	    hPen = ExtCreatePen(ps | gcData->lStyle,
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  1759
				gcData->lineWidth,
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  1760
				&Brush,
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  1761
				0, 0);
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1762
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1763
	    RESPRINTF(("ExtCreatePen1 %x %d %x %x\n",
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1764
			    gcData->lStyle,
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1765
			    gcData->lineWidth,
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1766
			    gcData->fgColor, gcData->hMask));
2627
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1767
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1768
	    if (gcData->hMask) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1769
		SetBrushOrgEx(hDC, gcData->maskOrgX, gcData->maskOrgY, 0);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1770
	    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1771
	} else {
2627
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1772
	    int lw = gcData->lineWidth;
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1773
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1774
	    if (lw == 1) {
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1775
		lw = 0;
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1776
	    }
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1777
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1778
	    /*
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1779
	     * dashes only supported with lineWidth 0
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1780
	     */
4149
663c31c90a53 optimize displayLine: and define CACHE_LAST_DC
ca
parents: 4145
diff changeset
  1781
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1782
	    hPen = CreatePen((gcData->lStyle & PS_STYLE_MASK),
2627
078c45050a69 dotted lines under WIN95 (lineWidth 0 & 1 only)
Claus Gittinger <cg@exept.de>
parents: 2624
diff changeset
  1783
			     lw,
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1784
			     gcData->fgColor);
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1785
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1786
	    RESPRINTF(("CreatePen %x %d %x\n",
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1787
				(gcData->lStyle & PS_STYLE_MASK),
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1788
				gcData->lineWidth,
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1789
				gcData->fgColor));
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1790
2383
9a5be0903b57 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2378
diff changeset
  1791
	    //
9a5be0903b57 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2378
diff changeset
  1792
	    // CG: wrong; must set to opaque, if doubleDashed
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1793
	    //
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1794
	    SetBkMode(hDC, TRANSPARENT);
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
  1795
	    gcData->bkMode = BK_TRANSPARENT;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1796
	}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1797
    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1798
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1799
    gcData->hPen = hPen;
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1800
    prevPen = SelectObject(hDC, hPen);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1801
    if (! gcData->save_hPen) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1802
	gcData->save_hPen = prevPen;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1803
    }
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  1804
3573
d5e57dbb0dcb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3571
diff changeset
  1805
#ifdef CACHE_PEN
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1806
    /*
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1807
     * remember in penCache
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1808
     */
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1809
    if (((gcData->lStyle & PS_STYLE_MASK) == PS_SOLID)
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1810
     && (gcData->hMask == 0)
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1811
     && (gcData->lineWidth <= 1)) {
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1812
	int i;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1813
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1814
	/*
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1815
	 * search for an empty slot
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1816
	 */
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1817
	for (i=0; i<NUM_PEN_CACHED; i++) {
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1818
	    if (__penCache[i].pen == 0) {
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1819
		__penCache[i].clr = gcData->fgColor;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1820
		__penCache[i].pen = hPen;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1821
		break;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1822
	    }
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1823
	}
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1824
	if (i == NUM_PEN_CACHED) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1825
	    /*
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1826
	     * replace last in penCache
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  1827
	     */
2666
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1828
	    HPEN t = __penCache[NUM_PEN_CACHED - 1].pen;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1829
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1830
	    __penCache[NUM_PEN_CACHED - 1].pen = hPen;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1831
	    __penCache[NUM_PEN_CACHED - 1].clr = gcData->fgColor;
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1832
	    _DeletePen(t, __LINE__);
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1833
	}
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1834
    }
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1835
#endif
95aea895f5b1 more pen caching
Claus Gittinger <cg@exept.de>
parents: 2665
diff changeset
  1836
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  1837
    return hPen;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  1838
}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  1839
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1840
#ifdef CACHE_LAST_PEN
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1841
# define GcDataReleasePen(hDC, gcData)  /* nothing*/
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1842
#else
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1843
static void
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1844
GcDataReleasePen(hDC, gcData)
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1845
    HDC hDC;
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1846
    struct gcData *gcData;
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1847
{
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1848
    HPEN hPen;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1849
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1850
    if (gcData->save_hPen) {
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1851
	SelectObject(hDC, gcData->save_hPen);
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  1852
	gcData->save_hPen = NULL;
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1853
    }
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  1854
    hPen = gcData->hPen;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  1855
    _DeletePenIfNotInCache(hPen, __LINE__);
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1856
    gcData->hPen = 0;
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1857
}
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  1858
#endif /* CACHE_LAST_PEN */
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  1859
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1860
/* atze */
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1861
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1862
static int
4367
0486a7345d7f *** empty log message ***
penk
parents: 4366
diff changeset
  1863
lockEvents(whoIsLocking)
0486a7345d7f *** empty log message ***
penk
parents: 4366
diff changeset
  1864
    char *whoIsLocking;
0486a7345d7f *** empty log message ***
penk
parents: 4366
diff changeset
  1865
{
4504
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1866
    DWORD dwWaitResult = WaitForSingleObject(hEventsMutex, 5000L);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  1867
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  1868
#ifdef LOCK_DEBUG
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1869
    lockCountEvents++;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1870
    if (lockCountEvents != 1) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1871
	console_fprintf(stderr, "WinWorkstation [warning]: lockCountEvents (%d) != 1 in lock\n", lockCountEvents);
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1872
	lockCountEvents = 1;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1873
    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1874
#endif
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1875
4504
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1876
    switch (dwWaitResult) {
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1877
	case WAIT_OBJECT_0:
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1878
	    hEventsMutexOwner = whoIsLocking;
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1879
	    return (TRUE);
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1880
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1881
	case WAIT_ABANDONED:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1882
	    console_fprintf(stderr, "WinWorkstation [warning]: lockEvent abandoned (was owned by %s)\n",
4504
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1883
			(hEventsMutexOwner ? hEventsMutexOwner : "NONE"));
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1884
	    hEventsMutexOwner = whoIsLocking;
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1885
	    return (TRUE);
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1886
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1887
	case WAIT_TIMEOUT:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1888
	    console_fprintf(stderr, "WinWorkstation [warning]: lockEvent timeout (owned by %s)\n",
4504
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1889
			(hEventsMutexOwner ? hEventsMutexOwner : "NONE") );
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1890
	    break;
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1891
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1892
	default:
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1893
	    {
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1894
		unsigned errCode = GetLastError();
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1895
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1896
		console_fprintf(stderr, "WinWorkstation [error]: lockEvent error (owned by %s) rslt=0x%x err=0x%x\n",
4504
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1897
			    (hEventsMutexOwner ? hEventsMutexOwner : "NONE"),
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1898
			    dwWaitResult, errCode );
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1899
	    }
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1900
	    break;
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1901
    }
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1902
    return (FALSE);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1903
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1904
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1905
static int
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1906
unlockEvents() {
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  1907
#ifdef LOCK_DEBUG
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1908
    lockCountEvents--;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1909
    if (lockCountEvents != 0) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1910
	console_fprintf(stderr, "WinWorkstation [warning]: lockCountEvents (%d) != 0 in unlock\n", lockCountEvents);
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1911
	lockCountEvents = 0;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1912
    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1913
#endif
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1914
    if (! ReleaseMutex(hEventsMutex)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1915
       console_fprintf(stderr, "WinWorkstation [error]: unlockEvent error\n");
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1916
       return (FALSE);
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1917
    }
4504
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  1918
    hEventsMutexOwner = NULL;
4367
0486a7345d7f *** empty log message ***
penk
parents: 4366
diff changeset
  1919
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1920
    return (TRUE);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  1921
}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  1922
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  1923
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  1924
static int
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  1925
initEventqueue() {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1926
    struct queuedEvent *bulk;
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  1927
    int i;
2404
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  1928
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1929
    bulk = (struct queuedEvent *) malloc(EV_CHUNK_SZ);
2404
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  1930
    if (bulk == 0) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1931
	console_fprintf(stderr, "WinWorkstation [warning]: no memory for dispatchqueue\n");
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  1932
	return 0;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1933
    }
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1934
    for (i=1; i<EV_CHUNK_CNT; i++) {
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
  1935
	bulk[i-1].ev_next = &(bulk[i]);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1936
    }
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1937
    bulk[EV_CHUNK_CNT-1].ev_next = (struct queuedEvent *)0;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1938
    eventFreeList = bulk;
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  1939
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1940
    return 1;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1941
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1942
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
  1943
#define EV_NOTIME       0
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
  1944
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1945
#define enqEvent(a1, a2, a3, a4, a5, a6, a7, a8, a9) \
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1946
    __enqEvent(a1, a2, a3, a4, a5, a6, a7, a8, a9)
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  1947
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  1948
static void
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1949
__enqEvent(flag, hWnd, message, wParam, arg1, arg2, arg3, arg4, evTime)
2404
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  1950
    HWND hWnd;
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  1951
    UINT message;
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  1952
    UINT wParam;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  1953
    UINT evTime;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1954
{
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  1955
    struct queuedEvent *ev = 0;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  1956
    int repeatCount = 0;
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1957
4445
c83f9aebaf41 comment
Claus Gittinger <cg@exept.de>
parents: 4444
diff changeset
  1958
    /* get an event struct
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1959
    */
4445
c83f9aebaf41 comment
Claus Gittinger <cg@exept.de>
parents: 4444
diff changeset
  1960
    while (! eventFreeList) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1961
	if (repeatCount++ >= 5) {
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  1962
	    /* throw away sorry */
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1963
	    console_fprintf(stderr, "WinWorkstation [error]: event throw away (memory problem)\n");
2404
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  1964
	    return;
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  1965
	}
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1966
	console_fprintf(stderr, "WinWorkstation [warning]: wait for event memory (%d)\n", repeatCount);
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1967
	WaitForSingleObject( hNeverTriggered, 100L );
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1968
    }
4367
0486a7345d7f *** empty log message ***
penk
parents: 4366
diff changeset
  1969
    if (! lockEvents("enqEvent")) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1970
	console_fprintf(stderr, "WinWorkstation [error]: event throw away (lock problem)\n");
4363
d7a017ae1487 *** empty log message ***
penk
parents: 4353
diff changeset
  1971
	return;
d7a017ae1487 *** empty log message ***
penk
parents: 4353
diff changeset
  1972
    }
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1973
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1974
    ev = eventFreeList;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1975
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1976
    if (! ev) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  1977
	console_fprintf(stderr, "WinWorkstation [error]: event throw away (memory problem)\n");
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1978
	unlockEvents();
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  1979
	return;
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1980
    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1981
    eventFreeList  = ev->ev_next;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1982
    ev->ev_flag    = flag;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1983
    ev->ev_hWnd    = hWnd;
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  1984
    ev->ev_message = message;
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1985
    ev->ev_wParam  = wParam;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1986
    ev->ev_arg1    = arg1;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1987
    ev->ev_arg2    = arg2;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1988
    ev->ev_arg3    = arg3;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1989
    ev->ev_arg4    = arg4;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1990
    ev->ev_time    = evTime /* lastMSGTime */;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1991
    ev->count      = eventsendcount++;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  1992
    ev->ev_next    = (struct queuedEvent *) 0;
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1993
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1994
    if (eventQueueTail) {
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1995
	eventQueueTail->ev_next = ev;
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  1996
    } else {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1997
	eventQueueHead = ev;
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1998
    }
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  1999
    eventQueueTail = ev;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  2000
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2001
    unlockEvents();
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2002
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2003
    if (eventQueueHead == ev) {
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  2004
	SetEvent(hInputEvent);
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  2005
    }
2511
5795501d41cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2508
diff changeset
  2006
2337
79f957096b99 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2336
diff changeset
  2007
#if 0
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2008
    SetThreadPriority(_masterThread, THREAD_PRIORITY_HIGHEST);
2614
0e43d058c264 manage some eventQ entries (free/alloc) without a need
Claus Gittinger <cg@exept.de>
parents: 2610
diff changeset
  2009
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2010
}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2011
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2012
static int
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2013
deqEvent(struct queuedEvent *ret_ev, HWND hWnd, int mask)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2014
{
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2015
    struct queuedEvent * ev = NULL;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2016
    char * freeArg2 = NULL;
2404
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  2017
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  2018
    if (mask != ~0) {
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  2019
	PRINTF(("deqEvent mask:%x\n",mask));
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  2020
    }
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  2021
    if (hWnd) {
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  2022
	PRINTF(("deqEvent hWnd:%x\n",hWnd));
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  2023
    }
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2024
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2025
  again:
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2026
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2027
    if (! eventQueueHead)
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2028
	return (0);
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2029
4367
0486a7345d7f *** empty log message ***
penk
parents: 4366
diff changeset
  2030
    if (! lockEvents("deqEvent")) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2031
	return (0);
4363
d7a017ae1487 *** empty log message ***
penk
parents: 4353
diff changeset
  2032
    }
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2033
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2034
    TH_DPRINTF(("TDEQ\n"));
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2035
    ev = eventQueueHead;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2036
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2037
    if (! ev) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2038
	unlockEvents();
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2039
	return (0);
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2040
    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2041
    eventQueueHead = ev->ev_next;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2042
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2043
    if (! eventQueueHead) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2044
	eventQueueTail = (struct queuedEvent *) 0;
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2045
    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2046
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2047
    if (ev->count != -1) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2048
	static int anyGoodEventReceived = 1;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2049
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2050
	if (eventempfcount != ev->count) {
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2051
	    if (anyGoodEventReceived) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2052
		console_fprintf(stderr, "WinWorkstation [warning]: lost event (eventcount error %d <-> %d)\n",
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2053
				 eventempfcount, ev->count);
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2054
	    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2055
	    eventempfcount = ev->count;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2056
	    anyGoodEventReceived = 0;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2057
	} else {
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2058
	    anyGoodEventReceived = 1;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2059
	}
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2060
	eventempfcount++;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2061
    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2062
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2063
    if (ev->ev_message == WM_DESTROY) {
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2064
	/*
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2065
	 * arg2 is the localInfoPtr
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2066
	 * (which is already cleared in the wind-structure)
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2067
	 * it must be freed by the stx-process ('cause it was malloc'd by it)
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2068
	 */
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2069
	if (ev->ev_arg2) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2070
	    freeArg2 = (char *) ev->ev_arg2;
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2071
	    ev->ev_arg2 = 0;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2072
	}
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2073
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2074
#ifdef TOPWINDOWCLASS
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2075
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2076
FALSCH: nochmals in QUEUE -> (ev_arg2 != 0) arg2 freed !!!
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2077
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2078
	if (ev->ev_arg1) {
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2079
	    if (UnregisterClass((char*)ev->ev_arg1,(HANDLE) __getHInstance())) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2080
		/*console_printf("UnregisterClass %s ok.\n",(char*)ev->ev_arg1);*/
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2081
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2082
	    } else {
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2083
		/* noch einmal in die queue
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2084
		*/
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2085
		if (ev->ev_arg2++ < 100) {
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2086
		    ev->ev_next = (struct queuedEvent *)0;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2087
		    ev->count   = eventsendcount++;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2088
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2089
		    if (eventQueueTail) {
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2090
			eventQueueTail->ev_next = ev;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2091
		    } else {
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2092
			eventQueueHead = ev;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2093
		    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2094
		    eventQueueTail = ev;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2095
		    unlockEvents();
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2096
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2097
		    if (freeArg2) {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2098
			free (freeArg2);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2099
			freeArg2 = NULL;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2100
		    }
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2101
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2102
		    if (ev->ev_arg2 > 98) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2103
			console_fprintf(stderr, "WinWorkstation [info]: UnregisterClass %s failed. Wait 1 sec.\n",(char*)ev->ev_arg1);
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2104
			sleep(1);
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2105
		    } else {
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2106
			sleep(0);
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2107
		    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2108
		    goto again;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2109
		}
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2110
		/* fail evtl. später ändern und in st verzögert aufrufen
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2111
		*/
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2112
		console_fprintf(stderr, "WinWorkstation [info]: UnregisterClass %s failed.\n",(char*)ev->ev_arg1);
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2113
	    }
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2114
	    free((char*)ev->ev_arg1);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2115
	    ev->ev_arg1 = 0;
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2116
	}
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2117
#endif
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2118
    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2119
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2120
    *ret_ev = *ev;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2121
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2122
    ev->ev_next   = eventFreeList;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2123
    eventFreeList = ev;
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2124
    unlockEvents();
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2125
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2126
    if (freeArg2) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2127
	free (freeArg2);
4154
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2128
    }
662732d0c60a using one lock instead of two locks for event exchange
ca
parents: 4149
diff changeset
  2129
    return (1);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2130
}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2131
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2132
static void
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2133
__clearRectangles(hWnd, numRects, pRect)
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2134
    HWND hWnd;
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2135
    RECT *pRect;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2136
{
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2137
	HDC dc;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2138
	HBRUSH br;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2139
	int bgClr;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2140
	int isPrivateBrush = 0;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2141
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2142
# ifdef CACHE_LAST_WM_PAINT_DC
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
  2143
	AQUIRE_PAINT_MUTEX;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2144
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2145
	if (last_wm_paint_dc && (last_wm_paint_win == hWnd)) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2146
	    dc = last_wm_paint_dc;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2147
	} else {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2148
	    if (last_wm_paint_dc) {
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2149
#  ifdef CACHE_LAST_DC
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2150
		if (lastGcData && (lastGcData->_hDC == last_wm_paint_dc)) {
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2151
#   ifdef DEBUG_DC_REUSE
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2152
		    console_fprintf(stderr, "WinWorkstation [info]: Oops - release lastGcData [%d]\n", __LINE__);
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2153
#   endif
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2154
		    _releaseDC(lastGcData);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2155
		} else {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2156
		    ReleaseDC(last_wm_paint_win, last_wm_paint_dc);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2157
		}
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2158
#  else
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2159
		ReleaseDC(last_wm_paint_win, last_wm_paint_dc);
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2160
#  endif /* CACHE_LAST_DC */
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2161
	    }
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2162
	    dc = GetDC(hWnd);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2163
	    last_wm_paint_dc = dc;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2164
	    last_wm_paint_win = hWnd;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2165
	}
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2166
# else
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2167
	dc = (HDC)GetDC(hWnd);
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2168
# endif /* CACHE_LAST_WM_PAINT_DC */
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2169
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2170
# ifdef CACHE_LAST_DC
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2171
	if (lastGcData && (lastGcData->_hDC == dc)) {
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2172
#  ifdef DEBUG_DC_REUSE
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2173
	    console_fprintf(stderr, "WinWorkstation [info]: Oops wm_paint_dc reuse [%d]\n", __LINE__);
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2174
#  endif
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2175
	    if ((lastGcData->rop2 != R2_COPYPEN)
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2176
	     || (lastGcData->bitbltrop2 != BITBLT_COPY)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2177
		console_fprintf(stderr, "WinWorkstation [info]: Oops wm_paint_dc not in Copy mode\n");
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2178
	    }
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2179
	    lastGcData = 0;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2180
	}
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2181
# endif
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2182
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2183
	br = GetWindow_viewBgBrush(hWnd);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2184
	if (! br) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2185
	    bgClr = GetWindow_viewBgColor(hWnd);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2186
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2187
# ifdef CACHE_LAST_WM_PAINT_BRUSH
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2188
	    if (last_wm_paint_brush
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2189
	     && (last_wm_paint_brush_clr == bgClr)) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2190
		br = last_wm_paint_brush;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2191
	    } else {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2192
		if (bgClr == WhitePixel) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2193
		    br = __whiteBrush;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2194
		} else if (bgClr == BlackPixel) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2195
		    br = __blackBrush;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2196
		} else {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2197
		    if (last_wm_paint_brush) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2198
			_DeleteBrush(last_wm_paint_brush, __LINE__);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2199
		    }
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2200
		    last_wm_paint_brush = br = CreateSolidBrush(bgClr);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2201
		    last_wm_paint_brush_clr = bgClr;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2202
		    isPrivateBrush = 1;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2203
		}
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2204
	    }
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2205
# else
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2206
	    br = CreateSolidBrush(bgClr);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2207
	    isPrivateBrush = 1;
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2208
# endif
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2209
	}
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2210
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2211
	if (! br) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2212
	    console_fprintf(stderr, "WinWorkstation [info]: no brush\n");
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2213
	}
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2214
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2215
	if (br) {
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2216
	    int i;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2217
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2218
	    SelectClipRgn(dc, NULL);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2219
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2220
	    for (i=0; i<numRects; i++) {
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2221
		/*
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2222
		 * always clear - even if not interested in exposes
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2223
		 */
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2224
		FillRect(dc, &(pRect[i]), br);
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2225
	    }
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2226
	}
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2227
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2228
# ifndef CACHE_LAST_WM_PAINT_BRUSH
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2229
	if (isPrivateBrush) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2230
	    _DeleteBrush(br, __LINE__);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2231
	}
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2232
# endif
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2233
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2234
# ifndef CACHE_LAST_WM_PAINT_DC
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2235
	ReleaseDC(hWnd, dc);
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2236
# endif
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2237
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
  2238
# if defined(CACHE_LAST_WM_PAINT_DC)
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
  2239
	RELEASE_PAINT_MUTEX
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2240
# endif
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2241
}
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2242
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2243
static void
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2244
__clearWindow(hWnd, x, y, w, h)
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2245
    HWND hWnd;
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2246
{
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2247
	RECT rect;
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2248
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2249
	rect.left = x;
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2250
	rect.top = y;
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2251
	rect.right = x + w;
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2252
	rect.bottom = y + h;
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2253
	__clearRectangles(hWnd, 1, &rect);
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2254
}
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2255
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2256
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2257
/*
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2258
 * generate expose events from hWnd's update region or the passedIn region.
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2259
 * return the number of events (>0), if any was generated.
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2260
 * 0, if no event was generated, -1 if none was generated with error.
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2261
 * if a region is passed in, it is not destroyed.
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2262
 */
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2263
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2264
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2265
static int
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2266
__generateExposes(hWnd, hRgnInOrNull, msgType, doClear)
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2267
    HWND hWnd;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2268
    int msgType;
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2269
    HRGN hRgnInOrNull;
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2270
{
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2271
	RECT updRect;
2752
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  2272
	HRGN updRgn = 0;
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2273
	int numRects, ret, n, i;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2274
	int wantExpose;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2275
	RECT *pRect;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2276
	union {
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2277
	    RGNDATA rgnData;
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2278
	    char    bytes[512];
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2279
	} data;
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2280
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2281
	wantExpose = 0;
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2282
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2283
	if( msgType >= 0 )
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2284
	    wantExpose = (GetWindow_eventMask(hWnd) & ExposureMask);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2285
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2286
	if (hRgnInOrNull) {
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2287
	    updRgn = hRgnInOrNull;
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2288
	} else {
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2289
	    PAINTSTRUCT ps;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2290
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2291
	    /*
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2292
	     * fetch the update region, even if ExposureMask is empty.
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2293
	     */
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2294
	    updRgn = CreateRectRgn(0, 0, 0, 0);
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2295
	    ret = GetUpdateRgn(hWnd, updRgn, FALSE);
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2296
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2297
#if 0
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2298
	    BeginPaint(hWnd, &ps);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2299
	    /* store the rectangle required for image bit reversal */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2300
	    /* updateRect = ps.rcPaint;   */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2301
	    EndPaint(hWnd, &ps);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2302
#endif
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2303
	    switch (ret) {
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2304
		case ERROR:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2305
		    console_fprintf(stderr, "WinWorkstation [info]: errregion\n");
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2306
		    return -1;
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2307
		case NULLREGION:
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  2308
		    DDPRINTF(("nullregion\n"));
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2309
		    _DeleteObject(updRgn, __LINE__);
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2310
		    return 0;
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2311
		case SIMPLEREGION:
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2312
		case COMPLEXREGION:
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2313
		    break;
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2314
	    }
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2315
	}
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  2316
	n = GetRegionData(updRgn, sizeof(data), &(data.rgnData));
2705
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  2317
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2318
	/*
2705
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  2319
	 * the MS-doc states: n==1
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2320
	 * but this is not true
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2321
	 */
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2322
	if ((n >= sizeof(RGNDATA))
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2323
	 && (n <= sizeof(data))
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2324
	 && (data.rgnData.rdh.iType == RDH_RECTANGLES))  {
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2325
	    /* ok, got the region */
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2326
	    numRects = data.rgnData.rdh.nCount;
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  2327
	    pRect = (RECT *)(data.rgnData.Buffer);
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  2328
	    DDPRINTF(("region numRects=%d\n", numRects));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2329
	} else {
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2330
	    /* a big region ... */
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2331
	    GetRgnBox(updRgn, &updRect);
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2332
	    numRects = 1;
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2333
	    pRect = &updRect;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2334
	    DPRINTF(("very complex region (need:%d have:%d) bounds=%d,%d -> %d,%d\n",
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2335
		     n, sizeof(data),
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2336
		     updRect.left, updRect.top,
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2337
		     updRect.right, updRect.bottom));
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2338
	    if (((updRect.right - updRect.left) <= 0)
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2339
	     || ((updRect.bottom - updRect.top) <= 0)) {
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2340
		numRects = 0;
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2341
	    }
2700
3156d7e1efd6 fixed scroll-update for win32
Claus Gittinger <cg@exept.de>
parents: 2698
diff changeset
  2342
	}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2343
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2344
	if (numRects) {
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2345
	    if (doClear) {
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  2346
		__clearRectangles(hWnd, numRects, pRect);
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2347
	    }
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2348
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2349
#ifndef PRE_21_NOV
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2350
	for (i=0; i < numRects; i++) {
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2351
	    ValidateRect( hWnd, &pRect[i] );
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2352
	}
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2353
#endif
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  2354
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2355
#ifdef DEBUG_COLORIZE_WM_PAINT_RECTS1
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2356
	    {
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2357
		HDC hDC;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2358
		HBRUSH hBrush;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2359
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2360
		hBrush = CreateSolidBrush(BlackPixel);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2361
		hDC = GetWindowDC(hWnd);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2362
		SelectClipRgn(hDC, NULL);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2363
		for (i=0; i<numRects; i++) {
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2364
		    FillRect(hDC, &(pRect[i]), hBrush);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2365
		}
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2366
		_DeleteBrush(hBrush, __LINE__);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2367
		ReleaseDC(hWnd, hDC);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2368
	    }
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2369
#endif
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2370
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2371
	    if (wantExpose) {
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2372
		for (i=0; i<numRects; i++) {
2705
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  2373
		    int final = 0;
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  2374
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  2375
		    if ((msgType == __WM_GEXPOSE)
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  2376
		     && (i == (numRects - 1))) {
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  2377
			final = 1;
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  2378
		    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2379
		    enqEvent(ExposureMask, hWnd, msgType, final,
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2380
			     pRect[i].left, pRect[i].top,
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2381
			     pRect[i].right - pRect[i].left,
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2382
			     pRect[i].bottom - pRect[i].top,
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2383
			     EV_NOTIME);
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2384
		}
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2385
	    }
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2386
	}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2387
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2388
	if (updRgn && (updRgn != hRgnInOrNull)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2389
	    _DeleteObject(updRgn, __LINE__);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2390
	}
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2391
2706
f065e6958804 fixed noExpose event when fully covered
Claus Gittinger <cg@exept.de>
parents: 2705
diff changeset
  2392
	return numRects;
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2393
}
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2394
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2395
#ifdef THIS_DOES_NOT_AVOID_DOUBLE_REPAINTS
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2396
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2397
BOOL CALLBACK recursiveExposeGenerator(hChild, param)
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2398
    HWND hChild;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2399
    LPARAM param;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2400
{
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  2401
	__generateExposes(hChild, NULL, param, 0);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2402
	return TRUE;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2403
}
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2404
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2405
static void
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2406
__generateRecursiveExposes(hWnd, msgType)
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2407
    HWND hWnd;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2408
{
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2409
	EnumChildWindows(hWnd, recursiveExposeGenerator, msgType);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2410
}
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2411
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2412
#endif /* sigh */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2413
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  2414
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2415
static
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2416
getModifiers()
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2417
{
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2418
    int modifiers = 0;
2404
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
  2419
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2420
    if (GetKeyState(VK_SHIFT) & 0x8000)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2421
	modifiers |= ShiftMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2422
    if (GetKeyState(VK_CONTROL) & 0x8000)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2423
	modifiers |= ControlMask;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2424
#if 0
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2425
    if (GetKeyState(VK_RMENU) & 0x8000)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2426
	modifiers |= RightAltMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2427
    if (GetKeyState(VK_LMENU) & 0x8000)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2428
	modifiers |= LeftAltMask;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2429
#else
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2430
    if (GetKeyState(VK_MENU) & 0x8000)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2431
	modifiers |= LeftAltMask;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2432
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2433
    if (GetKeyState(VK_LBUTTON) & 0x8000)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2434
	modifiers |= Button1Mask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2435
    if (GetKeyState(VK_MBUTTON) & 0x8000)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2436
	modifiers |= Button2Mask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2437
    if (GetKeyState(VK_RBUTTON) & 0x8000)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2438
	modifiers |= Button3Mask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2439
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  2440
    if ((modifiers & AnyButtonMask) == 0) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  2441
	__eatingMouseEvents = 0;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  2442
    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2443
    return modifiers;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2444
}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2445
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2446
#ifndef PRE_01_APR_04
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2447
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2448
/* test whether a button is pressed but we think no button was pressed;
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2449
   in this case 0 (false) is returned otherwise true
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2450
*/
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2451
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2452
# define MustHandleButtonEvent()\
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2453
    (((__currentCapture == CAPTURE_NONE)       \
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2454
     && (   (GetKeyState(VK_LBUTTON) & 0x8000) \
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2455
	 || (GetKeyState(VK_MBUTTON) & 0x8000) \
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2456
	 || (GetKeyState(VK_RBUTTON) & 0x8000) \
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2457
	)                                      \
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2458
    ) ? 0 : 1)
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2459
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2460
#else
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2461
# define MustHandleButtonEvent()   1
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2462
#endif
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2463
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  2464
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2465
#ifdef HANDLE_VIEWGRAVITY
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2466
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2467
struct gravityCallBackInfo {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2468
    HWND parent;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2469
    int  currW, currH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2470
    int  newW, newH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2471
    int  parentWinX, parentWinY;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2472
};
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2473
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2474
static BOOL CALLBACK
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2475
gravityEnumeratorCallBack(hChild, iP)
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2476
    HWND hChild;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2477
    struct gravityCallBackInfo *iP;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2478
{
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2479
    localWindowInfo *lI;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2480
    int gravity;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2481
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2482
    if (lI = GETLOCALWINDOWINFOPTR(hChild)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2483
	if ((gravity = lI->viewGravity) != GRAVITY_NONE) {
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2484
	    RECT oldChildRct, oldChildWinRct;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2485
	    RECT newChildRct;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2486
	    int deltaW, deltaH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2487
	    int anyChange = 0;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2488
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2489
	    /*
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2490
	     * get its current bounds ...
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2491
	     */
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2492
	    GetClientRect(hChild, &oldChildRct);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2493
	    deltaW = iP->newW - iP->currW;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2494
	    deltaH = iP->newH - iP->currH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2495
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2496
	    GetWindowRect(hChild, &oldChildWinRct);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2497
	    oldChildRct.left = oldChildWinRct.left - iP->parentWinX;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2498
	    oldChildRct.top =  oldChildWinRct.top - iP->parentWinY;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2499
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2500
	    newChildRct = oldChildRct;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2501
	    switch (gravity) {
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2502
#if 0
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2503
		case GRAVITY_N:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2504
		    console_fprintf(stderr, "WinWorkstation [info]: Child %x: North gravity\n", hChild);
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2505
		    /*
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2506
		     * shift to the bottom, for a constant
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2507
		     * distance from the bottom edge;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2508
		     */
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2509
		    newChildRct.bottom += deltaH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2510
		    anyChange = 1;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2511
		    break;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2512
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2513
		case GRAVITY_W:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2514
		    console_fprintf(stderr, "WinWorkstation [info]: Child %x: West gravity\n", hChild);
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2515
		    /*
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2516
		     * shift to the right, for a constant
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2517
		     * distance from the right edge;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2518
		     */
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2519
		    newChildRct.right += deltaW;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2520
		    anyChange = 1;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2521
		    break;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2522
#endif
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2523
		case GRAVITY_S:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2524
		    console_fprintf(stderr, "WinWorkstation [info]: Child %x: South gravity\n", hChild);
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2525
		    /*
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2526
		     * shift to the bottom, for a constant
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2527
		     * distance from the bottom edge;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2528
		     */
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2529
		    newChildRct.top += deltaH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2530
		    newChildRct.bottom  += deltaH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2531
		    anyChange = 1;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2532
		    break;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2533
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2534
		case GRAVITY_E:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2535
		    console_fprintf(stderr, "WinWorkstation [info]: Child %x: East gravity\n", hChild);
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2536
		    /*
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2537
		     * shift to the right, for a constant
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2538
		     * distance from the right edge;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2539
		     */
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2540
		    newChildRct.right += deltaW;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2541
		    newChildRct.left  += deltaW;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2542
		    anyChange = 1;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2543
		    break;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2544
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2545
		case GRAVITY_SE:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2546
		    console_fprintf(stderr, "WinWorkstation [info]: Child %x: SouthEast gravity\n", hChild);
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2547
		    /*
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2548
		     * shift to the bottom-right, for a constant
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2549
		     * distance from the bottom-right edge;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2550
		     */
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2551
		    newChildRct.right += deltaW;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2552
		    newChildRct.left  += deltaW;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2553
		    newChildRct.top += deltaH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2554
		    newChildRct.bottom  += deltaH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2555
		    anyChange = 1;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2556
		    break;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2557
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2558
		default:
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2559
		    DPRINTF(("Child %x: other gravity\n", hChild));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2560
		    break;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2561
	    }
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2562
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2563
	    if (anyChange) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2564
		if ((newChildRct.left < 0)
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2565
		 || (newChildRct.top < 0)
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2566
		 || (newChildRct.right >= iP->newW)
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2567
		 || (newChildRct.bottom >= iP->newH)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2568
		    console_fprintf(stderr, "WinWorkstation [info]: dont move child to: %d/%d -> %d/%d\n",
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2569
				    newChildRct.left, newChildRct.top,
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2570
				    newChildRct.right, newChildRct.bottom);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2571
		} else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2572
		    console_fprintf(stderr, "WinWorkstation [info]: move child from %d/%d->%d/%d to: %d/%d->%d/%d\n",
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2573
				    oldChildRct.left, oldChildRct.top,
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2574
				    oldChildRct.right, oldChildRct.bottom,
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2575
				    newChildRct.left, newChildRct.top,
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2576
				    newChildRct.right, newChildRct.bottom);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2577
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2578
		    SetWindowPos(hChild, (HWND)0,
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2579
				 newChildRct.left, newChildRct.top,
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2580
				 0, 0,
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2581
				 /* SWP_NOSENDCHANGING | */
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2582
				 SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2583
		}
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2584
	    }
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2585
	}
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2586
    }
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2587
    return TRUE;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2588
}
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2589
#endif /* HANDLE_VIEWGRAVITY */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  2590
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2591
static void
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2592
ch2wch(char *in, wchar_t *out, int nMax)
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2593
{
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2594
    unsigned char *cp = (unsigned char *)in;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2595
    wchar_t *wcp = out;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2596
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2597
    while ((nMax > 1) && cp && *cp) {
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2598
	*wcp++ = *cp++;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2599
	nMax--;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2600
    }
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2601
    *wcp = 0;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2602
}
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2603
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  2604
static int
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2605
winEventProcessing(hWnd, message, wParam, lParam, pDefault)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2606
    HWND hWnd;                /* window handle                   */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2607
    UINT message;             /* type of message                 */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2608
    UINT wParam;              /* additional information          */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2609
    LONG lParam;              /* additional information          */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2610
    int *pDefault;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2611
{
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  2612
    int curButton;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2613
    int x, y, w, h;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  2614
    int isNative = 0;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2615
    UINT evTime;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2616
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2617
    /* kludge - info is in msg-struct,
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2618
     * but lost here. (slightly inexact ... but who cares)
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2619
     */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2620
    evTime = lastMSGTime;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2621
    lastMSGTime = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2622
    if (evTime == 0) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2623
	lastMSGTime = GetTickCount();
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2624
    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2625
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2626
/*
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2627
    EVENT_PRINTF(("winEvent hWin=0x%x message=0x%x wP=0x%x lP=0x%x\n",
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2628
			hWnd, message, wParam, lParam));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2629
*/
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2630
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2631
    if (hWnd) {
4443
96e956cf9acf plugin stuff now in librun
Claus Gittinger <cg@exept.de>
parents: 4441
diff changeset
  2632
	if (message != WM_MOUSEMOVE) {
96e956cf9acf plugin stuff now in librun
Claus Gittinger <cg@exept.de>
parents: 4441
diff changeset
  2633
	    lastMotionWnd = 0;
96e956cf9acf plugin stuff now in librun
Claus Gittinger <cg@exept.de>
parents: 4441
diff changeset
  2634
	}
96e956cf9acf plugin stuff now in librun
Claus Gittinger <cg@exept.de>
parents: 4441
diff changeset
  2635
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2636
	isNative = (GetWindow_flag(hWnd) & LI_NATIVEWIN);
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2637
	if (isNative) {
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  2638
	    NDPRINTF(("event %d (0x%x) for nativeWindow\n", message, message));
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2639
	}
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2640
    }
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2641
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2642
    /*
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2643
     * messages which are enqueued to be handled by the view thread
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2644
     */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2645
    switch (message) {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2646
	case WM_THREAD_CREATEWINDOW:
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2647
	    EVENT_PRINTF(("*WM_THREAD_CREATEWINDOW\n"));
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2648
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2649
	    {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2650
		createWindowInfo *cwi = (createWindowInfo *)(lParam);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2651
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  2652
		if ((cwi->sequenceNr == wParam)
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2653
		 && (cwi->sequenceNr != INVALIDATED_CWI)) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2654
		    cwi->sequenceNr = INVALIDATED_CWI;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2655
		    cwi->infoWasRead = 1;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2656
		    if (cwi->newWinHandle == NULL) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2657
			HANDLE ev;
4366
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2658
			HANDLE hwnd;
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2659
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2660
			cwi->newWinHandle = hwnd = CreateWindowExW(
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2661
					    cwi->winStyleBitsEx,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2662
					    cwi->className,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2663
					    cwi->windowName,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2664
					    cwi->winStyleBits,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2665
					    cwi->x, cwi->y,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2666
					    cwi->dx, cwi->dy,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2667
					    cwi->parentHandle,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2668
					    NULL,           /* menu */
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2669
					    (HANDLE) __getHInstance(),
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2670
					    cwi->localWindowInfo
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  2671
					   );
5072
fcd3884582e0 unicode stuff
Claus Gittinger <cg@exept.de>
parents: 5067
diff changeset
  2672
4366
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2673
			if (hwnd == NULL) {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2674
			    cwi->errCode = GetLastError();
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2675
			    console_fprintf(stderr, "WinWorkstation [info]: CreateWindow failed: %d (0x%x) [%d]\n",
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  2676
						cwi->errCode, cwi->errCode, __LINE__);
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2677
			} else {
4366
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2678
			    SETLOCALWINDOWINFOPTR(hwnd, cwi->localWindowInfo);
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2679
#ifdef DEBUG /* PARANOIA */
4366
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2680
			    if (GETLOCALWINDOWINFOPTR(hwnd) != cwi->localWindowInfo) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  2681
			       console_fprintf(stderr, "lI-Error\n");
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2682
			    }
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2683
#endif
4366
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2684
			    SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0,
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2685
					/* SWP_NOOWNERZORDER |*/
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2686
					SWP_NOSENDCHANGING | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2687
			}
4366
8d7e9227961d raise new views
Claus Gittinger <cg@exept.de>
parents: 4364
diff changeset
  2688
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2689
			ev = cwi->hCreateEvent;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2690
			if (ev) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2691
			    SetEvent(ev);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2692
			}
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2693
		    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2694
		} else {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2695
		    DPRINTF(("obsolete createWindow message %x ignored\n", cwi->sequenceNr));
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2696
		}
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2697
	    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2698
	    *pDefault = 0;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2699
	    return 0;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  2700
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  2701
	case WM_THREAD_DESTROYWINDOW:
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2702
	    {
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2703
		HBRUSH br;
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2704
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  2705
		br = GetWindow_viewBgBrush(hWnd);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  2706
		if (br) {
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
  2707
		    SetWindow_viewBgBrush(hWnd, 0);
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  2708
		    _DeleteBrushIfNotInCache(br, __LINE__);
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
  2709
		}
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
  2710
	    }
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2711
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2712
#ifdef CACHE_LAST_DC
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2713
	    if (lastGcData && (lastGcHWIN == hWnd)) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2714
		_releaseDC(lastGcData);
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2715
	    }
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2716
#endif
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2717
#ifdef CACHE_LAST_WM_PAINT_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2718
	    if (last_wm_paint_dc && (last_wm_paint_win == hWnd)) {
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2719
		ReleaseDC(hWnd, last_wm_paint_dc);
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2720
		last_wm_paint_win = last_wm_paint_dc = 0;
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2721
	    }
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2722
#endif
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2723
	    if (! DestroyWindow(hWnd)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2724
		DPRINTF(("DestroyWindow ERROR\n"));
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2725
	    } else {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2726
#ifdef COUNT_RESOURCES
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2727
		__cnt_createWindows--;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2728
		RESPRINTF(("DestroyWindow -> %d\n", __cnt_createWindows));
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2729
#endif
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2730
	    }
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2731
	    *pDefault = 0;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2732
	    return 0;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2733
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2734
	case WM_CREATE:
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2735
	    {
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2736
#ifdef SETLOCALINFO_IN_CREATE /* no longer */
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2737
		localWindowInfo *lI;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2738
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2739
		CREATESTRUCT *lpcs = (LPCREATESTRUCT) lParam; // structure with creation data
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2740
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2741
		lI = lpcs->lpCreateParams;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2742
		EVENT_PRINTF(("WM_CREATE lI=%x\n", lI));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2743
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2744
		SETLOCALWINDOWINFOPTR(hWnd, lI);
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2745
# ifdef SUPERDEBUG
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2746
		if (GETLOCALWINDOWINFOPTR(hWnd) != lpcs->lpCreateParams) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2747
		    PRINTF(("SETLOCALWINDOWINFOPTR ERROR\n"));
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2748
		}
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2749
# endif /* SUPERDEBUG */
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2750
#endif
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  2751
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2752
		*pDefault = 0;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2753
#ifdef COUNT_RESOURCES
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2754
		__cnt_createWindows++;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2755
		RESPRINTF(("CreateWindows %d\n",__cnt_createWindows));
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2756
#endif
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2757
	    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2758
	    break;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2759
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2760
	case WM_CLOSE:
2682
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  2761
	    EVENT_PRINTF(("WM_CLOSE\n"));
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  2762
	    if (! destroyWin) {
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  2763
		// (flag, hWnd, message, wParam, arg1, arg2, arg3, arg4, evTime)
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  2764
		enqEvent(0, hWnd, WM_CLOSE, wParam, 0, 0, 0, 0, EV_NOTIME);
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  2765
	    } else {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2766
		destroyWin = 0;
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2767
		{
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2768
		    HBRUSH br;
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2769
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  2770
		    br = GetWindow_viewBgBrush(hWnd);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  2771
		    if (br) {
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
  2772
			SetWindow_viewBgBrush(hWnd, 0);
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
  2773
			_DeleteBrushIfNotInCache(br, __LINE__);
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2774
		    }
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2775
		}
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2776
#ifdef CACHE_LAST_DC
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2777
		if (lastGcData && (lastGcHWIN == hWnd)) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2778
		    _releaseDC(lastGcData);
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2779
		}
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  2780
#endif
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2781
#ifdef CACHE_LAST_WM_PAINT_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2782
		if (last_wm_paint_dc && (last_wm_paint_win == hWnd)) {
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2783
		    ReleaseDC(hWnd, last_wm_paint_dc);
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2784
		    last_wm_paint_win = last_wm_paint_dc = 0;
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2785
		}
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
  2786
#endif
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2787
		if (! DestroyWindow(hWnd)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2788
		    DPRINTF(("DestroyWindow ERROR\n"));
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2789
		} else {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2790
#ifdef COUNT_RESOURCES
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2791
		    __cnt_createWindows--;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2792
		    RESPRINTF(("DestroyWindow -> %d\n", __cnt_createWindows));
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2793
#endif
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2794
		}
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2795
	    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2796
	    *pDefault = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2797
	    return 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2798
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  2799
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2800
	case WM_DESTROY:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2801
	    {
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2802
		char *n = 0;
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2803
		localWindowInfo *lI;
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2804
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2805
		lI = GETLOCALWINDOWINFOPTR(hWnd);
2682
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  2806
		EVENT_PRINTF(("WM_DESTROY %x li=%x\n", hWnd, lI));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2807
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  2808
#ifdef TOPWINDOWCLASS
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2809
		if (lI) {
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2810
		    if (lI->flag & LI_TOPWIN) {
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2811
			n = (char*) malloc(200);
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2812
			GetClassName(hWnd,n,200);
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2813
		    }
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2814
		    /* freeing now done in other thread */
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2815
		}
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2816
#endif
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2817
		SETLOCALWINDOWINFOPTR(hWnd, 0);
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2818
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2819
#ifdef FREE_LI_IN_STX_PROCESS
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  2820
		enqEvent(0, hWnd, WM_DESTROY, wParam, (int)n, (int)lI, 0, 0, EV_NOTIME);
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2821
#else
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2822
		if (lI) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2823
		    free(lI);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2824
		}
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  2825
		enqEvent(0, hWnd, WM_DESTROY, wParam, (int)n, 0, 0, 0, EV_NOTIME);
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2826
#endif
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2827
		*pDefault = 0;
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  2828
		return 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2829
	    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2830
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  2831
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2832
	case WM_GETMINMAXINFO:
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2833
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2834
#ifndef PRE_13_APR_04_POSCHANGED_IN_EXITSIZEMOVE
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2835
	    if (inMove) {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2836
		*pDefault = 0;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2837
		return 0;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2838
	    }
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2839
#endif
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2840
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2841
	    {
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2842
		int minW, maxW;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2843
		localWindowInfo *lI;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  2844
		LPMINMAXINFO lpmmi;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2845
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2846
		lpmmi = (LPMINMAXINFO) lParam;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2847
2682
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  2848
		EVENT_PRINTF2(("WM_GETMINMAXINFO handle=%x got min: %d/%d\n",
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2849
			    hWnd,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2850
			    lpmmi->ptMinTrackSize.x,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2851
			    lpmmi->ptMinTrackSize.y));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2852
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2853
		lI = GETLOCALWINDOWINFOPTR(hWnd);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2854
		if (lI && (lI->minWidth) && (lI->maxWidth)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2855
		  lpmmi->ptMaxSize.x = lI->maxWidth;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2856
		  lpmmi->ptMaxSize.y = lI->maxHeight;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2857
		  lpmmi->ptMaxTrackSize.x = lI->maxWidth;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2858
		  lpmmi->ptMaxTrackSize.y = lI->maxHeight;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2859
		  lpmmi->ptMinTrackSize.x = lI->minWidth;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2860
		  lpmmi->ptMinTrackSize.y = lI->minHeight;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  2861
2682
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  2862
		  EVENT_PRINTF3(("WM_GETMINMAXINFO handle=%x return min: %d/%d max: %d/%d\n",
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2863
				  hWnd,
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2864
				  lI->minWidth, lI->minHeight,
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2865
				  lI->maxWidth, lI->maxHeight));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2866
		}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2867
		*pDefault = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2868
	    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2869
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  2870
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2871
	case WM_SETCURSOR:
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2872
	    {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2873
		HCURSOR curs;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2874
		int hitCode;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2875
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2876
		hitCode = LOWORD(lParam);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2877
		if (hitCode != HTCLIENT) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2878
		    /*
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2879
		     * not in client area ...
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2880
		     */
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2881
		    return 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2882
		}
2240
bc95654feffb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2239
diff changeset
  2883
		DDPRINTF(("WM_SETCURSOR\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2884
		curs = GetWindow_Cursor(hWnd);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2885
		if (curs) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2886
		    SetCursor(curs);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2887
		    *pDefault = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2888
		    return 1;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2889
		}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  2890
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2891
	    return 0;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  2892
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  2893
	case WM_WINDOWPOSCHANGED:
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2894
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2895
#ifndef PRE_13_APR_04_POSCHANGED_IN_EXITSIZEMOVE
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2896
	    if (inMove) {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2897
		*pDefault = 0;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2898
		return 0;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2899
	    }
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2900
#endif
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2901
	    if (hWnd == __rootWinSpezial) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2902
		/* can this happen ? */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2903
		*pDefault = 1;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2904
		return 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2905
	    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2906
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2907
	    if (! inMove && (__currentCapture == CAPTURE_NONE)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2908
		POINT p;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2909
		HWND hWndChild,hWndTemp;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2910
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2911
		p.x = evRootX;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2912
		p.y = evRootY;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2913
		ScreenToClient(hWnd, &p);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2914
		hWndChild = hWnd; //hWndChild = ChildWindowFromPoint(hWnd,p);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2915
		do {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2916
		    hWndTemp = hWndChild;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2917
		    hWndChild = ChildWindowFromPointEx(hWndTemp,p,CWP_SKIPINVISIBLE|CWP_SKIPDISABLED|CWP_SKIPTRANSPARENT);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2918
		} while ((hWndChild) && (hWndChild != hWndTemp));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2919
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2920
		if (hWndChild /*&& (hWndChild != hWnd)*/) {
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2921
		    if (hWndChild != __currentPointerView) {
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  2922
			int modifiers = getModifiers();
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  2923
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2924
			if (__currentPointerView) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2925
			    if (inSizeMove) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2926
				if (needDelayedMouseLeaveWindow == NULL) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2927
				    needDelayedMouseLeaveWindow = __currentPointerView;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2928
				}
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2929
			    } else {
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2930
				if (GetWindow_eventMask(__currentPointerView) & LeaveWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  2931
				    enqEvent(LeaveWindowMask, __currentPointerView, __WM_MOUSELEAVE, 0, -1, -1, 0, modifiers, EV_NOTIME);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2932
				    SetWindow_mouseXY(__currentPointerView, -9999, -9999);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2933
				}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2934
			    }
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2935
			    __currentPointerView = 0;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2936
			}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2937
			if (inSizeMove) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2938
			    needDelayedMouseEnterWindow = hWndChild;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2939
			    delayedMouseEnterX = evRootX;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2940
			    delayedMouseEnterY = evRootY;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2941
			} else {
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2942
			    if (GetWindow_eventMask(hWndChild) & EnterWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  2943
				enqEvent(EnterWindowMask, hWndChild, __WM_MOUSEENTER, 0, evRootX, evRootY, 0, modifiers, EV_NOTIME);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2944
				SetWindow_mouseXY(hWndChild, evRootX, evRootY);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  2945
			    }
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  2946
			    // SetFocus(hWndChild);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2947
			}
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  2948
			__currentPointerView = hWndChild;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2949
		    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  2950
		}
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  2951
	    }
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  2952
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  2953
	    /*
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  2954
	     * ignore child window messages ...
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  2955
	     */
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  2956
	    if (GetParent(hWnd) != NULL) {
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  2957
		break;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  2958
	    }
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  2959
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  2960
	    {
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  2961
		WINDOWPOS *wp = (WINDOWPOS *)lParam;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2962
		RECT rct, dRect;
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  2963
		int x, y, w, h;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2964
		int dW, dH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2965
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2966
#if 0
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2967
		dRect.left = 0;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2968
		dRect.top = 0;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2969
		dRect.right = 100;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2970
		dRect.bottom = 100;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2971
		winStyleBits = GetWindowLong(hWnd, GWL_STYLE);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2972
		winExStyleBits = GetWindowLong(hWnd, GWL_EXSTYLE);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2973
		AdjustWindowRectEx(&dRect, winStyleBits, 0, winExStyleBits);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2974
		dW = dRect.right - dRect.left;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2975
		dH = dRect.bottom - dRect.top;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  2976
#endif
2331
71a2798c7413 md's out-of-view pointer-leave fixes (when grabbed)
Claus Gittinger <cg@exept.de>
parents: 2329
diff changeset
  2977
		GetClientRect(hWnd, &rct);
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  2978
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  2979
		x = rct.left;
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  2980
		y = rct.top;
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  2981
		w = rct.right - rct.left;
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  2982
		h = rct.bottom - rct.top;
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  2983
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2984
		if (__debug__) {
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2985
		    EVENT_PRINTF(("WM_WINDOWPOSCHANGED ["));
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2986
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2987
		    if (wp->flags & SWP_NOSIZE) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2988
			EVENT_PRINTF(("NOSIZE "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2989
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2990
		    if (wp->flags & SWP_NOMOVE) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2991
			EVENT_PRINTF(("NOMOVE "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2992
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2993
		    if (wp->flags & SWP_NOZORDER) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2994
			EVENT_PRINTF(("NOZORDER "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2995
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2996
		    if (wp->flags & SWP_NOREDRAW) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  2997
			EVENT_PRINTF(("NOREDRAW "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2998
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  2999
		    if (wp->flags & SWP_NOACTIVATE) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3000
			EVENT_PRINTF(("NOACTIVATE "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3001
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3002
		    if (wp->flags & SWP_FRAMECHANGED) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3003
			EVENT_PRINTF(("FRAMECHANGED "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3004
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3005
		    if (wp->flags & SWP_NOCOPYBITS) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3006
			EVENT_PRINTF(("NOCOPYBITS "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3007
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3008
		    if (wp->flags & SWP_NOOWNERZORDER) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3009
			EVENT_PRINTF(("NOOWNERZORDER "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3010
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3011
		    if (wp->flags & SWP_NOSENDCHANGING) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3012
			EVENT_PRINTF(("NOSENDCHANGING "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3013
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3014
		    if (wp->flags & SWP_DEFERERASE) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3015
			EVENT_PRINTF(("DEFERERASE "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3016
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3017
		    if (wp->flags & SWP_ASYNCWINDOWPOS) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3018
			EVENT_PRINTF(("ASYNCWINDOWPOS "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3019
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3020
		    if (wp->flags & SWP_HIDEWINDOW) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3021
			EVENT_PRINTF(("HIDEWINDOW "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3022
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3023
		    if (wp->flags & SWP_SHOWWINDOW) {
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3024
			EVENT_PRINTF(("SHOWWINDOW "));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3025
		    }
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3026
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3027
		    EVENT_PRINTF(("] %d/%d %d/%d flags:%d (0x%x) ->",
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3028
				wp->x, wp->y, wp->cx, wp->cy, wp->flags, wp->flags));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3029
		    EVENT_PRINTF(("  client rect now: %d/%d %d/%d\n",x, y, w, h));
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  3030
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  3031
		} /* __debug__ */
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3032
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3033
		if ((w == 0) && (h == 0)) {
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3034
		    EVENT_PRINTF(("w,h = 0.\n"));
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3035
		    if (! GetWindow_iconified(hWnd)) {
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3036
			EVENT_PRINTF(("iconified.\n"));
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3037
			SetWindow_iconified(hWnd, 1);
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3038
			DPRINTF(("WM_WINDOWPOSCHANGED to iconified (flags:0x%x)\n", wp->flags));
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3039
			enqEvent(0, hWnd, __WM_ICONIFIED, 1, 0, 0, 0, 0, EV_NOTIME);
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3040
		    }
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3041
		} else {
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3042
		    if (GetWindow_iconified(hWnd)) {
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3043
			EVENT_PRINTF(("deiconified.\n"));
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3044
			SetWindow_iconified(hWnd, 0);
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3045
			DPRINTF(("WM_WINDOWPOSCHANGED to deiconified (flags:0x%x)\n", wp->flags));
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3046
			enqEvent(0, hWnd, __WM_ICONIFIED, 0, 0, 0, 0, 0, EV_NOTIME);
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3047
		    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  3048
		    if (!(wp->flags & SWP_NOSIZE)
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3049
		     || !(wp->flags & SWP_NOMOVE)) {
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3050
			EVENT_PRINTF(("enq event %x: %d, %d, %d, %d\n", hWnd, x, y, w, h));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3051
#ifdef COMPRESS_WINDOWPOSCHANGED
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3052
			/*
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3053
			 * remember the current
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3054
			 * window and size;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3055
			 * This allows the backend to ignore
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3056
			 * intermediate events.
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3057
			 */
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3058
			lastPos_win = 0;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3059
			lastPos_w = w;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3060
			lastPos_h = h;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3061
			lastPos_x = x;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3062
			lastPos_y = y;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3063
			lastPos_win = hWnd;
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3064
#endif
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3065
			enqEvent(0, hWnd, WM_WINDOWPOSCHANGED, 0, x, y, w, h, EV_NOTIME);
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3066
		    } else {
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3067
			EVENT_PRINTF(("no event due to SWP_NOSIZE/SWP_NOMOVE.\n"));
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3068
		    }
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  3069
		}
2752
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  3070
	    }
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  3071
	    *pDefault = 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3072
	    return 0;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3073
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3074
	case WM_ERASEBKGND:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3075
	    DPRINTFIF(__debug_WM_ERASEBKGND__ , ("WM_ERASEBKGND\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3076
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3077
		NDPRINTF(("WM_ERASEBKGND for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3078
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3079
	    }
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3080
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3081
#ifndef PRE_21_NOV
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3082
	    *pDefault = 0;
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3083
	    return 0;
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3084
#else
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3085
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3086
	    if (GetWindow_flag(hWnd) & LI_INPUTWIN) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3087
		*pDefault = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3088
		return 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3089
	    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3090
	    if (hWnd == __rootWinSpezial) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3091
		*pDefault = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3092
		return 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3093
	    }
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3094
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3095
	    /* THIS_WORKS */
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3096
	    *pDefault = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3097
	    return 0;
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3098
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  3099
#endif  /* ! PRE_21_NOV */
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3100
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3101
	case WM_PAINT:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3102
	    DPRINTFIF(__debug_WM_PAINT__ , ("WM_PAINT ********************* "));
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3103
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3104
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3105
		NDPRINTF(("WM_PAINT for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3106
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3107
	    }
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  3108
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3109
#ifndef PRE_21_NOV
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3110
	    {   int n;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3111
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3112
		n = __generateExposes( hWnd, NULL, WM_PAINT, 0 );
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3113
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3114
		if( n <= 0 ) {
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3115
		    * pDefault = 1;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3116
		    return 0;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3117
		}
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3118
		* pDefault = 0;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3119
		return n;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  3120
	    }
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3121
#else
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3122
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3123
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3124
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3125
	    if (GetWindow_flag(hWnd) & LI_INPUTWIN) {
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3126
		*pDefault = 0;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3127
		return 0;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3128
	    }
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3129
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3130
	    if (hWnd == __rootWinSpezial) {
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3131
# ifdef THIS_MAKES_GUI_PAINTER_START_SLOW
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3132
		*pDefault = 0;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3133
# endif
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3134
		return 0;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3135
	    }
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3136
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3137
	    {
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3138
		int retVal;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3139
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  3140
# ifdef LATE_GENERATE_EXPOSE
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3141
		enqEvent(0, hWnd, __WM_PAINT, 0, 0, 0, 0, 0, EV_NOTIME);
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  3142
# else
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
  3143
		AQUIRE_DRAW_MUTEX
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3144
		retVal = __generateExposes(hWnd, NULL, WM_PAINT, WM_PAINT_CLEAR_EARLY);
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
  3145
		RELEASE_DRAW_MUTEX
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  3146
# endif
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3147
		switch (retVal) {
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  3148
		    case -1:  /* error */
2697
0fbd675cf5b2 update region processing
Claus Gittinger <cg@exept.de>
parents: 2696
diff changeset
  3149
			*pDefault = 0;
0fbd675cf5b2 update region processing
Claus Gittinger <cg@exept.de>
parents: 2696
diff changeset
  3150
			break;
2698
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  3151
		    case 0:   /* nothing generated */
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  3152
		    default:  /* generated events */
3d3fce06ebfa expose Region for scrolls
Claus Gittinger <cg@exept.de>
parents: 2697
diff changeset
  3153
			break;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3154
		}
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3155
# ifdef THIS_IS_BAD
2711
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
  3156
		*pDefault = 0;
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
  3157
		return 1;
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  3158
# endif
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  3159
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3160
	    return 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3161
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  3162
#endif  /* ! PRE_21_NOV */
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
  3163
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3164
	case WM_SIZE:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3165
	    DPRINTFIF(__debug_WM_SIZE__ , ("WM_SIZE\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3166
	    /*
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3167
	     * ignore child window messages ...
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3168
	     */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3169
	    if (GetParent(hWnd) != NULL) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3170
		*pDefault = 0;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3171
		return 0;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3172
	    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3173
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3174
	    switch (wParam) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3175
		case SIZE_MAXIMIZED:     /* default handling */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3176
		case SIZE_MINIMIZED:     /* default handling */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3177
		case SIZE_RESTORED:      /* default handling */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3178
		    {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3179
			RECT rct;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3180
			int x, y, w, h;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3181
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3182
			GetClientRect(hWnd, &rct);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3183
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3184
			x = rct.left;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3185
			y = rct.top;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3186
			w = rct.right - rct.left;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3187
			h = rct.bottom - rct.top;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3188
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3189
			EVENT_PRINTF(("WM_MIN/MAX/RESTORED\n"));
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3190
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3191
			if ((w == 0) && (h == 0)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3192
			    /*
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3193
			     * iconified ...
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3194
			     */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3195
			    if (! GetWindow_iconified(hWnd)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3196
				SetWindow_iconified(hWnd, 1);
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3197
				enqEvent(0, hWnd, __WM_ICONIFIED, 1, 0, 0, 0, 0, EV_NOTIME);
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3198
			    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3199
			} else {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3200
			    if (GetWindow_iconified(hWnd)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3201
				SetWindow_iconified(hWnd, 0);
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3202
				enqEvent(0, hWnd, __WM_ICONIFIED, 0, 0, 0, 0, 0, EV_NOTIME);
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3203
			    }
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
  3204
			    EVENT_PRINTF(("enq event2 %x: %d, %d, %d, %d\n", hWnd, x, y, w, h));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3205
#ifdef COMPRESS_WINDOWPOSCHANGED
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3206
			    /*
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3207
			     * remember the current
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3208
			     * window and size;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3209
			     * This allows the backend to ignore
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3210
			     * intermediate events.
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3211
			     */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3212
			    lastPos_win = 0;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3213
			    lastPos_w = w;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3214
			    lastPos_h = h;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3215
			    lastPos_x = x;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3216
			    lastPos_y = y;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3217
			    lastPos_win = hWnd;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3218
#endif
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3219
			    enqEvent(0, hWnd, WM_WINDOWPOSCHANGED, 0, x, y, w, h, EV_NOTIME);
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3220
			}
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3221
		   }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3222
		   break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3223
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3224
		default:                 /* ignore */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3225
		    *pDefault = 0;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3226
		    return 0;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3227
	    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3228
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3229
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3230
	case WM_DROPFILES:
5230
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  3231
	    DPRINTFIF(__debug_WM_DROPFILES__ , ("WM_DROPFILES\n"));
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3232
	    enqEvent(0, hWnd, message, wParam, 0, 0, 0, 0, EV_NOTIME);
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3233
	    break;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3234
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3235
	case WM_SHOWWINDOW:
5230
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  3236
	    DPRINTFIF(__debug_WM_SHOWWINDOW__ , ("WM_SHOWWINDOW\n"));
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3237
	    enqEvent(0, hWnd, message, wParam, 0, 0, 0, 0, EV_NOTIME);
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3238
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3239
		NDPRINTF(("WM_SHOWWINDOW for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3240
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3241
	    }
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3242
	    *pDefault = 0;
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  3243
	    break;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3244
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3245
	case WM_MOUSEACTIVATE :
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3246
	    DPRINTFIF(__debug_WM_MOUSEACTIVATE__ , ("WM_MOUSEACTIVATE h=%x parent=%x\n", hWnd, GetParent(hWnd)));
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3247
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3248
	    /*
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3249
	     * ignore child window messages ...
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3250
	     */
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3251
	    if (GetParent(hWnd)) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3252
		return 0;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3253
	    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3254
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3255
	    *pDefault = 0;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3256
	    if ((hWnd == __rootWinSpezial) || (hWnd == GetActiveWindow())) {
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3257
		DDPRINTF(("NOACTIVATE (root or already)\n"));
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3258
		return MA_NOACTIVATE;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3259
	    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3260
	    if (LOWORD(lParam) != HTCLIENT) {
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3261
		DDPRINTF(("ACTIVATE (not client)\n"));
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3262
		return MA_ACTIVATE;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3263
	    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3264
	    if (__activateOnClick) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3265
		if (__ignoreButtonPressOnActivate) {
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3266
		    DDPRINTF(("ACTIVATE_EAT\n"));
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3267
		    /*
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3268
		     * windows is sooo stupid:
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3269
		     * it will send me a MOTION soon after, with the
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3270
		     * to the click location, with the buttonState down.
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3271
		     * The app will interpret that as a pressed motion and
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3272
		     * do a selection (if in a textview).
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3273
		     * To prevent this, we set a flag here, that the following
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3274
		     * motion is to be suppressed.
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3275
		     * Until the mouse is released.
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3276
		     */
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3277
		    __eatingMouseEvents = 1;
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3278
		    return MA_ACTIVATEANDEAT;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3279
		}
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3280
		DDPRINTF(("ACTIVATE\n"));
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3281
		return MA_ACTIVATE;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3282
	    }
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3283
	    DDPRINTF(("NO_ACTIVATE\n"));
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3284
	    return MA_NOACTIVATE;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3285
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  3286
	case WM_NCHITTEST:
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3287
	    EVENT_PRINTF2(("WM_NCHITTEST\n"));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3288
	    if (hWnd == __rootWinSpezial) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3289
		*pDefault = 0;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3290
		return HTCLIENT;
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  3291
	    }
2253
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
  3292
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3293
2253
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
  3294
	case WM_NCACTIVATE:
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
  3295
	    EVENT_PRINTF(("WM_NCACTIVATE\n"));
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
  3296
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3297
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3298
	case WM_ACTIVATE:
3963
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3299
	    CPRINTF(("WM_ACTIVATE %s h=%x\n", LOWORD(wParam) ? "active" : "inactive", hWnd));
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3300
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3301
	    switch (LOWORD(wParam)) {
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3302
		case WA_INACTIVE:
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3303
		    EVENT_PRINTF2(("WM_ACTIVATE inactive h=%x\n", hWnd));
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3304
		    break;
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3305
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3306
		case WA_ACTIVE:
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3307
		    EVENT_PRINTF2(("WM_ACTIVATE active h=%x\n", hWnd));
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3308
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3309
#ifdef THIS_DOES_NOT_AVOID_DOUBLE_REPAINTS
3963
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3310
		    __generateRecursiveExposes(hWnd, WM_PAINT);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3311
#endif /* sigh */
3963
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3312
		    break;
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3313
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3314
		case WA_CLICKACTIVE:
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3315
		    EVENT_PRINTF2(("++ WM_ACTIVATE clkactive h=%x\n", hWnd));
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3316
		    break;
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3317
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3318
		default:
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3319
		    EVENT_PRINTF2(("WM_ACTIVATE ? h=%x\n", hWnd));
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3320
		    break;
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3321
	    }
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3322
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3323
#ifndef PRE_25_NOV_03
3963
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3324
	    if (__currentCapture == CAPTURE_NONE) {
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3325
		HWND  newHWnd = 0;
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3326
		POINT newPoint;
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3327
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3328
		if (LOWORD(wParam) != WA_INACTIVE) {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3329
		    if (MustHandleButtonEvent()) {
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3330
			newPoint.x = evRootX;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3331
			newPoint.y = evRootY;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3332
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3333
			newHWnd = WindowFromPoint (newPoint);
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3334
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3335
			if (newHWnd) {
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  3336
			    if ( (newHWnd == hWnd) || IsChild(hWnd, newHWnd) ) {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3337
				ScreenToClient (newHWnd, & newPoint);
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3338
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3339
				if ((newPoint.x < 0) || (newPoint.y < 0)) {
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  3340
				    newHWnd = 0;
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3341
				}
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  3342
			    } else {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3343
				newHWnd = 0;
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3344
			    }
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3345
			}
3963
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3346
		    }
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3347
		}
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3348
		CPRINTF(( "Old Handle: %x New Handle: %x  x:%d y:%d\n", __currentPointerView, newHWnd, newPoint.x, newPoint.y));
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3349
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3350
		if (newHWnd != __currentPointerView) {
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3351
		    int modifiers = getModifiers();
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3352
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3353
		    if (__currentPointerView) {
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3354
			if (GetWindow_eventMask(__currentPointerView) & LeaveWindowMask) {
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3355
			    enqEvent(LeaveWindowMask, __currentPointerView, __WM_MOUSELEAVE, 0, -1, -1, 0, modifiers, EV_NOTIME);
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3356
			    SetWindow_mouseXY(__currentPointerView, -9999, -9999);
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3357
			}
3963
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3358
		    }
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3359
		    __currentPointerView = newHWnd;
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3360
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3361
		    if (GetWindow_eventMask(__currentPointerView) & LeaveWindowMask) {
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3362
			enqEvent(EnterWindowMask, __currentPointerView, __WM_MOUSEENTER, 0, newPoint.x, newPoint.y, 0, modifiers, EV_NOTIME);
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3363
			SetWindow_mouseXY(__currentPointerView, newPoint.x, newPoint.y);
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3364
		    }
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3365
		}
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3366
	    }
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3367
#endif
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3368
	    enqEvent(0, hWnd, WM_ACTIVATE, wParam, 0, 0, 0, 0, EV_NOTIME);
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3369
df6bc1548520 translate root coordinates to view coordinates in WM_ACTIVATE enterMouse#CVS: ----------------------------------------------------------------------
ca
parents: 3962
diff changeset
  3370
	    if (isNative) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3371
		return 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3372
	    }
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  3373
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3374
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3375
	case WM_SYSCHAR:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3376
	    EVENT_PRINTF2(("WM_SYSCHAR h=%x %x\n", hWnd, wParam));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3377
	    goto commonChar;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3378
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3379
#ifdef WM_UNICHAR
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3380
	/* does not work, anyway */
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3381
	case WM_UNICHAR:
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3382
	    DPRINTFIF(__debug_WM_CHAR__ , ("WM_UNICHAR h=%x %x\n", hWnd, wParam));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3383
	    if (wParam == UNICODE_NOCHAR) {
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3384
		/* this is a query from windows to see if I am able to receive unicode... */
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3385
		*pDefault = 0;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3386
		return 1;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3387
	    }
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3388
	    goto commonChar;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3389
#endif
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3390
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3391
	case WM_CHAR:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3392
	    DPRINTFIF(__debug_WM_CHAR__ , ("WM_CHAR h=%x %x\n", hWnd, wParam));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3393
#if 0
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3394
	    EVENT_PRINTF2(("WM_CHAR h=%x %x\n", hWnd, wParam));
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3395
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3396
	commonChar:
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3397
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3398
		NDPRINTF(("WM_CHAR for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3399
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3400
	    }
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3401
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3402
	    {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3403
		HWND destWindow;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3404
		int evMask;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3405
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3406
		if (__focusFollowsMouse) {
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3407
		    destWindow = __currentPointerView;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3408
		    if (destWindow == 0) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3409
			destWindow = hWnd;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3410
		    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3411
		} else {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3412
		    destWindow = hWnd;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3413
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3414
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3415
		evMask = GetWindow_eventMask(destWindow);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3416
		if (evMask & (KeyPressMask | KeyReleaseMask)) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3417
		    POINT p;
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3418
		    int modifiers = getModifiers();
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3419
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3420
		    p.x = evRootX;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3421
		    p.y = evRootY;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3422
		    ScreenToClient(destWindow, &p);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3423
		    x = p.x;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3424
		    y = p.y;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3425
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3426
		    DPRINTFIF(__debug_WM_CHAR__ , ("key:%x modifiers: %x\n", wParam, modifiers));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3427
		    if (evMask & KeyPressMask)
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3428
			enqEvent(KeyPressMask, destWindow, WM_KEYDOWN, wParam, x, y, lParam, (modifiers | TRANSLATED_KEY), evTime);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3429
		    if (evMask & KeyReleaseMask)
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3430
			enqEvent(KeyReleaseMask, destWindow, WM_KEYUP, wParam, x, y, lParam, (modifiers | TRANSLATED_KEY), evTime);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3431
		}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3432
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3433
	    *pDefault = 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3434
	    return 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3435
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3436
	case WM_KEYUP:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3437
	    DPRINTFIF(__debug_WM_KEYUP__ , ("WM_KEYUP h=%x %x\n", hWnd, wParam));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3438
	    goto commonKeyUp;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3439
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3440
	case WM_SYSKEYUP:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3441
	    DPRINTFIF(__debug_WM_KEYUP__ , ("WM_SYSKEYUP %x\n, wParam"));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3442
	commonKeyUp:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3443
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3444
		NDPRINTF(("WM_KEYUP/WM_SYSKEYUP for native - default handling\n"));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3445
		return 0;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3446
	    }
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3447
	    {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3448
		HWND destWindow;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3449
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3450
		if (__focusFollowsMouse) {
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3451
		    destWindow = __currentPointerView;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3452
		    if (destWindow == 0) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3453
			destWindow = hWnd;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3454
		    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3455
		} else {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3456
		    destWindow = hWnd;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3457
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3458
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3459
		if (GetWindow_eventMask(destWindow) & KeyReleaseMask) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3460
		    POINT p;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3461
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3462
		    p.x = evRootX;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3463
		    p.y = evRootY;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3464
		    ScreenToClient(destWindow, &p);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3465
		    x = p.x;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3466
		    y = p.y;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3467
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3468
		    enqEvent(KeyReleaseMask, destWindow, message, wParam, x, y, lParam, getModifiers(), evTime);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3469
		}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3470
	    }
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3471
	    *pDefault = 0;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3472
	    return 0;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3473
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3474
	case WM_SYSKEYDOWN:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3475
	    DPRINTFIF(__debug_WM_KEYDOWN__ , ("WM_SYSKEYDOWN %x\n, wParam"));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3476
	    goto commonKey;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3477
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3478
	case WM_KEYDOWN:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3479
	    DPRINTFIF(__debug_WM_KEYDOWN__ , ("WM_KEYDOWN h=%x %x\n", hWnd, wParam));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3480
	commonKey:
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3481
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3482
		NDPRINTF(("WM_KEYDOWN/WM_SYSKEYDOWN for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3483
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3484
	    }
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3485
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3486
#ifdef EXIT_WITH_3_CTRL_Cs
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3487
	    if ((msg.wParam == 'c')
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3488
	     && (GetKeyState(VK_CONTROL) & 0x8000)) {
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3489
		/* CTRL-C */
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3490
		if (ctrl_c_count++ > 3)  /* for debugging */
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3491
		    exit(1);
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3492
	    } else {
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3493
		if (msg.wParam != VK_CONTROL)
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3494
		    ctrl_c_count = 0;
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3495
	    }
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3496
#endif
3564
48b86448bddc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3562
diff changeset
  3497
#ifdef RELEASE_CAPTURE_WITH_3_ESCAPEs
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3498
	    if (msg.wParam == VK_ESCAPE)) {
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3499
		/* ESCAPE */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  3500
		if (escape_count++ > 3) {
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3501
		    __currentCapture = CAPTURE_NONE;
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3502
		    ReleaseCapture();
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3503
		    CPRINTF(("ReleaseCapture <ESC>\n"));
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3504
		}
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3505
	    } else {
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3506
		escape_count = 0;
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3507
	    }
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3508
#endif
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3509
	    /* FALL INTO */
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  3510
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3511
	    {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3512
		HWND destWindow;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3513
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3514
		if (__focusFollowsMouse) {
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3515
		    destWindow = __currentPointerView;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3516
		    if (destWindow == 0) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3517
			destWindow = hWnd;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3518
		    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3519
		} else {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3520
		    destWindow = hWnd;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3521
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3522
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3523
		if (GetWindow_eventMask(destWindow) & KeyPressMask) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3524
		    POINT p;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3525
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3526
		    p.x = evRootX;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3527
		    p.y = evRootY;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3528
		    ScreenToClient(destWindow, &p);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3529
		    x = p.x;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3530
		    y = p.y;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3531
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3532
		    enqEvent(KeyPressMask, destWindow, message, wParam, x, y, lParam, getModifiers(), evTime);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3533
		}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3534
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3535
	    *pDefault = 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3536
	    return 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3537
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3538
#ifdef WM_MOUSEWHEEL
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3539
	case WM_MOUSEWHEEL:
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3540
	    {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3541
		HWND destWindow;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  3542
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  3543
		if (__focusFollowsMouse) {
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3544
		    destWindow = __currentPointerView;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3545
		    if (destWindow == 0) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3546
			destWindow = hWnd;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3547
		    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3548
		} else {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3549
		    destWindow = hWnd;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3550
		}
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3551
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3552
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3553
		EVENT_PRINTF(("WM_MOUSEWHEEL h=%x wP=%x lP=%x\n", hWnd, wParam, lParam));
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3554
		if (GetWindow_eventMask(destWindow) & KeyPressMask) {
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3555
		    POINT p;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3556
		    int delta;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3557
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3558
		    p.x = evRootX;
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3559
		    p.y = evRootY;
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3560
		    ScreenToClient(destWindow, &p);
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3561
		    x = p.x;
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3562
		    y = p.y;
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3563
		    delta = evTime - lastMouseWheelTime;
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3564
		    if (evTime < lastMouseWheelTime) {
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3565
			delta = (0xFFFFFFFF - lastMouseWheelTime) + evTime;
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3566
		    }
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3567
		    enqEvent(0, destWindow, message, wParam, x, y, lParam, getModifiers(), delta);
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
  3568
		}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3569
		lastMouseWheelTime = evTime;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3570
	    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3571
	    *pDefault = 0;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3572
	    return 0;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3573
#endif
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3574
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3575
	case WM_MOUSEMOVE:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3576
	    DPRINTFIF(__debug_WM_MOUSEMOVE__ , ("WM_MOUSEMOVE h=%x\n", hWnd));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3577
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3578
		NDPRINTF(("WM_MOUSEMOVE for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3579
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3580
	    }
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3581
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3582
	    if (hWnd != __currentPointerView) {
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3583
		if (! MustHandleButtonEvent()) {
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3584
		    *pDefault = 0;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3585
		    return 0;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3586
		}
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3587
	    }
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  3588
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3589
	    {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3590
		short x, y;
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3591
		int modifiers = getModifiers();
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3592
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3593
		x = (int)(short)LOWORD(lParam);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3594
		y = (int)(short)HIWORD(lParam);
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  3595
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3596
		if (__currentCapture == CAPTURE_NONE) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3597
		    if (hWnd != __currentPointerView) {
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3598
			HWND prevPointerView;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3599
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  3600
			prevPointerView = __currentPointerView;
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  3601
			if (prevPointerView) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3602
			    if (inSizeMove) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3603
				if (needDelayedMouseLeaveWindow == NULL) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3604
				    needDelayedMouseLeaveWindow = __currentPointerView;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3605
				}
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3606
			    } else {
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3607
				if (GetWindow_eventMask(__currentPointerView) & LeaveWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3608
				    enqEvent(LeaveWindowMask, __currentPointerView, __WM_MOUSELEAVE, 0, -1, -1, 0, modifiers, evTime);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3609
				    SetWindow_mouseXY(__currentPointerView, -9999, -9999);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3610
				}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3611
			    }
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3612
			    __currentPointerView = 0;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3613
			}
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3614
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3615
#if 0
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3616
			if (__activateOnClick) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3617
			    /*
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3618
			     * only send mouseEnter if the window belongs to the current
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3619
			     * active window
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3620
			     */
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3621
			    if (GetTopParent(prevPointerView) == GetTopParent(hWnd)) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3622
			    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3623
			}
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3624
#endif
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3625
			if (inSizeMove) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3626
			    needDelayedMouseEnterWindow = hWnd;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3627
			    delayedMouseEnterX = x;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3628
			    delayedMouseEnterY = y;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3629
			} else {
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3630
			    if (GetWindow_eventMask(hWnd) & EnterWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3631
				enqEvent(EnterWindowMask, hWnd, __WM_MOUSEENTER, 0, x, y, 0, modifiers, evTime);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3632
				SetWindow_mouseXY(hWnd, x, y);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3633
			    }
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3634
			}
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3635
			__currentPointerView = hWnd;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3636
		    }
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3637
		    DDPRINTF(("MouseMove %x\n", __currentPointerView));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3638
		} else {
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3639
		    CPRINTF(("MouseMove Capture %x\n", __currentPointerView));
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3640
		}
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3641
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3642
		if ((GetWindow_eventMask(__currentPointerView) & PointerMotionMask)
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3643
		 || (modifiers & AnyButtonMask)) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3644
		    if (! __eatingMouseEvents) {
3584
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3645
			if ((x == lastMotionX)
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3646
			 && (y == lastMotionY)
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3647
			 && (__currentPointerView == lastMotionWnd)) {
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3648
			    /* ignore */
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3649
			} else {
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3650
			    lastMotionX = x;
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3651
			    lastMotionY = y;
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3652
			    lastMotionWnd = __currentPointerView;
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3653
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3654
			    if ((GetWindow_mouseX(__currentPointerView) == x)
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3655
			     && (GetWindow_mouseY(__currentPointerView) == y)) {
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3656
			    } else {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3657
				enqEvent(PointerMotionMask, __currentPointerView, WM_MOUSEMOVE, wParam, x, y, 0, modifiers, evTime);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3658
				SetWindow_mouseXY(__currentPointerView, x, y);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3659
			    }
3584
194203bc4370 last mouse motion
Claus Gittinger <cg@exept.de>
parents: 3583
diff changeset
  3660
			}
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3661
		    }
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3662
		}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3663
	    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3664
	    *pDefault = 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3665
	    return 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3666
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3667
	case WM_LBUTTONUP:
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3668
	    curButton = Button1;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3669
	    goto commonButtonUp;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3670
	case WM_MBUTTONUP:
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3671
	    curButton = Button2;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3672
	    goto commonButtonUp;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3673
	case WM_RBUTTONUP:
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3674
	    curButton = Button3;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3675
commonButtonUp:
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3676
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3677
		NDPRINTF(("WM_*BUTTONUP for native - default handling\n"));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3678
		return 0;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3679
	    }
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3680
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  3681
#ifndef PRE_01_APR_04
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3682
	    if ((__currentPointerView != hWnd) && (__currentPointerView == (HANDLE)0)) {
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3683
		__currentPointerView = hWnd;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3684
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3685
		if (GetWindow_eventMask(hWnd) & EnterWindowMask) {
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3686
		    POINT p;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3687
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3688
		    p.x = evRootX;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3689
		    p.y = evRootY;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3690
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3691
		    ScreenToClient (hWnd, & p);
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3692
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3693
		    if ((p.x >= 0) && (p.y >= 0)) {
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3694
			enqEvent(EnterWindowMask, hWnd, __WM_MOUSEENTER, 0, p.x, p.y, 0, getModifiers(), EV_NOTIME);
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3695
			SetWindow_mouseXY(hWnd, p.x, p.y);
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3696
		    } else {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3697
			__currentPointerView = (HANDLE) 0;
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3698
		    }
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3699
		}
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  3700
	    }
4132
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  3701
#endif
be6232941cde discard button events if button was pressed in another view
ca
parents: 4113
diff changeset
  3702
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3703
	    if (__currentCapture == curButton /* CAPTURE_IMPLICIT*/) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3704
		__currentCapture = CAPTURE_NONE;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3705
		ReleaseCapture();
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
  3706
		CPRINTF(("ReleaseCapture <BUTTONUP>\n"));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3707
	    }
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3708
	    EVENT_PRINTF3(("WM_BUTTONUP h=%x pos=%d/%d\n",
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3709
			   hWnd, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam)));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3710
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3711
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3712
	    if (GetWindow_eventMask(hWnd) & ButtonReleaseMask) {
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3713
		if (__eatingMouseEvents) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3714
		    __eatingMouseEvents = 0;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3715
		} else {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  3716
		    enqEvent(ButtonReleaseMask, hWnd,
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3717
			     message, wParam, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam),
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3718
			     wParam, getModifiers(), evTime);
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3719
		}
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3720
	    }
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3721
	    *pDefault = 0;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3722
	    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3723
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3724
	case WM_LBUTTONDOWN:
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3725
	    curButton = Button1;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3726
	    goto commonButtonDown;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3727
	case WM_MBUTTONDOWN:
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3728
	    curButton = Button2;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3729
	    goto commonButtonDown;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3730
	case WM_RBUTTONDOWN:
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3731
	    curButton = Button3;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3732
commonButtonDown:
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3733
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3734
		NDPRINTF(("WM_*BUTTONDOWN for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3735
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3736
	    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3737
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3738
	    if (__currentCapture == CAPTURE_NONE) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3739
		__currentCapture = curButton /*CAPTURE_IMPLICIT*/;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3740
		//SetFocus(hWnd);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3741
		SetCapture(hWnd);
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
  3742
		CPRINTF(("SetCapture <BUTTONDOWN>%x\n",hWnd));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3743
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3744
	    goto commonButton;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3745
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3746
	case WM_LBUTTONDBLCLK:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3747
	case WM_MBUTTONDBLCLK:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3748
	case WM_RBUTTONDBLCLK:
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3749
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3750
		NDPRINTF(("WM_*BUTTONDBLCLK for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3751
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3752
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3753
	commonButton:
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  3754
	    EVENT_PRINTF3(("WM_BUTTONDOWN h=%x pos=%d/%d\n",
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3755
			   hWnd, LOWORD(lParam), HIWORD(lParam)));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3756
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3757
	    if (GetWindow_eventMask(hWnd) & ButtonPressMask) {
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3758
		if (__eatingMouseEvents) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3759
		    __eatingMouseEvents = 0;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3760
		} else {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  3761
		    enqEvent(ButtonPressMask, hWnd,
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3762
			     message, wParam, (int)(short)LOWORD(lParam), (int)(short)HIWORD(lParam),
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3763
			     wParam, getModifiers(), evTime);
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3764
		}
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3765
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3766
	    *pDefault = 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3767
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3768
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3769
	case WM_CAPTURECHANGED:
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3770
	    CPRINTF(("WM_CAPTURECHANGED %x to %x\n",hWnd,lParam));
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3771
#if 0
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3772
	    if ((__currentCapture != CAPTURE_NONE) && (__currentCapture != CAPTURE_EXPLICIT))
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3773
	    {
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3774
	    }
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3775
#endif
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3776
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3777
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3778
	case WM_KILLFOCUS:
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3779
	    CPRINTF(("WM_KILLFOCUS\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  3780
	    //enqEvent(0, hWnd, WM_KILLFOCUS, wParam, 0, 0, 0, 0, EV_NOTIME);
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3781
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3782
		NDPRINTF(("WM_KILLFOCUS for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3783
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3784
	    }
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3785
	    *pDefault = 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3786
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3787
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3788
	case WM_SETFOCUS:
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3789
	    CPRINTF(("WM_SETFOCUS %x\n",hWnd));
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3790
#if 0
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  3791
	    //enqEvent(0,hWnd, WM_SETFOCUS, wParam, 0, 0, 0, 0, EV_NOTIME);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3792
	    {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3793
		POINT p;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3794
		HWND hWndChild,hWndTemp;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3795
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3796
		p.x = evRootX;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3797
		p.y = evRootY;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3798
		ScreenToClient(hWnd, &p);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3799
		hWndChild = hWnd; //hWndChild = ChildWindowFromPoint(hWnd,p);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3800
		do {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3801
		    hWndTemp = hWndChild;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3802
		    hWndChild = ChildWindowFromPointEx(hWndTemp,p,CWP_SKIPINVISIBLE|CWP_SKIPDISABLED|CWP_SKIPTRANSPARENT);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3803
		} while ((hWndChild) && (hWndChild != hWndTemp));
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  3804
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  3805
		/*console_printf("WM_ACTIVATE active h=%x p=%d.%d in %x\n", hWnd,p.x,p.y,hWndChild);*/
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3806
		if (hWndChild /*&& (hWndChild != hWnd)*/) {
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3807
		    if (hWndChild != __currentPointerView) {
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3808
			int modifiers = getModifiers();
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3809
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3810
			if (__currentPointerView) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3811
			    if (GetWindow_eventMask(__currentPointerView) & LeaveWindowMask)
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3812
				enqEvent(LeaveWindowMask, __currentPointerView, __WM_MOUSELEAVE, 0, -1, -1, 0, modifiers, EV_NOTIME);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3813
				SetWindow_mouseXY(__currentPointerView, -9999, -9999);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3814
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3815
			    __currentPointerView = 0;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3816
			}
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3817
			if (GetWindow_eventMask(hWndChild) & EnterWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  3818
			    enqEvent(EnterWindowMask, hWndChild, __WM_MOUSEENTER, 0, evRootX, evRootY, 0, modifiers, EV_NOTIME);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3819
			    SetWindow_mouseXY(hWndChild, evRootX, evRootY);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3820
			}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3821
			//SetFocus(hWndChild);
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  3822
			__currentPointerView = hWndChild;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3823
		    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3824
		}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3825
	    }
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3826
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3827
	    if (isNative) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  3828
		NDPRINTF(("WM_SETFOCUS for native - default handling\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3829
		return 0;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3830
	    }
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  3831
	    *pDefault = 0;
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  3832
#endif
2253
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
  3833
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  3834
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3835
	case WM_GETTEXT:
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3836
	    /*EVENT_PRINTF(("WM_GETTEXT %x\n", message));*/
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3837
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3838
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3839
	case WM_GETTEXTLENGTH:
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  3840
	    EVENT_PRINTF(("WM_GETTEXTLENGTH %x\n", message));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3841
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3842
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3843
	case WM_NCCREATE:
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  3844
	    EVENT_PRINTF(("WM_NCCREATE %x\n", message));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3845
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3846
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3847
	case WM_NCMOUSEMOVE:
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3848
	    if (__currentCapture == CAPTURE_NONE) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3849
		if (__currentPointerView && (hWnd != __currentPointerView)) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3850
		    if (inSizeMove) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3851
			if (needDelayedMouseLeaveWindow == NULL) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3852
			    needDelayedMouseLeaveWindow = __currentPointerView;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3853
			}
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3854
		    } else {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3855
			if (GetWindow_eventMask(__currentPointerView) & LeaveWindowMask) {
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  3856
			    enqEvent(LeaveWindowMask, __currentPointerView, __WM_MOUSELEAVE, 0, -1, -1, 0, getModifiers(), evTime);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3857
			    SetWindow_mouseXY(__currentPointerView, -9999, -9999);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  3858
			}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  3859
		    }
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  3860
		    __currentPointerView = 0;
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  3861
		}
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  3862
	    }
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  3863
	    *pDefault = 0;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3864
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3865
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3866
	case WM_PARENTNOTIFY:
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  3867
	    EVENT_PRINTF2(("WM_PARENTNOTIFY h=%x hChild=%x %d\n",
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3868
				hWnd, lParam, LOWORD(wParam)));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3869
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3870
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3871
	case WM_NCLBUTTONDOWN:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3872
	    DPRINTFIF(__debug_WM_BUTTONDOWN__ , ("WM_NCLBUTTONDOWN\n"));
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3873
	    if (__shiftedLeftButtonIsLowerWindow) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3874
		/*
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3875
		 * with shift, this is a lower-operation
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3876
		 */
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3877
		if (GetKeyState(VK_SHIFT) & 0x8000) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  3878
		    SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0,
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3879
				 SWP_NOSENDCHANGING |
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3880
				 SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3881
		    *pDefault = 0;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3882
		}
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3883
	    }
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3884
	    break;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3885
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3886
	case WM_NCLBUTTONUP:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3887
	    DPRINTFIF(__debug_WM_BUTTONUP__ , ("WM_NCLBUTTONUP\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3888
	    break;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3889
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3890
	case WM_NCRBUTTONDOWN:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3891
	    DPRINTFIF(__debug_WM_BUTTONDOWN__ , ("WM_NCRBUTTONDOWN\n"));
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3892
	    if (__rightButtonIsLowerWindow) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3893
		/*
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3894
		 * this is a lower-operation
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3895
		 */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  3896
		SetWindowPos(hWnd, HWND_BOTTOM, 0, 0, 0, 0,
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3897
			     SWP_NOSENDCHANGING |
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3898
			     SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3899
		*pDefault = 0;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  3900
	    }
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3901
	    break;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3902
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3903
	case WM_NCRBUTTONUP:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3904
	    DPRINTFIF(__debug_WM_BUTTONUP__ , ("WM_NCRBUTTONUP\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3905
	    break;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3906
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3907
	case WM_NCMBUTTONDOWN:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3908
	    DPRINTFIF(__debug_WM_BUTTONDOWN__ , ("WM_NCMBUTTONDOWN\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3909
	    break;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3910
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  3911
	case WM_NCMBUTTONUP:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3912
	    DPRINTFIF(__debug_WM_BUTTONUP__ , ("WM_NCMBUTTONUP\n"));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3913
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3914
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3915
	case WM_NCLBUTTONDBLCLK:
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3916
	    EVENT_PRINTF(("WM_NCLBUTTONDBLCLK\n"));
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3917
	    break;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3918
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3919
	case WM_NCRBUTTONDBLCLK:
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3920
	    EVENT_PRINTF(("WM_NCRBUTTONDBLCLK\n"));
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3921
	    break;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3922
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3923
	case WM_NCMBUTTONDBLCLK:
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3924
	    EVENT_PRINTF(("WM_NCMBUTTONDBLCLK\n"));
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3925
	    break;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  3926
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3927
	case WM_SETTEXT:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  3928
	    DPRINTFIF(__debug_WM_SETTEXT__ , ("WM_SETTEXT\n"));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3929
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3930
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3931
#ifdef WM_SYNCPAINT
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3932
	case WM_SYNCPAINT:
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3933
	    EVENT_PRINTF(("WM_SYNCPAINT\n"));
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3934
	    break;
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  3935
#else
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3936
	case 0x88:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3937
	    EVENT_PRINTF(("0x88 (undoc)\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3938
	    break;
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3939
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3940
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3941
	case WM_NCCALCSIZE:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3942
	    EVENT_PRINTF(("WM_NCCALCSIZE\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3943
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3944
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  3945
	case WM_NCPAINT:
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  3946
	    EVENT_PRINTF3(("WM_NCPAINT\n"));
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3947
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3948
#ifdef THIS_DOES_NOT_WORK
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3949
	    /* mhmh - something is drawn, but clipped wrong
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3950
	     * and with wrong colors ....
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3951
	     */
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  3952
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3953
	    /*
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3954
	     * child windows only ...
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3955
	     */
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3956
	    if (GetParent(hWnd)) {
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3957
		int clr;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3958
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3959
		clr = GetWindow_bdColor(hWnd);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3960
		if (clr != BlackPixel) {
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3961
		    /*
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3962
		     * draw it here
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3963
		     */
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3964
		    HBRUSH br;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3965
		    RECT rect, lineRect;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3966
		    HDC hDC;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3967
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3968
		    if (clr == WhitePixel) {
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3969
			br = __whiteBrush;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3970
		    } else {
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3971
			br = CreateSolidBrush(clr);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3972
		    }
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3973
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3974
		    GetWindowRect(hWnd, &rect);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3975
		    hDC = GetWindowDC(hWnd);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3976
		    SelectClipRgn(hDC, NULL);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3977
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3978
		    lineRect.left = rect.left;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3979
		    lineRect.right = rect.right;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3980
		    lineRect.top = rect.top;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3981
		    lineRect.bottom = rect.top + 1;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3982
		    FillRect(hDC, &lineRect, br);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3983
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3984
		    lineRect.bottom = rect.bottom - 1;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3985
		    lineRect.bottom = rect.bottom;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3986
		    FillRect(hDC, &lineRect, br);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3987
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3988
		    lineRect.top = rect.top;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3989
		    lineRect.bottom = rect.bottom;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3990
		    lineRect.left = rect.left;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3991
		    lineRect.right = rect.left + 1;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3992
		    FillRect(hDC, &lineRect, br);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3993
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3994
		    lineRect.left = rect.right - 1;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3995
		    lineRect.right = rect.right;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3996
		    FillRect(hDC, &lineRect, br);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3997
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3998
		    _DeleteBrush(br, __LINE__);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  3999
		    ReleaseDC(hWnd, hDC);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  4000
		    *pDefault = 0;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  4001
		    return 0;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  4002
		}
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  4003
	    }
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  4004
#endif /* THIS_DOES_NOT_WORK */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4005
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4006
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4007
	case WM_SYSCOMMAND:
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4008
	    switch (wParam & ~0x000F) {
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4009
		case SC_CLOSE:
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4010
		    EVENT_PRINTF2(("WM_SYSCOMMAND SC_CLOSE\n"));
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4011
		    break;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4012
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4013
		case SC_MOVE:
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4014
		    EVENT_PRINTF2(("WM_SYSCOMMAND SC_MOVE\n"));
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4015
		    break;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4016
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4017
		case SC_RESTORE:
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4018
		    EVENT_PRINTF2(("WM_SYSCOMMAND SC_RESTORE\n"));
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4019
		    break;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4020
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4021
		case SC_SIZE:
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4022
		    EVENT_PRINTF2(("WM_SYSCOMMAND SC_SIZE\n"));
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4023
		    break;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4024
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4025
		default:
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4026
		    EVENT_PRINTF2(("WM_SYSCOMMAND %x\n", wParam));
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4027
		    break;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4028
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4029
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4030
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4031
	case WM_INITMENU:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4032
	    EVENT_PRINTF(("WM_INITMENU\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4033
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4034
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4035
	case WM_INITMENUPOPUP:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4036
	    EVENT_PRINTF(("WM_INITMENUPOPUP\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4037
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4038
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4039
	case WM_ENTERIDLE:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4040
	    EVENT_PRINTF(("WM_ENTERIDLE\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4041
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4042
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4043
	case WM_ENTERMENULOOP:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4044
	    EVENT_PRINTF(("WM_ENTERMENULOOP\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4045
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4046
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4047
	case WM_EXITMENULOOP:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4048
	    EVENT_PRINTF(("WM_EXITMENULOOP\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4049
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4050
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4051
	case WM_MENUSELECT:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4052
	    EVENT_PRINTF(("WM_MENUSELECT\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4053
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4054
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4055
	case WM_QUIT:
4832
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4056
	    DPRINTF(("quit message hWnd=0x%x lP=0x%x wP=0x%x\n", hWnd, lParam, wParam));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4057
	    enqEvent(0, 0, WM_QUIT, wParam, lParam, 0, 0, 0, EV_NOTIME);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4058
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4059
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4060
	case WM_NCDESTROY:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4061
	    EVENT_PRINTF(("WM_NCDESTROY\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4062
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4063
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4064
	case WM_QUERYNEWPALETTE:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4065
	    EVENT_PRINTF(("WM_QUERYNEWPALETTE\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4066
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4067
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4068
	case WM_PALETTECHANGED:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4069
	    EVENT_PRINTF(("WM_PALETTECHANGED\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4070
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4071
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4072
	case WM_ACTIVATEAPP:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4073
	    EVENT_PRINTF2(("WM_ACTIVATEAPP %s\n", wParam ? "active" : "inactive"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  4074
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4075
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4076
	case WM_SYSDEADCHAR:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4077
	    EVENT_PRINTF2(("WM_SYSDEADCHAR %x\n, wParam"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4078
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4079
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4080
	case WM_DEADCHAR:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4081
	    EVENT_PRINTF2(("WM_DEADCHAR %x\n, wParam"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4082
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4083
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4084
	case WM_PAINTICON:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4085
	    EVENT_PRINTF(("WM_PAINTICON\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4086
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4087
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4088
	case WM_ICONERASEBKGND:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4089
	    EVENT_PRINTF(("WM_ICONERASEBKGND\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4090
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4091
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4092
	case WM_WINDOWPOSCHANGING:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4093
	    DPRINTFIF(__debug_WM_WINDOWPOSCHANGING__ , ("WM_WINDOWPOSCHANGING\n"));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4094
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4095
#ifdef HANDLE_VIEWGRAVITY
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4096
	    /*
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4097
	     * any child with a viewGravity ?
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4098
	     * (only care for topViews here;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4099
	     *  child views do it on the smalltalk level ...)
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4100
	     */
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4101
	    if (GetParent(hWnd) == 0) {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4102
		if (GetParent(hWnd) == 0) {
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4103
		    struct gravityCallBackInfo i;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4104
		    RECT rct, dRect;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4105
		    int dW, dH;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4106
		    WINDOWPOS *wp = (WINDOWPOS *)lParam;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4107
		    int winStyleBits, winExStyleBits;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4108
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4109
		    if (! (wp->flags & SWP_NOSIZE)) {
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4110
			dRect.left = 0;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4111
			dRect.top = 0;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4112
			dRect.right = 100;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4113
			dRect.bottom = 100;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4114
			winStyleBits = GetWindowLong(hWnd, GWL_STYLE);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4115
			winExStyleBits = GetWindowLong(hWnd, GWL_EXSTYLE);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4116
			AdjustWindowRectEx(&dRect, winStyleBits, 0, winExStyleBits);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4117
			dW = dRect.right - dRect.left;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4118
			dH = dRect.bottom - dRect.top;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4119
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4120
			GetClientRect(hWnd, &rct);
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4121
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4122
			i.parent = hWnd;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4123
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4124
			i.currW = rct.right - rct.left;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4125
			i.currH = rct.bottom - rct.top;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4126
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4127
			/* wp gives us the new outer (frame) bounds */
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4128
			i.newW = wp->cx - (dW - 100);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4129
			i.newH = wp->cy - (dH - 100);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4130
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4131
			if ((i.currW != i.newW)
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4132
			 || (i.currH != i.newH)) {
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4133
			    DPRINTF((stderr, "about to sizeChange old: %d/%d new: %d/%d\n",
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4134
				    i.currW, i.currH, i.newW, i.newH));
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4135
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4136
			    GetWindowRect(hWnd, &rct);
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4137
			    i.parentWinX = rct.left - dRect.left;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4138
			    i.parentWinY = rct.top - dRect.top;
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4139
			    EnumChildWindows(hWnd, gravityEnumeratorCallBack, (int)(&i));
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
  4140
			}
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4141
		    }
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4142
		}
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4143
	    }
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4144
#endif /* HANDLE_VIEWGRAVITY */
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4145
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4146
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4147
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4148
	case WM_QUERYOPEN:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4149
	    EVENT_PRINTF(("WM_QUERYOPEN\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4150
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4151
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4152
	case WM_QUERYENDSESSION:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4153
	    EVENT_PRINTF(("WM_QUERYENDSESSION\n"));
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4154
	    *pDefault = 0;
4832
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4155
	    if (@global(CanEndSession) == false) {
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4156
		enqEvent(0, hWnd, WM_QUERYENDSESSION, wParam, 0, 0, 0, 0, EV_NOTIME);
4832
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4157
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4158
		// TODO: enter new event loop
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4159
		// which is left when an endSessionConfirmation
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4160
		// arrives from smalltalk
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4161
		// (either positive or negative).
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4162
		// for now, do not allow leaving
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4163
		// windows as long as ST/X is open.
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
  4164
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4165
		return(0);
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4166
	    }
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4167
	    return(TRUE);  // allow leaving windows
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4168
	    break;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4169
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4170
	case WM_ENDSESSION:
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4171
	    EVENT_PRINTF(("WM_ENDSESSION\n"));
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
  4172
	    enqEvent(0, hWnd, WM_ENDSESSION, wParam, 0, 0, 0, 0, EV_NOTIME);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4173
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4174
2602
2d8af0930e87 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2601
diff changeset
  4175
	case WM_DISPLAYCHANGE:
2d8af0930e87 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2601
diff changeset
  4176
	    EVENT_PRINTF(("WM_DISPLAYCHANGE\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4177
	    enqEvent(0, hWnd, WM_DISPLAYCHANGE, wParam, 0, 0, 0, 0, EV_NOTIME);
2602
2d8af0930e87 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2601
diff changeset
  4178
	    break;
2d8af0930e87 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2601
diff changeset
  4179
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4180
	case WM_FONTCHANGE:
2602
2d8af0930e87 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2601
diff changeset
  4181
	    EVENT_PRINTF(("WM_FONTCHANGE\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4182
	    enqEvent(0, hWnd, WM_FONTCHANGE, wParam, 0, 0, 0, 0, EV_NOTIME);
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4183
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4184
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  4185
	case WM_WININICHANGE:
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  4186
	    EVENT_PRINTF(("WM_WININICHANGE\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4187
	    enqEvent(0, hWnd, WM_WININICHANGE, wParam, 0, 0, 0, 0, EV_NOTIME);
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  4188
	    break;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  4189
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4190
	case WM_SYSCOLORCHANGE:
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4191
	    EVENT_PRINTF(("WM_SYSCOLORCHANGE\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4192
	    enqEvent(0, hWnd, WM_SYSCOLORCHANGE, wParam, 0, 0, 0, 0, EV_NOTIME);
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4193
	    break;
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4194
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  4195
	case WM_MOVING:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4196
	    DPRINTFIF(__debug_WM_MOVING__ , ("WM_MOVING\n"));
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4197
#ifdef DELAY_ENTER_LEAVE_WHILE_IN_SIZE_MOVE
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4198
	    inMove = 1;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4199
#endif
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  4200
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4201
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  4202
	case WM_SIZING:
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  4203
	    EVENT_PRINTF(("WM_SIZING\n"));
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4204
#ifdef DELAY_ENTER_LEAVE_WHILE_IN_SIZE_MOVE
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4205
	    inSize = 1;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4206
#endif
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4207
	    break;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4208
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4209
	case WM_ENTERSIZEMOVE:
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4210
	    EVENT_PRINTF(("WM_ENTERSIZEMOVE\n"));
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4211
#ifdef DELAY_ENTER_LEAVE_WHILE_IN_SIZE_MOVE
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4212
	    inSizeMove = 1;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4213
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4214
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4215
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4216
	case WM_EXITSIZEMOVE:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4217
	    EVENT_PRINTF(("WM_EXITSIZEMOVE\n"));
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  4218
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  4219
#ifndef PRE_13_APR_04_POSCHANGED_IN_EXITSIZEMOVE
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4220
	    if (inMove) {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4221
		/* generate WM_WINDOWPOSCHANGED
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4222
		*/
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4223
		RECT rct;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4224
		int x, y, w, h;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4225
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4226
		GetClientRect(hWnd, &rct);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4227
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4228
		x = rct.left;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4229
		y = rct.top;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4230
		w = rct.right - rct.left;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4231
		h = rct.bottom - rct.top;
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4232
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4233
		if ((w == 0) && (h == 0)) {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4234
		    if (! GetWindow_iconified(hWnd)) {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4235
			SetWindow_iconified(hWnd, 1);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4236
		    }
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4237
		    enqEvent(0, hWnd, __WM_ICONIFIED, 1, 0, 0, 0, 0, EV_NOTIME);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4238
		} else {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4239
		    if (GetWindow_iconified(hWnd)) {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4240
			SetWindow_iconified(hWnd, 0);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4241
			enqEvent(0, hWnd, __WM_ICONIFIED, 0, 0, 0, 0, 0, EV_NOTIME);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4242
		    } else {
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4243
			enqEvent(0, hWnd, WM_WINDOWPOSCHANGED, 0, x, y, w, h, EV_NOTIME);
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4244
		    }
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4245
		}
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4246
	    }
4155
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  4247
#endif
b557b9991c9c inform STX about WINDOWPOSCHANGED in EXITSIZEMOVE (not during moving)
ca
parents: 4154
diff changeset
  4248
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4249
	    inSizeMove = inMove = inSize = 0;
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  4250
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  4251
	    if (needDelayedMouseLeaveWindow || needDelayedMouseEnterWindow) {
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  4252
		int modifiers = getModifiers();
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4253
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4254
		if (needDelayedMouseLeaveWindow) {
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4255
		    if (GetWindow_eventMask(needDelayedMouseLeaveWindow) & LeaveWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  4256
			enqEvent(LeaveWindowMask, needDelayedMouseLeaveWindow, __WM_MOUSELEAVE, 0, -1, -1, 0, modifiers, EV_NOTIME);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  4257
			SetWindow_mouseXY(needDelayedMouseLeaveWindow, -9999, -9999);
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4258
		    }
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4259
		    needDelayedMouseLeaveWindow = NULL;
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4260
		}
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4261
		if (needDelayedMouseEnterWindow) {
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4262
		    if (GetWindow_eventMask(needDelayedMouseEnterWindow) & EnterWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  4263
			enqEvent(EnterWindowMask, needDelayedMouseEnterWindow, __WM_MOUSEENTER, 0, delayedMouseEnterX, delayedMouseEnterY, 0, modifiers, EV_NOTIME);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  4264
			SetWindow_mouseXY(needDelayedMouseEnterWindow, delayedMouseEnterX, delayedMouseEnterY);
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4265
		    }
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4266
		    needDelayedMouseEnterWindow = NULL;
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4267
		}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4268
	    }
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  4269
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4270
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4271
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4272
	case WM_MOVE:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4273
	    EVENT_PRINTF(("WM_MOVE\n"));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4274
	    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4275
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4276
	case WM_POWER:
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4277
	    EVENT_PRINTF(("WM_POWER\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4278
	    enqEvent(0, hWnd, WM_POWER, wParam, 0, 0, 0, 0, EV_NOTIME);
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4279
	    break;
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4280
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4281
	/* native widget actions */
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4282
	case WM_COMMAND:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4283
	    if (lParam) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4284
		NDPRINTF(("COMMAND for widget\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4285
		enqEvent(0, (HWND)(lParam), WM_COMMAND, wParam, lParam, 0, 0, 0, EV_NOTIME);
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4286
	    } else {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4287
		NDPRINTF(("COMMAND for owner\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4288
		enqEvent(0, hWnd, WM_COMMAND, wParam, lParam, 0, 0, 0, EV_NOTIME);
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4289
	    }
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4290
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4291
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
  4292
	/* tray action */
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
  4293
	case WM_TRAY_MESSAGE:
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
  4294
	    DPRINTF(("tray message hWnd=0x%x lP=0x%x wP=0x%x\n", hWnd, lParam, wParam));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4295
	    enqEvent(0, hWnd, WM_TRAY_MESSAGE, wParam, lParam, 0, 0, 0, EV_NOTIME);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4296
	    break;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4297
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4298
	case WM_COPYDATA:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4299
	    DPRINTFIF(__debug_WM_COPYDATA__ , ("WM_COPYDATA\n"));
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4300
	    {
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4301
		PCOPYDATASTRUCT pCDs;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4302
		int dwData;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4303
		void *pData;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4304
		void *pCopiedData;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4305
		int nBytes;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4306
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4307
		pCDs = (PCOPYDATASTRUCT) lParam;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4308
		dwData = pCDs->dwData;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4309
		nBytes = pCDs->cbData;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4310
		pData = (void *)pCDs->lpData;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4311
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4312
		/*
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4313
		 * because pData is only valid here, copy it out to a malloc'd
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4314
		 * area. This MUST be free'd by someone else !
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4315
		 */
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4316
		if (nBytes) {
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4317
		    pCopiedData = malloc(nBytes);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4318
		    memcpy(pCopiedData, pData, nBytes);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4319
		} else {
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4320
		    pCopiedData = NULL;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4321
		}
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4322
		//     (flag, hWnd, message, wParam, arg1, arg2, arg3, arg4, evTime)
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4323
		enqEvent(0, hWnd, WM_COPYDATA, wParam, pCopiedData, nBytes, 0, 0, EV_NOTIME);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4324
	    }
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4325
	    *pDefault = 0;
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
  4326
	    break;
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
  4327
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4328
	case WM_HSCROLL:
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4329
	case WM_VSCROLL:
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4330
	    NDPRINTF(("VM_*SCROLL\n"));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4331
	    enqEvent(0, hWnd, message, wParam, lParam, 0, 0, 0, EV_NOTIME);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4332
	    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  4333
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4334
	case WM_DRAWITEM:
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4335
	    EVENT_PRINTF(("WM_DRAWITEM\n"));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4336
#if 0
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4337
	    {
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4338
		DRAWITEMSTRUCT *pItemStruct;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4339
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4340
		pItemStruct = (DRAWITEMSTRUCT *)lParam;
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  4341
		enqEvent(0, pItemStruct->hwndItem, WM_DRAWITEM, wParam, 0, 0, 0, 0, EV_NOTIME);
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4342
	    }
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4343
#endif
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4344
	    break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4345
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4346
#ifdef TRACE_ALL_EVENTS
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4347
	case WM_CTLCOLORMSGBOX:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4348
	    UNHANDLED_EVENT_PRINTF(("WM_CTLCOLORMSGBOX\n"));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4349
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4350
	case WM_CTLCOLOREDIT:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4351
	    UNHANDLED_EVENT_PRINTF(("WM_CTLCOLOREDIT\n"));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4352
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4353
	case WM_CTLCOLORLISTBOX:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4354
	    UNHANDLED_EVENT_PRINTF(("WM_CTLCOLORLISTBOX\n"));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4355
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4356
	case WM_CTLCOLORBTN:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4357
	    UNHANDLED_EVENT_PRINTF(("WM_CTLCOLORBTN\n"));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4358
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4359
	case WM_CTLCOLORDLG:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4360
	    UNHANDLED_EVENT_PRINTF(("WM_CTLCOLORDLG\n"));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4361
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4362
	case WM_CTLCOLORSTATIC:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4363
	    UNHANDLED_EVENT_PRINTF(("WM_CTLCOLORSTATIC\n"));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4364
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4365
	case WM_CTLCOLORSCROLLBAR:
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  4366
	    UNHANDLED_EVENT_PRINTFIF(__debug_WM_CTLCOLORSCROLLBAR__, ("WM_CTLCOLORSCROLLBAR\n"));
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4367
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4368
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4369
	case WM_STYLECHANGING:
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4370
	    UNHANDLED_EVENT_PRINTF(("WM_STYLECHANGING\n"));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4371
	    break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4372
	case WM_STYLECHANGED:
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4373
	    UNHANDLED_EVENT_PRINTF(("WM_STYLECHANGED\n"));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4374
	    break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4375
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4376
	case WM_GETICON:
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  4377
	    UNHANDLED_EVENT_PRINTFIF(__debug_WM_GETICON__, ("WM_GETICON\n"));
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4378
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4379
	case WM_SETICON:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4380
	    UNHANDLED_EVENT_PRINTF(("WM_SETICON\n"));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4381
	    break;
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4382
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4383
	case WM_PRINT:
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4384
	    UNHANDLED_EVENT_PRINTF(("WM_PRINT(lParam=%d)\n", lParam));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4385
	    break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4386
	case WM_PRINTCLIENT:
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4387
	    UNHANDLED_EVENT_PRINTF(("WM_PRINTCLIENT(lParam=%d)\n", lParam));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4388
	    break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4389
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4390
	case WM_NULL:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4391
	    UNHANDLED_EVENT_PRINTF(("WM_NULL\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4392
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4393
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4394
	case WM_ENABLE:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4395
	    UNHANDLED_EVENT_PRINTF(("WM_ENABLE\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4396
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4397
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4398
	case WM_SETREDRAW:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4399
	    UNHANDLED_EVENT_PRINTF(("WM_SETREDRAW\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4400
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4401
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4402
	case WM_DEVMODECHANGE:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4403
	    UNHANDLED_EVENT_PRINTF(("WM_DEVMODECHANGE\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4404
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4405
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4406
	case WM_TIMECHANGE:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4407
	    UNHANDLED_EVENT_PRINTF(("WM_TIMECHANGE\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4408
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4409
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4410
	case WM_CANCELMODE:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4411
	    UNHANDLED_EVENT_PRINTF(("WM_CANCELMODE\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4412
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4413
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4414
	case WM_CHILDACTIVATE:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4415
	    UNHANDLED_EVENT_PRINTF(("WM_CHILDACTIVATE\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4416
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4417
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4418
	case WM_QUEUESYNC:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4419
	    UNHANDLED_EVENT_PRINTF(("WM_QUEUESYNC\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4420
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4421
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4422
	case WM_NEXTDLGCTL:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4423
	    UNHANDLED_EVENT_PRINTF(("WM_NEXTDLGCTL\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4424
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4425
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4426
	case WM_SPOOLERSTATUS:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4427
	    UNHANDLED_EVENT_PRINTF(("WM_SPOOLERSTATUS\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4428
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4429
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4430
	case WM_MEASUREITEM:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4431
	    UNHANDLED_EVENT_PRINTF(("WM_MEASUREITEM\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4432
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4433
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4434
	case WM_DELETEITEM:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4435
	    UNHANDLED_EVENT_PRINTF(("WM_DELETEITEM\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4436
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4437
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4438
	case WM_VKEYTOITEM:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4439
	    UNHANDLED_EVENT_PRINTF(("WM_VKEYTOITEM\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4440
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4441
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4442
	case WM_CHARTOITEM:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4443
	    UNHANDLED_EVENT_PRINTF(("WM_CHARTOITEM\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4444
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4445
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4446
	case WM_SETFONT:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4447
	    UNHANDLED_EVENT_PRINTF(("WM_SETFONT\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4448
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4449
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4450
	case WM_GETFONT:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4451
	    UNHANDLED_EVENT_PRINTF(("WM_GETFONT\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4452
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4453
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4454
	case WM_SETHOTKEY:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4455
	    UNHANDLED_EVENT_PRINTF(("WM_SETHOTKEY\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4456
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4457
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4458
	case WM_GETHOTKEY:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4459
	    UNHANDLED_EVENT_PRINTF(("WM_GETHOTKEY\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4460
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4461
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4462
	case WM_QUERYDRAGICON:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4463
	    UNHANDLED_EVENT_PRINTF(("WM_QUERYDRAGICON\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4464
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4465
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4466
	case WM_COMPAREITEM:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4467
	    UNHANDLED_EVENT_PRINTF(("WM_COMPAREITEM\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4468
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4469
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4470
	case WM_GETOBJECT:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4471
	    UNHANDLED_EVENT_PRINTF(("WM_GETOBJECT\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4472
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4473
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4474
	case WM_COMPACTING:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4475
	    UNHANDLED_EVENT_PRINTF(("WM_COMPACTING\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4476
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4477
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4478
	case WM_COMMNOTIFY:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4479
	    UNHANDLED_EVENT_PRINTF(("WM_COMMNOTIFY\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4480
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4481
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4482
	case WM_CANCELJOURNAL:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4483
	    UNHANDLED_EVENT_PRINTF(("WM_CANCELJOURNAL\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4484
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4485
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4486
	case WM_INPUTLANGCHANGEREQUEST:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4487
	    UNHANDLED_EVENT_PRINTF(("WM_INPUTLANGCHANGEREQUEST\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4488
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4489
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4490
	case WM_INPUTLANGCHANGE:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4491
	    UNHANDLED_EVENT_PRINTF(("WM_INPUTLANGCHANGE\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4492
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4493
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4494
	case WM_TCARD:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4495
	    UNHANDLED_EVENT_PRINTF(("WM_TCARD\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4496
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4497
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4498
	case WM_HELP:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4499
	    UNHANDLED_EVENT_PRINTF(("WM_HELP\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4500
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4501
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4502
	case WM_USERCHANGED:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4503
	    UNHANDLED_EVENT_PRINTF(("WM_USERCHANGED\n"));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4504
	    break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4505
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4506
	case WM_NOTIFY:
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4507
	    UNHANDLED_EVENT_PRINTF(("WM_NOTIFY\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4508
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4509
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4510
	case WM_NOTIFYFORMAT:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4511
	    UNHANDLED_EVENT_PRINTF(("WM_NOTIFYFORMAT\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4512
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4513
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4514
	case WM_CONTEXTMENU:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4515
	    UNHANDLED_EVENT_PRINTF(("WM_CONTEXTMENU\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4516
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4517
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4518
	case WM_NCXBUTTONDOWN:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4519
	    UNHANDLED_EVENT_PRINTF(("WM_NCXBUTTONDOWN\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4520
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4521
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4522
	case WM_NCXBUTTONUP:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4523
	    UNHANDLED_EVENT_PRINTF(("WM_NCXBUTTONUP\n"));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4524
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4525
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4526
	case WM_NCXBUTTONDBLCLK:
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4527
	    UNHANDLED_EVENT_PRINTF(("WM_NCXBUTTONDBLCLK\n"));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4528
	    break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4529
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4530
	case WM_DEVICECHANGE:
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4531
	    UNHANDLED_EVENT_PRINTF(("WM_DEVICECHANGE\n"));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4532
	    break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4533
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  4534
#endif
4439
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
  4535
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4536
	default:
4161
976a1b3ce175 add debug message instead of fprintf for unhandled message
ca
parents: 4155
diff changeset
  4537
	    EVENT_PRINTF(( "WinWorkstat [info] unhandled msg = %d 0x%x [%d]\n", message, message, __LINE__));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4538
	    break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4539
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4540
    return 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4541
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4542
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  4543
LONG APIENTRY
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  4544
MainWndProc(HWND hWnd,UINT message,UINT wParam,LONG lParam);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  4545
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4546
static void _USERENTRY
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4547
dispatchThread(void *arg)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4548
{
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4549
    static int th_calls;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4550
    RECT rect;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4551
    MSG msg;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4552
    localWindowInfo *lI;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4553
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4554
    _dispatchThreadId2 = GetCurrentThreadId();
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4555
#ifdef STARTUP_DISPATCHTHREAD_DEBUG
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  4556
    console_fprintf(stderr, "WinWorkstation [info]: dispatchThreadID2=%x\n", _dispatchThreadId2);
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4557
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4558
    TH_DPRINTF(("TS %d\n", th_calls++));
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4559
    PeekMessageW(&msg, NULL, 0, 0, PM_NOREMOVE);   /* must be */
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4560
4444
8d6a48c51edc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
  4561
#if 0
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4562
    if (AttachThreadInput(_masterThreadId, _dispatchThreadId2, TRUE) != TRUE) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  4563
	console_fprintf(stderr, "WinWorkstation [warning]: AttachThreadInput failed\n");
4443
96e956cf9acf plugin stuff now in librun
Claus Gittinger <cg@exept.de>
parents: 4441
diff changeset
  4564
    };
4444
8d6a48c51edc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4443
diff changeset
  4565
#endif
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  4566
#ifndef WIN32THREADS
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4567
# if 0
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4568
    SetThreadPriority(_masterThread,THREAD_PRIORITY_HIGHEST);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4569
    SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_ABOVE_NORMAL);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4570
# endif
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  4571
#endif
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  4572
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4573
    GetWindowRect(GetDesktopWindow(), &rect);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4574
    /* allocate localMemory for Window */
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4575
    lI = (localWindowInfo *)malloc(sizeof(localWindowInfo));
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4576
    if (lI) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4577
	memset(lI, 0, sizeof(*lI));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4578
    }
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  4579
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4580
    __rootWinSpezial = CreateWindowExW(WS_EX_TOOLWINDOW | WS_EX_TRANSPARENT,
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4581
				      wapp_nameRoot, wapp_nameRoot,
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4582
				      WS_POPUP | WS_DISABLED,
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4583
				      0, 0,
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4584
				      rect.right - rect.left, rect.bottom - rect.top,
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4585
				      0, 0, (HANDLE) __getHInstance(), lI);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4586
2253
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
  4587
    //ShowWindow(__rootWinSpezial,SW_SHOWNOACTIVATE);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4588
    SetWindowPos(__rootWinSpezial, HWND_BOTTOM, 0, 0, 0, 0,
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4589
		 SWP_NOSENDCHANGING |
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4590
		 SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4591
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4592
#ifdef STARTUP_DISPATCHTHREAD_DEBUG
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  4593
    console_fprintf(stderr, "WinWorkstation [info]: setting ThreadRunningEvent\n");
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4594
#endif
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4595
    SetEvent(hDispatchThreadRunningEvent);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4596
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4597
    for (;;) {
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  4598
	HANDLE dummy;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4599
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4600
	TH_DPRINTF(("TG %d\n", th_calls++));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4601
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4602
	/*
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4603
	 * if there is no current capture (pointer-grab),
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4604
	 * make certain that we do not get stuck in the GetMessage
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4605
	 * but instead poll the mouse in 200ms intervals.
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4606
	 * This is required to synthesize the MOUSELEAVE message,
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4607
	 */
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
  4608
DPRINTF(("X1\n"));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4609
	if (__currentPointerView && (__currentCapture == CAPTURE_NONE)) {
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
  4610
DPRINTF(("X2\n"));
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4611
	    while (PeekMessageW(&msg, 0, 0, 0, PM_NOREMOVE) == 0) {
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
  4612
DPRINTF(("PeekMessage -> 0\n"));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4613
		/*
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4614
		 * wait for an event; timeout after 200 millis
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4615
		 */
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4616
		if (MsgWaitForMultipleObjects(0,&dummy,FALSE,200,QS_ALLINPUT) == WAIT_TIMEOUT) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4617
		    if (! inSizeMove) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4618
			/*
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4619
			 * timeout - see where mouse pointer is
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4620
			 * for synthetic leave events.
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4621
			 */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4622
			POINT point;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4623
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4624
			if (GetCursorPos(&point)) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4625
			    HWND hWnd = WindowFromPoint(point);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4626
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4627
			    if (hWnd) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4628
				if (GetWindowThreadProcessId(hWnd,0) != GetCurrentThreadId()) {
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4629
				    if (inSizeMove) {
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4630
					if (needDelayedMouseLeaveWindow == NULL) {
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4631
					    needDelayedMouseLeaveWindow = __currentPointerView;
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4632
					}
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4633
				    } else {
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  4634
					if (GetWindow_eventMask(__currentPointerView) & LeaveWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  4635
					    enqEvent(LeaveWindowMask, __currentPointerView, __WM_MOUSELEAVE, 0, -1, -1, 0, getModifiers(), EV_NOTIME);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  4636
					    SetWindow_mouseXY(__currentPointerView, -9999, -9999);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  4637
					}
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4638
				    }
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4639
				    __currentPointerView = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4640
				    break;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  4641
				}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4642
			    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4643
			}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4644
		    }
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
  4645
		}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4646
	    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4647
	}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4648
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4649
	GetMessageW(&msg, NULL, 0, 0);
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
  4650
DPRINTF(("GetMessage -> %d\n", msg.message));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4651
	TH_DPRINTF(("TD %d\n", th_calls++));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4652
	destroyWin = 0;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4653
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4654
	switch (msg.message) {
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4655
#if 0
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4656
	    case WM_THREAD_DESTROYWINDOW:
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4657
		destroyWin = TRUE;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4658
		msg.message = WM_CLOSE;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4659
		EVENT_PRINTF(("thread WM_THREAD_DESTROYWINDOW %x\n",msg.hwnd));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4660
		break;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4661
#endif
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4662
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4663
#ifdef SET_FOCUS_IN_WINTHREAD
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4664
	    case WM_THREAD_SETFOCUS:
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4665
# ifdef xxWIN32THREADS
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4666
		if (msg.lParam) {
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  4667
		    if (AttachThreadInput(_dispatchThreadId2,msg.lParam,TRUE) == FALSE)
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4668
			PRINTF(("SetFocus AttachThreadInput error %d\n", GetLastError()));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4669
		}
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4670
# endif
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  4671
		EVENT_PRINTF(("threadSetfocus %x\n",msg.wParam));
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4672
		if (SetFocus((HWND)msg.wParam) == 0) {
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  4673
		    DDPRINTF(("SetFocus to %x failed.\n",msg.wParam));
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4674
		}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4675
		continue;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4676
#endif
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4677
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4678
#ifdef SET_CURSOR_IN_WINTHREAD
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4679
	    case WM_THREAD_SETCURSOR:
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4680
		if (msg.lParam) {
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
  4681
		    if( __isWinNT_NEW_BEHAVIOUR ) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4682
			SetCursor((HCURSOR)msg.lParam);
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
  4683
		    } else {
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  4684
			POINT p;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  4685
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  4686
			GetCursorPos(&p);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  4687
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  4688
			if (WindowFromPoint(p) == msg.hwnd) {
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
  4689
			    EVENT_PRINTF(("threadSetCursor %x\n",msg.lParam));
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
  4690
			    SetCursor((HCURSOR)msg.lParam);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  4691
			}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4692
		    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4693
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4694
		continue;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  4695
#endif
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4696
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4697
#ifdef BEEP_IN_WINTHREAD
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4698
	    case WM_THREAD_BEEP:
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4699
		MessageBeep( MB_ICONEXCLAMATION);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4700
		continue;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4701
#endif
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4702
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4703
	    case WM_THREAD_SETCAPTURE:
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4704
		if (msg.wParam) {
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4705
		    if (__currentPointerView) {
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4706
			if (inSizeMove) {
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4707
			    if (needDelayedMouseLeaveWindow == NULL) {
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4708
				needDelayedMouseLeaveWindow = __currentPointerView;
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4709
			    }
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4710
			} else {
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  4711
			    if (GetWindow_eventMask(__currentPointerView) & LeaveWindowMask) {
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  4712
				enqEvent(LeaveWindowMask, __currentPointerView, __WM_MOUSELEAVE, 0, -1, -1, 0, getModifiers(), EV_NOTIME);
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  4713
				SetWindow_mouseXY(__currentPointerView, -9999, -9999);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  4714
			    }
2740
ccf206833806 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2736
diff changeset
  4715
			}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4716
		    }
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  4717
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  4718
		    __currentPointerView = (HWND)msg.wParam;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4719
		    __currentCapture = CAPTURE_EXPLICIT;
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  4720
		    EVENT_PRINTF(("threadSetCapture %x\n",msg.wParam));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4721
		    SetCapture(__currentPointerView);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4722
		} else {
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4723
		    if (__currentPointerView  == __rootWinSpezial) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4724
			//ShowWindow(__rootWinSpezial, SW_HIDE);
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4725
			SetWindowPos(__rootWinSpezial, HWND_BOTTOM, 0, 0, 0, 0,
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4726
				     SWP_NOREDRAW | SWP_NOSENDCHANGING | SWP_NOCOPYBITS
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4727
				     | SWP_HIDEWINDOW | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4728
				   /*| SWP_NOZORDER | SWP_NOOWNERZORDER */);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4729
		    }
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4730
		    __currentPointerView = 0;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  4731
		    __currentCapture = CAPTURE_NONE;
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  4732
		    EVENT_PRINTF(("threadReleaseCapture\n"));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4733
		    ReleaseCapture();
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4734
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4735
		if (msg.lParam) {
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  4736
		    DDPRINTF(("threadSetCursor %x\n",msg.lParam));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4737
		    SetCursor((HCURSOR)msg.lParam);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4738
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4739
		continue;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4740
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4741
	    case WM_THREAD_CREATEWINDOW:
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  4742
		EVENT_PRINTF(("*WM_THREAD_CREATEWINDOW %d\n", th_calls));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4743
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4744
		{
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4745
		    createWindowInfo *cwi = (createWindowInfo *)(msg.lParam);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4746
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4747
		    if ((cwi->sequenceNr == msg.wParam)
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4748
		     && (cwi->sequenceNr != INVALIDATED_CWI)) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4749
			cwi->sequenceNr = INVALIDATED_CWI;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4750
			cwi->infoWasRead = 1;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4751
			if (cwi->newWinHandle == NULL) {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4752
			    HANDLE ev;
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4753
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4754
			    cwi->newWinHandle = CreateWindowExW(
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4755
						cwi->winStyleBitsEx,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4756
						cwi->className,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4757
						cwi->windowName,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4758
						cwi->winStyleBits,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4759
						cwi->x, cwi->y,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4760
						cwi->dx, cwi->dy,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4761
						cwi->parentHandle,
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4762
						NULL,           /* menu */
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4763
						(HANDLE) __getHInstance(),
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4764
						cwi->localWindowInfo
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  4765
					       );
5072
fcd3884582e0 unicode stuff
Claus Gittinger <cg@exept.de>
parents: 5067
diff changeset
  4766
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4767
			    if (cwi->newWinHandle == NULL) {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  4768
				cwi->errCode = GetLastError();
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  4769
				console_fprintf(stderr, "WinWorkstation [info]: CreateWindow %s failed: %d (0x%x) [%d]\n",
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4770
						cwi->className, cwi->errCode, cwi->errCode, __LINE__);
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4771
			    } else {
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4772
				SETLOCALWINDOWINFOPTR(cwi->newWinHandle, cwi->localWindowInfo);
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4773
#ifdef DEBUG /* PARANOIA */
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4774
				if (GETLOCALWINDOWINFOPTR(cwi->newWinHandle) != cwi->localWindowInfo) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  4775
				   console_fprintf(stderr, "lI-Error\n");
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4776
				}
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4777
#endif
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4778
			    }
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  4779
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4780
			    ev = cwi->hCreateEvent;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4781
			    if (ev) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4782
				SetEvent(ev);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4783
			    }
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4784
			}
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4785
		    } else {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4786
			DPRINTF(("obsolete createWindow message %x ignored\n", cwi->sequenceNr));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4787
		    }
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4788
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4789
		continue;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4790
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4791
	    case WM_KEYDOWN:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4792
		DPRINTFIF(__debug_WM_KEYDOWN__ , ("WM_KEYDOWN %x\n", msg.wParam));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4793
		goto commonKey;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4794
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4795
	    case WM_KEYUP:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4796
		DPRINTFIF(__debug_WM_KEYUP__  , ("WM_KEYUP %x\n", msg.wParam));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4797
		goto commonKey;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4798
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4799
	    case WM_SYSKEYDOWN:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4800
		DPRINTFIF(__debug_WM_KEYDOWN__ , ("WM_SYSKEYDOWN %x\n", msg.wParam));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4801
		goto commonKey;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4802
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4803
	    case WM_SYSKEYUP:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4804
		DPRINTFIF(__debug_WM_KEYUP__ , ("WM_SYSKEYUP %x\n", msg.wParam));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4805
		goto commonKey;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4806
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4807
	    commonKey:
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
  4808
#if 1
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  4809
		if (((msg.wParam >= '0') && (msg.wParam <= 'Z'))
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  4810
		 || ((msg.wParam >= VK_MULTIPLY) && (msg.wParam <= VK_DIVIDE))
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  4811
		 || (msg.wParam == VK_SPACE)
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  4812
		 || (msg.wParam == VK_CAPITAL)
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4813
		 /* || (msg.wParam == VK_SHIFT) */
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4814
		 || (msg.wParam >= 0xB0))
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4815
#endif
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4816
		{
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4817
		    /*
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4818
		     * translate to a WM_CHAR message
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4819
		     */
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4820
		    if (TranslateMessage(&msg))
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4821
			continue;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4822
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4823
		break;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4824
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4825
	    /* short cirquit some messages */
3574
db1360ba8dea *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3573
diff changeset
  4826
#if 0
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4827
#ifndef SUPPORT_NATIVE_WINDOWS
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  4828
	    /*
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  4829
	     * some can simply be ignored ...
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
  4830
	     */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4831
	    case WM_ERASEBKGND:
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  4832
		EVENT_PRINTF(("*WM_ERASEBKGND\n"));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4833
		continue;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4834
	    case WM_KILLFOCUS:
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  4835
		EVENT_PRINTF(("*WM_KILLFOCUS\n"));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4836
		continue;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4837
#endif
3574
db1360ba8dea *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3573
diff changeset
  4838
#endif
db1360ba8dea *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3573
diff changeset
  4839
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4840
#if 0
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4841
	    case WM_SIZE:
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  4842
		EVENT_PRINTF(("*WM_SIZE\n"));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  4843
		continue;
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
  4844
#endif
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4845
	}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4846
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4847
	/*
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4848
	 * common ...
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  4849
	 */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4850
	evRootX = msg.pt.x;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4851
	evRootY = msg.pt.y;
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4852
#if 1
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4853
	{
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4854
	    POINT p;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4855
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4856
	    if (GetCursorPos(&p)) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4857
		evRootX = p.x;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4858
		evRootY = p.y;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4859
	    }
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4860
	}
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  4861
#endif
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  4862
	lastMSGTime = msg.time;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4863
	DispatchMessageW(&msg);   /* Dispatches message to window */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4864
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4865
}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4866
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4867
LONG APIENTRY
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4868
MainWndProc(HWND hWnd, UINT message, UINT wParam, LONG lParam)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4869
{
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4870
    int wantDefault = 1;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4871
    int retVal;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4872
    createWindowInfo *cwi;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4873
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4874
    TH_DPRINTF(("TMW %d\n",message));
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
  4875
DPRINTF(("MainWndProc %d\n",message));
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4876
    /*
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4877
     * kludge while in sizeMove loop, which
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4878
     * is performed directly by DefWindowProc
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
  4879
     * even more of a kludge: to prevent the message in the PostThreadMessage-queue
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
  4880
     * from being processed twice, we use a sequenceNr, which is passed as wParam.
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4881
     */
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  4882
    cwi = pendingCREATEWINDOWInfo;
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
  4883
    if (cwi) {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4884
	int dummyWantDefault;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4885
	int seqNr = pendingSequenceNr;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4886
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4887
	pendingCREATEWINDOWInfo = 0;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4888
	pendingSequenceNr = INVALIDATED_CWI;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4889
	DPRINTF(("### THREAD_CREATEWINDOW\n"));
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4890
	winEventProcessing(0, WM_THREAD_CREATEWINDOW, seqNr, cwi, &dummyWantDefault);
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4891
    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  4892
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4893
    retVal = winEventProcessing(hWnd, message, wParam, lParam, &wantDefault);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4894
    if (wantDefault) {
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  4895
	DDPRINTF((">>DefWindowProc\n"));
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  4896
	retVal = DefWindowProcW(hWnd, message, wParam, lParam);
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  4897
	DDPRINTF(("<<DefWindowProc\n"));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4898
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4899
    return retVal;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  4900
}
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4901
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  4902
static int CALLBACK
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4903
EnumWindowsProc( hwnd, lParam )
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4904
	HWND            hwnd;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4905
	LPARAM          lParam;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4906
{
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4907
	OBJ *refToCollection;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4908
	OBJ collection;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4909
	OBJ wHandle;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4910
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4911
	if (hwnd) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4912
	    refToCollection = (OBJ*) lParam;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4913
	    __PROTECT__(*refToCollection);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4914
	    wHandle = __MKEXTERNALADDRESS(hwnd);
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4915
	    __UNPROTECT__(*refToCollection);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4916
	    collection = *refToCollection;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4917
	    __SSEND1( collection, @symbol(add:), 0, wHandle );
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4918
	}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4919
	return TRUE;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4920
}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4921
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4922
#define xxUSE_EnumFontFamiliesEx
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4923
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
  4924
static int CALLBACK
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4925
EnumFPTypeFaceProc( lplf, lptm, dwType, lpData )
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4926
#ifdef USE_EnumFontFamiliesEx
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4927
	ENUMLOGFONTEX   *lplf;
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4928
#else
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4929
	LOGFONT         *lplf;
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4930
#endif
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4931
	TEXTMETRIC      *lptm;
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4932
	DWORD           dwType;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4933
	LPARAM          lpData;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4934
{
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4935
	OBJ t;
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4936
	OBJ *refToList;
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4937
	OBJ  typeFaceList;
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4938
	char *faceNameString;
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4939
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4940
	if (lplf) {
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  4941
	    refToList = (OBJ*) lpData;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  4942
	    __PROTECT__(*refToList);
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4943
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4944
#ifdef USE_EnumFontFamiliesEx
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4945
	    faceNameString = lplf->elfLogFont.lfFaceName;
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4946
#else
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4947
	    faceNameString = lplf->lfFaceName;
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4948
#endif
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4949
	    t = __MKSTRING( faceNameString );
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  4950
	    __UNPROTECT__(*refToList);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4951
	    typeFaceList = *refToList;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4952
	    __SSEND1( typeFaceList, @symbol(add:), 0, t );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  4953
	}
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4954
	return 1;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4955
}
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  4956
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  4957
/*
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4958
 * take a LOGFONT structure and extract relevant data into a smalltalk array.
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4959
 *
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4960
 * Returned value is:
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4961
 *      #(
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4962
 *          1   lfHeight
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4963
 *          2   lfWidth
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4964
 *          3   lfEscapement
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4965
 *          4   lfOrientation
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4966
 *          5   lfWeight (Integer)
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4967
 *          6   lfWeight (String)
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4968
 *          7   lfItalic
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4969
 *          8   lfUnderline
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4970
 *          9   lfStrikeOut
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4971
 *         10   lfCharSet (Integer)
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4972
 *         11   lfOutPrecision
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4973
 *         12   lfClipPrecision
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4974
 *         13   lfQuality
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4975
 *         14   lfPitchAndFamily
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4976
 *         15   face and style name (String i.e. "bold-roman")
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4977
 *         16   face name from windows
4014
Claus Gittinger <cg@exept.de>
parents: 4013
diff changeset
  4978
 *         17   character encoding lfCharSet (as String i.e. "ms_ansi", "ms_oem", "ms_cyrillic")
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4979
 *         18
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4980
 *         19
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4981
 *         20
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4982
 *       )
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  4983
 * CAVEAT: returns an array to avoid knowlege-need about ST-Objects (FontDescripttion) here.
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  4984
 */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  4985
OBJ
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4986
__charSetSymbolFor(charSet)
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4987
{
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4988
    char *s;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4989
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4990
    switch (charSet) {
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4991
	case ANSI_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4992
	    s = "ms-ansi";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4993
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4994
	case DEFAULT_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4995
	    s = "ms-default";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4996
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4997
	case SYMBOL_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4998
	    s = "ms-symbol";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  4999
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5000
	case SHIFTJIS_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5001
	    s = "ms-shiftjis";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5002
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5003
	case GB2312_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5004
	    s = "ms-gb2312";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5005
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5006
	case HANGEUL_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5007
	    s = "ms-hangeul";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5008
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5009
# if defined(HANGUL_CHARSET) && (HANGUL_CHARSET != HANGEUL_CHARSET)
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5010
	case HANGUL_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5011
	    s = "ms-hangul";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5012
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5013
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5014
	case CHINESEBIG5_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5015
	    s = "ms-chinesebig5";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5016
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5017
	case OEM_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5018
	    s = "ms-oem";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5019
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5020
# ifdef JOHAB_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5021
	case JOHAB_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5022
	    s = "ms-johab";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5023
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5024
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5025
# ifdef HEBREW_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5026
	case HEBREW_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5027
	    s = "ms-hebrew";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5028
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5029
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5030
# ifdef ARABIC_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5031
	case ARABIC_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5032
	    s = "ms-arabic";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5033
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5034
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5035
# ifdef GREEK_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5036
	case GREEK_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5037
	    s = "ms-greek";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5038
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5039
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5040
# ifdef TURKISH_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5041
	case TURKISH_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5042
	    s = "ms-turkish";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5043
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5044
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5045
# ifdef RUSSIAN_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5046
	case RUSSIAN_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5047
	    s = "ms-russian";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5048
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5049
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5050
# ifdef EASTEUROPE_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5051
	case EASTEUROPE_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5052
	    s = "ms-easteurope";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5053
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5054
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5055
# ifdef BALTIC_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5056
	case BALTIC_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5057
	    s = "ms-baltic";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5058
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5059
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5060
# ifdef VIETNAMESE_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5061
	case VIETNAMESE_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5062
	    s = "ms-vietnamese";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5063
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5064
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5065
# ifdef THAI_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5066
	case THAI_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5067
	    s = "ms-thai";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5068
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5069
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5070
# ifdef MAC_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5071
	case MAC_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5072
	    s = "ms-mac";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5073
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5074
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5075
# ifdef UNICODE_CHARSET
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5076
	case UNICODE_CHARSET:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5077
	    s = "ms-unicode";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5078
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5079
# endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5080
	default:
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5081
	    s = "unknown";
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5082
	    break;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5083
    }
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5084
    return __MKSYMBOL(s, 0);
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5085
}
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5086
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5087
OBJ
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  5088
__extractLogicalFontParameters(lplf)
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5089
	LOGFONT         *lplf;     /* ptr of logical-font data */
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5090
{
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5091
	OBJ newArray, t;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5092
	char *s;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5093
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5094
	DPRINTF((" lfHeight          %d\n", lplf->lfHeight ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5095
	DPRINTF((" lfWidth           %d\n", lplf->lfWidth  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5096
	DPRINTF((" lfEscapement      %d\n", lplf->lfEscapement  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5097
	DPRINTF((" lfOrientation     %d\n", lplf->lfOrientation  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5098
	DPRINTF((" lfWeight          %d\n", lplf->lfWeight  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5099
	DPRINTF((" lfItalic          %d\n", lplf->lfItalic  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5100
	DPRINTF((" lfUnderline       %d\n", lplf->lfUnderline  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5101
	DPRINTF((" lfStrikeOut       %d\n", lplf->lfStrikeOut  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5102
	DPRINTF((" lfCharSet         %d\n", lplf->lfCharSet  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5103
	DPRINTF((" lfOutPrecision    %d\n", lplf->lfOutPrecision  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5104
	DPRINTF((" lfClipPrecision   %d\n", lplf->lfClipPrecision  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5105
	DPRINTF((" lfQuality         %d\n", lplf->lfQuality  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5106
	DPRINTF((" lfPitchAndFamily  %d\n", lplf->lfPitchAndFamily  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5107
	DPRINTF((" lfFaceName        %s\n\n", lplf->lfFaceName  ));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5108
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5109
	newArray = __ARRAY_NEW_INT(20);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5110
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5111
	__ArrayInstPtr(newArray)->a_element[0] = __MKSMALLINT(lplf->lfHeight);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5112
	__ArrayInstPtr(newArray)->a_element[1] = __MKSMALLINT(lplf->lfWidth);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5113
	__ArrayInstPtr(newArray)->a_element[2] = __MKSMALLINT(lplf->lfEscapement);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5114
	__ArrayInstPtr(newArray)->a_element[3] = __MKSMALLINT(lplf->lfOrientation);
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5115
	__ArrayInstPtr(newArray)->a_element[4] = __MKSMALLINT(lplf->lfWeight);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5116
	switch (lplf->lfWeight) {
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5117
	    case FW_HEAVY:
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5118
	    case FW_EXTRABOLD:
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5119
	    case FW_SEMIBOLD:
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5120
	    case FW_BOLD:
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5121
		s = "bold";
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5122
		break;
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5123
	    case FW_NORMAL:
4089
c6312c7dc92a *** empty log message ***
ca
parents: 4087
diff changeset
  5124
#if 0
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5125
		s = "normal";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5126
		break;
4089
c6312c7dc92a *** empty log message ***
ca
parents: 4087
diff changeset
  5127
#endif
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5128
	    case FW_MEDIUM:
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5129
		s = "medium";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5130
		break;
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5131
	    case FW_THIN:
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5132
	    case FW_EXTRALIGHT:
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5133
	    case FW_LIGHT:
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5134
		s = "demi";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5135
		break;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5136
	    default:
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5137
		s = "other";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5138
		break;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5139
	}
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5140
	__PROTECT__(newArray);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5141
	t = __MKSTRING(s);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5142
	__UNPROTECT__(newArray);
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5143
	__ArrayInstPtr(newArray)->a_element[5] = t; __STORE(newArray, t);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5144
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5145
	__ArrayInstPtr(newArray)->a_element[6] = __MKSMALLINT(lplf->lfItalic);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5146
	__ArrayInstPtr(newArray)->a_element[7] = __MKSMALLINT(lplf->lfUnderline);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5147
	__ArrayInstPtr(newArray)->a_element[8] = __MKSMALLINT(lplf->lfStrikeOut);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5148
	__ArrayInstPtr(newArray)->a_element[9] = __MKSMALLINT(lplf->lfCharSet);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5149
	__ArrayInstPtr(newArray)->a_element[10] = __MKSMALLINT(lplf->lfOutPrecision);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5150
	__ArrayInstPtr(newArray)->a_element[11] = __MKSMALLINT(lplf->lfClipPrecision);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5151
	__ArrayInstPtr(newArray)->a_element[12] = __MKSMALLINT(lplf->lfQuality);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5152
	__ArrayInstPtr(newArray)->a_element[13] = __MKSMALLINT(lplf->lfPitchAndFamily);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5153
	/* ... */
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5154
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5155
	if( lplf->lfItalic == TRUE ) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5156
	    if( lplf->lfUnderline == TRUE ) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5157
		if( lplf->lfStrikeOut == TRUE ) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5158
		    s = "italic-underline-strikeOut";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5159
		} else {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5160
		    s = "italic-underline";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5161
		}
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5162
	    } else {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5163
		if( lplf->lfStrikeOut == TRUE ) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5164
		    s = "italic-strikeOut";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5165
		} else {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5166
		    s = "italic";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5167
		}
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5168
	    }
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5169
	} else {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5170
	    if( lplf->lfUnderline == TRUE ) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5171
		if( lplf->lfStrikeOut == TRUE ) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5172
		    s = "roman-underline-strikeOut";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5173
		} else {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5174
		    s = "roman-underline";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5175
		}
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5176
	    } else {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5177
		if( lplf->lfStrikeOut == TRUE ) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5178
		    s = "roman-strikeOut";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5179
		} else {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5180
		    s = "roman";
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5181
		}
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5182
	    }
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5183
	}
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5184
	__PROTECT__(newArray);
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5185
	t = __MKSYMBOL(s, 0);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5186
	__UNPROTECT__(newArray);
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5187
	__ArrayInstPtr(newArray)->a_element[14] = t; __STORE(newArray, t);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5188
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5189
	__PROTECT__(newArray);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5190
	t = __MKSTRING(lplf->lfFaceName);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5191
	__UNPROTECT__(newArray);
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5192
	__ArrayInstPtr(newArray)->a_element[15] = t; __STORE(newArray, t);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5193
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5194
	__PROTECT__(newArray);
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  5195
	t = __charSetSymbolFor(lplf->lfCharSet);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5196
	__UNPROTECT__(newArray);
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5197
	__ArrayInstPtr(newArray)->a_element[16] = t; __STORE(newArray, t);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5198
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5199
	return newArray;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5200
}
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5201
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  5202
static int CALLBACK
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5203
EnumFontsProc( lplf, lptm, dwType, lpData )
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5204
#ifdef USE_EnumFontFamiliesEx
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5205
	ENUMLOGFONTEX   *lplf;
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5206
#else
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5207
	LOGFONT         *lplf;     /* ptr to of logical-font data */
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5208
#endif
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5209
	TEXTMETRIC      *lptm;     /* ptr to physical font data */
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5210
	DWORD           dwType;    /* font type */
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5211
	LPARAM          lpData;    /* application supplied data */
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5212
{
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5213
	OBJ *refToList;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5214
	OBJ list;
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5215
	OBJ infoArray;
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5216
	OBJ *fullName;
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5217
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5218
	DPRINTF(("EnumFontsProc\n"));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5219
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5220
	if ( lplf ) {
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5221
	    refToList = (OBJ*) lpData;
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5222
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5223
	    __PROTECT__(*refToList);
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5224
#ifdef USE_EnumFontFamiliesEx
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5225
	    infoArray = __extractLogicalFontParameters(lplf->elfLogFont);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5226
	    __PROTECT__(infoArray);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5227
	    fullName = __MKSTRING(lplf->elfFullName);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5228
	    __UNPROTECT__(infoArray);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5229
	    __ArrayInstPtr(infoArray)->a_element[17] = fullName; __STORE(infoArray, fullName);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5230
#else
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5231
	    infoArray = __extractLogicalFontParameters(lplf);
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5232
#endif
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5233
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5234
	    __UNPROTECT__(*refToList);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5235
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5236
	    if ( dwType & TRUETYPE_FONTTYPE ) {
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5237
		/* change height to 0 to mark variable fonts */
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5238
		__ArrayInstPtr(infoArray)->a_element[0] = __MKSMALLINT(0);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  5239
	    }
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5240
	    list = *refToList;
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
  5241
	    __SSEND1(list, @symbol(add:), 0, infoArray);
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5242
	}
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5243
	return 1;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5244
}
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  5245
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5246
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5247
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5248
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5249
!WinWorkstation class methodsFor:'documentation'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5250
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5251
copyright
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5252
"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5253
COPYRIGHT (c) 1996 by Claus Gittinger
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5254
	      All Rights Reserved
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5255
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5256
 This software is furnished under a license and may be used
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5257
 only in accordance with the terms of that license and with the
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5258
 inclusion of the above copyright notice.   This software may not
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5259
 be provided or otherwise made available to, or used by, any
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5260
 other person.  No title to or ownership of the software is
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5261
 hereby transferred.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5262
"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5263
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5264
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5265
documentation
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5266
"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5267
    See more documentation in my superclass, DeviceWorkstation.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5268
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5269
    [author:]
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  5270
	Claus Gittinger (initial port & final fixups)
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  5271
	Manfred Dierolf (many, many changes & fixes, multithreading etc.)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5272
"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5273
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5274
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5275
!WinWorkstation class methodsFor:'initialization'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5276
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5277
initialize
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5278
    super initialize.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5279
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5280
    self initializeStandardColorNames.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5281
4261
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5282
    NativeWidgets := NativeDialogs := false.
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  5283
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  5284
    BeepDuration := 200.        "milliseconds"
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  5285
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  5286
    ButtonTranslation := #(1 2 2).
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  5287
3574
db1360ba8dea *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3573
diff changeset
  5288
    "/ SysColorChanges are reported *very* often when exceed is running,
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  5289
    "/ but are also needed to update my view colors when the settings change.
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  5290
    "/ I dont know what exceed is doing there ...
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  5291
    "/ IgnoreSysColorChanges := true.
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  5292
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  5293
    "/ translation table from ST/X windowType symbol (system-independent)
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  5294
    "/ to Windows windowClass (windows-specific).
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5295
4261
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5296
    NativeWidgetClassTable := IdentityDictionary new.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5297
    NativeWidgetClassTable at:#ScrollBar                put:'SCROLLBAR'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5298
    NativeWidgetClassTable at:#HorizontalScrollBar      put:'SCROLLBAR'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5299
    NativeWidgetClassTable at:#VerticalScrollBar        put:'SCROLLBAR'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5300
    NativeWidgetClassTable at:#CheckBox                 put:'BUTTON'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5301
    NativeWidgetClassTable at:#RadioButton              put:'BUTTON'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5302
    NativeWidgetClassTable at:#Button                   put:'BUTTON'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5303
    NativeWidgetClassTable at:#DefaultButton            put:'BUTTON'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5304
    NativeWidgetClassTable at:#OwnerDrawButton          put:'BUTTON'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5305
    NativeWidgetClassTable at:#ComboBox                 put:'COMBOBOX'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5306
    NativeWidgetClassTable at:#EditField                put:'EDIT'.
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  5307
    NativeWidgetClassTable at:#ListBox                  put:'LISTBOX'.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5308
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5309
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5310
initializeStandardColorNames
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5311
    "{ Pragma: +optSpace }"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5312
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  5313
    "setup standard color names (X-color names)"
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5314
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5315
    StandardColorValues := Dictionary new.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5316
    #(
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5317
	(240 248 255)   'aliceblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5318
	(250 235 215)   'antiquewhite'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5319
	(255 239 219)   'AntiqueWhite1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5320
	(238 223 204)   'AntiqueWhite2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5321
	(205 192 176)   'AntiqueWhite3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5322
	(139 131 120)   'AntiqueWhite4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5323
	(127 255 212)   'aquamarine'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5324
	(127 255 212)   'aquamarine1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5325
	(118 238 198)   'aquamarine2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5326
	(102 205 170)   'aquamarine3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5327
	( 69 139 116)   'aquamarine4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5328
	(240 255 255)   'azure'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5329
	(240 255 255)   'azure1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5330
	(224 238 238)   'azure2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5331
	(193 205 205)   'azure3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5332
	(131 139 139)   'azure4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5333
	(245 245 220)   'beige'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5334
	(255 228 196)   'bisque'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5335
	(255 228 196)   'bisque1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5336
	(238 213 183)   'bisque2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5337
	(205 183 158)   'bisque3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5338
	(139 125 107)   'bisque4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5339
	(  0   0   0)   'black'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5340
	(255 235 205)   'blanchedalmond'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5341
	(  0   0 255)   'blue'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5342
	(138  43 226)   'blueviolet'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5343
	(  0   0 255)   'blue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5344
	(  0   0 238)   'blue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5345
	(  0   0 205)   'blue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5346
	(  0   0 139)   'blue4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5347
	(165  42  42)   'brown'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5348
	(255  64  64)   'brown1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5349
	(238  59  59)   'brown2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5350
	(205  51  51)   'brown3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5351
	(139  35  35)   'brown4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5352
	(222 184 135)   'burlywood'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5353
	(255 211 155)   'burlywood1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5354
	(238 197 145)   'burlywood2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5355
	(205 170 125)   'burlywood3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5356
	(139 115  85)   'burlywood4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5357
	( 95 158 160)   'cadetblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5358
	(152 245 255)   'CadetBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5359
	(142 229 238)   'CadetBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5360
	(122 197 205)   'CadetBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5361
	( 83 134 139)   'CadetBlue4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5362
	(127 255   0)   'chartreuse'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5363
	(127 255   0)   'chartreuse1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5364
	(118 238   0)   'chartreuse2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5365
	(102 205   0)   'chartreuse3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5366
	( 69 139   0)   'chartreuse4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5367
	(210 105  30)   'chocolate'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5368
	(255 127  36)   'chocolate1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5369
	(238 118  33)   'chocolate2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5370
	(205 102  29)   'chocolate3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5371
	(139  69  19)   'chocolate4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5372
	(255 127  80)   'coral'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5373
	(255 114  86)   'coral1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5374
	(238 106  80)   'coral2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5375
	(205  91  69)   'coral3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5376
	(139  62  47)   'coral4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5377
	(100 149 237)   'cornflowerblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5378
	(255 248 220)   'cornsilk'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5379
	(255 248 220)   'cornsilk1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5380
	(238 232 205)   'cornsilk2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5381
	(205 200 177)   'cornsilk3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5382
	(139 136 120)   'cornsilk4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5383
	(  0 255 255)   'cyan'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5384
	(  0 255 255)   'cyan1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5385
	(  0 238 238)   'cyan2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5386
	(  0 205 205)   'cyan3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5387
	(  0 139 139)   'cyan4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5388
	(  0   0 139)   'darkblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5389
	(  0 139 139)   'darkcyan'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5390
	(184 134  11)   'darkgoldenrod'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5391
	(169 169 169)   'darkgray'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5392
	(  0 100   0)   'darkgreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5393
	(169 169 169)   'darkgrey'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5394
	(189 183 107)   'darkkhaki'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5395
	(139   0 139)   'darkmagenta'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5396
	( 85 107  47)   'darkolivegreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5397
	(255 140   0)   'darkorange'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5398
	(153  50 204)   'darkorchid'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5399
	(139   0   0)   'darkred'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5400
	(233 150 122)   'darksalmon'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5401
	(143 188 143)   'darkseagreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5402
	( 72  61 139)   'darkslateblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5403
	( 47  79  79)   'darkslategray'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5404
	( 47  79  79)   'darkslategrey'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5405
	(  0 206 209)   'darkturquoise'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5406
	(148   0 211)   'darkviolet'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5407
	(255 185  15)   'DarkGoldenrod1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5408
	(238 173  14)   'DarkGoldenrod2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5409
	(205 149  12)   'DarkGoldenrod3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5410
	(139 101   8)   'DarkGoldenrod4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5411
	(202 255 112)   'DarkOliveGreen1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5412
	(188 238 104)   'DarkOliveGreen2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5413
	(162 205  90)   'DarkOliveGreen3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5414
	(110 139  61)   'DarkOliveGreen4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5415
	(255 127   0)   'DarkOrange1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5416
	(238 118   0)   'DarkOrange2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5417
	(205 102   0)   'DarkOrange3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5418
	(139  69   0)   'DarkOrange4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5419
	(191  62 255)   'DarkOrchid1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5420
	(178  58 238)   'DarkOrchid2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5421
	(154  50 205)   'DarkOrchid3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5422
	(104  34 139)   'DarkOrchid4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5423
	(193 255 193)   'DarkSeaGreen1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5424
	(180 238 180)   'DarkSeaGreen2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5425
	(155 205 155)   'DarkSeaGreen3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5426
	(105 139 105)   'DarkSeaGreen4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5427
	(151 255 255)   'DarkSlateGray1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5428
	(141 238 238)   'DarkSlateGray2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5429
	(121 205 205)   'DarkSlateGray3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5430
	( 82 139 139)   'DarkSlateGray4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5431
	(255  20 147)   'deeppink'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5432
	(  0 191 255)   'deepskyblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5433
	(255  20 147)   'DeepPink'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5434
	(255  20 147)   'DeepPink1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5435
	(238  18 137)   'DeepPink2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5436
	(205  16 118)   'DeepPink3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5437
	(139  10  80)   'DeepPink4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5438
	(  0 191 255)   'DeepSkyBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5439
	(  0 178 238)   'DeepSkyBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5440
	(  0 154 205)   'DeepSkyBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5441
	(  0 104 139)   'DeepSkyBlue4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5442
	(105 105 105)   'dimgray'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5443
	(105 105 105)   'dimgrey'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5444
	( 30 144 255)   'dodgerblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5445
	( 30 144 255)   'DodgerBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5446
	( 28 134 238)   'DodgerBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5447
	( 24 116 205)   'DodgerBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5448
	( 16  78 139)   'DodgerBlue4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5449
	(178  34  34)   'firebrick'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5450
	(255  48  48)   'firebrick1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5451
	(238  44  44)   'firebrick2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5452
	(205  38  38)   'firebrick3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5453
	(139  26  26)   'firebrick4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5454
	(255 250 240)   'floralwhite'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5455
	( 34 139  34)   'forestgreen'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5456
	(220 220 220)   'gainsboro'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5457
	(248 248 255)   'ghostwhite'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5458
	(255 215   0)   'gold'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5459
	(255 215   0)   'gold1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5460
	(238 201   0)   'gold2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5461
	(205 173   0)   'gold3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5462
	(139 117   0)   'gold4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5463
	(218 165  32)   'goldenrod'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5464
	(255 193  37)   'goldenrod1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5465
	(238 180  34)   'goldenrod2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5466
	(205 155  29)   'goldenrod3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5467
	(139 105  20)   'goldenrod4'
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5468
	(192 192 192)   'grey'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5469
	(  0   0   0)   'grey0'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5470
	(  3   3   3)   'grey1'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5471
	( 26  26  26)   'grey10'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5472
	(255 255 255)   'grey100'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5473
	( 28  28  28)   'grey11'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5474
	( 31  31  31)   'grey12'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5475
	( 33  33  33)   'grey13'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5476
	( 36  36  36)   'grey14'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5477
	( 38  38  38)   'grey15'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5478
	( 41  41  41)   'grey16'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5479
	( 43  43  43)   'grey17'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5480
	( 46  46  46)   'grey18'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5481
	( 48  48  48)   'grey19'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5482
	(  5   5   5)   'grey2'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5483
	( 51  51  51)   'grey20'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5484
	( 54  54  54)   'grey21'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5485
	( 56  56  56)   'grey22'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5486
	( 59  59  59)   'grey23'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5487
	( 61  61  61)   'grey24'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5488
	( 64  64  64)   'grey25'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5489
	( 66  66  66)   'grey26'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5490
	( 69  69  69)   'grey27'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5491
	( 71  71  71)   'grey28'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5492
	( 74  74  74)   'grey29'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5493
	(  8   8   8)   'grey3'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5494
	( 77  77  77)   'grey30'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5495
	( 79  79  79)   'grey31'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5496
	( 82  82  82)   'grey32'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5497
	( 84  84  84)   'grey33'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5498
	( 87  87  87)   'grey34'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5499
	( 89  89  89)   'grey35'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5500
	( 92  92  92)   'grey36'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5501
	( 94  94  94)   'grey37'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5502
	( 97  97  97)   'grey38'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5503
	( 99  99  99)   'grey39'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5504
	( 10  10  10)   'grey4'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5505
	(102 102 102)   'grey40'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5506
	(105 105 105)   'grey41'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5507
	(107 107 107)   'grey42'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5508
	(110 110 110)   'grey43'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5509
	(112 112 112)   'grey44'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5510
	(115 115 115)   'grey45'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5511
	(117 117 117)   'grey46'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5512
	(120 120 120)   'grey47'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5513
	(122 122 122)   'grey48'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5514
	(125 125 125)   'grey49'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5515
	( 13  13  13)   'grey5'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5516
	(127 127 127)   'grey50'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5517
	(130 130 130)   'grey51'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5518
	(133 133 133)   'grey52'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5519
	(135 135 135)   'grey53'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5520
	(138 138 138)   'grey54'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5521
	(140 140 140)   'grey55'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5522
	(143 143 143)   'grey56'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5523
	(145 145 145)   'grey57'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5524
	(148 148 148)   'grey58'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5525
	(150 150 150)   'grey59'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5526
	( 15  15  15)   'grey6'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5527
	(153 153 153)   'grey60'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5528
	(156 156 156)   'grey61'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5529
	(158 158 158)   'grey62'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5530
	(161 161 161)   'grey63'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5531
	(163 163 163)   'grey64'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5532
	(166 166 166)   'grey65'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5533
	(168 168 168)   'grey66'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5534
	(171 171 171)   'grey67'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5535
	(173 173 173)   'grey68'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5536
	(176 176 176)   'grey69'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5537
	( 18  18  18)   'grey7'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5538
	(179 179 179)   'grey70'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5539
	(181 181 181)   'grey71'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5540
	(184 184 184)   'grey72'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5541
	(186 186 186)   'grey73'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5542
	(189 189 189)   'grey74'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5543
	(191 191 191)   'grey75'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5544
	(194 194 194)   'grey76'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5545
	(196 196 196)   'grey77'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5546
	(199 199 199)   'grey78'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5547
	(201 201 201)   'grey79'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5548
	( 20  20  20)   'grey8'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5549
	(204 204 204)   'grey80'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5550
	(207 207 207)   'grey81'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5551
	(209 209 209)   'grey82'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5552
	(212 212 212)   'grey83'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5553
	(214 214 214)   'grey84'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5554
	(217 217 217)   'grey85'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5555
	(219 219 219)   'grey86'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5556
	(222 222 222)   'grey87'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5557
	(224 224 224)   'grey88'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5558
	(227 227 227)   'grey89'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5559
	( 23  23  23)   'grey9'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5560
	(229 229 229)   'grey90'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5561
	(232 232 232)   'grey91'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5562
	(235 235 235)   'grey92'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5563
	(237 237 237)   'grey93'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5564
	(240 240 240)   'grey94'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5565
	(242 242 242)   'grey95'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5566
	(245 245 245)   'grey96'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5567
	(247 247 247)   'grey97'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5568
	(250 250 250)   'grey98'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5569
	(252 252 252)   'grey99'
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  5570
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5571
	(192 192 192)   'gray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5572
	(  0   0   0)   'gray0'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5573
	(  3   3   3)   'gray1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5574
	( 26  26  26)   'gray10'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5575
	(255 255 255)   'gray100'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5576
	( 28  28  28)   'gray11'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5577
	( 31  31  31)   'gray12'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5578
	( 33  33  33)   'gray13'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5579
	( 36  36  36)   'gray14'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5580
	( 38  38  38)   'gray15'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5581
	( 41  41  41)   'gray16'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5582
	( 43  43  43)   'gray17'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5583
	( 46  46  46)   'gray18'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5584
	( 48  48  48)   'gray19'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5585
	(  5   5   5)   'gray2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5586
	( 51  51  51)   'gray20'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5587
	( 54  54  54)   'gray21'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5588
	( 56  56  56)   'gray22'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5589
	( 59  59  59)   'gray23'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5590
	( 61  61  61)   'gray24'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5591
	( 64  64  64)   'gray25'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5592
	( 66  66  66)   'gray26'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5593
	( 69  69  69)   'gray27'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5594
	( 71  71  71)   'gray28'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5595
	( 74  74  74)   'gray29'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5596
	(  8   8   8)   'gray3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5597
	( 77  77  77)   'gray30'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5598
	( 79  79  79)   'gray31'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5599
	( 82  82  82)   'gray32'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5600
	( 84  84  84)   'gray33'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5601
	( 87  87  87)   'gray34'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5602
	( 89  89  89)   'gray35'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5603
	( 92  92  92)   'gray36'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5604
	( 94  94  94)   'gray37'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5605
	( 97  97  97)   'gray38'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5606
	( 99  99  99)   'gray39'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5607
	( 10  10  10)   'gray4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5608
	(102 102 102)   'gray40'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5609
	(105 105 105)   'gray41'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5610
	(107 107 107)   'gray42'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5611
	(110 110 110)   'gray43'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5612
	(112 112 112)   'gray44'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5613
	(115 115 115)   'gray45'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5614
	(117 117 117)   'gray46'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5615
	(120 120 120)   'gray47'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5616
	(122 122 122)   'gray48'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5617
	(125 125 125)   'gray49'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5618
	( 13  13  13)   'gray5'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5619
	(127 127 127)   'gray50'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5620
	(130 130 130)   'gray51'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5621
	(133 133 133)   'gray52'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5622
	(135 135 135)   'gray53'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5623
	(138 138 138)   'gray54'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5624
	(140 140 140)   'gray55'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5625
	(143 143 143)   'gray56'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5626
	(145 145 145)   'gray57'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5627
	(148 148 148)   'gray58'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5628
	(150 150 150)   'gray59'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5629
	( 15  15  15)   'gray6'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5630
	(153 153 153)   'gray60'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5631
	(156 156 156)   'gray61'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5632
	(158 158 158)   'gray62'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5633
	(161 161 161)   'gray63'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5634
	(163 163 163)   'gray64'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5635
	(166 166 166)   'gray65'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5636
	(168 168 168)   'gray66'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5637
	(171 171 171)   'gray67'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5638
	(173 173 173)   'gray68'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5639
	(176 176 176)   'gray69'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5640
	( 18  18  18)   'gray7'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5641
	(179 179 179)   'gray70'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5642
	(181 181 181)   'gray71'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5643
	(184 184 184)   'gray72'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5644
	(186 186 186)   'gray73'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5645
	(189 189 189)   'gray74'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5646
	(191 191 191)   'gray75'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5647
	(194 194 194)   'gray76'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5648
	(196 196 196)   'gray77'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5649
	(199 199 199)   'gray78'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5650
	(201 201 201)   'gray79'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5651
	( 20  20  20)   'gray8'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5652
	(204 204 204)   'gray80'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5653
	(207 207 207)   'gray81'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5654
	(209 209 209)   'gray82'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5655
	(212 212 212)   'gray83'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5656
	(214 214 214)   'gray84'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5657
	(217 217 217)   'gray85'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5658
	(219 219 219)   'gray86'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5659
	(222 222 222)   'gray87'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5660
	(224 224 224)   'gray88'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5661
	(227 227 227)   'gray89'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5662
	( 23  23  23)   'gray9'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5663
	(229 229 229)   'gray90'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5664
	(232 232 232)   'gray91'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5665
	(235 235 235)   'gray92'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5666
	(237 237 237)   'gray93'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5667
	(240 240 240)   'gray94'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5668
	(242 242 242)   'gray95'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5669
	(245 245 245)   'gray96'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5670
	(247 247 247)   'gray97'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5671
	(250 250 250)   'gray98'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5672
	(252 252 252)   'gray99'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5673
	(  0 255   0)   'green'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5674
	(173 255  47)   'greenyellow'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5675
	(  0 255   0)   'green1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5676
	(  0 238   0)   'green2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5677
	(  0 205   0)   'green3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5678
	(  0 139   0)   'green4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5679
	(240 255 240)   'honeydew'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5680
	(240 255 240)   'honeydew1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5681
	(224 238 224)   'honeydew2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5682
	(193 205 193)   'honeydew3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5683
	(131 139 131)   'honeydew4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5684
	(255 105 180)   'hotpink'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5685
	(255 110 180)   'HotPink1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5686
	(238 106 167)   'HotPink2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5687
	(205  96 144)   'HotPink3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5688
	(139  58  98)   'HotPink4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5689
	(205  92  92)   'indianred'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5690
	(255 106 106)   'IndianRed1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5691
	(238  99  99)   'IndianRed2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5692
	(205  85  85)   'IndianRed3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5693
	(139  58  58)   'IndianRed4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5694
	(255 255 240)   'ivory'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5695
	(255 255 240)   'ivory1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5696
	(238 238 224)   'ivory2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5697
	(205 205 193)   'ivory3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5698
	(139 139 131)   'ivory4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5699
	(240 230 140)   'khaki'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5700
	(255 246 143)   'khaki1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5701
	(238 230 133)   'khaki2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5702
	(205 198 115)   'khaki3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5703
	(139 134  78)   'khaki4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5704
	(230 230 250)   'lavender'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5705
	(255 240 245)   'lavenderblush'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5706
	(255 240 245)   'LavenderBlush1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5707
	(238 224 229)   'LavenderBlush2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5708
	(205 193 197)   'LavenderBlush3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5709
	(139 131 134)   'LavenderBlush4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5710
	(124 252   0)   'lawngreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5711
	(255 250 205)   'lemonchiffon'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5712
	(255 250 205)   'LemonChiffon1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5713
	(238 233 191)   'LemonChiffon2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5714
	(205 201 165)   'LemonChiffon3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5715
	(139 137 112)   'LemonChiffon4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5716
	(173 216 230)   'lightblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5717
	(240 128 128)   'lightcoral'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5718
	(224 255 255)   'lightcyan'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5719
	(238 221 130)   'lightgoldenrod'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5720
	(250 250 210)   'lightgoldenrodyellow'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5721
	(211 211 211)   'lightgray'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5722
	(144 238 144)   'lightgreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5723
	(211 211 211)   'lightgrey'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5724
	(255 182 193)   'lightpink'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5725
	(255 160 122)   'lightsalmon'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5726
	( 32 178 170)   'lightseagreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5727
	(135 206 250)   'lightskyblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5728
	(132 112 255)   'lightslateblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5729
	(119 136 153)   'lightslategray'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5730
	(119 136 153)   'lightslategrey'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5731
	(176 196 222)   'lightsteelblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5732
	(255 255 224)   'lightyellow'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5733
	(191 239 255)   'LightBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5734
	(178 223 238)   'LightBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5735
	(154 192 205)   'LightBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5736
	(104 131 139)   'LightBlue4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5737
	(224 255 255)   'LightCyan1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5738
	(209 238 238)   'LightCyan2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5739
	(180 205 205)   'LightCyan3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5740
	(122 139 139)   'LightCyan4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5741
	(255 236 139)   'LightGoldenrod1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5742
	(238 220 130)   'LightGoldenrod2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5743
	(205 190 112)   'LightGoldenrod3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5744
	(139 129  76)   'LightGoldenrod4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5745
	(255 174 185)   'LightPink1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5746
	(238 162 173)   'LightPink2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5747
	(205 140 149)   'LightPink3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5748
	(139  95 101)   'LightPink4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5749
	(255 160 122)   'LightSalmon1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5750
	(238 149 114)   'LightSalmon2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5751
	(205 129  98)   'LightSalmon3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5752
	(139  87  66)   'LightSalmon4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5753
	(176 226 255)   'LightSkyBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5754
	(164 211 238)   'LightSkyBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5755
	(141 182 205)   'LightSkyBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5756
	( 96 123 139)   'LightSkyBlue4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5757
	(202 225 255)   'LightSteelBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5758
	(188 210 238)   'LightSteelBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5759
	(162 181 205)   'LightSteelBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5760
	(110 123 139)   'LightSteelBlue4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5761
	(255 255 224)   'LightYellow1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5762
	(238 238 209)   'LightYellow2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5763
	(205 205 180)   'LightYellow3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5764
	(139 139 122)   'LightYellow4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5765
	( 50 205  50)   'limegreen'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5766
	(250 240 230)   'linen'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5767
	(255   0 255)   'magenta'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5768
	(255   0 255)   'magenta1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5769
	(238   0 238)   'magenta2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5770
	(205   0 205)   'magenta3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5771
	(139   0 139)   'magenta4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5772
	(176  48  96)   'maroon'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5773
	(255  52 179)   'maroon1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5774
	(238  48 167)   'maroon2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5775
	(205  41 144)   'maroon3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5776
	(139  28  98)   'maroon4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5777
	(102 205 170)   'mediumaquamarine'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5778
	(  0   0 205)   'mediumblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5779
	(186  85 211)   'mediumorchid'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5780
	(147 112 219)   'mediumpurple'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5781
	( 60 179 113)   'mediumseagreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5782
	(123 104 238)   'mediumslateblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5783
	(  0 250 154)   'mediumspringgreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5784
	( 72 209 204)   'mediumturquoise'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5785
	(199  21 133)   'mediumvioletred'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5786
	(224 102 255)   'MediumOrchid1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5787
	(209  95 238)   'MediumOrchid2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5788
	(180  82 205)   'MediumOrchid3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5789
	(122  55 139)   'MediumOrchid4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5790
	(171 130 255)   'MediumPurple1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5791
	(159 121 238)   'MediumPurple2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5792
	(137 104 205)   'MediumPurple3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5793
	( 93  71 139)   'MediumPurple4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5794
	( 25  25 112)   'midnightblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5795
	(245 255 250)   'mintcream'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5796
	(255 228 225)   'mistyrose'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5797
	(255 228 225)   'MistyRose1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5798
	(238 213 210)   'MistyRose2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5799
	(205 183 181)   'MistyRose3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5800
	(139 125 123)   'MistyRose4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5801
	(255 228 181)   'moccasin'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5802
	(255 222 173)   'navajowhite'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5803
	(255 222 173)   'NavajoWhite1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5804
	(238 207 161)   'NavajoWhite2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5805
	(205 179 139)   'NavajoWhite3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5806
	(139 121  94)   'NavajoWhite4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5807
	(  0   0 128)   'navy'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5808
	(  0   0 128)   'navyblue'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5809
	(253 245 230)   'oldlace'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5810
	(107 142  35)   'olivedrab'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5811
	(192 255  62)   'OliveDrab1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5812
	(179 238  58)   'OliveDrab2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5813
	(154 205  50)   'OliveDrab3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5814
	(105 139  34)   'OliveDrab4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5815
	(255 165   0)   'orange'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5816
	(255 165   0)   'orange1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5817
	(238 154   0)   'orange2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5818
	(205 133   0)   'orange3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5819
	(139  90   0)   'orange4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5820
	(255  69   0)   'orangered'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5821
	(255  69   0)   'OrangeRed1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5822
	(238  64   0)   'OrangeRed2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5823
	(205  55   0)   'OrangeRed3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5824
	(139  37   0)   'OrangeRed4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5825
	(218 112 214)   'orchid'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5826
	(255 131 250)   'orchid1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5827
	(238 122 233)   'orchid2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5828
	(205 105 201)   'orchid3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5829
	(139  71 137)   'orchid4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5830
	(238 232 170)   'palegoldenrod'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5831
	(152 251 152)   'palegreen'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5832
	(175 238 238)   'paleturquoise'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5833
	(219 112 147)   'palevioletred'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5834
	(154 255 154)   'PaleGreen1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5835
	(144 238 144)   'PaleGreen2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5836
	(124 205 124)   'PaleGreen3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5837
	( 84 139  84)   'PaleGreen4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5838
	(187 255 255)   'PaleTurquoise1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5839
	(174 238 238)   'PaleTurquoise2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5840
	(150 205 205)   'PaleTurquoise3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5841
	(102 139 139)   'PaleTurquoise4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5842
	(255 130 171)   'PaleVioletRed1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5843
	(238 121 159)   'PaleVioletRed2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5844
	(205 104 137)   'PaleVioletRed3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5845
	(139  71  93)   'PaleVioletRed4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5846
	(255 239 213)   'papayawhip'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5847
	(255 218 185)   'peachpuff'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5848
	(255 218 185)   'PeachPuff1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5849
	(238 203 173)   'PeachPuff2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5850
	(205 175 149)   'PeachPuff3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5851
	(139 119 101)   'PeachPuff4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5852
	(205 133  63)   'peru'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5853
	(255 192 203)   'pink'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5854
	(255 181 197)   'pink1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5855
	(238 169 184)   'pink2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5856
	(205 145 158)   'pink3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5857
	(139  99 108)   'pink4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5858
	(221 160 221)   'plum'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5859
	(255 187 255)   'plum1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5860
	(238 174 238)   'plum2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5861
	(205 150 205)   'plum3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5862
	(139 102 139)   'plum4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5863
	(176 224 230)   'powderblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5864
	(160  32 240)   'purple'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5865
	(155  48 255)   'purple1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5866
	(145  44 238)   'purple2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5867
	(125  38 205)   'purple3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5868
	( 85  26 139)   'purple4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5869
	(255   0   0)   'red'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5870
	(255   0   0)   'red1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5871
	(238   0   0)   'red2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5872
	(205   0   0)   'red3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5873
	(139   0   0)   'red4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5874
	(188 143 143)   'rosybrown'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5875
	(255 193 193)   'RosyBrown1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5876
	(238 180 180)   'RosyBrown2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5877
	(205 155 155)   'RosyBrown3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5878
	(139 105 105)   'RosyBrown4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5879
	( 65 105 225)   'royalblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5880
	( 72 118 255)   'RoyalBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5881
	( 67 110 238)   'RoyalBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5882
	( 58  95 205)   'RoyalBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5883
	( 39  64 139)   'RoyalBlue4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5884
	(139  69  19)   'saddlebrown'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5885
	(250 128 114)   'salmon'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5886
	(255 140 105)   'salmon1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5887
	(238 130  98)   'salmon2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5888
	(205 112  84)   'salmon3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5889
	(139  76  57)   'salmon4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5890
	(244 164  96)   'sandybrown'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5891
	( 255 206 137)  'scoActiveBackground'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5892
	( 43  45  49)   'scoActiveForeground'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5893
	( 254 222 255)  'scoActiveTopShadow'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5894
	( 172 186 204)  'scoAltBackground'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5895
	( 203 203 192)  'scoBackground'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5896
	( 11   0 113)   'scoForeground'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5897
	( 141 178 215)  'scoHighlight'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5898
	( 255 240 248)  'scoTopShadow'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5899
	( 46 139  87)   'seagreen'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5900
	( 84 255 159)   'SeaGreen1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5901
	( 78 238 148)   'SeaGreen2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5902
	( 67 205 128)   'SeaGreen3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5903
	( 46 139  87)   'SeaGreen4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5904
	(255 245 238)   'seashell'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5905
	(255 245 238)   'seashell1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5906
	(238 229 222)   'seashell2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5907
	(205 197 191)   'seashell3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5908
	(139 134 130)   'seashell4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5909
	(142 56 142)    'sgi beet'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5910
	(197 193 170)   'sgi bright gray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5911
	(197 193 170)   'sgi bright grey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5912
	(113 198 113)   'sgi chartreuse'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5913
	( 85  85  85)   'sgi dark gray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5914
	( 85  85  85)   'sgi dark grey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5915
	(  0   0   0)   'sgi gray 0'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5916
	(255 255 255)   'sgi gray 100'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5917
	( 30  30  30)   'sgi gray 12'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5918
	( 40  40  40)   'sgi gray 16'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5919
	( 51  51  51)   'sgi gray 20'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5920
	( 61  61  61)   'sgi gray 24'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5921
	( 71  71  71)   'sgi gray 28'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5922
	( 81  81  81)   'sgi gray 32'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5923
	( 91  91  91)   'sgi gray 36'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5924
	( 10  10  10)   'sgi gray 4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5925
	(102 102 102)   'sgi gray 40'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5926
	(112 112 112)   'sgi gray 44'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5927
	(122 122 122)   'sgi gray 48'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5928
	(132 132 132)   'sgi gray 52'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5929
	(142 142 142)   'sgi gray 56'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5930
	(153 153 153)   'sgi gray 60'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5931
	(163 163 163)   'sgi gray 64'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5932
	(173 173 173)   'sgi gray 68'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5933
	(183 183 183)   'sgi gray 72'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5934
	(193 193 193)   'sgi gray 76'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5935
	( 20  20  20)   'sgi gray 8'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5936
	(204 204 204)   'sgi gray 80'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5937
	(214 214 214)   'sgi gray 84'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5938
	(224 224 224)   'sgi gray 88'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5939
	(234 234 234)   'sgi gray 92'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5940
	(244 244 244)   'sgi gray 96'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5941
	(  0   0   0)   'sgi grey 0'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5942
	(255 255 255)   'sgi grey 100'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5943
	( 30  30  30)   'sgi grey 12'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5944
	( 40  40  40)   'sgi grey 16'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5945
	( 51  51  51)   'sgi grey 20'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5946
	( 61  61  61)   'sgi grey 24'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5947
	( 71  71  71)   'sgi grey 28'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5948
	( 81  81  81)   'sgi grey 32'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5949
	( 91  91  91)   'sgi grey 36'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5950
	( 10  10  10)   'sgi grey 4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5951
	(102 102 102)   'sgi grey 40'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5952
	(112 112 112)   'sgi grey 44'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5953
	(122 122 122)   'sgi grey 48'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5954
	(132 132 132)   'sgi grey 52'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5955
	(142 142 142)   'sgi grey 56'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5956
	(153 153 153)   'sgi grey 60'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5957
	(163 163 163)   'sgi grey 64'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5958
	(173 173 173)   'sgi grey 68'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5959
	(183 183 183)   'sgi grey 72'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5960
	(193 193 193)   'sgi grey 76'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5961
	( 20  20  20)   'sgi grey 8'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5962
	(204 204 204)   'sgi grey 80'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5963
	(214 214 214)   'sgi grey 84'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5964
	(224 224 224)   'sgi grey 88'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5965
	(234 234 234)   'sgi grey 92'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5966
	(244 244 244)   'sgi grey 96'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5967
	(125 158 192)   'sgi light blue'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5968
	(170 170 170)   'sgi light gray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5969
	(170 170 170)   'sgi light grey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5970
	(132 132 132)   'sgi medium gray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5971
	(132 132 132)   'sgi medium grey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5972
	(142 142  56)   'sgi olive drab'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5973
	(198 113 113)   'sgi salmon'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5974
	(113 113 198)   'sgi slate blue'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5975
	( 56 142 142)   'sgi teal'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5976
	( 40  40  40)   'sgi very dark gray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5977
	( 40  40  40)   'sgi very dark grey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5978
	(214 214 214)   'sgi very light gray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5979
	(214 214 214)   'sgi very light grey'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  5980
	(142 56 142)    'SGIBeet'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5981
	(197 193 170)   'SGIBrightGray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5982
	(197 193 170)   'SGIBrightGrey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5983
	(113 198 113)   'SGIChartreuse'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5984
	( 85  85  85)   'SGIDarkGray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5985
	( 85  85  85)   'SGIDarkGrey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5986
	(  0   0   0)   'SGIGray0'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5987
	(255 255 255)   'SGIGray100'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5988
	( 30  30  30)   'SGIGray12'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5989
	( 40  40  40)   'SGIGray16'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5990
	( 51  51  51)   'SGIGray20'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5991
	( 61  61  61)   'SGIGray24'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5992
	( 71  71  71)   'SGIGray28'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5993
	( 81  81  81)   'SGIGray32'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5994
	( 91  91  91)   'SGIGray36'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5995
	( 10  10  10)   'SGIGray4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5996
	(102 102 102)   'SGIGray40'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5997
	(112 112 112)   'SGIGray44'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5998
	(122 122 122)   'SGIGray48'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  5999
	(132 132 132)   'SGIGray52'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6000
	(142 142 142)   'SGIGray56'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6001
	(153 153 153)   'SGIGray60'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6002
	(163 163 163)   'SGIGray64'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6003
	(173 173 173)   'SGIGray68'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6004
	(183 183 183)   'SGIGray72'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6005
	(193 193 193)   'SGIGray76'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6006
	( 20  20  20)   'SGIGray8'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6007
	(204 204 204)   'SGIGray80'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6008
	(214 214 214)   'SGIGray84'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6009
	(224 224 224)   'SGIGray88'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6010
	(234 234 234)   'SGIGray92'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6011
	(244 244 244)   'SGIGray96'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6012
	(  0   0   0)   'SGIGrey0'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6013
	(255 255 255)   'SGIGrey100'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6014
	( 30  30  30)   'SGIGrey12'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6015
	( 40  40  40)   'SGIGrey16'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6016
	( 51  51  51)   'SGIGrey20'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6017
	( 61  61  61)   'SGIGrey24'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6018
	( 71  71  71)   'SGIGrey28'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6019
	( 81  81  81)   'SGIGrey32'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6020
	( 91  91  91)   'SGIGrey36'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6021
	( 10  10  10)   'SGIGrey4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6022
	(102 102 102)   'SGIGrey40'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6023
	(112 112 112)   'SGIGrey44'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6024
	(122 122 122)   'SGIGrey48'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6025
	(132 132 132)   'SGIGrey52'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6026
	(142 142 142)   'SGIGrey56'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6027
	(153 153 153)   'SGIGrey60'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6028
	(163 163 163)   'SGIGrey64'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6029
	(173 173 173)   'SGIGrey68'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6030
	(183 183 183)   'SGIGrey72'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6031
	(193 193 193)   'SGIGrey76'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6032
	( 20  20  20)   'SGIGrey8'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6033
	(204 204 204)   'SGIGrey80'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6034
	(214 214 214)   'SGIGrey84'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6035
	(224 224 224)   'SGIGrey88'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6036
	(234 234 234)   'SGIGrey92'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6037
	(244 244 244)   'SGIGrey96'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6038
	(125 158 192)   'SGILightBlue'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6039
	(170 170 170)   'SGILightGray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6040
	(170 170 170)   'SGILightGrey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6041
	(132 132 132)   'SGIMediumGray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6042
	(132 132 132)   'SGIMediumGrey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6043
	(142 142  56)   'SGIOliveDrab'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6044
	(198 113 113)   'SGISalmon'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6045
	(113 113 198)   'SGISlateBlue'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6046
	( 56 142 142)   'SGITeal'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6047
	( 40  40  40)   'SGIVeryDarkGray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6048
	( 40  40  40)   'SGIVeryDarkGrey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6049
	(214 214 214)   'SGIVeryLightGray'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6050
	(214 214 214)   'SGIVeryLightGrey'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6051
	(160  82  45)   'sienna'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6052
	(255 130  71)   'sienna1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6053
	(238 121  66)   'sienna2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6054
	(205 104  57)   'sienna3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6055
	(139  71  38)   'sienna4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6056
	(135 206 235)   'skyblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6057
	(135 206 255)   'SkyBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6058
	(126 192 238)   'SkyBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6059
	(108 166 205)   'SkyBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6060
	( 74 112 139)   'SkyBlue4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6061
	(112 128 144)   'slategray'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6062
	(112 128 144)   'slategrey'
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6063
	(106  90 205)   'slateblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6064
	(131 111 255)   'SlateBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6065
	(122 103 238)   'SlateBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6066
	(105  89 205)   'SlateBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6067
	( 71  60 139)   'SlateBlue4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6068
	(198 226 255)   'SlateGray1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6069
	(185 211 238)   'SlateGray2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6070
	(159 182 205)   'SlateGray3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6071
	(108 123 139)   'SlateGray4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6072
	(255 250 250)   'snow'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6073
	(255 250 250)   'snow1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6074
	(238 233 233)   'snow2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6075
	(205 201 201)   'snow3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6076
	(139 137 137)   'snow4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6077
	(  0 255 127)   'springgreen'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6078
	(  0 255 127)   'SpringGreen1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6079
	(  0 238 118)   'SpringGreen2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6080
	(  0 205 102)   'SpringGreen3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6081
	(  0 139  69)   'SpringGreen4'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6082
	( 70 130 180)   'steelblue'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6083
	( 99 184 255)   'SteelBlue1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6084
	( 92 172 238)   'SteelBlue2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6085
	( 79 148 205)   'SteelBlue3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6086
	( 54 100 139)   'SteelBlue4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6087
	(210 180 140)   'tan'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6088
	(255 165  79)   'tan1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6089
	(238 154  73)   'tan2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6090
	(205 133  63)   'tan3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6091
	(139  90  43)   'tan4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6092
	(216 191 216)   'thistle'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6093
	(255 225 255)   'thistle1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6094
	(238 210 238)   'thistle2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6095
	(205 181 205)   'thistle3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6096
	(139 123 139)   'thistle4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6097
	(255  99  71)   'tomato'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6098
	(255  99  71)   'tomato1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6099
	(238  92  66)   'tomato2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6100
	(205  79  57)   'tomato3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6101
	(139  54  38)   'tomato4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6102
	( 64 224 208)   'turquoise'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6103
	(  0 245 255)   'turquoise1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6104
	(  0 229 238)   'turquoise2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6105
	(  0 197 205)   'turquoise3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6106
	(  0 134 139)   'turquoise4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6107
	(238 130 238)   'violet'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6108
	(208  32 144)   'violetred'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6109
	(255  62 150)   'VioletRed1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6110
	(238  58 140)   'VioletRed2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6111
	(205  50 120)   'VioletRed3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6112
	(139  34  82)   'VioletRed4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6113
	(245 222 179)   'wheat'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6114
	(255 231 186)   'wheat1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6115
	(238 216 174)   'wheat2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6116
	(205 186 150)   'wheat3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6117
	(139 126 102)   'wheat4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6118
	(255 255 255)   'white'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6119
	(245 245 245)   'whitesmoke'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6120
	(255 255   0)   'yellow'
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  6121
	(154 205  50)   'yellowgreen'
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6122
	(255 255   0)   'yellow1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6123
	(238 238   0)   'yellow2'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6124
	(205 205   0)   'yellow3'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6125
	(139 139   0)   'yellow4'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6126
    ) pairWiseDo:[ :value :name |
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6127
	StandardColorValues at:name put:value
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6128
    ].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6129
    "
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6130
     WinWorkstation initializeStandardColorNames
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6131
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6132
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6133
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  6134
!WinWorkstation class methodsFor:'debugging'!
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6135
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6136
bitmapHandleCounts
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6137
    "for resource debugging only - will vanish"
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6138
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6139
%{  /* NOCONTEXT */
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6140
#ifdef COUNT_BMP_RESOURCES
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6141
    RETURN ( __MKSMALLINT(__cnt_bitmap));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6142
#else
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6143
    RETURN (nil);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6144
#endif
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6145
%}
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6146
!
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6147
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6148
cursorHandleCounts
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6149
    "for resource debugging only - will vanish"
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6150
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6151
%{  /* NOCONTEXT */
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6152
#ifdef COUNT_RESOURCES
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6153
    RETURN ( __MKSMALLINT(__cnt_cur));
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6154
#else
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6155
    RETURN (nil);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6156
#endif
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6157
%}
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6158
!
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6159
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  6160
debug
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  6161
%{  /* NOCONTEXT */
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  6162
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  6163
    RETURN (__debug__ != 0 ? true : false);
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  6164
%}
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  6165
!
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  6166
2684
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6167
debug2
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6168
    "enable more debug prints - this will vanish"
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6169
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6170
%{  /* NOCONTEXT */
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6171
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6172
    __debug__ = 2;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6173
%}
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6174
!
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
  6175
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6176
debug:aBoolean
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  6177
    "enable/disable debug prints - this will vanish"
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  6178
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6179
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6180
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6181
    __debug__ = (aBoolean == true) ? 1 : 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6182
%}
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6183
    "
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6184
     WinWorkstation debug:true
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6185
     WinWorkstation debug:false
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6186
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6187
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6188
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6189
debug:aBoolean message:msg
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6190
    msg = 'WM_MOUSEENTER' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6191
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6192
	__debug_WM_MOUSEENTER__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6193
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6194
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6195
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6196
    msg = 'WM_MOUSELEAVE' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6197
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6198
	__debug_WM_MOUSELEAVE__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6199
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6200
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6201
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6202
    msg = 'WM_MOUSEMOVE' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6203
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6204
	__debug_WM_MOUSEMOVE__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6205
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6206
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6207
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6208
    msg = 'WM_MOUSEACTIVATE' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6209
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6210
	__debug_WM_MOUSEACTIVATE__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6211
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6212
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6213
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6214
    msg = 'WM_BUTTONUP' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6215
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6216
	__debug_WM_BUTTONUP__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6217
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6218
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6219
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6220
    msg = 'WM_BUTTONDOWN' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6221
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6222
	__debug_WM_BUTTONDOWN__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6223
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6224
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6225
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6226
    msg = 'WM_KEYUP' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6227
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6228
	__debug_WM_KEYUP__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6229
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6230
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6231
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6232
    msg = 'WM_KEYDOWN' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6233
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6234
	__debug_WM_KEYDOWN__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6235
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6236
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6237
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6238
    msg = 'WM_PAINT' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6239
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6240
	__debug_WM_PAINT__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6241
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6242
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6243
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6244
    msg = 'WM_MOVING' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6245
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6246
	__debug_WM_MOVING__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6247
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6248
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6249
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6250
    msg = 'WM_ERASEBKGND' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6251
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6252
	__debug_WM_ERASEBKGND__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6253
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6254
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6255
    ].
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6256
    msg = 'WM_SETTEXT' ifTrue:[
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6257
%{
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6258
	__debug_WM_SETTEXT__ = (aBoolean == true) ? 1 : 0;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6259
	RETURN (self);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6260
%}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6261
    ].
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  6262
    msg = 'WM_COPYDATA' ifTrue:[
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  6263
%{
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  6264
	__debug_WM_COPYDATA__ = (aBoolean == true) ? 1 : 0;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  6265
	RETURN (self);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  6266
%}
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
  6267
    ].
5230
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6268
    msg = 'WM_DROPFILES' ifTrue:[
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6269
%{
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6270
	__debug_WM_DROPFILES__ = (aBoolean == true) ? 1 : 0;
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6271
	RETURN (self);
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6272
%}
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6273
    ].
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6274
    msg = 'WM_SHOWWINDOW' ifTrue:[
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6275
%{
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6276
	__debug_WM_SHOWWINDOW__ = (aBoolean == true) ? 1 : 0;
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6277
	RETURN (self);
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6278
%}
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
  6279
    ].
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  6280
    msg = 'WM_CHAR' ifTrue:[
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  6281
%{
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  6282
	__debug_WM_CHAR__ = (aBoolean == true) ? 1 : 0;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  6283
	RETURN (self);
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  6284
%}
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  6285
    ].
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6286
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6287
    "
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6288
     WinWorkstation debug:true
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6289
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6290
     WinWorkstation debug:false message:'WM_KEYUP'
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6291
     WinWorkstation debug:false message:'WM_KEYDOWN'
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6292
     WinWorkstation debug:false message:'WM_PAINT'
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6293
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6294
     WinWorkstation debug:true message:'WM_KEYUP'
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6295
     WinWorkstation debug:true message:'WM_KEYDOWN'
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
  6296
     WinWorkstation debug:true message:'WM_CHAR'
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  6297
    "
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  6298
!
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  6299
4248
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6300
debugNative
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6301
%{  /* NOCONTEXT */
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6302
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6303
    RETURN (__debugNative__ == 0 ? false : true);
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6304
%}
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6305
    "
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6306
     WinWorkstation debugNative
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6307
    "
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6308
!
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
  6309
4236
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6310
debugNative:aBoolean
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6311
%{  /* NOCONTEXT */
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6312
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6313
    __debugNative__ = (aBoolean == true) ? 1 : 0;
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6314
%}
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6315
    "
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6316
     WinWorkstation debugNative:true
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6317
     WinWorkstation debugNative:false
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6318
    "
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6319
!
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
  6320
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6321
fontHandleCounts
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6322
    "for resource debugging only - will vanish"
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6323
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6324
%{  /* NOCONTEXT */
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6325
#ifdef COUNT_RESOURCES
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6326
    RETURN ( __MKSMALLINT(__cnt_font));
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6327
#else
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6328
    RETURN (nil);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6329
#endif
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6330
%}
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6331
!
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6332
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6333
gcDataHandleCounts
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6334
    "for resource debugging only - will vanish"
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6335
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6336
%{  /* NOCONTEXT */
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6337
#ifdef COUNT_RESOURCES
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6338
    RETURN ( __MKSMALLINT(__cnt_gcData));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6339
#else
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6340
    RETURN (nil);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6341
#endif
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6342
%}
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6343
!
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  6344
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  6345
printHandleCounts
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6346
   "show prim values"
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  6347
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  6348
   ('WINWORKSTATION: pW=', self windowHandleCounts printString,
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  6349
    'pB=',self bitmapHandleCounts printString,
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  6350
    'pGc=',self gcDataHandleCounts printString,
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  6351
    'pbmpdc=',self bmpDcHandleCounts printString) errorPrintNL
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  6352
!
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  6353
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  6354
windowHandleCounts
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6355
    "for resource debugging only - will vanish"
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6356
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6357
%{  /* NOCONTEXT */
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6358
#ifdef COUNT_RESOURCES
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6359
    RETURN ( __MKSMALLINT(__cnt_createWindows));
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6360
#else
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6361
    RETURN (nil);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  6362
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6363
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6364
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6365
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6366
!WinWorkstation class methodsFor:'queries'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6367
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6368
platformName
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6369
    "ST-80 compatibility.
2777
60ba83db1fab comment
Claus Gittinger <cg@exept.de>
parents: 2766
diff changeset
  6370
     Return a string describing the display systems platform.
60ba83db1fab comment
Claus Gittinger <cg@exept.de>
parents: 2766
diff changeset
  6371
     WinWorkstation always returns 'WIN32'."
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6372
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6373
    ^ 'WIN32'
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6374
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6375
    "Modified: 26.5.1996 / 15:32:46 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6376
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6377
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6378
!WinWorkstation methodsFor:'accessing & queries'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6379
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6380
activateOnClick:aBoolean
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6381
    "set/clear the activateOnClick behavior.
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6382
     If on, a click into a window raises and activates
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6383
     the window.
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6384
     Windows users typically enable this;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6385
     users which are used to the X-Window system typically prefer
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6386
     it disabled.
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6387
     Returns the previous setting.
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6388
     The default is true."
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6389
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6390
%{  /* NOCONTEXT */
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6391
    OBJ rslt = __activateOnClick ? true : false;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6392
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6393
    if (aBoolean == true) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6394
       __activateOnClick = 1;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6395
    } else {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6396
       if (aBoolean == false) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6397
	   __activateOnClick = 0;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6398
       }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6399
    }
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6400
    RETURN (rslt);
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6401
%}
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
  6402
    "
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  6403
     Display activateOnClick:true
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  6404
     Display activateOnClick:false
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  6405
    "
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  6406
!
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
  6407
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6408
anyButtonMotionMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6409
    "return the state-mask for any button in motion events' state-field.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6410
     This is the devices mask."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6411
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6412
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6413
    RETURN ( __MKSMALLINT(Button1MotionMask | Button2MotionMask | Button3MotionMask));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  6414
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6415
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6416
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6417
blackpixel
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6418
    "return the colornumber of black"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6419
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6420
    ^ blackpixel
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6421
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6422
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6423
button1MotionMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6424
    "return the state-mask for button1 in motion events' state-field.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6425
     For backward compatibility."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6426
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6427
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  6428
    RETURN (__MKSMALLINT(Button1MotionMask));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6429
%}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6430
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6431
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6432
     Display button1MotionMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6433
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6434
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6435
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6436
button2MotionMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6437
    "return the state-mask for button2 in motion events' state-field
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6438
     For backward compatibility."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6439
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6440
%{  /* NOCONTEXT */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6441
    RETURN (__MKSMALLINT(Button2MotionMask));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6442
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6443
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6444
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6445
button3MotionMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6446
    "return the state-mask for button3 in motion events' state-field
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6447
     For backward compatibility."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6448
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6449
%{  /* NOCONTEXT */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6450
    RETURN (__MKSMALLINT(Button3MotionMask));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6451
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6452
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6453
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6454
buttonMotionMask:aButton
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6455
    "return the state-mask for button1 in motion events state-field.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6456
     This is the devices mask."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6457
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6458
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6459
    if (aButton == __MKSMALLINT(1)) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6460
	RETURN (__MKSMALLINT(Button1MotionMask));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6461
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6462
    if (aButton == __MKSMALLINT(2)) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6463
	RETURN (__MKSMALLINT(Button2MotionMask));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6464
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6465
    if (aButton == __MKSMALLINT(3)) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6466
	RETURN (__MKSMALLINT(Button3MotionMask));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6467
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6468
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6469
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6470
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6471
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6472
controlMask
3261
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6473
    "return the state-mask for the CTRL modified in motion events' state-field.
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6474
     Obsolete"
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6475
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6476
%{  /* NOCONTEXT */
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6477
    RETURN (__MKSMALLINT(ControlMask));
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6478
%}
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6479
!
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6480
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  6481
ctrlModifierMask
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6482
    "return the state-mask for the CTRL modified in motion events' state-field."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6483
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6484
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6485
    RETURN (__MKSMALLINT(ControlMask));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6486
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6487
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6488
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6489
defaultEventMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6490
    "return a mask to enable some events by default."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6491
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6492
%{  /* NOCONTEXT */
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6493
    RETURN (__MKSMALLINT( ExposureMask | StructureNotifyMask |
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6494
			 KeyPressMask | KeyReleaseMask |
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6495
			 EnterWindowMask | LeaveWindowMask |
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6496
			 ButtonPressMask | ButtonMotionMask | ButtonReleaseMask ));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  6497
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6498
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6499
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6500
displayFileDescriptor
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  6501
    "return the displays fileNumber for select, if any"
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6502
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6503
%{  /* NOCONTEXT */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6504
   /* RETURN (nil);*/
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6505
   RETURN ( __MKEXTERNALADDRESS(hInputEvent));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6506
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6507
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6508
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6509
displayName
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  6510
    "return the display-connections display name.
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  6511
     For Windows, a dummy name is returned"
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6512
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  6513
    ^ 'local'
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6514
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6515
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6516
focusFollowsMouse:aBoolean
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6517
    "set/clear the focusFollowsMouse behavior.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6518
     If on, the view under the mouse gets the keyboard input
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6519
     (however, within a windowGroup, ST/X can still forward the event
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6520
      the groups focusView...).
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6521
     Windows users typically disable this;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6522
     users which are used to the X-Window system typically prefer
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6523
     it enabled.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6524
     Returns the previous setting.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6525
     The default is false."
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6526
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6527
%{  /* NOCONTEXT */
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6528
    OBJ rslt = __focusFollowsMouse ? true : false;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6529
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6530
    if (aBoolean == true) {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6531
       __focusFollowsMouse = 1;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6532
    } else {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6533
       if (aBoolean == false) {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6534
	   __focusFollowsMouse = 0;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6535
       }
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6536
    }
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6537
    RETURN (rslt);
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6538
%}
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6539
    "
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6540
     WinWorkstation focusFollowsMouse:true
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6541
     WinWorkstation focusFollowsMouse:false
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6542
    "
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6543
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  6544
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  6545
getSystemColor:aKey
2298
0b4a9634b79c added getSystemColor interface
Claus Gittinger <cg@exept.de>
parents: 2297
diff changeset
  6546
    "retrieve a windows system color.
0b4a9634b79c added getSystemColor interface
Claus Gittinger <cg@exept.de>
parents: 2297
diff changeset
  6547
     The styleSheet/View classes may use this to setup default colors"
0b4a9634b79c added getSystemColor interface
Claus Gittinger <cg@exept.de>
parents: 2297
diff changeset
  6548
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  6549
    |rgb|
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  6550
4816
114cf20ad4ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4811
diff changeset
  6551
%{
4809
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6552
    int p;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6553
    int __rgb, r, g, b;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6554
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6555
    if (aKey == @symbol(COLOR_WINDOW)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6556
      p = COLOR_WINDOW;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6557
    } else if (aKey == @symbol(COLOR_WINDOWTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6558
      p = COLOR_WINDOWTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6559
    } else if (aKey == @symbol(COLOR_MENU)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6560
      p = COLOR_MENU;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6561
    } else if (aKey == @symbol(COLOR_MENUTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6562
      p = COLOR_MENUTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6563
    } else if (aKey == @symbol(COLOR_BTNFACE)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6564
      p = COLOR_BTNFACE;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6565
    } else if (aKey == @symbol(COLOR_BTNSHADOW)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6566
      p = COLOR_BTNSHADOW;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6567
    } else if (aKey == @symbol(COLOR_BTNTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6568
      p = COLOR_BTNTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6569
    } else if (aKey == @symbol(COLOR_GRAYTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6570
      p = COLOR_GRAYTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6571
    } else if (aKey == @symbol(COLOR_HIGHLIGHT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6572
      p = COLOR_HIGHLIGHT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6573
    } else if (aKey == @symbol(COLOR_HIGHLIGHTTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6574
      p = COLOR_HIGHLIGHTTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6575
    } else if (aKey == @symbol(COLOR_MENU)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6576
      p = COLOR_MENU;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6577
    } else if (aKey == @symbol(COLOR_MENUTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6578
      p = COLOR_MENUTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6579
    } else if (aKey == @symbol(COLOR_SCROLLBAR)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6580
      p = COLOR_SCROLLBAR;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6581
#ifdef COLOR_SHADOW
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6582
    } else if (aKey == @symbol(COLOR_SHADOW)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6583
      p = COLOR_SHADOW;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6584
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6585
#ifdef COLOR_BACKGROUND
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6586
    } else if (aKey == @symbol(COLOR_BACKGROUND)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6587
      p = COLOR_BACKGROUND;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6588
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6589
#ifdef COLOR_ACTIVECAPTION
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6590
    } else if (aKey == @symbol(COLOR_ACTIVECAPTION)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6591
      p = COLOR_ACTIVECAPTION;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6592
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6593
#ifdef COLOR_INACTIVECAPTION
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6594
    } else if (aKey == @symbol(COLOR_INACTIVECAPTION)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6595
      p = COLOR_INACTIVECAPTION;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6596
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6597
#ifdef COLOR_WINDOWFRAME
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6598
    } else if (aKey == @symbol(COLOR_WINDOWFRAME)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6599
      p = COLOR_WINDOWFRAME;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6600
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6601
#ifdef COLOR_CAPTIONTEXT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6602
    } else if (aKey == @symbol(COLOR_CAPTIONTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6603
      p = COLOR_CAPTIONTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6604
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6605
#ifdef COLOR_ACTIVEBORDER
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6606
    } else if (aKey == @symbol(COLOR_ACTIVEBORDER)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6607
      p = COLOR_ACTIVEBORDER;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6608
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6609
#ifdef COLOR_INACTIVEBORDER
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6610
    } else if (aKey == @symbol(COLOR_INACTIVEBORDER)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6611
      p = COLOR_INACTIVEBORDER;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6612
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6613
#ifdef COLOR_APPWORKSPACE
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6614
    } else if (aKey == @symbol(COLOR_APPWORKSPACE)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6615
      p = COLOR_APPWORKSPACE;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6616
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6617
#ifdef COLOR_INACTIVECAPTIONTEXT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6618
    } else if (aKey == @symbol(COLOR_INACTIVECAPTIONTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6619
      p = COLOR_INACTIVECAPTIONTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6620
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6621
#ifdef COLOR_BTNHIGHLIGHT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6622
    } else if (aKey == @symbol(COLOR_BTNHIGHLIGHT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6623
      p = COLOR_BTNHIGHLIGHT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6624
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6625
#ifdef COLOR_3DDKSHADOW
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6626
    } else if (aKey == @symbol(COLOR_3DDKSHADOW)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6627
      p = COLOR_3DDKSHADOW;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6628
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6629
#ifdef COLOR_3DLIGHT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6630
    } else if (aKey == @symbol(COLOR_3DLIGHT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6631
      p = COLOR_3DLIGHT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6632
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6633
#ifdef COLOR_INFOTEXT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6634
    } else if (aKey == @symbol(COLOR_INFOTEXT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6635
      p = COLOR_INFOTEXT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6636
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6637
#ifdef COLOR_INFOBK
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6638
    } else if (aKey == @symbol(COLOR_INFOBK)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6639
      p = COLOR_INFOBK;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6640
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6641
#ifdef COLOR_HOTLIGHT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6642
    } else if (aKey == @symbol(COLOR_HOTLIGHT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6643
      p = COLOR_HOTLIGHT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6644
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6645
#ifdef COLOR_GRADIENTACTIVECAPTION
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6646
    } else if (aKey == @symbol(COLOR_GRADIENTACTIVECAPTION)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6647
      p = COLOR_GRADIENTACTIVECAPTION;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6648
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6649
#ifdef COLOR_GRADIENTINACTIVECAPTION
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6650
    } else if (aKey == @symbol(COLOR_GRADIENTINACTIVECAPTION)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6651
      p = COLOR_GRADIENTINACTIVECAPTION;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6652
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6653
#ifdef COLOR_DESKTOP
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6654
    } else if (aKey == @symbol(COLOR_DESKTOP)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6655
      p = COLOR_DESKTOP;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6656
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6657
#ifdef COLOR_3DFACE
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6658
    } else if (aKey == @symbol(COLOR_3DFACE)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6659
      p = COLOR_3DFACE;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6660
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6661
#ifdef COLOR_3DSHADOW
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6662
    } else if (aKey == @symbol(COLOR_3DSHADOW)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6663
      p = COLOR_3DSHADOW;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6664
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6665
#ifdef COLOR_3DHIGHLIGHT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6666
    } else if (aKey == @symbol(COLOR_3DHIGHLIGHT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6667
      p = COLOR_3DHIGHLIGHT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6668
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6669
#ifdef COLOR_3DHILIGHT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6670
    } else if (aKey == @symbol(COLOR_3DHILIGHT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6671
      p = COLOR_3DHILIGHT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6672
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6673
#ifdef COLOR_BTNHILIGHT
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6674
    } else if (aKey == @symbol(COLOR_BTNHILIGHT)) {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6675
      p = COLOR_BTNHILIGHT;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6676
#endif
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6677
    } else {
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6678
      goto getOutOfHere;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6679
    }
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6680
    __rgb = GetSysColor(p);
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6681
    /* win uses BGR order */
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6682
    r = __rgb & 0xFF;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6683
    g = (__rgb >> 8) & 0xFF;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6684
    b = (__rgb >> 16) & 0xFF;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6685
    __rgb = (((r << 8) | g) << 8) | b;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6686
    rgb = __MKSMALLINT(__rgb);
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6687
getOutOfHere: ;
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6688
%}.
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6689
    rgb isNil ifTrue:[ ^ nil ].
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6690
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6691
    ^ Color
4816
114cf20ad4ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4811
diff changeset
  6692
	redByte:((rgb bitShift:-16) bitAnd:16rFF)
114cf20ad4ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4811
diff changeset
  6693
	greenByte:((rgb bitShift:-8) bitAnd:16rFF)
114cf20ad4ed *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4811
diff changeset
  6694
	blueByte:(rgb bitAnd:16rFF)
2298
0b4a9634b79c added getSystemColor interface
Claus Gittinger <cg@exept.de>
parents: 2297
diff changeset
  6695
0b4a9634b79c added getSystemColor interface
Claus Gittinger <cg@exept.de>
parents: 2297
diff changeset
  6696
    "
0b4a9634b79c added getSystemColor interface
Claus Gittinger <cg@exept.de>
parents: 2297
diff changeset
  6697
     Display getSystemColor:#COLOR_WINDOW
0b4a9634b79c added getSystemColor interface
Claus Gittinger <cg@exept.de>
parents: 2297
diff changeset
  6698
     Display getSystemColor:#COLOR_HIGHLIGHT
0b4a9634b79c added getSystemColor interface
Claus Gittinger <cg@exept.de>
parents: 2297
diff changeset
  6699
    "
4809
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6700
27b6b61daa24 preps for tray access
Claus Gittinger <cg@exept.de>
parents: 4804
diff changeset
  6701
    "Modified: / 30-10-2007 / 15:06:02 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6702
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  6703
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6704
getSystemMetrics:aNumberOrSymbol
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6705
    "get a system metrics value;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6706
     the argument is a #define-like symbol as described in the windows API;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6707
     However, to allow for future values to be retrieved, also allow an integer
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6708
     which must be the define-value."
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6709
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6710
%{  /* NOCONTEXT */
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6711
    int info = 0;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6712
    int isBool = 0;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6713
    int arg;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6714
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6715
    if (__isSmallInteger(aNumberOrSymbol)) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6716
	arg = __intVal(aNumberOrSymbol);
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6717
    } else if ((aNumberOrSymbol == @symbol(swapButton)) || (aNumberOrSymbol == @symbol(SM_SWAPBUTTON))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6718
	arg = SM_SWAPBUTTON;
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6719
	isBool = 1;
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  6720
    } else if ((aNumberOrSymbol == @symbol(mousePresent)) || (aNumberOrSymbol == @symbol(SM_MOUSEPRESENT))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6721
	arg = SM_MOUSEPRESENT;
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6722
	isBool = 1;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6723
    } else if ((aNumberOrSymbol == @symbol(mouseButtons)) || (aNumberOrSymbol == @symbol(SM_CMOUSEBUTTONS))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6724
	arg = SM_CMOUSEBUTTONS;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6725
    } else if ((aNumberOrSymbol == @symbol(iconWidth)) || (aNumberOrSymbol == @symbol(SM_CXICON))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6726
	arg = SM_CXICON;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6727
    } else if ((aNumberOrSymbol == @symbol(iconHeight)) || (aNumberOrSymbol == @symbol(SM_CYICON))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6728
	arg = SM_CYICON;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  6729
    } else if ((aNumberOrSymbol == @symbol(iconWidth)) || (aNumberOrSymbol == @symbol(SM_CXDOUBLECLK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6730
	arg = SM_CXDOUBLECLK;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  6731
    } else if ((aNumberOrSymbol == @symbol(iconHeight)) || (aNumberOrSymbol == @symbol(SM_CYDOUBLECLK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6732
	arg = SM_CYDOUBLECLK;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6733
    } else if ((aNumberOrSymbol == @symbol(cursorWidth)) || (aNumberOrSymbol == @symbol(SM_CXCURSOR))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6734
	arg = SM_CXCURSOR;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6735
    } else if ((aNumberOrSymbol == @symbol(cursorHeight)) || (aNumberOrSymbol == @symbol(SM_CYCURSOR))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6736
	arg = SM_CYCURSOR;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6737
    } else if ((aNumberOrSymbol == @symbol(captionHeight)) || (aNumberOrSymbol == @symbol(SM_CYCAPTION))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6738
	arg = SM_CYCAPTION;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6739
    } else if ((aNumberOrSymbol == @symbol(resizeFrameWidth)) || (aNumberOrSymbol == @symbol(SM_CXFRAME))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6740
	arg = SM_CXFRAME;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6741
    } else if ((aNumberOrSymbol == @symbol(resizeFrameHeight)) || (aNumberOrSymbol == @symbol(SM_CYFRAME))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6742
	arg = SM_CYFRAME;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6743
    } else if ((aNumberOrSymbol == @symbol(borderFrameWidth)) || (aNumberOrSymbol == @symbol(SM_CXBORDER))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6744
	arg = SM_CXBORDER;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6745
    } else if ((aNumberOrSymbol == @symbol(borderFrameHeight)) || (aNumberOrSymbol == @symbol(SM_CYBORDER))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6746
	arg = SM_CYBORDER;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6747
    } else if (aNumberOrSymbol == @symbol(SM_CXDLGFRAME)) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6748
	arg = SM_CXDLGFRAME;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6749
    } else if (aNumberOrSymbol == @symbol(SM_CYDLGFRAME)) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6750
	arg = SM_CYDLGFRAME;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6751
    } else if ((aNumberOrSymbol == @symbol(fullScreenWindowWidth)) || (aNumberOrSymbol == @symbol(SM_CXFULLSCREEN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6752
	arg = SM_CXFULLSCREEN;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6753
    } else if ((aNumberOrSymbol == @symbol(fullScreenWindowHeight)) || (aNumberOrSymbol == @symbol(SM_CYFULLSCREEN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6754
	arg = SM_CYFULLSCREEN;
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  6755
    } else if ((aNumberOrSymbol == @symbol(screenWidth)) || (aNumberOrSymbol == @symbol(SM_CXSCREEN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6756
	arg = SM_CXSCREEN;
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  6757
    } else if ((aNumberOrSymbol == @symbol(screenHeight)) || (aNumberOrSymbol == @symbol(SM_CYSCREEN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6758
	arg = SM_CYSCREEN;
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  6759
    } else if ((aNumberOrSymbol == @symbol(minWindowWidth)) || (aNumberOrSymbol == @symbol(SM_CXMIN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6760
	arg = SM_CXMIN;
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  6761
    } else if ((aNumberOrSymbol == @symbol(minWindowHeight)) || (aNumberOrSymbol == @symbol(SM_CYMIN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6762
	arg = SM_CYMIN;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6763
    } else if ((aNumberOrSymbol == @symbol(vScrollbarWidth)) || (aNumberOrSymbol == @symbol(SM_CXVSCROLL))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6764
	arg = SM_CXVSCROLL;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6765
    } else if ((aNumberOrSymbol == @symbol(hScrollbarHeight)) || (aNumberOrSymbol == @symbol(SM_CYHSCROLL))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6766
	arg = SM_CYHSCROLL;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6767
    } else if ((aNumberOrSymbol == @symbol(vThumbHeight)) || (aNumberOrSymbol == @symbol(SM_CYVTHUMB))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6768
	arg = SM_CYVTHUMB;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6769
    } else if ((aNumberOrSymbol == @symbol(hThumbWidth)) || (aNumberOrSymbol == @symbol(SM_CXHTHUMB))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6770
	arg = SM_CXHTHUMB;
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  6771
    } else if ((aNumberOrSymbol == @symbol(SM_CXSIZE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6772
	arg = SM_CXSIZE;
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
  6773
    } else if ((aNumberOrSymbol == @symbol(SM_CYSIZE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6774
	arg = SM_CYSIZE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6775
    } else if ((aNumberOrSymbol == @symbol(SM_CYVSCROLL))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6776
	arg = SM_CYVSCROLL;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6777
    } else if ((aNumberOrSymbol == @symbol(SM_CXHSCROLL))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6778
	arg = SM_CXHSCROLL;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6779
    } else if ((aNumberOrSymbol == @symbol(SM_CXMINTRACK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6780
	arg = SM_CXMINTRACK;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6781
    } else if ((aNumberOrSymbol == @symbol(SM_CYMINTRACK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6782
	arg = SM_CYMINTRACK;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6783
    } else if ((aNumberOrSymbol == @symbol(SM_CXICONSPACING))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6784
	arg = SM_CXICONSPACING;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6785
    } else if ((aNumberOrSymbol == @symbol(SM_CYICONSPACING))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6786
	arg = SM_CYICONSPACING;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6787
    } else if ((aNumberOrSymbol == @symbol(SM_CYMENU))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6788
	arg = SM_CYMENU;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6789
    } else if ((aNumberOrSymbol == @symbol(SM_MENUDROPALIGNMENT))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6790
	arg = SM_MENUDROPALIGNMENT;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6791
    } else if ((aNumberOrSymbol == @symbol(SM_PENWINDOWS))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6792
	arg = SM_PENWINDOWS;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6793
    } else if ((aNumberOrSymbol == @symbol(SM_DBCSENABLED))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6794
	arg = SM_DBCSENABLED;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6795
    } else if ((aNumberOrSymbol == @symbol(SM_CXFIXEDFRAME))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6796
	arg = SM_CXFIXEDFRAME;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6797
    } else if ((aNumberOrSymbol == @symbol(SM_CYFIXEDFRAME))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6798
	arg = SM_CYFIXEDFRAME;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6799
    } else if ((aNumberOrSymbol == @symbol(SM_CXSIZEFRAME))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6800
	arg = SM_CXSIZEFRAME;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6801
    } else if ((aNumberOrSymbol == @symbol(SM_CYSIZEFRAME))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6802
	arg = SM_CYSIZEFRAME;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6803
    } else if ((aNumberOrSymbol == @symbol(SM_CYKANJIWINDOW))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6804
	arg = SM_CYKANJIWINDOW;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6805
    } else if ((aNumberOrSymbol == @symbol(SM_SECURE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6806
	arg = SM_SECURE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6807
    } else if ((aNumberOrSymbol == @symbol(SM_CXEDGE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6808
	arg = SM_CXEDGE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6809
    } else if ((aNumberOrSymbol == @symbol(SM_CYEDGE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6810
	arg = SM_CYEDGE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6811
    } else if ((aNumberOrSymbol == @symbol(SM_CXMINSPACING))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6812
	arg = SM_CXMINSPACING;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6813
    } else if ((aNumberOrSymbol == @symbol(SM_CYMINSPACING))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6814
	arg = SM_CYMINSPACING;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6815
    } else if ((aNumberOrSymbol == @symbol(SM_CXSMICON))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6816
	arg = SM_CXSMICON;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6817
    } else if ((aNumberOrSymbol == @symbol(SM_CYSMICON))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6818
	arg = SM_CYSMICON;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6819
    } else if ((aNumberOrSymbol == @symbol(SM_CYSMCAPTION))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6820
	arg = SM_CYSMCAPTION;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6821
    } else if ((aNumberOrSymbol == @symbol(SM_CXSMSIZE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6822
	arg = SM_CXSMSIZE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6823
    } else if ((aNumberOrSymbol == @symbol(SM_CYSMSIZE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6824
	arg = SM_CYSMSIZE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6825
    } else if ((aNumberOrSymbol == @symbol(SM_CXMENUSIZE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6826
	arg = SM_CXMENUSIZE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6827
    } else if ((aNumberOrSymbol == @symbol(SM_CYMENUSIZE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6828
	arg = SM_CYMENUSIZE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6829
    } else if ((aNumberOrSymbol == @symbol(SM_ARRANGE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6830
	arg = SM_ARRANGE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6831
    } else if ((aNumberOrSymbol == @symbol(SM_CXMINIMIZED))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6832
	arg = SM_CXMINIMIZED;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6833
    } else if ((aNumberOrSymbol == @symbol(SM_CYMINIMIZED))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6834
	arg = SM_CYMINIMIZED;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6835
    } else if ((aNumberOrSymbol == @symbol(SM_CXMAXTRACK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6836
	arg = SM_CXMAXTRACK;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6837
    } else if ((aNumberOrSymbol == @symbol(SM_CYMAXTRACK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6838
	arg = SM_CYMAXTRACK;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6839
    } else if ((aNumberOrSymbol == @symbol(SM_CXMAXIMIZED))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6840
	arg = SM_CXMAXIMIZED;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6841
    } else if ((aNumberOrSymbol == @symbol(SM_CYMAXIMIZED))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6842
	arg = SM_CYMAXIMIZED;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6843
    } else if ((aNumberOrSymbol == @symbol(SM_NETWORK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6844
	arg = SM_NETWORK;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6845
    } else if ((aNumberOrSymbol == @symbol(SM_CXDRAG))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6846
	arg = SM_CXDRAG;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6847
    } else if ((aNumberOrSymbol == @symbol(SM_CYDRAG))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6848
	arg = SM_CYDRAG;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6849
    } else if ((aNumberOrSymbol == @symbol(SM_NETWORK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6850
	arg = SM_NETWORK;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6851
    } else if ((aNumberOrSymbol == @symbol(SM_SHOWSOUNDS))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6852
	arg = SM_SHOWSOUNDS;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6853
    } else if ((aNumberOrSymbol == @symbol(SM_CXMENUCHECK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6854
	arg = SM_CXMENUCHECK;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6855
    } else if ((aNumberOrSymbol == @symbol(SM_CYMENUCHECK))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6856
	arg = SM_CYMENUCHECK;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6857
    } else if ((aNumberOrSymbol == @symbol(SM_SLOWMACHINE))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6858
	arg = SM_SLOWMACHINE;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6859
    } else if ((aNumberOrSymbol == @symbol(SM_MIDEASTENABLED))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6860
	arg = SM_MIDEASTENABLED;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6861
    } else if ((aNumberOrSymbol == @symbol(SM_MOUSEWHEELPRESENT))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6862
	arg = SM_MOUSEWHEELPRESENT;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6863
    } else if ((aNumberOrSymbol == @symbol(SM_XVIRTUALSCREEN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6864
	arg = SM_XVIRTUALSCREEN;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6865
    } else if ((aNumberOrSymbol == @symbol(SM_YVIRTUALSCREEN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6866
	arg = SM_YVIRTUALSCREEN;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6867
    } else if ((aNumberOrSymbol == @symbol(SM_CXVIRTUALSCREEN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6868
	arg = SM_CXVIRTUALSCREEN;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6869
    } else if ((aNumberOrSymbol == @symbol(SM_CYVIRTUALSCREEN))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6870
	arg = SM_CYVIRTUALSCREEN;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6871
    } else if ((aNumberOrSymbol == @symbol(SM_CMONITORS))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6872
	arg = SM_CMONITORS;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6873
    } else if ((aNumberOrSymbol == @symbol(SM_SAMEDISPLAYFORMAT))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6874
	arg = SM_SAMEDISPLAYFORMAT;
4092
9a7cf8cf8329 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4089
diff changeset
  6875
#ifdef SM_IMMENABLED
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6876
    } else if ((aNumberOrSymbol == @symbol(SM_IMMENABLED))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6877
	arg = SM_IMMENABLED;
4092
9a7cf8cf8329 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4089
diff changeset
  6878
#endif
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6879
    } else if ((aNumberOrSymbol == @symbol(SM_DEBUG))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6880
	arg = SM_DEBUG;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6881
#ifdef SM_REMOTESESSION
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6882
    } else if ((aNumberOrSymbol == @symbol(SM_REMOTESESSION))) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6883
	arg = SM_REMOTESESSION;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6884
#endif
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6885
    } else {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6886
	RETURN (nil);
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6887
    }
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6888
    info = GetSystemMetrics(arg);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6889
    if (isBool) {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6890
	RETURN (info ? true : false);
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6891
    }
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6892
    RETURN (__MKSMALLINT(info));
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  6893
%}
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6894
    "
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6895
     Screen current getSystemMetrics:#SM_MOUSEWHEELPRESENT
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6896
     Screen current getSystemMetrics:#SM_ARRANGE
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6897
     Screen current getSystemMetrics:#SM_XVIRTUALSCREEN
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6898
     Screen current getSystemMetrics:#SM_CXVIRTUALSCREEN
4575
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  6899
     Screen current getSystemMetrics:#SM_CYVIRTUALSCREEN
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6900
     Screen current getSystemMetrics:#SM_CMONITORS
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  6901
     Screen current getSystemMetrics:#SM_SAMEDISPLAYFORMAT
4575
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  6902
    "
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  6903
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  6904
    "Modified: / 08-09-2006 / 15:36:32 / cg"
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6905
!
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6906
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6907
getSystemParametersInfo:aNumberOrSymbol
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6908
    "get a system parameter value;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6909
     the argument is a #define-like symbol as described in the windows API;
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6910
     However, to allow for future values to be retrieved, also allow an integer
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6911
     which must be the define-value."
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6912
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6913
    | info menuFontInfoArray statusFontInfoArray messageFontInfoArray
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6914
      menuFont statusFont messageFont |
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6915
%{
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6916
    int retVal = 0;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6917
    int isBool = 0;
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6918
    int isString = 0;
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6919
    int isRect = 0;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6920
    int isNonClientInfo = 0;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6921
    int arg, param;
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6922
    void *pRslt;
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6923
    union {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6924
	char buffer[1024];
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6925
	RECT rect;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6926
	NONCLIENTMETRICS nc;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6927
    } rslt;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6928
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6929
    if (__isSmallInteger(aNumberOrSymbol)) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6930
	arg = __intVal(aNumberOrSymbol);
4092
9a7cf8cf8329 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4089
diff changeset
  6931
#ifdef SPI_GETDESKWALLPAPER
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6932
    } else if (aNumberOrSymbol == @symbol(SPI_GETDESKWALLPAPER)) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6933
	arg = SPI_GETDESKWALLPAPER;
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6934
	isString = 1;
4092
9a7cf8cf8329 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4089
diff changeset
  6935
#endif
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6936
#ifdef SPI_GETDROPSHADOW
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6937
    } else if (aNumberOrSymbol == @symbol(SPI_GETDROPSHADOW)) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6938
	arg = SPI_GETDROPSHADOW;
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6939
	isBool = 1;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6940
#endif
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6941
#ifdef SPI_GETFLATMENU
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6942
    } else if (aNumberOrSymbol == @symbol(SPI_GETFLATMENU)) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6943
	arg = SPI_GETFLATMENU;
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6944
	isBool = 1;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6945
#endif
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6946
#ifdef SPI_GETWHEELSCROLLLINES
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6947
    } else if (aNumberOrSymbol == @symbol(SPI_GETWHEELSCROLLLINES)) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6948
	arg = SPI_GETWHEELSCROLLLINES;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6949
#endif
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6950
#ifdef SPI_GETHOTTRACKING
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6951
    } else if (aNumberOrSymbol == @symbol(SPI_GETHOTTRACKING)) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6952
	arg = SPI_GETHOTTRACKING;
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6953
	isBool = 1;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6954
#endif
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6955
#ifdef SPI_GETTOOLTIPANIMATION
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6956
    } else if (aNumberOrSymbol == @symbol(SPI_GETTOOLTIPANIMATION)) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6957
	arg = SPI_GETTOOLTIPANIMATION;
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6958
	isBool = 1;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6959
#endif
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6960
#ifdef SPI_GETWORKAREA
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6961
    } else if (aNumberOrSymbol == @symbol(SPI_GETWORKAREA)) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6962
	arg = SPI_GETWORKAREA;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6963
	isRect = 1;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6964
#endif
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6965
#ifdef SPI_GETNONCLIENTMETRICS
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6966
    } else if (aNumberOrSymbol == @symbol(SPI_GETNONCLIENTMETRICS)) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6967
	arg = SPI_GETNONCLIENTMETRICS;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6968
	rslt.nc.cbSize = sizeof ( rslt.nc ) ;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6969
	isNonClientInfo = 1;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6970
#endif
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6971
    } else {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6972
	RETURN (nil);
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6973
    }
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6974
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6975
    param = 0;
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6976
    pRslt = (void *)&rslt;
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6977
    if (isString) {
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6978
	param = sizeof(rslt);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6979
    }
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6980
    retVal = SystemParametersInfo(arg, param, pRslt, 0);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6981
    if (! retVal) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6982
	RETURN (nil);
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6983
    }
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6984
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6985
    if (isBool) {
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
  6986
	RETURN (info ? true : false);
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6987
    }
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  6988
    if (isString) {
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6989
	RETURN (__MKSTRING(rslt.buffer));
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6990
    }
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6991
    if (isRect) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6992
	RETURN ( __SSEND4(__DEF_Rectangle, @symbol(left:top:right:bottom:), 0,
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6993
			__MKSMALLINT(rslt.rect.left),
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6994
			__MKSMALLINT(rslt.rect.top),
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6995
			__MKSMALLINT(rslt.rect.right),
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  6996
			__MKSMALLINT(rslt.rect.bottom)) );
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6997
    }
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6998
    if (isNonClientInfo) {
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  6999
	menuFontInfoArray = __extractLogicalFontParameters(&rslt.nc.lfMenuFont);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7000
	statusFontInfoArray = __extractLogicalFontParameters(&rslt.nc.lfStatusFont);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7001
	messageFontInfoArray = __extractLogicalFontParameters(&rslt.nc.lfMessageFont);
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7002
    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7003
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7004
   out: ;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7005
%}.
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7006
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7007
    menuFontInfoArray notNil ifTrue:[
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7008
	menuFont := self fontDescriptionFromLogicalFontInfoArray:menuFontInfoArray.
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7009
	statusFont := self fontDescriptionFromLogicalFontInfoArray:statusFontInfoArray.
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7010
	messageFont := self fontDescriptionFromLogicalFontInfoArray:messageFontInfoArray.
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7011
	^ (Dictionary new)
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7012
	    at:#menuFont put:menuFont;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7013
	    at:#statusFont put:statusFont;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7014
	    at:#messageFont put:messageFont;
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7015
	    yourself.
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7016
    ].
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7017
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7018
    ^ nil
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
  7019
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  7020
    "
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  7021
     Screen current getSystemParametersInfo:#SPI_GETDESKWALLPAPER
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  7022
     Screen current getSystemParametersInfo:#SPI_GETDROPSHADOW
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7023
     Screen current getSystemParametersInfo:#SPI_GETFLATMENU
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7024
     Screen current getSystemParametersInfo:#SPI_GETWHEELSCROLLLINES
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7025
     Screen current getSystemParametersInfo:#SPI_GETHOTTRACKING
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7026
     Screen current getSystemParametersInfo:#SPI_GETTOOLTIPANIMATION
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7027
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7028
     Screen current getSystemParametersInfo:#SPI_GETWORKAREA
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7029
     Screen current getSystemParametersInfo:#SPI_GETNONCLIENTMETRICS
3721
c3e5152a3b66 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3719
diff changeset
  7030
    "
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7031
!
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7032
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7033
ignoreButtonPressOnActivate:aBoolean
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7034
    "set/clear the ignoreButtonPressOnActivate behavior.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7035
     If on, the button-press which activated a window is ignored (eaten),
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7036
     and not passed to the window.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7037
     If off, the window receives the buttonPress after the window is activated.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7038
     The default is true, since it avoids unwanted selections due to window
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7039
     activation.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7040
     Returns the previous setting."
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7041
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7042
%{  /* NOCONTEXT */
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7043
    OBJ rslt = __ignoreButtonPressOnActivate ? true : false;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7044
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7045
    if (aBoolean == true) {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7046
       __ignoreButtonPressOnActivate = 1;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7047
    } else {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7048
       if (aBoolean == false) {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7049
	   __ignoreButtonPressOnActivate = 0;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7050
       }
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7051
    }
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7052
    RETURN (rslt);
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7053
%}
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7054
    "
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7055
     WinWorkstation ignoreButtonPressOnActivate:true
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7056
     WinWorkstation ignoreButtonPressOnActivate:false
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7057
    "
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7058
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7059
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7060
primViewIdFromPoint:aPoint in:windowId
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7061
    "given a point in rootWindow, return the viewId of the subview of windowId
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7062
     hit by this coordinate. Return nil if no view was hit.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7063
     The returned id may be the id of a non ST view.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7064
     - used to find the window to drop objects after a cross-view drag."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7065
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7066
%{
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7067
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7068
    OBJ xp, yp;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7069
    int xpos, ypos;
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  7070
    HWND child_ret;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7071
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7072
    if (ISCONNECTED
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7073
     && __isExternalAddress(windowId)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7074
     && __isPoint(aPoint))
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7075
    {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7076
	xp = _point_X(aPoint);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7077
	yp = _point_Y(aPoint);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7078
	if (__bothSmallInteger(xp, yp))
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7079
	{
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7080
	    POINT p;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7081
	    HWND hWnd = _HWNDVal(windowId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7082
	    p.x = __intVal(xp);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7083
	    p.y = __intVal(yp);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7084
	    ScreenToClient(hWnd, &p);
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  7085
	    child_ret = ChildWindowFromPointEx(hWnd,p,CWP_SKIPINVISIBLE|CWP_SKIPDISABLED|CWP_SKIPTRANSPARENT);
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  7086
	    /*console_printf("ChildWindow From %x Point %d.%d = %x\n",hWnd,p.x,p.y,child_ret);*/
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  7087
	    if ((child_ret) && (child_ret != hWnd))
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7088
	    {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  7089
		RETURN ( __MKEXTERNALADDRESS(child_ret) );
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7090
	    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7091
	    RETURN ( nil );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7092
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7093
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7094
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7095
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7096
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7097
protocolVersion
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7098
    "return the displays protocol version.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7099
     For Windows, a dummy number is returned"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7100
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7101
    ^ '1'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7102
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7103
    "
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7104
     Display protocolVersion
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7105
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7106
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7107
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7108
rightButtonIsLowerWindow:aBoolean
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7109
    "set/clear the rightButtonIsLowerWindow behavior.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7110
     If on, a right-button press in the window-title area lowers the
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7111
     window.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7112
     The default is true, since a lower-window operation is very useful,
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7113
     and not provided by the standard windows applications.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7114
     Returns the previous setting."
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7115
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7116
%{  /* NOCONTEXT */
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7117
    OBJ rslt = __rightButtonIsLowerWindow ? true : false;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7118
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7119
    if (aBoolean == true) {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7120
       __rightButtonIsLowerWindow = 1;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7121
    } else {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7122
       if (aBoolean == false) {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7123
	   __rightButtonIsLowerWindow = 0;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7124
       }
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7125
    }
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7126
    RETURN (rslt);
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7127
%}
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7128
    "
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7129
     WinWorkstation rightButtonIsLowerWindow:true
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7130
     WinWorkstation rightButtonIsLowerWindow:false
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7131
    "
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7132
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7133
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7134
serverVendor
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7135
    "return the server vendor string.
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7136
     For Windows, a dummy name is returned"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7137
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7138
    ^ 'microsoft'
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7139
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7140
    "
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7141
     Display serverVendor
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7142
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7143
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7144
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7145
shiftMask
3261
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7146
    "return the state-mask for the SHIFT modified in motion events' state-field.
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7147
     Obsolete"
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7148
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7149
%{  /* NOCONTEXT */
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7150
    RETURN (__MKSMALLINT(ShiftMask));
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7151
%}
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7152
!
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7153
91ca42a43c77 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3161
diff changeset
  7154
shiftModifierMask
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7155
    "return the state-mask for the SHIFT modified in motion events' state-field."
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7156
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7157
%{  /* NOCONTEXT */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7158
    RETURN (__MKSMALLINT(ShiftMask));
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7159
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7160
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7161
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7162
shiftedLeftButtonIsLowerWindow:aBoolean
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7163
    "set/clear the shiftedLeftButtonIsLowerWindow behavior.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7164
     If on, a shift-left-button press in the window-title area lowers the
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7165
     window.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7166
     The default is true, since a lower-window operation is very useful,
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7167
     and not provided by the standard windows applications.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7168
     Notice, this duplicates the rightButtonIsLowerWindow behavior,
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7169
     but is useful with single-button mice.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7170
     Returns the previous setting."
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7171
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7172
%{  /* NOCONTEXT */
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7173
    OBJ rslt = __shiftedLeftButtonIsLowerWindow ? true : false;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7174
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7175
    if (aBoolean == true) {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7176
       __shiftedLeftButtonIsLowerWindow = 1;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7177
    } else {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7178
       if (aBoolean == false) {
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7179
	   __shiftedLeftButtonIsLowerWindow = 0;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7180
       }
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7181
    }
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7182
    RETURN (rslt);
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7183
%}
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7184
    "
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7185
     WinWorkstation shiftedLeftButtonIsLowerWindow:true
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7186
     WinWorkstation shiftedLeftButtonIsLowerWindow:false
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7187
    "
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7188
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
  7189
2682
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7190
supportedSystemColorKeys
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7191
    "return a collection of supported systemColor keys"
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7192
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7193
    ^#(
2682
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7194
	COLOR_WINDOW
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7195
	COLOR_WINDOWTEXT
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7196
	COLOR_MENU
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7197
	COLOR_MENUTEXT
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7198
	COLOR_BTNFACE
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7199
	COLOR_BTNSHADOW
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7200
	COLOR_BTNTEXT
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7201
	COLOR_GRAYTEXT
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7202
	COLOR_HIGHLIGHT
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7203
	COLOR_HIGHLIGHTTEXT
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7204
	COLOR_MENU
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7205
	COLOR_MENUTEXT
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7206
	COLOR_SCROLLBAR
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7207
	COLOR_SHADOW
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7208
    )
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7209
!
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
  7210
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7211
translatePoint:aPoint from:windowId1 to:windowId2
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7212
    "given a point in window1, return the coordinate in window2.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7213
     This expects a device coordinate (relative to the first views origin)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7214
     in aPoint and returns a device coordinate relative to the 2nd views origin.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7215
     - use to xlate points from a window to rootwindow"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7216
2276
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7217
    |x1 y1 x2 y2|
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7218
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7219
    x1 := x2 := aPoint x truncated.
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7220
    y1 := y2 := aPoint y truncated.
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7221
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7222
%{
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7223
    HWND w1, w2;
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7224
    POINT point;
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7225
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7226
    if (__isExternalAddress(windowId1)
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7227
     && __isExternalAddress(windowId2)
2279
30a35be06995 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2276
diff changeset
  7228
     && __bothSmallInteger(x1, y1)) {
2297
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
  7229
	w1 = _HWNDVal(windowId1);
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
  7230
	w2 = _HWNDVal(windowId2);
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
  7231
	point.x = __intVal(x1);
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
  7232
	point.y = __intVal(y1);
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7233
	CPRINTF(("TransPoint %x %d/%d ->",w1,point.x,point.y));
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  7234
	if (ClientToScreen(w1,&point) == FALSE) {
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  7235
	    RETURN (nil);
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  7236
	}
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  7237
	if (ScreenToClient(w2,&point) == FALSE) {
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  7238
	    RETURN (nil);
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  7239
	}
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7240
	CPRINTF((" %x %d/%d\n",w2,point.x,point.y));
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7241
	RETURN (__MKPOINT_INT(point.x, point.y));
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7242
    }
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7243
    RETURN (nil);
2276
98198d9748e6 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2270
diff changeset
  7244
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7245
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7246
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7247
vendorRelease
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7248
    "return the display-servers vendor release
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7249
     - should normally not be of any interest,
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7250
     but may be usefule for special cases.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7251
     (to avoid bugs in certain implementations / releases)"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7252
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7253
    ^ 1
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7254
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7255
    "
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7256
     Display vendorRelease
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7257
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7258
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7259
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7260
viewIdFromPoint:aPoint in:windowId
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7261
    "given a point in rootWindow, return the viewId of the subview of windowId
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7262
     hit by this coordinate. Return nil if no view was hit.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7263
     The returned id may be the id of a non ST view.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7264
     - used to find the window to drop objects after a cross-view drag."
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7265
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7266
    windowId notNil ifTrue:[
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7267
	aPoint isPoint ifTrue:[
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7268
	    "/(aPoint x > 30000) ifTrue:[self halt.].
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7269
	    "/(aPoint y > 30000) ifTrue:[self halt.].
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7270
	    "/aPoint printString errorPrintCR.
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7271
	    ^ self primViewIdFromPoint:aPoint asPoint truncated in:windowId
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7272
	]
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7273
    ].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7274
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7275
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7276
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7277
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7278
whitepixel
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7279
    "return the colornumber of white"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7280
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7281
    ^ whitepixel
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7282
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7283
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7284
!WinWorkstation methodsFor:'accessing display capabilities'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7285
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7286
captionHeight
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7287
    "return the height in pixels of any caption (title-bar) in
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7288
     standard topWindows."
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7289
4575
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7290
    ^ self getSystemMetrics:#SM_CYCAPTION
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7291
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7292
    "Modified: / 08-09-2006 / 15:39:24 / cg"
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7293
!
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7294
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7295
iconSizes
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7296
    "Get the preferred/supported icon sizes."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7297
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7298
    |d w h|
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7299
4575
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7300
    w := self getSystemMetrics:#SM_CXICON.
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7301
    h := self getSystemMetrics:#SM_CYICON.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7302
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7303
    d := IdentityDictionary new.
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7304
    d at:#minWidth put:w.
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7305
    d at:#maxWidth put:h.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7306
    d at:#widthStep put:1.
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7307
    d at:#minHeight put:w.
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7308
    d at:#maxHeight put:h.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7309
    d at:#heightStep put:1.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7310
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7311
    ^ OrderedCollection with:d
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7312
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7313
    "
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7314
     Display iconSizes
4575
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7315
    "
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7316
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7317
    "Modified: / 08-09-2006 / 15:40:18 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7318
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7319
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7320
preferredIconSize
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7321
    "Get the preferrered icon size.
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7322
     Here, workaround windows (bug?) which returns 32@32
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7323
     although, 20@20 is much nicer"
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7324
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7325
    ^ 20@20
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7326
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7327
    "
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7328
     Display preferredIconSize
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7329
    "
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7330
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7331
    "Modified: / 28.9.1998 / 13:49:54 / cg"
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7332
!
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
  7333
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7334
scrollsAsynchronous
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7335
    "return true, if this display asynchronously sends expose events after a
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7336
     scroll operation. False otherwise. Asynchronous expose events are an X
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7337
     speciality, which affects a few methods outside of the display class (sorry)"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7338
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7339
    ^ true "/ false
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7340
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7341
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7342
supportedImageFormats
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7343
    "return an array with supported image formats; each array entry
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7344
     is another array, consisting of depth and bitsPerPixel values."
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7345
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7346
    |info|
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7347
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7348
    info := IdentityDictionary new.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7349
    info at:#depth put:depth.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7350
    info at:#bitsPerPixel put:depth.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7351
    info at:#padding put:32.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7352
    ^ Array with:info
2333
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
  7353
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
  7354
    "
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
  7355
     Disply supportedImageFormats
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
  7356
    "
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
  7357
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
  7358
    "Modified: / 10.9.1998 / 23:14:05 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7359
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7360
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7361
supportsDeepIcons
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7362
    "return true, if this device supports deepicons."
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7363
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7364
    ^ true
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7365
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7366
2604
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7367
supportsIconMasks
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7368
    "return true, if this device supports masked icons.
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7369
     For now, return false since somehow icons are inverted
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7370
     if we use masks (and I dont know yet why)."
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7371
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7372
    ^ false
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7373
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7374
    "
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7375
     Display supportsIconMasks
2604
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7376
    "
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7377
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7378
    "Modified: / 28.4.1999 / 19:59:17 / cg"
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7379
!
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
  7380
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7381
supportsIconViews
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  7382
    "return true, if this device supports views as icons."
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7383
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  7384
    ^ false "/ true
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7385
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7386
    "
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7387
     Display supportsIconViews
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7388
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7389
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7390
    "Modified: 10.6.1996 / 20:11:48 / cg"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7391
    "Created: 10.6.1996 / 21:08:18 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7392
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7393
2632
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7394
supportsMaskedDrawingWith:aForm
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7395
    "return true, if the device allows the given form pixmap
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7396
     to be used as paint color.
2632
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7397
     Sorry - win95 only supports 8x8 masks."
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7398
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7399
    isWin95 ifFalse:[
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  7400
	^ true
2632
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7401
    ].
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7402
    ^ (aForm width == 8) and:[aForm height == 8]
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7403
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7404
    "Created: / 4.5.1999 / 12:48:49 / cg"
e18b55db3e1e replaced supportdMaskedDrawing by a method which gets the
Claus Gittinger <cg@exept.de>
parents: 2630
diff changeset
  7405
    "Modified: / 4.5.1999 / 12:58:31 / cg"
2339
9777d3509d1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2338
diff changeset
  7406
!
9777d3509d1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2338
diff changeset
  7407
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7408
supportsViewBackgroundPixmap:aForm
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7409
    "return true, if the device allows the given pixmap as
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7410
     viewBackground. If false is returned,
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7411
     drawing is done by (possibly) slower smalltalk code.
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7412
     Sorry - win95 only supports 8x8 masks."
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7413
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7414
    isWin95 ifFalse:[
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7415
	^ true
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7416
    ].
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7417
    ^ (aForm width == 8) and:[aForm height == 8]
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7418
!
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7419
2908
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7420
supportsWindowBorder:aNumber
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7421
    "return true, if this device supports bordered windows.
3109
f29d9b8a978d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3080
diff changeset
  7422
     Right now, some drawing stuff depends on (at least) a border of 1 pixel
2908
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7423
     to be supported by the device.
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7424
     ST/X's views are being rewritten to draw the border manually in the
3109
f29d9b8a978d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3080
diff changeset
  7425
     future. (Windows only supports borders 1 and noBorder)"
f29d9b8a978d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3080
diff changeset
  7426
f29d9b8a978d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3080
diff changeset
  7427
    ^ (aNumber ? 0) <= 1
2908
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7428
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7429
    "
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7430
     Display supportsWindowBorder:1
2908
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7431
    "
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7432
!
662656ca3794 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2817
diff changeset
  7433
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  7434
usableExtent
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  7435
    "return the usable extent of the display (in pixels).
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  7436
     Normally, the same as extent, but may be smaller, in
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  7437
     case some menu space is taken up by the window manager (windows)"
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  7438
4576
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7439
    |wSingle hSingle w h dx dy|
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7440
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7441
    w := wSingle := self getSystemMetrics:#SM_CXFULLSCREEN.
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7442
    h := hSingle := self getSystemMetrics:#SM_CYFULLSCREEN.
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7443
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7444
    (self getSystemMetrics:#SM_CMONITORS) > 1 ifTrue:[
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7445
	w := self getSystemMetrics:#SM_CXVIRTUALSCREEN.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7446
	h := self getSystemMetrics:#SM_CYVIRTUALSCREEN.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7447
	(w isNil or:[h isNil]) ifTrue:[
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7448
	    "/ not supported under win95 and win-nt4 - fallback to real extent
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7449
	    w := wSingle.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7450
	    h := hSingle.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7451
	] ifFalse:[
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7452
	    dx := (self getSystemMetrics:#SM_CXSCREEN) - wSingle.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7453
	    dy := (self getSystemMetrics:#SM_CYSCREEN) - hSingle.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7454
	    w := w - dx.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7455
	    h := h - dy - 8.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7456
	].
4575
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7457
    ].
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7458
    ^ w @ h.
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7459
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  7460
    "
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7461
     Display usableExtent
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7462
     Display getSystemMetrics:#SM_CYVIRTUALSCREEN
4576
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7463
     Display getSystemMetrics:#SM_CYFULLSCREEN
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7464
     Display getSystemMetrics:#SM_CYSCREEN
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7465
     Display getSystemMetrics:#SM_CMONITORS
4576
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7466
    "
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7467
04bf0d3a0ddd usableExtent - care for menu bar (if any)
Claus Gittinger <cg@exept.de>
parents: 4575
diff changeset
  7468
    "Modified: / 08-09-2006 / 18:19:22 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7469
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7470
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7471
!WinWorkstation methodsFor:'bitmap/window creation'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7472
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7473
addMenuItemWithLabel:aString toWindowID:aWindowId
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  7474
    "not yet"
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7475
%{
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7476
#ifdef NOT_YET_IMPLEMENTED
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7477
    if (__isExternalAddress(aWindowId)) {
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7478
	HWND hWin = _HWNDVal(aWindowId);
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7479
	HMENU hMenu;
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7480
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7481
	hMenu = GetMenu(hWin);
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7482
	if (hMenu) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7483
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7484
	}
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7485
    }
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7486
#endif
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7487
%}
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7488
!
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
  7489
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7490
createBitmapFromArray:anArray width:w height:h
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7491
    |bitmapId|
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7492
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7493
    bitmapId := self primCreateBitmapFromArray:anArray width:w height:h.
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7494
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7495
    bitmapId isNil ifTrue:[
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7496
	'WINWORKSTATION: cannot create bitmap' errorPrintCR.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7497
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7498
    ^ bitmapId
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7499
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7500
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7501
createBitmapWidth:w height:h
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7502
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7503
%{
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7504
    HANDLE newBitmapHandle;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7505
    int b_width, b_height;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7506
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7507
    if (__bothSmallInteger(w, h)) {
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7508
	b_width = __intVal(w);
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7509
	b_height = __intVal(h);
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7510
	newBitmapHandle = CreateBitmap(b_width, b_height, 1, 1, NULL);
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7511
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  7512
	if (newBitmapHandle) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7513
#ifdef COUNT_BMP_RESOURCES
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7514
	    __cnt_bitmap++;
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7515
	    RES_BMP_PRINTF(("CreateBitmap %x %d\n",newBitmapHandle, __cnt_bitmap));
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7516
#endif
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7517
	    RETURN ( __MKOBJ(newBitmapHandle));
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  7518
	}
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7519
	DPRINTF(("empty bitmap handle = %x\n", newBitmapHandle));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7520
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7521
    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7522
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7523
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7524
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7525
createPixmapWidth:w height:h depth:d
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7526
    "allocate a pixmap on the Xserver, the contents is undefined
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7527
     (i.e. random). Return a bitmap id or nil"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7528
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7529
%{
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7530
    HANDLE newBitmapHandle;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7531
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  7532
    /*console_printf("CreateBitmap Color\n");*/
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7533
    if (__bothSmallInteger(w, h) && __isSmallInteger(d) && ISCONNECTED) {
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7534
	if (__intVal(d) == 1) {
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7535
	    newBitmapHandle = CreateBitmap(__intVal(w), __intVal(h) , 1, 1, NULL);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7536
	} else {
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
  7537
#if 0
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7538
	    if (__intVal(d) != __depth) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  7539
		console_printf("invalid depth\n");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7540
		RETURN (nil);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7541
	    }
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7542
#endif
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7543
	    newBitmapHandle = CreateCompatibleBitmap(__rootDC, __intVal(w), __intVal(h) );
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7544
	}
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7545
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7546
	if (newBitmapHandle) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7547
#ifdef COUNT_BMP_RESOURCES
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7548
	    __cnt_bitmap++;
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7549
	    RES_BMP_PRINTF(("CreatePixmap %x %d\n",newBitmapHandle, __cnt_bitmap));
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7550
#endif
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  7551
	    RETURN ( __MKOBJ(newBitmapHandle));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7552
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7553
	DPRINTF(("empty bitmap handle = %x\n", newBitmapHandle));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7554
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7555
    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7556
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7557
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7558
1467
9629ce710c53 added type argument to createWindowFor - prepare for native window support (windows)
Claus Gittinger <cg@exept.de>
parents: 1461
diff changeset
  7559
createWindowFor:aView type:typeSymbol
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7560
		 origin:origin
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7561
		 extent:extent
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7562
		 minExtent:minExt
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7563
		 maxExtent:maxExt
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7564
		 borderWidth:bWidth
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7565
		 subViewOf:wsuperView
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7566
		 style:wStyle
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7567
		 inputOnly:winputOnly
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7568
		 label:wlabel
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7569
		 owner:wowner
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7570
		 icon:wicon
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7571
		 iconMask:wiconMaskArg
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7572
		 iconView:wiconView
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7573
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7574
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7575
    |xpos ypos wwidth wheight minWidth minHeight maxWidth maxHeight
4326
2c828f8b5173 fixed iconMask
Claus Gittinger <cg@exept.de>
parents: 4284
diff changeset
  7576
     wsuperViewId wiconId wiconMask invertedWiconMask wiconMaskId windowId
2c828f8b5173 fixed iconMask
Claus Gittinger <cg@exept.de>
parents: 4284
diff changeset
  7577
     weventMask wiconWidth wiconHeight windowType windowClass moreArgs|
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7578
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7579
    "/ bColorId wiconViewId bitGravity vBgColor vBgForm deepForm
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7580
    "/  preferredVisual preferredDepth  viewGravity wcursorId
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7581
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7582
    displayId isNil ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7583
	self primitiveFailed.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7584
	^ nil
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7585
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7586
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7587
    origin notNil ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7588
	xpos := origin x.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7589
	ypos := origin y.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7590
    ] ifFalse:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7591
	xpos := ypos := 0.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7592
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7593
    extent notNil ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7594
	wwidth := extent x.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7595
	wheight := extent y.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7596
    ] ifFalse:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7597
	wwidth := 100.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7598
	wheight := 40.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7599
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7600
    minExt notNil ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7601
	minWidth := minExt x.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7602
	minHeight := minExt y
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7603
    ] ifFalse:[
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7604
	minWidth := 1.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7605
	minHeight := 1.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7606
    ].
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7607
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7608
    maxExt notNil ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7609
	maxWidth := maxExt x.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7610
	maxHeight := maxExt y
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7611
    ] ifFalse:[
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7612
	maxWidth := width.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  7613
	maxHeight := height.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7614
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7615
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7616
    wsuperView notNil ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7617
	wsuperViewId := wsuperView id
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7618
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7619
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7620
    wicon notNil ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7621
	wiconId := wicon id.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7622
	wiconHeight := wicon height.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7623
	wiconWidth  := wicon width.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7624
	wiconMask := wiconMaskArg.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7625
	wiconMask isNil ifTrue:[
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7626
	    wiconMask := wicon mask.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7627
	].
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7628
	wiconMask notNil ifTrue:[
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7629
	    "/ WIN32's mask has zeros for opaque pixels
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7630
	    invertedWiconMask := wiconMask copy.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7631
	    invertedWiconMask bits invert.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7632
	    invertedWiconMask := invertedWiconMask onDevice:self.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7633
	    wiconMaskId := invertedWiconMask id
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7634
	].
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7635
    ].
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7636
"/    wiconView notNil ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7637
"/        wiconViewId := wiconView id
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7638
"/    ].
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7639
    weventMask := aView eventMask.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7640
4261
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
  7641
    NativeWidgets ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7642
	windowType := aView nativeWindowType.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7643
	windowType notNil ifTrue:[
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7644
	    "/ must be a symbol and is used
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7645
	    "/ as a key into the nativeClass translation map.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7646
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7647
	    windowClass := NativeWidgetClassTable at:windowType ifAbsent:windowType.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7648
	    self class debugNative ifTrue:[
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7649
		'WinWorkstation [info]: windowType: ' infoPrint. windowType infoPrint.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7650
		' windowClass: ' infoPrint. windowClass infoPrintCR.
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7651
	    ].
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7652
	].
4262
129e10b82f57 *** empty log message ***
ca
parents: 4261
diff changeset
  7653
    ].
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  7654
    aView isMDIClientView ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  7655
	windowClass := 'mdiclient'.
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  7656
    ].
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  7657
4262
129e10b82f57 *** empty log message ***
ca
parents: 4261
diff changeset
  7658
    windowClass notNil ifTrue:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7659
	aView beNativeWidget.
4262
129e10b82f57 *** empty log message ***
ca
parents: 4261
diff changeset
  7660
    ] ifFalse:[
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7661
	aView beNonNativeWidget.
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  7662
    ].
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  7663
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7664
    moreArgs := Array new:20.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7665
    moreArgs at:1 put:xpos.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7666
    moreArgs at:2 put:ypos.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7667
    moreArgs at:3 put:wwidth.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7668
    moreArgs at:4 put:wheight.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7669
    moreArgs at:5 put:minWidth.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7670
    moreArgs at:6 put:minHeight.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7671
    moreArgs at:7 put:maxWidth.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7672
    moreArgs at:8 put:maxHeight.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7673
    moreArgs at:9 put:wsuperViewId.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7674
    moreArgs at:10 put:nil. "/ wcursorId.
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7675
    moreArgs at:11 put:wiconId.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7676
    moreArgs at:12 put:wiconMaskId.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7677
    moreArgs at:13 put:wiconWidth.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7678
    moreArgs at:14 put:wiconHeight.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7679
    moreArgs at:15 put:windowType.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7680
    moreArgs at:16 put:windowClass.
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7681
    moreArgs at:17 put:weventMask.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7682
    moreArgs at:18 put:(aView className asString).
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7683
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7684
    [
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7685
      windowId := self
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7686
		  primCreateWindowFor:aView
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7687
		  type:typeSymbol
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7688
		  borderWidth:bWidth
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7689
		  subViewOf:wsuperView
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7690
		  style:wStyle
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7691
		  inputOnly:winputOnly
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7692
		  label:wlabel
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7693
		  owner:wowner
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7694
		  icon:wicon
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7695
		  iconMask:wiconMask
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
  7696
		  moreArgs:moreArgs.
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7697
      aView setId:windowId.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7698
    ] valueUninterruptably.
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7699
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7700
    windowId notNil ifTrue:[self addKnownView:aView withId:windowId].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7701
    ^ windowId
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7702
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7703
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7704
destroyGC:aGCId
4478
fb57ec7d7cc4 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4476
diff changeset
  7705
%{
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7706
    if (__isExternalAddress(aGCId)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7707
	struct gcData *gcData = _GCDATA(aGCId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7708
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  7709
	if (gcData == NULL) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  7710
	    console_fprintf(stderr, "WinWorkstation [warning]: trying to destroy GC twice\n");
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  7711
	    RETURN(self);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  7712
	}
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  7713
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7714
#ifdef COUNT_RESOURCES
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7715
	 __cnt_gcData--;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7716
	RESPRINTF(("DestroyGcData %d\n",__cnt_gcData));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7717
#endif
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7718
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7719
#ifdef CACHE_LAST_DC
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7720
	if (lastGcData == gcData) {
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  7721
	    _releaseDC(gcData);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7722
	}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7723
#endif
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  7724
	__ExternalAddressInstPtr(aGCId)->e_address = NULL;
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  7725
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
  7726
	freeGcData(gcData);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7727
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7728
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7729
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7730
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7731
destroyPixmap:aDrawableId
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7732
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7733
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7734
    if (__isExternalAddress(aDrawableId) && ISCONNECTED) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7735
	HANDLE bitmapHandle = _HANDLEVal(aDrawableId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7736
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7737
	if (bitmapHandle) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7738
#ifdef COUNT_BMP_RESOURCES
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7739
	    __cnt_bitmap--;
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7740
	    RES_BMP_PRINTF(("DestroyPixmap %x %d\n", bitmapHandle, __cnt_bitmap));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7741
#endif
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7742
	    _DeleteObject(bitmapHandle, __LINE__);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7743
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7744
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7745
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7746
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7747
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7748
destroyView:aView withId:aWindowId
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7749
    self primDestroyView:aView withId:aWindowId.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7750
    self removeKnownView:aView withId:aWindowId
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7751
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7752
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7753
gcFor:aDrawableId
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7754
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7755
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7756
    HWND hWnd;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7757
    struct gcData *gcData;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7758
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7759
    if (__isExternalAddress(aDrawableId)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7760
	hWnd = _HWNDVal(aDrawableId);
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7761
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7762
	if (! hWnd) {
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7763
	    RETURN (nil);
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7764
	}
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7765
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7766
	gcData = newGcData();
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7767
	if (! gcData) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7768
	    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7769
	}
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  7770
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7771
#ifdef COUNT_RESOURCES
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7772
	__cnt_gcData++;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7773
	RESPRINTF(("CreateGcData %d\n",__cnt_gcData));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7774
#endif
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7775
	gcData->hWnd = hWnd;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7776
	gcData->_hDC = 0;
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7777
	CPRINTF(("gcFor hDC=%x hWnd=%x\n",gcData->_hDC,gcData->hWnd));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7778
	RETURN ( __MKOBJ(gcData) );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7779
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7780
    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7781
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7782
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7783
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7784
gcForBitmap:aDrawableId
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7785
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  7786
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7787
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7788
    if (__isExternalAddress(aDrawableId)) {  /* HBITMAP */
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7789
	struct gcData *gcData;
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7790
	BITMAP bitmap;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7791
	HBITMAP hBitmap = _HBITMAPVAL(aDrawableId);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7792
	HDC hDC;
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7793
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7794
	if (! hBitmap) {
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7795
	    RETURN (nil);
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7796
	}
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7797
	gcData = newGcData();
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7798
	if (! gcData) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7799
	    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7800
	}
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  7801
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7802
	if (GetObject(hBitmap, sizeof(bitmap), &bitmap)) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  7803
	    DDPRINTF(("bitmap info:%d\n", bitmap.bmBitsPixel));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7804
	} else {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  7805
	    DPRINTF(("noinfo returned for bitmap\n"));
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7806
	    /* mhmh - can this happen ? */
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7807
	    bitmap.bmBitsPixel = 1;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7808
	}
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
  7809
	gcData->hBitmap = hBitmap;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7810
	gcData->bitmapColorBitCount = bitmap.bmBitsPixel;
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7811
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7812
#ifdef COUNT_RESOURCES
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7813
	__cnt_gcData++;
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
  7814
	RESPRINTF(("CreateGcData %d\n", __cnt_gcData));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7815
#endif
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7816
	RETURN ( __MKOBJ(gcData) );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7817
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7818
    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7819
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7820
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7821
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7822
gcForHDC: aDeviceContextHandle
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7823
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7824
%{  /* NOCONTEXT */
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7825
    HDC hDC;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7826
    struct gcData *gcData;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7827
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7828
    if (__isExternalAddressLike(aDeviceContextHandle)) {
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7829
	hDC = _HDCVal(aDeviceContextHandle);
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7830
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7831
	if (! hDC) {
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7832
	    RETURN (nil);
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7833
	}
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7834
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7835
	gcData = newGcData();
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7836
	if (! gcData) {
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7837
	    RETURN (nil);
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7838
	}
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7839
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7840
#ifdef COUNT_RESOURCES
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7841
	__cnt_gcData++;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7842
	RESPRINTF(("CreateGcData %d\n",__cnt_gcData));
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7843
#endif
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7844
	gcData->_hDC = hDC;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7845
	gcData->doNotCacheOrRelease = 1;
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7846
	CPRINTF(("gcFor hDC=%x hWnd=%x\n",gcData->_hDC,gcData->hWnd));
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7847
	RETURN ( __MKOBJ(gcData) );
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7848
    }
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7849
    RETURN (nil);
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7850
%}
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7851
!
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  7852
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7853
primCreateBitmapFromArray:anArray width:w height:h
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  7854
%{
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7855
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7856
    HBITMAP newBitmapHandle;
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7857
    int b_width, b_height, bytesPerRowST, bytesPerRowWN, padding;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7858
    int row, col;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7859
    unsigned char *cp, *bPits;
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7860
    unsigned char *b_bits = 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7861
    int index;
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7862
    OBJ num;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7863
    unsigned char *allocatedBits = 0;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7864
    unsigned char fastBits[10000];
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  7865
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  7866
    if (__bothSmallInteger(w, h)
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  7867
     && _isNonNilObject(anArray)) {
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7868
	OBJ cls = __qClass(anArray);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7869
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7870
	b_width = __intVal(w);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7871
	b_height = __intVal(h);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7872
	bytesPerRowST = (b_width + 7) / 8;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7873
	bytesPerRowWN = ((b_width + 15) / 16) * 2;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7874
	padding = bytesPerRowWN - bytesPerRowST;
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7875
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7876
	if ((padding == 0) && (cls == @global(ByteArray))) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7877
	    b_bits = __ByteArrayInstPtr(anArray)->ba_element;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7878
	    cp = 0;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7879
	} else {
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7880
	    int nBytes = b_height * bytesPerRowWN;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7881
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7882
	    if (nBytes < sizeof(fastBits)) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7883
		cp = b_bits = fastBits;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7884
	    } else {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7885
		cp = b_bits = allocatedBits = (unsigned char *) malloc(nBytes);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7886
		if (! cp) goto fail;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7887
	    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7888
	}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7889
	if (cp) {
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7890
	    if (cls == @global(Array)) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7891
		OBJ *op;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7892
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7893
		index = 1;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7894
		op = &(__ArrayInstPtr(anArray)->a_element[index - 1]);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7895
		for (row = b_height; row; row--) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7896
		    for (col = bytesPerRowST; col; col--) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7897
			num = *op++;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7898
			if (! __isSmallInteger(num))
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7899
			    goto fail;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7900
			*cp++ = __intVal(num);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7901
		    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7902
		    cp += padding;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7903
		}
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7904
	    } else if (cls == @global(ByteArray)) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7905
		unsigned char *pBits;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7906
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7907
		pBits = __ByteArrayInstPtr(anArray)->ba_element;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7908
		for (row = b_height; row; row--) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7909
		    for (col = bytesPerRowST; col; col--) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7910
			*cp++ = ( *pBits++ /*^ 0xFF*/ );
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7911
		    }
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7912
		    cp += padding;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7913
		}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7914
	    } else {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7915
		goto fail;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7916
	    }
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7917
	}
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7918
	CPRINTF(("create bitmap ...\n"));
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7919
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7920
	newBitmapHandle = CreateBitmap(b_width, b_height, 1, 1, b_bits );
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7921
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7922
	if (newBitmapHandle ) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7923
#ifdef COUNT_BMP_RESOURCES
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7924
	    __cnt_bitmap++;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7925
	    RES_BMP_PRINTF(("CreateBitmap %x %d\n",newBitmapHandle,__cnt_bitmap));
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7926
#endif
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7927
	    DDPRINTF(("returning bitmap %x ...\n", newBitmapHandle));
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7928
	    if (allocatedBits) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7929
		free(allocatedBits);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7930
	    }
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
  7931
	    RETURN ( __MKOBJ(newBitmapHandle));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7932
	}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7933
    }
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7934
fail: ;
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7935
    DDPRINTF(("create bitmap FAILED!!!\n"));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7936
    if (allocatedBits) {
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7937
	CPRINTF(("freeing up bitmap bits ...\n"));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  7938
	free(allocatedBits);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7939
    }
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  7940
    CPRINTF(("returning nil ...\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7941
    RETURN ( nil );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7942
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7943
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7944
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  7945
primCreateWindowFor:aView type:typeSymbol
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7946
	  borderWidth:bWidth subViewOf:wsuperView
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7947
	  style:wStyle inputOnly:winputOnly
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7948
	  label:wlabel owner:wowner
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7949
	  icon:wicon iconMask:wiconMask
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7950
	  moreArgs:moreArgs
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7951
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  7952
%{  /* STACK: 16000 */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7953
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7954
    WNDCLASS wc;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7955
    long bg, bd, bw;
1706
ba1c3d039231 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1705
diff changeset
  7956
    int winStyleBits, winEXStyleBits;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7957
    int w, h, x, y;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7958
    int min_width, min_height;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7959
    int max_width, max_height;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  7960
    OBJ eventMask;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7961
    RECT rec;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7962
    HANDLE parentHandle;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  7963
    HWND newWindowHandle;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7964
    OBJ xpos, ypos, wwidth, wheight;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7965
    OBJ minWidth, minHeight, maxWidth, maxHeight;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7966
    OBJ wsuperViewId, wcursorId, wiconId, wiconMaskId;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7967
    OBJ wiconWidth, wiconHeight;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7968
    OBJ windowType, windowClass, windowId;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7969
    OBJ stClassName;
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  7970
    int isTopWindow = 0, isNativeWindow = 0, isMDIChild = 0;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  7971
    localWindowInfo *lI;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  7972
    static createWindowInfo cwi;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  7973
    static nextSequenceNr = 1;
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  7974
    unsigned char* cp;
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  7975
    HBITMAP        xBitMap, maskBitmap;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  7976
    HICON          xIcon = (HICON)0;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  7977
    ICONINFO       iconInfo;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  7978
    char *className;
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  7979
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  7980
#   define MAX_LABEL_SIZE       256
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  7981
#   define MAX_CLASSNAME_SIZE   256
5088
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  7982
    static wchar_t classNameBufferw[MAX_CLASSNAME_SIZE];
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  7983
    static wchar_t windowNameBufferw[MAX_LABEL_SIZE];
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  7984
    unsigned char fastBits[10000];
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  7985
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7986
    xpos = __ArrayInstPtr(moreArgs)->a_element[0];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7987
    ypos = __ArrayInstPtr(moreArgs)->a_element[1];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7988
    wwidth = __ArrayInstPtr(moreArgs)->a_element[2];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7989
    wheight = __ArrayInstPtr(moreArgs)->a_element[3];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7990
    minWidth = __ArrayInstPtr(moreArgs)->a_element[4];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7991
    minHeight = __ArrayInstPtr(moreArgs)->a_element[5];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7992
    maxWidth = __ArrayInstPtr(moreArgs)->a_element[6];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7993
    maxHeight = __ArrayInstPtr(moreArgs)->a_element[7];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7994
    wsuperViewId = __ArrayInstPtr(moreArgs)->a_element[8];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7995
    wcursorId = __ArrayInstPtr(moreArgs)->a_element[9];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7996
    wiconId = __ArrayInstPtr(moreArgs)->a_element[10];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7997
    wiconMaskId = __ArrayInstPtr(moreArgs)->a_element[11];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7998
    wiconWidth = __ArrayInstPtr(moreArgs)->a_element[12];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  7999
    wiconHeight = __ArrayInstPtr(moreArgs)->a_element[13];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8000
    windowType = __ArrayInstPtr(moreArgs)->a_element[14];
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8001
    windowClass = __ArrayInstPtr(moreArgs)->a_element[15];
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  8002
    eventMask = __ArrayInstPtr(moreArgs)->a_element[16];
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8003
    stClassName = __ArrayInstPtr(moreArgs)->a_element[17];
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8004
    bg = WhitePixel;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8005
    bd = BlackPixel;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  8006
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  8007
    /* get bitmap for icon */
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8008
    if ( __isExternalAddress(wiconId) ) {
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  8009
	xBitMap = _HBITMAPVAL( wiconId );
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8010
	if ( xBitMap != 0 ) {
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8011
	    BITMAP bm;
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8012
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8013
	    if (GetObject(xBitMap, sizeof(bm), (LPSTR)&bm)) {
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8014
		int d = bm.bmPlanes * bm.bmBitsPixel;
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8015
		BYTE *ep;
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8016
		int height, width;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8017
		int nBytes;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8018
		unsigned char *allocatedBits = 0;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8019
		int privateMask = 0;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8020
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8021
		if ( __isExternalAddress(wiconMaskId) ) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8022
		    maskBitmap = _HBITMAPVAL( wiconMaskId );
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  8023
		} else {
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8024
		    if (wiconMaskId != nil) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8025
			PRINTF(("WinWorkstat [warning]: wiconMaskId is not an external address\n"));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8026
		    }
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8027
		    maskBitmap = 0;
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  8028
		}
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8029
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8030
		/*
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8031
		 * if there is no mask, generate one
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8032
		 */
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8033
		if (maskBitmap == 0) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8034
		    DPRINTF(("Bitmap w:%d h:%d p:%d d:%d\n",bm.bmWidth,bm.bmHeight,bm.bmPlanes,bm.bmBitsPixel));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8035
		    height = __intVal( wiconHeight );
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8036
		    width  = __intVal( wiconWidth  );
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8037
		    nBytes = ( width + 15 ) / 8;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8038
		    nBytes = height * nBytes;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8039
		    if (nBytes < sizeof(fastBits)) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8040
			ep = fastBits;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8041
		    } else {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8042
			ep = allocatedBits = (unsigned char *) malloc(nBytes);
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8043
		    }
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8044
		    if ( ep == 0 ) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8045
			PRINTF(( "WinWorkstat [warning]: malloc failed\n" ));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8046
		    } else {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8047
			memset(ep, 0, nBytes);
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8048
			maskBitmap = CreateBitmap(width, height, 1, 1, ep );
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8049
			if ( maskBitmap == NULL ) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8050
			    PRINTF(( "WinWorkstat [warning]: mask CREATION failed\n" ));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8051
			} else {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8052
			    privateMask = 1;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8053
			}
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8054
		    }
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8055
		}
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8056
		if ( maskBitmap != NULL ) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8057
		    DPRINTF(( "BITMAP mask CREATED!!!\n" ));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8058
		    iconInfo.fIcon = TRUE;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8059
		    iconInfo.hbmMask  = maskBitmap;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8060
		    iconInfo.hbmColor = xBitMap;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8061
		    xIcon = CreateIconIndirect( &iconInfo );
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8062
		    if (privateMask) {
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
  8063
			_DeleteObject( maskBitmap, __LINE__ );
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8064
		    }
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8065
		} else {
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8066
		    PRINTF(( "WinWorkstat [warning]: no mask for icon !\n" ));
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8067
		}
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8068
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8069
		if (allocatedBits) {
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8070
		    free(allocatedBits);
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8071
		}
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8072
	    }
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  8073
	} else {
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8074
	    DPRINTF(("WinWorkstat [warning]: xBitMap is zero \n" ));
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  8075
	}
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  8076
    } else {
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8077
	if (wiconId != nil) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
  8078
	    PRINTF(("WinWorkstat [warning]: wiconId is not an external address\n"));
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  8079
	}
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
  8080
    }
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8081
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8082
    if (__bothSmallInteger(wwidth, wheight)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8083
	w = __intVal(wwidth);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8084
	h = __intVal(wheight);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8085
    } else {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8086
	w = h = 100;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8087
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8088
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8089
    if (__bothSmallInteger(xpos, ypos)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8090
	x = __intVal(xpos);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8091
	y = __intVal(ypos);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8092
    } else {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8093
	x = y = 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8094
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8095
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8096
    if (__bothSmallInteger(minWidth, minHeight)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8097
	min_width = __intVal(minWidth);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8098
	min_height = __intVal(minHeight);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8099
    } else {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  8100
	PRINTF(("WinWorkstat [warning]: minWidth/minHeight not integer\n"))
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8101
	min_width = min_height = 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8102
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8103
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8104
    if (__bothSmallInteger(maxWidth, maxHeight)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8105
	max_width = __intVal(maxWidth);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8106
	max_height = __intVal(maxHeight);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8107
    } else {
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  8108
	PRINTF(("WinWorkstat [warning]: maxWidth/maxHeight not integer\n"))
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8109
	max_width = max_height = 10000;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8110
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8111
1706
ba1c3d039231 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1705
diff changeset
  8112
    winStyleBits = winEXStyleBits = 0;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8113
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8114
    if (__isSmallInteger(bWidth)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8115
	bw = __intVal(bWidth);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8116
	if (bw) {
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8117
	    winStyleBits |= WS_BORDER;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8118
	    bw = 1;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8119
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8120
    } else {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8121
	bw = 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8122
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8123
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8124
    className = app_name;
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8125
    if (__isString(windowClass) || __isSymbol(windowClass)) {
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8126
	className = __stringVal(windowClass);
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  8127
	NDPRINTF(("className: %s\n", className));
5088
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8128
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8129
	if (__isInteger(wStyle)) {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8130
	    isNativeWindow = 1;
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8131
	    winStyleBits |= __longIntVal(wStyle);
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  8132
	    NDPRINTF(("winStyleBits: %x\n", winStyleBits));
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8133
	} else {
5088
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8134
	    if (windowType != nil) {
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8135
		if (windowType == @symbol(RadioButton)) {
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8136
		    isNativeWindow = 1;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8137
		    winStyleBits |= BS_RADIOBUTTON;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8138
		    NDPRINTF(("class: %s - winStyleBits BS_RADIOBUTTON: %x\n", className, winStyleBits));
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8139
		} else if (windowType == @symbol(CheckBox)) {
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8140
		    isNativeWindow = 1;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8141
		    winStyleBits |= BS_CHECKBOX;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8142
		    NDPRINTF(("class: %s - winStyleBits BS_CHECKBOX: %x\n", className, winStyleBits));
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8143
		} else if (windowType == @symbol(HorizontalScrollBar)) {
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8144
		    isNativeWindow = 1;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8145
		    winStyleBits |= SBS_HORZ;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8146
		    NDPRINTF(("class: %s - winStyleBits SBS_HORZ: %x\n", className, winStyleBits));
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8147
		} else if (windowType == @symbol(VerticalScrollBar)) {
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8148
		    isNativeWindow = 1;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8149
		    winStyleBits |= SBS_VERT;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8150
		    NDPRINTF(("class: %s - winStyleBits SBS_VERT: %x\n", className, winStyleBits));
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8151
		} else if (windowType == @symbol(Button)) {
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8152
		    isNativeWindow = 1;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8153
		    NDPRINTF(("class: %s\n", className));
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8154
		} else if (windowType == @symbol(OwnerDrawButton)) {
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8155
		    isNativeWindow = 1;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8156
		    winStyleBits |= BS_OWNERDRAW;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8157
		    NDPRINTF(("class: %s - winStyleBits BS_OWNERDRAW: %x\n", className, winStyleBits));
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8158
		}
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8159
	    }
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8160
	}
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8161
    }
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8162
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8163
    if (__isExternalAddress(wsuperViewId)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8164
	/*
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8165
	 * a child window
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8166
	 */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8167
	parentHandle = _HANDLEVal(wsuperViewId);
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8168
	if (wStyle == @symbol(mdiChild)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8169
	    isMDIChild = 1;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8170
	}
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8171
    } else {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8172
	parentHandle = NULL;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8173
	isTopWindow = 1;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8174
    }
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8175
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8176
    if (!isTopWindow && !isMDIChild) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8177
	/*
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8178
	 * a child window
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8179
	 */
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  8180
	winStyleBits |= WS_CHILD;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8181
	if (winputOnly != true) {
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8182
	    winStyleBits |= (WS_CLIPSIBLINGS | WS_CLIPCHILDREN);
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8183
	    /*winStyleBits |= WS_CLIPCHILDREN;*/
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8184
	    DPRINTF(("parent handle=%x\n", parentHandle));
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8185
	} else {
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8186
	    winEXStyleBits |= WS_EX_TRANSPARENT;
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8187
	    DPRINTF(("inputview parent handle=%x\n", parentHandle));
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8188
	}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8189
#if 0
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8190
	winEXStyleBits |= WS_EX_NOPARENTNOTIFY;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8191
#endif
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8192
    } else {
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  8193
	/*
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8194
	 * a top window (regular / popUp / dialog) or MDIChild
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  8195
	 */
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8196
	if (isMDIChild) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8197
	    winEXStyleBits |= WS_EX_MDICHILD;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8198
	}
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8199
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8200
	if (! isMDIChild)
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8201
	{
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  8202
#ifdef TOPWINDOWCLASS
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8203
	    this could fail, since a pointer to local buf is passed
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8204
	    to the window-creation code (in the other thread ...)
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8205
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8206
	    static winCount = 1;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8207
	    char buf[300];
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8208
	    char *stName;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8209
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8210
# ifdef __BORLANDC__
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8211
	    struct timeb timebuffer;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8212
	    ftime(&timebuffer);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8213
# else
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8214
	    struct _timeb timebuffer;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8215
	    _ftime(&timebuffer);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8216
# endif
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8217
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8218
	    if (__isString(stClassName)) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8219
		stName = __stringVal(stClassName);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8220
	    } else {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8221
		stName = app_name;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8222
	    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8223
	    sprintf(buf, "S%d.%d%s", HIWORD(timebuffer.time), ++winCount, stName);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8224
	    DPRINTF(("topview - registerClass:%s\n",buf));
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8225
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8226
	    wc.style = /* CS_HREDRAW | CS_VREDRAW | CS_OWNDC  |*/ CS_DBLCLKS;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8227
	    wc.lpfnWndProc = (WNDPROC) MainWndProc;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8228
	    wc.cbClsExtra = 0;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8229
	    wc.cbWndExtra = N_WINDOW_PRIVATE;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8230
	    wc.hInstance = (HANDLE) __getHInstance();
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8231
	    if (xIcon) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8232
		wc.hIcon   = xIcon;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8233
		/* wc.hIconSm = wiconId; In 4.x there are large and small icons */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8234
	    } else {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8235
		wc.hIcon = NULL;        /* THIS MUST BE NULL TO DELETE ICONS */
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8236
	    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8237
	    wc.hCursor = 0 /* LoadCursor(NULL, IDC_ARROW) */;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8238
	    wc.hbrBackground = 0; /*CreateSolidBrush (bg);*/
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8239
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8240
	    wc.lpszMenuName =  NULL;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8241
	    wc.lpszClassName = buf;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8242
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8243
	    if (!RegisterClass(&wc)) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8244
		PRINTF(("RegisterClass failed\n"));
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8245
		RETURN( nil );
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8246
	    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8247
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8248
	    className = buf;
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8249
#endif /* TOPWINDOWCLASS */
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8250
	}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  8251
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8252
	if (wStyle == @symbol(popUp)) {
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8253
	    winStyleBits |= WS_POPUP;
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
  8254
	    winStyleBits |= WS_DISABLED;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8255
	    winEXStyleBits |= WS_EX_TOOLWINDOW;
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
  8256
	    CPRINTF(("Create popUpWindow\n"));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8257
#if 0
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8258
	    parentHandle = GetActiveWindow();
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8259
#endif
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8260
4257
6f836f8f367d *** empty log message ***
ca
parents: 4253
diff changeset
  8261
	} else if ((wStyle == @symbol(dialog)) || (wStyle == @symbol(toolDialog))) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8262
	    winStyleBits |= WS_OVERLAPPED | WS_CAPTION | DS_MODALFRAME | WS_SYSMENU | WS_SIZEBOX;
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  8263
	    winStyleBits |= WS_POPUP;
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
  8264
	    winStyleBits |= DS_NOIDLEMSG;
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  8265
	    //winEXStyleBits |= WS_EX_TOOLWINDOW;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8266
	    if ((min_width || min_height)
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8267
	     && (min_width == max_width)
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8268
	     && (min_height == max_height)) {
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8269
		winStyleBits &= ~WS_THICKFRAME;
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  8270
	    }
4257
6f836f8f367d *** empty log message ***
ca
parents: 4253
diff changeset
  8271
	    if (wStyle == @symbol(toolDialog)) {
6f836f8f367d *** empty log message ***
ca
parents: 4253
diff changeset
  8272
		winEXStyleBits |= WS_EX_TOOLWINDOW;
6f836f8f367d *** empty log message ***
ca
parents: 4253
diff changeset
  8273
	    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8274
	} else if (wStyle == @symbol(undecorated)) {
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8275
	    winStyleBits |= WS_OVERLAPPED;
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8276
	    winEXStyleBits |= WS_EX_WINDOWEDGE;
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8277
	} else if (isMDIChild) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8278
	    winStyleBits |= WS_OVERLAPPED | WS_CAPTION | DS_MODALFRAME | WS_SYSMENU | WS_SIZEBOX;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8279
	    if ((min_width || min_height)
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8280
	     && (min_width == max_width)
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8281
	     && (min_height == max_height)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8282
		winStyleBits &= ~WS_THICKFRAME;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8283
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8284
	} else {
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  8285
	    //winStyleBits |= WS_OVERLAPPEDWINDOW;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8286
	    winStyleBits |= WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_SIZEBOX;
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  8287
	    //winEXStyleBits |= WS_EX_CLIENTEDGE;
2297
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
  8288
	    winEXStyleBits |= WS_EX_WINDOWEDGE;
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
  8289
	    //winEXStyleBits |= WS_EX_ACCEPTFILES;
4257
6f836f8f367d *** empty log message ***
ca
parents: 4253
diff changeset
  8290
6f836f8f367d *** empty log message ***
ca
parents: 4253
diff changeset
  8291
	    if (wStyle == @symbol(toolWindow)) {
6f836f8f367d *** empty log message ***
ca
parents: 4253
diff changeset
  8292
		winEXStyleBits |= WS_EX_TOOLWINDOW;
6f836f8f367d *** empty log message ***
ca
parents: 4253
diff changeset
  8293
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8294
	}
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  8295
	winStyleBits |= WS_CLIPCHILDREN;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8296
    }
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  8297
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8298
    rec.left = x;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8299
    rec.top = y;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8300
    rec.right = x + w;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8301
    rec.bottom = y+ h;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8302
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8303
    /* use static memory for the createwindowInfo;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8304
     * this is required, since we cannot pass the address of a local struct,
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8305
     * due to the possibility of late eventProcessing (after the method is left)
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8306
     * when in a sizeMove-loop.
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8307
     * (in this case, the message remains in the evQ, but is processed
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8308
     *  early via the pending- mechanism)
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8309
     * in order to detect such an alrady processed message, a sequenceNumber
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8310
     * is passed with the message and also stored in the cwi.
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8311
     * If this sequence number differs, we got a late message.
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8312
     */
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8313
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8314
    /*
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8315
     * check if previous request has been properly processed ...
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8316
     */
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8317
    if (cwi.sequenceNr && (cwi.sequenceNr != INVALIDATED_CWI)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8318
	console_fprintf(stderr, "WinWorkstation [info]: oops - unprocessed createWindow still pending\n");
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8319
	/* this prevents the event processor from interpreting this message */
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8320
	cwi.sequenceNr = nextSequenceNr;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8321
    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8322
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8323
    cwi.winStyleBitsEx = WS_EX_LEFT | WS_EX_NOPARENTNOTIFY | winEXStyleBits;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8324
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8325
#ifdef ADJUSTWINDOW
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8326
    AdjustWindowRectEx(&rec, winStyleBits, 0, cwi.winStyleBitsEx);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8327
    w = rec.right - rec.left;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8328
    h = rec.bottom - rec.top;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8329
#endif
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
  8330
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  8331
    DPRINTF(("create%s pos==%d/%d size=%d/%d bw:%d parent:%x class:'%s' style:%x exStyle:%x ...\n",
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  8332
		((wStyle == @symbol(popUp)) ? " popUp" : ""),
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  8333
		x, y, w, h,
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  8334
		bw, parentHandle, className,
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  8335
		winStyleBits, winEXStyleBits));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8336
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8337
    /* allocate localMemory for Window */
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8338
    lI = (localWindowInfo *) malloc(sizeof(localWindowInfo));
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8339
    if (! lI) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8340
	console_fprintf(stderr, "WinWorkstation [error]: malloc failed in CreateWindow\n");
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8341
	RETURN ( nil );
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8342
    }
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8343
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8344
    memset(lI, 0, sizeof(localWindowInfo));
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  8345
    lI->mouseX = lI->mouseY = -9999;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  8346
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8347
    if (isTopWindow) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8348
	if (rec.left < 0) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8349
	    rec.left = 0;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8350
	    rec.right = w;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8351
	}
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8352
	if (rec.top < 0) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8353
	    rec.top = 0;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8354
	    rec.bottom = h;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8355
	}
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8356
	lI->flag |= LI_TOPWIN;
2462
7e631ccec09d tut nicht (GUI builder open)
Claus Gittinger <cg@exept.de>
parents: 2434
diff changeset
  8357
    } else {
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8358
	if (bw) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8359
	    // adjust for border
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8360
	    rec.left++;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8361
	    rec.top++;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8362
	}
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8363
    }
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8364
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  8365
    if (winputOnly == true) {
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8366
	lI->flag |= LI_INPUTWIN;
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
  8367
    }
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8368
    if (isNativeWindow) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
  8369
	NDPRINTF(("set native flag\n"));
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8370
	lI->flag |= LI_NATIVEWIN;
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8371
    }
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8372
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  8373
    if (wStyle == @symbol(popUp)) {
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  8374
	cwi.className = wapp_namePopup;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  8375
    } else {
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  8376
	if (wStyle == @symbol(dialog)) {
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  8377
	    cwi.className = wapp_nameDialog;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  8378
	} else {
5088
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8379
	    ch2wch(className, classNameBufferw, MAX_CLASSNAME_SIZE);
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8380
	    cwi.className = classNameBufferw;
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  8381
	}
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
  8382
    }
2752
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  8383
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8384
    cwi.winStyleBits = winStyleBits;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8385
    cwi.parentHandle = parentHandle;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8386
    cwi.x = rec.left;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8387
    cwi.y = rec.top;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8388
    cwi.dx = rec.right - rec.left;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8389
    cwi.dy = rec.bottom - rec.top;
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8390
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8391
    if (isTopWindow | isMDIChild) {
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8392
	rec.left = 0;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8393
	rec.top = 0;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8394
	rec.right = min_width;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8395
	rec.bottom = min_height;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8396
#ifdef ADJUSTWINDOW
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8397
	AdjustWindowRectEx(&rec, winStyleBits, 0, cwi.winStyleBitsEx);
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8398
#endif
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8399
	lI->minWidth = rec.right - rec.left;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8400
	lI->minHeight = rec.bottom - rec.top;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8401
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8402
	rec.left = 0;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8403
	rec.top = 0;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8404
	rec.right = max_width;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8405
	rec.bottom = max_height;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8406
#ifdef ADJUSTWINDOW
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8407
	AdjustWindowRectEx(&rec, winStyleBits, 0, cwi.winStyleBitsEx);
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8408
#endif
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8409
	lI->maxWidth = rec.right - rec.left;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8410
	lI->maxHeight = rec.bottom - rec.top;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8411
    } else {
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8412
	lI->minWidth = lI->minHeight = 0;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8413
	lI->maxWidth = lI->maxHeight = 9999;
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8414
    }
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
  8415
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  8416
    lI->viewBgBrush = __whiteBrush;
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
  8417
    lI->viewBgColor = WhitePixel;
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
  8418
    lI->bdColor = BlackPixel;
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
  8419
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8420
    if (__isSmallInteger(eventMask))
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8421
	lI->eventMask = __intVal(eventMask);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8422
    else
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8423
	lI->eventMask = 0xffffffff;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8424
    DPRINTF(("eventMask is %x\n"));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8425
#ifdef DEBUGMASK1
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8426
    printMask(lI->eventMask);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8427
#endif
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8428
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8429
    lI->bw = bw;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8430
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8431
    cwi.newWinHandle = newWindowHandle = NULL;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8432
    cwi.windowName = 0;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8433
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8434
    if (isTopWindow | isMDIChild) {
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8435
	if (__isString(wlabel) || __isSymbol(wlabel)) {
5088
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8436
	    ch2wch((char *)__stringVal(wlabel), windowNameBufferw, MAX_LABEL_SIZE);
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8437
	    cwi.windowName = windowNameBufferw;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8438
	} else
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8439
	    if (__isUnicode16String(wlabel)) {
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8440
		int l = __unicode16StringSize(wlabel);
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8441
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8442
		if (l >= MAX_LABEL_SIZE) l = MAX_LABEL_SIZE-1;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8443
		memmove(windowNameBufferw, __unicode16StringVal(wlabel), l*sizeof(wchar_t));
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8444
		windowNameBufferw[ l ] = 0;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8445
		cwi.windowName = windowNameBufferw;
cbd228a6088b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5072
diff changeset
  8446
	    }
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8447
    }
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8448
2665
4b88034ccb36 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2664
diff changeset
  8449
    cwi.infoWasRead = 0;
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
  8450
    cwi.localWindowInfo = lI;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8451
    cwi.sequenceNr = nextSequenceNr;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8452
    nextSequenceNr = (nextSequenceNr + 1) & 0x7FFF;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8453
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8454
#ifndef NEW_CREATE_EVENT
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8455
    cwi.hCreateEvent = hCreateEvent;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8456
    ResetEvent(cwi.hCreateEvent);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8457
#else
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8458
    /* creating a new event does not work - why ? */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8459
    cwi.hCreateEvent = CreateEvent(
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8460
	NULL,        /* no security attributes */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8461
	FALSE,
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8462
	FALSE,
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8463
	NULL);       /* name of mutex */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8464
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8465
    if (cwi.hCreateEvent == NULL) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8466
	console_fprintf(stderr, "WinWorkstation [error]: oops - CreateEvent failed in CreateWindow: %d\n", GetLastError() );
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8467
	cwi.sequenceNr = INVALIDATED_CWI;
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  8468
	free(lI);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8469
	RETURN ( nil );
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8470
    }
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8471
#endif
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8472
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8473
    /*
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8474
     * kludge to allow for createWindow while in sizeMove processing loop
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8475
     */
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8476
    if (pendingCREATEWINDOWInfo) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8477
	console_fprintf(stderr, "WinWorkstation [error]: oops - pending create\n");
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8478
    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8479
    pendingCREATEWINDOWInfo = &cwi;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8480
    pendingSequenceNr = cwi.sequenceNr;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8481
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8482
    if (PostThreadMessage(_dispatchThreadId, WM_THREAD_CREATEWINDOW, cwi.sequenceNr, (INT)(&cwi)) == FALSE) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8483
	console_fprintf(stderr, "WinWorkstation [error]: oops - PostThreadMessage(%x) failed in CreateWindow: err=%d\n",
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
  8484
					_dispatchThreadId, GetLastError() );
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8485
	free(lI);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8486
	RETURN (nil);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8487
    }
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8488
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8489
    if (cwi.newWinHandle != NULL) {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8490
	cwi.sequenceNr = INVALIDATED_CWI;
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
  8491
	cwi.hCreateEvent = NULL;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8492
	/* wow - that was quick ... */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8493
    } else {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8494
	DWORD dwWaitResult;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8495
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8496
	/* wait for the window to be created ... */
4504
0f0a6f7fabd5 lockEvent bug (workaround ?)
Claus Gittinger <cg@exept.de>
parents: 4503
diff changeset
  8497
	dwWaitResult = WaitForSingleObject(hCreateEvent, 5000L);
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8498
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8499
	/* no longer want to get informed ... */
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8500
	cwi.hCreateEvent = NULL;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8501
	cwi.sequenceNr = INVALIDATED_CWI;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8502
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8503
	switch (dwWaitResult) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8504
	    // The thread got mutex ownership.
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8505
	    case WAIT_OBJECT_0:
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8506
		break;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8507
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8508
	    // Cannot get mutex ownership due to time-out.
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8509
	    case WAIT_TIMEOUT:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8510
		DEBUGFPRINTF((stderr, "WinWorkstation [error]: oops - timeout in CreateWindow\n"));
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8511
		break;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8512
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8513
	    // Got ownership of the abandoned mutex object.
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8514
	    default:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8515
		DEBUGFPRINTF((stderr, "WinWorkstation [warning]: CreateEvent abandoned\n"));
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8516
		break;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8517
	}
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8518
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8519
#ifdef NEW_CREATE_EVENT
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8520
	CloseHandle(cwi.hCreateEvent);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8521
#endif
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8522
    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8523
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8524
    pendingCREATEWINDOWInfo = 0;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8525
    newWindowHandle = cwi.newWinHandle;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8526
    DPRINTF(("handle = %x\n", newWindowHandle));
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8527
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8528
    if (! newWindowHandle) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8529
	console_fprintf(stderr, "WinWorkstation [error]: CreateWindow failed: %d (0x%x) [%d]\n",
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8530
			cwi.errCode, cwi.errCode, __LINE__ );
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
  8531
	if (cwi.infoWasRead) {
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
  8532
	    free(lI);
4284
5efcb512f038 *** empty log message ***
ca
parents: 4281
diff changeset
  8533
	} else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8534
	    console_fprintf(stderr, "WinWorkstation [warning]: localInfo memory leak [%d]\n", __LINE__ );
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
  8535
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8536
	RETURN ( nil );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8537
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8538
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8539
#ifdef CACHE_LAST_DC
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8540
    if (lastGcData && (lastGcHWIN == newWindowHandle)) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8541
	_releaseDC(lastGcData);
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8542
    }
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8543
#endif
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8544
#ifdef CACHE_LAST_WM_PAINT_DC
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8545
    if (last_wm_paint_dc && (last_wm_paint_win == newWindowHandle)) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8546
	ReleaseDC(newWindowHandle, last_wm_paint_dc);
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8547
	last_wm_paint_win = last_wm_paint_dc = 0;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8548
    }
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8549
#endif
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  8550
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8551
    windowId = __MKOBJ(newWindowHandle);
4368
f8d0e4be74eb raising windows
penk
parents: 4367
diff changeset
  8552
#if 1
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8553
    if (isTopWindow | isMDIChild) {
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8554
	/*
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8555
	 * mhmh - what is that raise for ?
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8556
	 */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8557
	SetWindowPos(newWindowHandle, HWND_TOP, 0, 0, 0, 0,
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8558
		     SWP_NOSENDCHANGING |
4368
f8d0e4be74eb raising windows
penk
parents: 4367
diff changeset
  8559
		     /* SWP_NOACTIVATE | */ SWP_NOMOVE | SWP_NOSIZE);
f8d0e4be74eb raising windows
penk
parents: 4367
diff changeset
  8560
    } else {
f8d0e4be74eb raising windows
penk
parents: 4367
diff changeset
  8561
	SetWindowPos(newWindowHandle, HWND_TOP, 0, 0, 0, 0,
f8d0e4be74eb raising windows
penk
parents: 4367
diff changeset
  8562
		     SWP_NOSENDCHANGING |
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8563
		     SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8564
    }
4143
e378d1d54f75 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4134
diff changeset
  8565
#endif
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
  8566
    if (isTopWindow | isMDIChild) {
2697
0fbd675cf5b2 update region processing
Claus Gittinger <cg@exept.de>
parents: 2696
diff changeset
  8567
	BringWindowToTop(newWindowHandle);
0fbd675cf5b2 update region processing
Claus Gittinger <cg@exept.de>
parents: 2696
diff changeset
  8568
    }
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
  8569
    DragAcceptFiles(newWindowHandle, 1);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  8570
4240
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
  8571
    if (isNativeWindow) {
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
  8572
	if (winStyleBits & (SBS_HORZ | SBS_VERT)) {
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  8573
	    SetScrollRange(newWindowHandle, SB_CTL, 0, 100, 0);
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
  8574
	    SetScrollPos(newWindowHandle, SB_CTL, 0, 0);
4240
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
  8575
	}
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
  8576
    }
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
  8577
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  8578
#ifndef TOPWINDOWCLASS
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  8579
    if (xIcon) {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8580
	SendMessage(newWindowHandle, WM_SETICON, ICON_SMALL, (LPARAM)xIcon);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  8581
	SendMessage(newWindowHandle, WM_SETICON, ICON_BIG, (LPARAM)xIcon);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  8582
    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8583
#endif
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
  8584
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8585
    DPRINTF(("done - create\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8586
    RETURN (windowId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8587
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8588
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8589
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8590
primDestroyView:aView withId:aWindowId
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8591
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  8592
%{  /* NOCONTEXT */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8593
    HICON oldIcon;
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8594
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8595
    if (__isExternalAddress(aWindowId)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8596
	HWND win = _HWNDVal(aWindowId);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  8597
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  8598
	if (win && IsWindow(win)) {
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
  8599
#ifndef TOPWINDOWCLASS
2752
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  8600
	    oldIcon = (HICON) GetClassLong(win, GCL_HICON);
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  8601
	    SetClassLong(win, GCL_HICON, (DWORD)0);
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  8602
	    /* It has to be checked whether this can be deleted!!!!! */
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  8603
	    if ( oldIcon ) {
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8604
		if ( DestroyIcon( oldIcon )) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8605
		    DPRINTF(( "Old icon deleted\n" ));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  8606
		} else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8607
		    console_fprintf(stderr, "failed to destroy icon\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8608
		}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8609
	    }
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8610
#endif
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  8611
	   /*console_printf("post WM_THREAD_DESTROYWINDOW\n");*/
2752
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  8612
	    PostMessage(win, WM_THREAD_DESTROYWINDOW, 0, 0);
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  8613
	}
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8614
    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8615
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8616
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8617
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8618
rootWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8619
    "return the id of the root window.
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  8620
     This is the window you see as background,
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8621
     however, it may or may not be the real physical root window,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8622
     since some window managers install a virtual root window on top
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8623
     of the real one. If this is the case, that views id is returned here."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8624
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  8625
    ^ rootWin
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8626
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  8627
4281
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8628
!WinWorkstation methodsFor:'clipboard'!
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8629
4748
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8630
getClipboardObjectFor:drawableId
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8631
    "answer an arbitrary object from the clipboard, or nil,
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8632
     if there is no data that we are able to handle (decode)"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8633
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8634
    |currentSequenceNumber|
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8635
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8636
    currentSequenceNumber := self getClipboardSequenceNumber.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8637
    lastClipboardSequenceNumber ~= currentSequenceNumber ifTrue:[
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8638
	"copyBuffer is invalid, fill it from the windows clipboard.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8639
	 Even if we could not decode the windows clipboard,
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8640
	 we intentionally set the copyBuffer to nil to get a consistent
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8641
	 behavior."
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8642
	copyBuffer := self getClipboardData.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8643
	lastClipboardSequenceNumber := currentSequenceNumber.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8644
    ].
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8645
    ^ copyBuffer
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8646
!
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8647
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8648
getClipboardText:selectionBufferSymbol for:drawableId
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8649
     "get the contents of the clipboard and answer a String,
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8650
      or nil, if there is no data that we can handle (decode)."
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8651
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8652
    |currentSequenceNumber|
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8653
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8654
    currentSequenceNumber := self getClipboardSequenceNumber.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8655
    lastClipboardSequenceNumber ~= currentSequenceNumber ifTrue:[
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8656
	"copyBuffer is invalid, fill it from the windows clipboard.
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8657
	 Even if we could not decode the windows clipboard,
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8658
	 we intentionally set the copyBuffer to nil to get a consistent
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8659
	 behavior."
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8660
	copyBuffer := self getClipboardData.
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8661
	lastClipboardSequenceNumber := currentSequenceNumber.
4748
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8662
    ].
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8663
    ^ self copyBufferAsString
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8664
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8665
    "
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8666
     Screen current getClipboardText:#clipboard for:nil
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8667
    "
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8668
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8669
    "Modified: / 09-10-2007 / 12:42:08 / cg"
4748
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8670
!
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8671
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8672
setClipboardObject:something owner:drawableId
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8673
    "store an arbitrary object into the clipboard.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8674
     Since we currently support only text, any other object
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8675
     is stored only in our local copyBuffer and not made available
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8676
     to other applications."
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8677
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8678
    something isString ifTrue:[
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8679
	self setClipboardText:something owner:drawableId.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8680
	^ self
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8681
    ].
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8682
    something isStringCollection ifTrue:[
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8683
	self setClipboardText:something asString owner:drawableId.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8684
	^ self
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8685
    ].
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8686
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8687
    "copyBuffer is valid until the clipboard sequence number increases,
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8688
     because new data has been put into the clipboard"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8689
    lastClipboardSequenceNumber := self getClipboardSequenceNumber.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8690
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8691
    "Created: / 13.7.1999 / 13:30:37 / cg"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8692
    "Modified: / 30.1.2000 / 11:59:41 / cg"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8693
!
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8694
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8695
setClipboardText:something owner:drawableId
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8696
    "store some text into the clipboard"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8697
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8698
    |result|
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8699
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8700
    result := self setClipboardData:something asString string.  "take care of StringCollections"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8701
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8702
    "as long as the sequence number doesn't change, our copyBuffer is valid"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8703
    lastClipboardSequenceNumber := self getClipboardSequenceNumber.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8704
    ^ result.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8705
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8706
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8707
    "Created: / 13.7.1999 / 13:36:43 / cg"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8708
    "Modified: / 30.1.2000 / 12:12:57 / cg"
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8709
! !
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8710
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8711
!WinWorkstation methodsFor:'clipboard-private'!
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8712
4281
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8713
getClipboardData
4748
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8714
    "get the contents of the windows clipboard.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8715
     Answer a string on success or nil otherwise.
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8716
     Caveat: for now, only Text and UnicodeText are supported"
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8717
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8718
    |data|
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8719
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8720
    (data := self getUnicodeClipboardData) notNil ifTrue:[^ data].
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8721
    (data := self getTextClipboardData) notNil ifTrue:[^ data].
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8722
    ^ nil
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8723
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8724
    "Modified: / 09-10-2007 / 12:47:02 / cg"
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8725
!
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8726
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8727
getClipboardDataBytes:format
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8728
    "get the contents of the windows clipboard as raw bytes.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8729
     Answer an image on success or nil otherwise."
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8730
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8731
    |bytes|
4281
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8732
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8733
%{
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8734
    HANDLE hClip;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8735
    HANDLE hData;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8736
    unsigned char *src, *p;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8737
    WIDECHAR *w_src, *w_p;
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8738
    int fmt;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8739
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8740
    if (format == @symbol(CF_TIFF)) {
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8741
	fmt = CF_TIFF;
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8742
    } else if (format == @symbol(CF_BITMAP)) {
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8743
	fmt = CF_BITMAP;
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8744
    } else if (format == @symbol(CF_DIB)) {
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8745
	fmt = CF_DIB;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8746
    } else
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8747
	goto badFormat;
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8748
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8749
    if (IsClipboardFormatAvailable(fmt)) {
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8750
	int len;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8751
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8752
	hClip = OpenClipboard(NULL);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8753
	if (hClip) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8754
	    hData = GetClipboardData(fmt);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8755
	    if (hData) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8756
		len = GlobalSize(hData);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8757
		src = GlobalLock(hData);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8758
		if (src) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8759
		    bytes = __MKBYTEARRAY(src, len);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8760
		}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8761
		GlobalUnlock(hData);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8762
		CloseClipboard();
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8763
		DDPRINTF((stderr, "WinWorkstation [info]: clipBoard data size is <%d>\n", len));
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8764
		RETURN(bytes);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8765
	    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8766
	}
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8767
    }
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8768
badFormat: ;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8769
%}.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8770
    ^ nil
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8771
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8772
    "
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8773
     Screen current getClipboardDataBytes:#CF_TIFF
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8774
     Screen current getClipboardDataBytes:#CF_BITMAP
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8775
     Screen current getClipboardDataBytes:#CF_DIB
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8776
    "
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8777
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8778
    "Created: / 09-10-2007 / 13:11:12 / cg"
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8779
    "Modified: / 09-10-2007 / 14:18:26 / cg"
4281
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8780
!
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8781
4748
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8782
getClipboardOwner
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8783
    "answer an handle telling us, who owns the clipboard."
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8784
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8785
%{
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8786
    HANDLE hWnd;
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8787
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8788
    hWnd = GetClipboardOwner();
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8789
    RETURN(__MKEXTERNALADDRESS(hWnd));
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8790
%}
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8791
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8792
   "
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8793
	Screen current getClipboardOwner
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8794
   "
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8795
!
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8796
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8797
getClipboardSequenceNumber
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8798
    "answer the sequence number of the clioboard.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8799
     Each time, the keyboard is changed, the sequence number is incremented."
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8800
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8801
%{
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8802
    DWORD sequenceNumber;
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8803
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8804
    sequenceNumber = GetClipboardSequenceNumber();
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8805
    RETURN(__MKUINT(sequenceNumber));
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8806
%}
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8807
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8808
   "
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8809
	Screen current getClipboardSequenceNumber
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8810
   "
4281
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8811
!
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8812
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8813
getImapeClipboardData
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8814
    "get the contents of the windows clipboard.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8815
     Answer an image on success or nil otherwise."
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8816
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8817
    |data|
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8818
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8819
    (data := self getClipboardDataBytes:#CF_TIFF) notNil ifTrue:[
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8820
	"/ tiff image in data...
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8821
	^ "TIFFReader fromBytes:data" nil
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8822
    ].
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8823
    (data := self getClipboardDataBytes:#CF_DIB) notNil ifTrue:[
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8824
	"/ device independent bitmap image in data...
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8825
	^ "TIFFReader fromBytes:data" nil
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8826
    ].
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8827
    ^ nil
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8828
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8829
    "Created: / 09-10-2007 / 14:19:53 / cg"
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8830
!
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8831
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8832
getTextClipboardData
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8833
    "get the contents of the windows clipboard.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8834
     Answer a string on success or nil otherwise.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8835
     Caveat: for now, only Text is supported"
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8836
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8837
%{
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8838
    HANDLE hClip;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8839
    HANDLE hData;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8840
    OBJ s;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8841
    unsigned char *src, *p;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8842
    WIDECHAR *w_src, *w_p;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8843
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8844
    /* check for format CF_TEXT */
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8845
    if (IsClipboardFormatAvailable(CF_TEXT)) {
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8846
	int nRemain, len, realLen;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8847
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8848
	hClip = OpenClipboard(NULL);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8849
	if (hClip) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8850
	    hData = GetClipboardData(CF_TEXT);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8851
	    src = GlobalLock(hData);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8852
	    len = src ? strlen(src) : 0;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8853
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8854
	    /* see how much we really need (when CRLF is replaced by LF) */
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8855
	    for (realLen=nRemain=len, p=src; nRemain; ) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8856
		unsigned char ch;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8857
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8858
		ch = *p++; nRemain--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8859
		if (ch == 0x0D) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8860
		    if (nRemain && (*p == 0x0A)) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8861
			p++; nRemain--;realLen--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8862
		    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8863
		}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8864
	    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8865
	    s = __MKEMPTYSTRING(realLen);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8866
	    if (s != nil) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8867
		for (p=__stringVal(s); len; ) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8868
		    unsigned char ch;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8869
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8870
		    *p = ch = *src++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8871
		    len--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8872
		    if (len && (ch == 0x0D) && (*src == 0x0A)) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8873
			*p = 0x0A;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8874
			src++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8875
			len--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8876
		    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8877
		    p++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8878
		}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8879
	    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8880
	    GlobalUnlock(hData);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8881
	    CloseClipboard();
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8882
	    DDPRINTF((stderr, "WinWorkstation [info]: clipBoard data is <%s>\n", (char *)hData));
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8883
	    RETURN(s);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8884
	}
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8885
    }
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8886
%}.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8887
    ^ nil
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8888
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8889
    "Created: / 09-10-2007 / 12:46:00 / cg"
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8890
!
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8891
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8892
getUnicodeClipboardData
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8893
    "get the contents of the windows clipboard.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8894
     Answer a string on success or nil otherwise.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8895
     Caveat: for now, only Text is supported"
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8896
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8897
%{
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8898
    HANDLE hClip;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8899
    HANDLE hData;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8900
    OBJ s;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8901
    unsigned char *src, *p;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8902
    WIDECHAR *w_src, *w_p;
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8903
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8904
    /* Unicode */
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8905
    if (IsClipboardFormatAvailable(CF_UNICODETEXT)) {
4811
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8906
	int nRemain, len, realLen;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8907
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8908
	hClip = OpenClipboard(NULL);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8909
	if (hClip) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8910
	    int needUnicode = 0;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8911
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8912
	    hData = GetClipboardData(CF_UNICODETEXT);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8913
	    w_src = GlobalLock(hData);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8914
	    len = w_src ? wcslen(w_src) : 0;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8915
	    /*
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8916
	     * see how much we really need (when CRLF is replaced by LF)
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8917
	     * and if result is really Unicode ...
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8918
	     */
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8919
	    for (realLen=nRemain=len, w_p=w_src; nRemain; ) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8920
		WIDECHAR w_ch;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8921
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8922
		w_ch = *w_p++; nRemain--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8923
		if ((unsigned) w_ch > 0xFF) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8924
		    needUnicode = 1;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8925
		}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8926
		if (w_ch == 0x0D) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8927
		    if (nRemain && (*w_p == 0x0A)) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8928
			w_p++; nRemain--;realLen--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8929
		    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8930
		}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8931
	    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8932
	    if (! needUnicode) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8933
		s = __MKEMPTYSTRING(realLen);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8934
		if (s != nil) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8935
		    for (p = __stringVal(s); len; ) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8936
			unsigned char ch;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8937
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8938
			*p = ch = *w_src++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8939
			len--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8940
			if (len && (ch == 0x0D) && (*w_src == 0x0A)) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8941
			    *p = 0x0A;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8942
			    w_src++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8943
			    len--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8944
			}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8945
			p++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8946
		    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8947
		}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8948
	    } else {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8949
		s = __BYTEARRAY_NEW_INT(realLen * 2);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8950
		if (s != nil) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8951
		    __qClass(s) = @global(UnicodeString);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8952
		    for (w_p = (WIDECHAR *)__stringVal(s); len; ) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8953
			WIDECHAR w_ch;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8954
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8955
			*w_p = w_ch = *w_src++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8956
			len--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8957
			if (len && (w_ch == 0x0D) && (*w_src == 0x0A)) {
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8958
			    *w_p = 0x0A;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8959
			    w_src++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8960
			    len--;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8961
			}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8962
			w_p++;
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8963
		    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8964
		}
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8965
	    }
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8966
	    GlobalUnlock(hData);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8967
	    CloseClipboard();
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8968
	    RETURN(s);
9b04f5e8a01b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4810
diff changeset
  8969
	}
4802
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8970
    }
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8971
%}.
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8972
    ^ nil
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8973
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8974
    "Created: / 09-10-2007 / 12:45:26 / cg"
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8975
!
bec2c03cc782 preps for image-clipboard
Claus Gittinger <cg@exept.de>
parents: 4792
diff changeset
  8976
4281
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8977
setClipboardData:aString
4748
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8978
    "Set the contents of the windows clipboard.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8979
     Answer true, if the operation succeeded, false otherwise.
fbbc9a20d88e Fix clipboard handling when Smalltalk objects are in the clipboard
Stefan Vogel <sv@exept.de>
parents: 4745
diff changeset
  8980
     Caveat: for now, only Text is supported."
4281
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8981
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8982
%{
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8983
    HANDLE hClip;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8984
    HANDLE hData;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8985
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8986
    if (__isString(aString)) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8987
	char *s, *p, *src, *dst;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8988
	int n, len, realLen;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8989
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8990
	hClip = OpenClipboard(NULL);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8991
	if (hClip) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8992
	    s = __stringVal(aString);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8993
	    /* must replace CR by CRLF */
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8994
	    len = realLen = __stringSize(aString);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8995
	    for (src=s, n=len; n; n--) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8996
		if ((src[0] == 0x0A) && ((src == s) || (src[-1] != 0x0D))) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8997
		    realLen++;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8998
		}
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  8999
		src++;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9000
	    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9001
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9002
	    hData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, realLen+1);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9003
	    if (hData) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9004
		char *t = GlobalLock(hData);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9005
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9006
		if (t) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9007
		    for (src=s, dst=t, n=len; n;) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9008
			unsigned char ch;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9009
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9010
			ch = src[0]; n--;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9011
			if ((ch == 0x0A) && ((src == s) || (src[-1] != 0x0D))) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9012
			    *dst++ = 0x0D;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9013
			    *dst++ = 0x0A;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9014
			} else {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9015
			    *dst++ = ch;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9016
			}
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9017
			src++;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9018
		    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9019
		    *dst = 0;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9020
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9021
		    EmptyClipboard();
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9022
		    if (SetClipboardData(CF_TEXT, hData) != 0) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9023
			/* Note: After setting clipboard data,
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9024
			 * the memory block previously allocated belongs to
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9025
			 * the clipboard - not to the app.
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9026
			 */
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9027
			CloseClipboard();
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9028
			RETURN (true);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9029
		    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9030
		    DPRINTF(("SetClipboardData error:%d\n", GetLastError()));
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9031
		    GlobalUnlock(hData);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9032
		}
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9033
	    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9034
	    CloseClipboard();
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9035
	}
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9036
	RETURN(false);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9037
    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9038
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9039
    /* Unicode */
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9040
    if (__isWords(aString)) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9041
	WIDECHAR *w_s, *w_p, *w_src, *w_dst;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9042
	int n, len, realLen;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9043
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9044
	hClip = OpenClipboard(NULL);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9045
	if (hClip) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9046
	    OBJ cls;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9047
	    int nInstBytes;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9048
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9049
	    cls = __qClass(aString);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9050
	    nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9051
	    w_s = (WIDECHAR *)(__stringVal(aString) + nInstBytes);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9052
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9053
	    /* must replace CR by CRLF */
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9054
	    len = realLen = (__byteArraySize(aString) - nInstBytes) / 2;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9055
	    for (w_src=w_s, n=len; n; n--) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9056
		if ((w_src[0] == 0x0A) && ((w_src == w_s) || (w_src[-1] != 0x0D))) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9057
		    realLen++;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9058
		}
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9059
		w_src++;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9060
	    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9061
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9062
	    hData = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, (realLen+1)*sizeof(WIDECHAR));
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9063
	    if (hData) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9064
		char *t = GlobalLock(hData);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9065
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9066
		if (t) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9067
		    for (w_src=w_s, w_dst=t, n=len; n;) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9068
			WIDECHAR w_ch;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9069
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9070
			w_ch = w_src[0]; n--;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9071
			if ((w_ch == 0x0A) && ((w_src == w_s) || (w_src[-1] != 0x0D))) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9072
			    *w_dst++ = 0x0D;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9073
			    *w_dst++ = 0x0A;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9074
			} else {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9075
			    *w_dst++ = w_ch;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9076
			}
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9077
			w_src++;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9078
		    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9079
		    *w_dst = 0;
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9080
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9081
		    EmptyClipboard();
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9082
		    if (SetClipboardData(CF_UNICODETEXT, hData) != 0) {
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9083
			/* Note: After setting clipboard data,
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9084
			 * the memory block previously allocated belongs to
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9085
			 * the clipboard - not to the app.
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9086
			 */
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9087
			CloseClipboard();
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9088
			RETURN (true);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9089
		    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9090
		    DPRINTF(("SetClipboardData error:%d\n", GetLastError()));
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9091
		    GlobalUnlock(hData);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9092
		}
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9093
	    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9094
	    CloseClipboard();
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9095
	}
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9096
	RETURN(false);
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9097
    }
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9098
%}.
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9099
    self primitiveFailed.
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9100
! !
e22c313e9ff8 category changes
Stefan Vogel <sv@exept.de>
parents: 4280
diff changeset
  9101
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9102
!WinWorkstation methodsFor:'color stuff'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9103
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9104
colorRed:redVal green:greenVal blue:blueVal
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9105
    "allocate a color with rgb values (0..100) - return the color index (i.e. colorID).
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9106
     This method is obsoleted by #colorScaledRed:scaledGreen:scaledBlue:"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9107
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9108
    |r g b|
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9109
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  9110
    r := self percentToDeviceColorValue:redVal.
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  9111
    g := self percentToDeviceColorValue:greenVal.
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  9112
    b := self percentToDeviceColorValue:blueVal.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9113
    ^ self colorScaledRed:r scaledGreen:g scaledBlue:b
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9114
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9115
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9116
colorScaledRed:r scaledGreen:g scaledBlue:b
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9117
    "allocate a color with rgb values (0..16rFFFF) - return the color index
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9118
     (i.e. colorID)"
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9119
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9120
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9121
    int id, ir, ig, ib;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9122
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  9123
    if (__bothSmallInteger(r, g) && __isSmallInteger(b)) {
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  9124
	id = RGB2st(__intVal(r),__intVal(g),__intVal(b));
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
  9125
	CPRINTF(("alloc color %d/%d/%d -> %x\n", ir, ig, ib, id));
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
  9126
	RETURN ( __MKSMALLINT(id) );
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9127
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9128
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9129
    self primitiveFailed.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9130
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9131
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9132
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9133
freeColor:colorIndex
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  9134
    "free a display color when its no longer needed.
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
  9135
     A dummy here, since RGB colors are never freed."
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9136
4074
b40ae99d0f76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4059
diff changeset
  9137
    "/ 'free color' printCR.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9138
    ^ self
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9139
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9140
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9141
getRGBFrom:index into:aBlock
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9142
    "get rgb components (0..100) of color in map at:index,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9143
     and evaluate the 3-arg block, aBlock with them"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9144
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9145
    |val|
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9146
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9147
    self getScaledRGBFrom:index into:[:r :g :b |
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  9148
	val := aBlock
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  9149
		value:(r * 100.0 / 16rFFFF)
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  9150
		value:(g * 100.0 / 16rFFFF)
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
  9151
		value:(b * 100.0 / 16rFFFF)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9152
    ].
4074
b40ae99d0f76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4059
diff changeset
  9153
    "/ 'get RGB' printCR.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9154
    ^ val
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9155
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9156
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9157
getRGBFromName:colorName into:aBlock
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9158
    "get rgb components (0..100) of color named colorName,
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9159
     and evaluate the 3-arg block, aBlock with them"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9160
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9161
    |val|
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9162
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9163
    self getScaledRGBFromName:colorName into:[:r :g :b |
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9164
	r isNil ifTrue:[^nil].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9165
	val := aBlock
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9166
		value:(r * 100.0 / 16rFFFF)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9167
		value:(g * 100.0 / 16rFFFF)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9168
		value:(b * 100.0 / 16rFFFF)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9169
    ].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9170
    ^val
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9171
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9172
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9173
getScaledRGBFrom:index into:aBlock
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9174
    "get rgb components (0 .. 16rFFFF) of color in map at:index,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9175
     and evaluate the 3-arg block, aBlock with them"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9176
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9177
    |r g b|
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9178
%{
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9179
    int id = __intVal(index);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9180
    int iR, iG, iB;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9181
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9182
    id = st2RGB(id,0);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9183
    iR = id & 0xFF;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9184
    iG = (id >> 8) & 0xFF;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9185
    iB = (id >> 16) & 0xFF;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9186
    iR = (iR << 8) | iR;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9187
    iG = (iG << 8) | iG;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9188
    iB = (iB << 8) | iB;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9189
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9190
    r = __MKSMALLINT(iR);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9191
    g = __MKSMALLINT(iG);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9192
    b = __MKSMALLINT(iB);
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  9193
    /*console_printf("get color %x -> %x/%x/%x\n",id, iR, iG, iB);*/
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9194
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9195
    ^ aBlock value:r value:g value:b
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9196
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9197
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9198
getScaledRGBFromName:colorName into:aBlock
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9199
    "get scaled rgb components (0..16rFFFF) of color named colorName,
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9200
     and evaluate the 3-arg block, aBlock with them"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9201
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9202
    |triple r g b found cName|
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9203
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9204
    r := g := b := 0.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9205
    found := false.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9206
    (colorName startsWith:$#) ifTrue:[
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9207
	"/ color in r/g/b hex notation
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9208
	r := Integer readFrom:(colorName copyFrom:2 to:3) radix:16.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9209
	g := Integer readFrom:(colorName copyFrom:4 to:5) radix:16.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9210
	b := Integer readFrom:(colorName copyFrom:6 to:7) radix:16.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9211
	found := true.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9212
    ] ifFalse:[
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9213
	cName := colorName asString.
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9214
	triple := StandardColorValues at:cName ifAbsent:nil.
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9215
	triple isNil ifTrue:[
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9216
	    "/ try lowercase name
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9217
	    cName := cName asLowercase.
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9218
	    triple := StandardColorValues at:cName ifAbsent:nil.
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9219
	    triple isNil ifTrue:[
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9220
		"/ try lowercase without intermixed spaces
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9221
		cName := cName asCollectionOfWords asStringWith:nil.
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9222
		triple := StandardColorValues at:cName ifAbsent:nil.
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
  9223
	    ].
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9224
	].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9225
	triple notNil ifTrue:[
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9226
	    r := triple at:1.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9227
	    g := triple at:2.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9228
	    b := triple at:3.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9229
	    found := true.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9230
	].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9231
    ].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9232
    found ifFalse:[
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9233
	('WinWorkstation: unknown color: ' , colorName) infoPrintCR.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9234
    ].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9235
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9236
    ^ aBlock value:((r * 256) + r) value:((g * 256) + g) value:((b * 256) + b)
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9237
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9238
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9239
listOfAvailableColors
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9240
    "return a list of all available colornames.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9241
     This should not be used, since colornames are very
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9242
     display-specific (here X-specific)."
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9243
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9244
    |aStream list line index colorName|
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9245
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9246
    aStream := FileStream readonlyFileNamed:'/usr/lib/X11/rgb.txt'.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9247
    aStream isNil ifTrue:[^ nil].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9248
    list := OrderedCollection new.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9249
    [aStream atEnd] whileFalse:[
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9250
	line := aStream nextLine.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9251
	line notNil ifTrue:[
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9252
	    "skip the r/g/b numbers"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9253
	    index := 1.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9254
	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9255
	    [(line at:index) isDigit] whileTrue:[index := index + 1].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9256
	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9257
	    [(line at:index) isDigit] whileTrue:[index := index + 1].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9258
	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9259
	    [(line at:index) isDigit] whileTrue:[index := index + 1].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9260
	    [(line at:index) isSeparator] whileTrue:[index := index + 1].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9261
	    colorName := line copyFrom:index.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9262
	    ((colorName occurrencesOf:(Character space)) == 0) ifTrue:[
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9263
		list add:colorName
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9264
	    ]
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9265
	]
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9266
    ].
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9267
    aStream close.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9268
    ^ list sort
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9269
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9270
    "
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9271
     Screen current listOfAvailableColors
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9272
    "
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9273
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9274
    "Modified: 11.9.1996 / 15:26:28 / stefan"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9275
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9276
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  9277
percentToDeviceColorValue:aPercentage
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9278
    "given a color-component value in percent (0..100), return the corresponding
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9279
     WIN-component value (0..16rFFFF) as an integer"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9280
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9281
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9282
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9283
    if (__isSmallInteger(aPercentage)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9284
	RETURN ( __MKSMALLINT(0xFFFF * __intVal(aPercentage) / 100) );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9285
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9286
    if (__isFloat(aPercentage)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9287
	RETURN ( __MKSMALLINT(0xFFFF * (int)(__floatVal(aPercentage)) / 100) );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9288
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9289
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9290
    ^ (16rFFFF * aPercentage / 100) rounded
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9291
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9292
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9293
setColor:index scaledRed:sred scaledGreen:sgreen scaledBlue:sblue
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9294
    "change a palette index.
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9295
     This is not yet supported in the Windows Device
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9296
     - we assume and depend upon transparent 24bit trueColor mode."
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9297
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9298
     'WinWorkstation [info]: #setColor:scaledRed:scaledGreen:scaledBlue: ignored' infoPrintCR.
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9299
     ^ self.
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9300
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9301
    "Created: 30.1.1998 / 09:27:48 / md"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9302
    "Modified: 30.1.1998 / 09:30:22 / md"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9303
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9304
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9305
!WinWorkstation methodsFor:'cursor stuff'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9306
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9307
builtInCursorShapes
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9308
    "return a collection of standard cursor names.
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9309
     Those are built into Windows and need not be created as
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9310
     user cursors.
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9311
     (actually, there are more than those below ...)"
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9312
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9313
    "/ if you add something here, also add to #shapeNumberFromCursor ...
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9314
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9315
    ^ #(
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9316
	#upLeftArrow            "/ IDC_ARROW
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9317
	#upDownArrow            "/ IDC_SIZENS
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9318
	#leftRightArrow         "/ IDC_SIZEWE
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9319
	#text                   "/ IDC_IBEAM
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9320
	#wait                   "/ IDC_WAIT
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9321
	#execute                "/ IDC_APPSTARTING
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9322
	#crossHair              "/ IDC_CROSS
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9323
	#fourWay                "/ IDC_SIZEALL
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9324
	#upRightHand            "/ IDC_ARROW
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9325
	#noDrop                 "/ IDC_NO
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9326
	#stop                   "/ IDC_NO
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
  9327
       )
3110
0058dbbb19df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3109
diff changeset
  9328
0058dbbb19df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3109
diff changeset
  9329
    "Modified: / 10.12.1999 / 15:16:26 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9330
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9331
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9332
createCursorShape:aShape
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9333
    "create a cursor given a shape-symbol"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9334
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9335
    |number|
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9336
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9337
    number := self shapeNumberFromSymbol:aShape.
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9338
    number isNil ifTrue:[^ nil].
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9339
    ^ self primCreateCursorShapeNr:number
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9340
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9341
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9342
createCursorSourceForm:sourceBytes maskForm:maskBytes hotX:hx hotY:hy width:w height:h
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9343
    "create a cursor given 2 bitmaps (source, mask) and a hotspot"
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9344
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9345
    |padding bpl bplPadded srcOffs dstOffs
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9346
     src mask srcPadded maskPadded cW cH nB nR cursor |
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9347
4575
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  9348
    cW := self getSystemMetrics:#SM_CXCURSOR.
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  9349
    cH := self getSystemMetrics:#SM_CYCURSOR.
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
  9350
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9351
    "/ ('cursorWidth ',cW printString,'cursorHeight ',cH printString) infoPrintCR.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9352
    src := sourceBytes.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9353
    mask := maskBytes.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9354
    padding := self cursorBitmapPadding.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9355
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9356
    "/ repadding and/or resizing required ?
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9357
    bpl := sourceBytes size / h.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9358
    bplPadded := (cW + padding - 1) // padding * 2.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9359
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9360
    bpl ~~ bplPadded ifTrue:[
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9361
	 "/     'repad cursor bits' infoPrintCR.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9362
	srcPadded := ByteArray new:(bplPadded * cH).
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9363
	nB := bpl min: bplPadded.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9364
	nR := cH min: h.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9365
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9366
	dstOffs := srcOffs := 1.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9367
	1 to:nR do:[:row |
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9368
	    srcPadded
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9369
		replaceFrom:dstOffs
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9370
		to:(dstOffs+nB-1)
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9371
		with:src
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9372
		startingAt:srcOffs.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9373
	    dstOffs := dstOffs + bplPadded.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9374
	    srcOffs := srcOffs + bpl.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9375
	].
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9376
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9377
	maskPadded := ByteArray new:(bplPadded * cH).
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9378
	dstOffs := srcOffs := 1.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9379
	1 to:nR do:[:row |
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9380
	    maskPadded
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9381
		replaceFrom:dstOffs
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9382
		to:(dstOffs+nB-1)
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9383
		with:mask
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9384
		startingAt:srcOffs.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9385
	    dstOffs := dstOffs + bplPadded.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9386
	    srcOffs := srcOffs + bpl.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9387
	].
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9388
	src := srcPadded.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9389
	mask := maskPadded.
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9390
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9391
    ].
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9392
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9393
    src invert.
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9394
    1 to:src size do:[:index |
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9395
	src byteAt:index put:((src byteAt:index) bitAnd:(mask byteAt:index)).
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9396
    ].
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9397
    mask invert.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9398
    cursor := self
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9399
	primCreateCursorSourceBits:src
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9400
	maskBits:mask
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9401
	hotX:hx hotY:hy
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
  9402
	width:cW height:cH.
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9403
    cursor notNil ifTrue:[^ cursor ].
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9404
    'WinWorkstation [warning]: could not create bitmap cursor' infoPrintCR.
4575
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  9405
e082b3fa71c8 dual screen (virtual extent) fix.
Claus Gittinger <cg@exept.de>
parents: 4539
diff changeset
  9406
    "Modified: / 08-09-2006 / 15:39:42 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9407
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9408
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9409
cursorBitmapPadding
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9410
    ^ 16 "/ windows requires short-padded rows
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9411
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9412
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9413
destroyCursor:aCursorId
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9414
    "destroy a cursor"
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9415
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9416
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9417
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9418
    if (ISCONNECTED) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9419
	if (__isExternalAddress(aCursorId)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9420
	    HCURSOR curs = _HCURSORVal(aCursorId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9421
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9422
	    if (curs) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9423
#ifdef KEEP_STD_CURSORS
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9424
		if ((curs != H_C_ARROW)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9425
		 && (curs != H_C_CROSS)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9426
		 && (curs != H_C_IBEAM)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9427
		 && (curs != H_C_ICON)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9428
		 && (curs != H_C_NO)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9429
		 && (curs != H_C_SIZE)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9430
		 && (curs != H_C_SIZEALL)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9431
		 && (curs != H_C_SIZENESW)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9432
		 && (curs != H_C_SIZENS)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9433
		 && (curs != H_C_SIZENWSE)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9434
		 && (curs != H_C_UPARROW)
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9435
		 && (curs != H_C_APPSTARTING)
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9436
		 && (curs != H_C_WAIT))
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9437
#endif /* KEEP_STD_CURSORS */
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9438
		{
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9439
		    DestroyCursor(curs);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9440
#ifdef COUNT_RESOURCES
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9441
		    __cnt_cur--;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9442
		    RESPRINTF(("DestroyCursor %d\n",__cnt_cur));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9443
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9444
		}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9445
	    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9446
	    RETURN ( self );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9447
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9448
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9449
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9450
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9451
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9452
needDeviceFormsForCursor
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9453
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9454
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9455
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9456
primCreateCursorShapeNr:number
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9457
    " create a standard (shape) cursor"
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9458
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
  9459
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9460
    HCURSOR newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9461
    LPCTSTR cId;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9462
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9463
    if (__isSmallInteger(number)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9464
	cId = (LPCTSTR)(__intVal(number));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9465
	newCursor = LoadCursor(NULL, cId);
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
  9466
	if (newCursor) {
1685
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
  9467
#ifdef KEEP_STD_CURSORS
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9468
	    if (cId == IDC_ARROW)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9469
		H_C_ARROW = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9470
	    else if (cId == IDC_CROSS)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9471
		H_C_CROSS = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9472
	    else if (cId == IDC_IBEAM)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9473
		H_C_IBEAM = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9474
	    else if (cId == IDC_ICON)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9475
		H_C_ICON = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9476
	    else if (cId == IDC_NO)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9477
		H_C_NO = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9478
	    else if (cId == IDC_SIZE)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9479
		H_C_SIZE = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9480
	    else if (cId == IDC_SIZEALL)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9481
		H_C_SIZEALL = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9482
	    else if (cId == IDC_SIZENESW)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9483
		H_C_SIZENESW = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9484
	    else if (cId == IDC_SIZENS)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9485
		H_C_SIZENS = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9486
	    else if (cId == IDC_SIZENWSE)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9487
		H_C_SIZENWSE = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9488
	    else if (cId == IDC_UPARROW)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9489
		H_C_UPARROW = newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9490
	    else if (cId == IDC_WAIT)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9491
		H_C_WAIT = newCursor;
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9492
	    else if (cId == IDC_APPSTARTING)
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9493
		H_C_APPSTARTING = newCursor;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9494
#endif /* KEEP_STD_CURSORS */
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9495
	    RETURN ( __MKOBJ(newCursor) );
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9496
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9497
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9498
    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9499
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9500
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9501
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9502
primCreateCursorSourceBits:src maskBits:mask hotX:hx hotY:hy width:w height:h
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9503
    "create a cursor from given pixels"
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9504
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9505
%{
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9506
    HCURSOR newCursor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9507
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9508
    if (__isByteArray(src)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9509
     && __isByteArray(mask)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9510
     && __bothSmallInteger(hx, hy)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9511
     && __bothSmallInteger(w, h)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9512
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9513
	newCursor = CreateCursor((HANDLE) __getHInstance(),
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9514
				 __intVal(hx), __intVal(hy),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9515
				 __intVal(w), __intVal(h),
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9516
				 __ByteArrayInstPtr(mask)->ba_element,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9517
				 __ByteArrayInstPtr(src)->ba_element);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9518
	if (newCursor) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9519
#ifdef COUNT_RESOURCES
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9520
	    __cnt_cur++;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9521
	    RESPRINTF(("CreateCursor %d\n",__cnt_cur));
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9522
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9523
	    RETURN ( __MKOBJ(newCursor));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9524
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9525
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9526
    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9527
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9528
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9529
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9530
shapeNumberFromSymbol:shape
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9531
    "given a shape-symbol, return the corresponding cursor-number,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9532
     or nil if no such standard cursor exists."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9533
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9534
    "this is pure Win-knowlegde - but you may easily add more"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9535
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9536
%{  /* NOCONTEXT */
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9537
    if (shape == @symbol(upRightHand)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9538
	RETURN ( __MKSMALLINT( (INT)IDC_ARROW));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
  9539
    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9540
    if (shape == @symbol(upLeftArrow)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9541
	RETURN ( __MKSMALLINT( (INT)IDC_ARROW));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9542
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9543
    if (shape == @symbol(upDownArrow)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9544
	RETURN ( __MKSMALLINT( (INT)IDC_SIZENS));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9545
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9546
    if (shape == @symbol(leftRightArrow)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9547
	RETURN ( __MKSMALLINT( (INT)IDC_SIZEWE));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9548
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9549
    if (shape == @symbol(text)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9550
	RETURN ( __MKSMALLINT( (INT)IDC_IBEAM));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9551
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9552
    if (shape == @symbol(wait)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9553
	RETURN ( __MKSMALLINT( (INT)IDC_WAIT));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9554
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9555
    if (shape == @symbol(crossHair)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9556
	RETURN ( __MKSMALLINT( (INT)IDC_CROSS));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9557
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9558
    if (shape == @symbol(fourWay)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9559
	RETURN ( __MKSMALLINT( (INT)IDC_SIZEALL));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9560
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9561
    if (shape == @symbol(execute)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9562
	RETURN ( __MKSMALLINT( (INT)IDC_APPSTARTING));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9563
    }
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9564
    if (shape == @symbol(noDrop)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9565
	RETURN ( __MKSMALLINT( (INT)IDC_NO));
3110
0058dbbb19df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3109
diff changeset
  9566
    }
0058dbbb19df checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3109
diff changeset
  9567
    if (shape == @symbol(stop)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9568
	RETURN ( __MKSMALLINT( (INT)IDC_NO));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9569
    }
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9570
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9571
    if (shape == @symbol(IDC_UPARROW)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9572
	RETURN ( __MKSMALLINT( (INT)IDC_UPARROW));
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9573
    }
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9574
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9575
    if (shape == @symbol(IDC_SIZE)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9576
	RETURN ( __MKSMALLINT( (INT)IDC_SIZE));
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9577
    }
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9578
    if (shape == @symbol(IDC_SIZENWSE)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9579
	RETURN ( __MKSMALLINT( (INT)IDC_SIZENWSE));
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9580
    }
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9581
    if (shape == @symbol(IDC_SIZENESW)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9582
	RETURN ( __MKSMALLINT( (INT)IDC_SIZENESW));
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9583
    }
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9584
    if (shape == @symbol(IDC_NO)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9585
	RETURN ( __MKSMALLINT( (INT)IDC_NO));
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9586
    }
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9587
#ifdef IDC_HELP
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9588
    if (shape == @symbol(IDC_HELP)) {
3117
837ce31d08ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3110
diff changeset
  9589
	RETURN ( __MKSMALLINT( (INT)IDC_HELP));
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9590
    }
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
  9591
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9592
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9593
"/    ('WINWORKSTATION: invalid cursorShape:' , shape printString) infoPrintNL.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9594
    ^  nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9595
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9596
4461
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9597
!WinWorkstation methodsFor:'drag & drop'!
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9598
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9599
dragFinish:dropHandle
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9600
    "free Win32 data (and remove the drop-file)"
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9601
%{
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9602
    if (__isExternalAddress(dropHandle)) {
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9603
	HDROP hDrop = (HDROP)(__MKCP(dropHandle));
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9604
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9605
	__externalAddressVal(dropHandle) = 0;
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9606
	if (hDrop) {
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9607
	    DragFinish(hDrop);
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9608
	}
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9609
    }
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9610
%}
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9611
! !
adecf2db552f drag and drop
Claus Gittinger <cg@exept.de>
parents: 4457
diff changeset
  9612
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9613
!WinWorkstation methodsFor:'drawing'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9614
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9615
copyFromId:sourceId x:srcX y:srcY gc:srcGCId to:destId x:dstX y:dstY gc:dstGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9616
		width:w height:h
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9617
    "do a bit-blt; copy bits from the rectangle defined by
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9618
     srcX/srcY and w/h from the sourceId drawable to the rectangle
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9619
     below dstX/dstY in the destId drawable. Trigger an error if any
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9620
     argument is not integer."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9621
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9622
%{
2264
817f27555776 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2260
diff changeset
  9623
    struct gcData *dstGcData = 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9624
    struct gcData *srcGcData = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9625
    HDC srcDC = (HDC)0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9626
    HDC dstDC = (HDC)0;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9627
    int     dstGcOwnerThreadID;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9628
    HWND    dstGcHWIN;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9629
    HBITMAP dstGcHBITMAP;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9630
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9631
    if (! __isExternalAddress(srcGCId)
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9632
     || ! __isExternalAddress(dstGCId)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9633
	goto fail;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9634
    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9635
    srcGcData = _GCDATA(srcGCId);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9636
    dstGcData = _GCDATA(dstGCId);
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  9637
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  9638
    if (__bothSmallInteger(w, h)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9639
     && __bothSmallInteger(srcX, srcY)
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9640
     && __bothSmallInteger(dstX, dstY)
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9641
     && srcGcData
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9642
     && dstGcData) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9643
	int fun = BITBLT_COPY;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9644
	int src_fg, src_bg, dst_fg, dst_bg;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9645
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9646
	fun = dstGcData->bitbltrop2;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9647
#if 0
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9648
	switch (fun) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9649
	  case BITBLT_COPY:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  9650
	    console_printf("BITBLT_COPY\n");
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9651
	    break;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9652
	  case BITBLT_COPYINVERTED:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  9653
	    console_printf("BITBLT_COPYINVERTED\n");
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9654
	    break;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9655
	  case BITBLT_XOR:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  9656
	    console_printf("BITBLT_XOR\n");
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9657
	    break;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9658
	  case BITBLT_AND:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  9659
	    console_printf("BITBLT_AND\n");
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9660
	    break;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9661
	  case BITBLT_OR:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  9662
	    console_printf("BITBLT_OR\n");
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9663
	    break;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9664
	}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9665
#endif
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9666
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9667
	/*
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9668
	 * a scroll operation ?
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9669
	 */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9670
	if (srcGcData->hWnd
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9671
	 && ((srcGcData->hWnd == dstGcData->hWnd)
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9672
	 && (fun == BITBLT_COPY))) {
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
  9673
	    RECT rec, updRect;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9674
	    RECT invRec;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9675
	    HRGN updRgn = 0, dstRgn = 0, nUpdRgn = 0;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9676
	    int _srcX = __intVal(srcX);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9677
	    int _srcY = __intVal(srcY);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9678
	    int _dstX = __intVal(dstX);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9679
	    int _dstY = __intVal(dstY);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9680
	    int _w = __intVal(w);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9681
	    int _h = __intVal(h);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9682
	    int noExpose = 0;
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9683
	    int _deltaX, _deltaY;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9684
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
  9685
#ifdef CACHE_LAST_DC
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9686
	    if (lastGcData) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9687
		_releaseDC(lastGcData);
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9688
	    }
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9689
#endif
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9690
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9691
	    rec.left = _srcX;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9692
	    rec.top  = _srcY;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9693
	    rec.right = rec.left + _w;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9694
	    rec.bottom = rec.top + _h;
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9695
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9696
	    _deltaX = _dstX - _srcX;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9697
	    _deltaY = _dstY - _srcY;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9698
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  9699
	    DDPRINTF(("dst and src is HWND %x fun == BITBLT_COPY --> scroll %d/%d\n",
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9700
		    srcGcData->hWnd,
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9701
		    _deltaX,
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9702
		    _deltaY));
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9703
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9704
	    if ((_deltaX == 0) && (_deltaY == 0)) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9705
		noExpose = 1;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9706
	    } else {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9707
		updRgn = CreateRectRgn(0, 0, 0, 0);
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9708
		ScrollWindowEx(srcGcData->hWnd,
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9709
			    _deltaX,
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9710
			    _deltaY,
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9711
			    &rec,            /* area to scroll */
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9712
			    0,               /* clip region */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9713
			    updRgn,
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9714
			    NULL, /* &invRec, */
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9715
			    0 /* SW_ERASE | SW_INVALIDATE */);
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9716
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9717
		/*
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9718
		 * we are not interested in the source-area;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9719
		 * only care for exposed areas in the dst area.
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9720
		 */
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9721
		dstRgn = CreateRectRgn(_dstX, _dstY, _dstX+_w, _dstY+_h);
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9722
		nUpdRgn = CreateRectRgn(0, 0, 0, 0);
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9723
		switch (CombineRgn(nUpdRgn, updRgn, dstRgn, RGN_AND)) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9724
		    case ERROR:
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9725
			_DeleteObject(nUpdRgn, __LINE__);
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9726
			nUpdRgn = updRgn;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9727
			noExpose = 1;
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9728
			break;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9729
		    case NULLREGION:
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9730
			noExpose = 1;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9731
			break;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9732
		    default:
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9733
			if (__generateExposes(srcGcData->hWnd, nUpdRgn, __WM_GEXPOSE, 1) <= 0) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9734
			    noExpose = 1;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9735
			}
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9736
			break;
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9737
		}
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9738
	    }
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9739
	    if (noExpose) {
2705
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  9740
		/*
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  9741
		 * no exposes generated - must send a NOEXPOSE
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  9742
		 */
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
  9743
		enqEvent(ExposureMask, srcGcData->hWnd, __WM_NOGEXPOSE, 0, 0, 0, 0, 0, EV_NOTIME);
2705
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
  9744
	    }
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9745
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9746
	    if (dstRgn) {
2752
a5d5305850e0 fixed leftover pixel-garbage (leftOver view)
Claus Gittinger <cg@exept.de>
parents: 2746
diff changeset
  9747
		_DeleteObject(dstRgn, __LINE__);
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9748
	    }
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9749
	    if (nUpdRgn && (nUpdRgn != updRgn)) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9750
		_DeleteObject(nUpdRgn, __LINE__);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9751
	    }
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9752
	    if (updRgn) {
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9753
		_DeleteObject(updRgn, __LINE__);
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
  9754
	    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9755
	    RETURN ( self );
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9756
	}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9757
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9758
	fun = dstGcData->bitbltrop2;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9759
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9760
	if (0 /* fun == BITBLT_COPY */) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9761
	    src_fg = dst_fg = 0xFFFFFF;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9762
	    src_bg = dst_bg = 0x000000;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9763
	} else {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9764
	    src_fg = srcGcData->fgColor;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9765
	    src_bg = srcGcData->bgColor;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9766
	    dst_fg = dstGcData->fgColor;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9767
	    dst_bg = dstGcData->bgColor;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9768
	}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9769
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9770
	/*
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9771
	 * a simple copy (like scroll, but in a bitmap) ?
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9772
	 */
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9773
	if ((srcGcData == dstGcData)
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9774
	 && (fun == BITBLT_COPY)) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9775
	    RECT rec, uprec;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9776
	    int _srcX, _srcY;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9777
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9778
	    rec.left = _srcX = __intVal(srcX);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9779
	    rec.top = _srcY = __intVal(srcY);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9780
	    rec.right = rec.left + __intVal(w);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9781
	    rec.bottom = rec.top + __intVal(h);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9782
	    srcDC = _getDC(srcGcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9783
	    SetBkColor(srcDC, src_fg);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9784
	    SetTextColor(srcDC, src_bg);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9785
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
  9786
	    DDPRINTF(("dst and src is DC %x fun == BITBLT_COPY  --> scrolling %d %d\n",srcDC,__intVal(dstX) - __intVal(srcX),__intVal(dstY) - __intVal(srcY)));
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9787
	    ScrollDC(srcDC, __intVal(dstX)-_srcX,
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9788
			    __intVal(dstY)-_srcY,
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9789
			    &rec, 0, 0, &uprec);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9790
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9791
	    SetBkColor(srcDC, srcGcData->bgColor);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9792
	    SetTextColor(srcDC, srcGcData->fgColor);
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9793
#ifndef CACHE_LAST_DC
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9794
	    _releaseDC(srcGcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9795
#endif
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9796
	    RETURN ( self );
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9797
	}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9798
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9799
#ifdef xxCACHE_LAST_DC
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9800
/* mhmh - this should not be needed */
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9801
	if (lastGcData) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9802
	    _releaseDC(lastGcData);
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9803
	}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9804
#endif
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9805
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9806
	if (dstGcData == srcGcData) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9807
	    srcDC = dstDC = _getDC(dstGcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9808
	} else {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9809
	    srcDC = _getDC(srcGcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9810
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9811
	    /*
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9812
	     * kludge - pretent nothing is cached for a moment,
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9813
	     * to avoid release in getDC below ...
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9814
	     */
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9815
#ifdef CACHE_LAST_DC
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9816
	    dstGcOwnerThreadID = lastGcOwnerThreadID;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9817
	    dstGcHWIN = lastGcHWIN;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9818
	    dstGcHBITMAP = lastGcHBITMAP;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9819
	    lastGcData = 0;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
  9820
#endif
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9821
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9822
	    dstDC = _getDC(dstGcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9823
	    SetBkColor(dstDC, dst_fg);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9824
	    SetTextColor(dstDC, dst_bg);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9825
	}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9826
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9827
	SetBkColor(srcDC, src_fg);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9828
	SetTextColor(srcDC, src_bg);
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9829
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9830
	CPRINTF(("bitblt src f:%x b:%x",GetTextColor(srcDC),GetBkColor(srcDC)));
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9831
	CPRINTF(("dst f:%x b:%x\n",GetTextColor(dstDC),GetBkColor(dstDC)));
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9832
	if (BitBlt(dstDC,
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9833
	     __intVal(dstX), __intVal(dstY),
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9834
	     __intVal(w), __intVal(h),
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9835
	     srcDC,
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9836
	     __intVal(srcX), __intVal(srcY),
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9837
	     fun)
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9838
	   == 0
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9839
	  ) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
  9840
	    console_fprintf(stderr, "WinWorkstation [info]: ERROR in BitBlt\n");
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9841
	}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9842
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9843
	if (dstGcData != srcGcData) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9844
	    SetBkColor(dstDC, dstGcData->bgColor);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9845
	    SetTextColor(dstDC, dstGcData->fgColor);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9846
	}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9847
	SetBkColor(srcDC, srcGcData->bgColor);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9848
	SetTextColor(srcDC, srcGcData->fgColor);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9849
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9850
	if (srcGcData != dstGcData) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9851
	    _releaseDC(srcGcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9852
	}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9853
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9854
#ifdef CACHE_LAST_DC
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9855
	/*
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9856
	 * kludge again - restore last-DC cache
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9857
	 */
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9858
	lastGcData = dstGcData;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9859
	lastGcOwnerThreadID = dstGcOwnerThreadID;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9860
	lastGcHWIN = dstGcHWIN;
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9861
	lastGcHBITMAP = dstGcHBITMAP;
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9862
#else
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9863
	_releaseDC(dstGcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9864
#endif
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
  9865
	RETURN ( self );
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9866
    }
1685
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
  9867
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
  9868
 fail: ;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9869
%}.
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9870
    self primitiveFailed.
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9871
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9872
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9873
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9874
copyPlaneFromId:sourceId x:srcX y:srcY gc:srcDCId to:destId x:dstX y:dstY gc:dstDCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9875
		width:w height:h
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9876
    "do a bit-blt, but only copy the low-bit plane;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9877
     copy bits from the rectangle defined by
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9878
     srcX/srcY and w/h from the sourceId drawable to the rectangle
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9879
     below dstX/dstY in the destId drawable. Trigger an error if any
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9880
     argument is not integer."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9881
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9882
    ^ self
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9883
	copyFromId:sourceId
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9884
		 x:srcX y:srcY gc:srcDCId
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9885
		to:destId x:dstX y:dstY gc:dstDCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9886
	     width:w height:h
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9887
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9888
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  9889
displayArcX:x y:y width:width height:height from:startAngle angle:angle in:ignoredDrawableId with:aGCId
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9890
    "draw an arc. If any of x,y, w or h is not an integer, an error is triggered.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9891
     The angles may be floats or integer - they are given in degrees."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9892
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9893
%{
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9894
    int __x, __y, w, h;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9895
    float angle1, angle2;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9896
    double f;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9897
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9898
    if (__isSmallInteger(startAngle))
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9899
	angle1 = (float)(__intVal(startAngle));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9900
    else if (__isFloat(startAngle)) {
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9901
	angle1 = (float) __floatVal(startAngle);
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9902
    } else if (__isShortFloat(startAngle)) {
2297
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
  9903
	angle1 = __shortFloatVal(startAngle);
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9904
    } else goto bad;
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9905
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9906
    if (__isSmallInteger(angle))
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9907
	angle2 = (float)(__intVal(angle));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9908
    else if (__isFloat(angle)) {
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9909
	angle2 = (float) __floatVal(angle);
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9910
    } else if (__isShortFloat(angle)) {
2297
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
  9911
	angle2 = __shortFloatVal(angle);
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9912
    } else goto bad;
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9913
2930
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
  9914
    if (angle2 <= 0) {
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
  9915
	RETURN (self);
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
  9916
    }
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
  9917
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9918
    if (__isExternalAddress(aGCId)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9919
     && __bothSmallInteger(x, y)
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
  9920
     && __bothSmallInteger(width, height))
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9921
     {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9922
	struct gcData *gcData = _GCDATA(aGCId);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9923
	HDC hDC;
1725
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
  9924
	POINT p;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9925
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9926
	w = __intVal(width);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9927
	h = __intVal(height);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9928
	__x = __intVal(x);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9929
	__y = __intVal(y);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9930
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9931
	hDC = _getDC(gcData);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9932
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9933
	if (! GcDataGetPen(hDC, gcData)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9934
	    DPRINTF(("displayArc: no pen\n"));
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  9935
	} else {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9936
	    double xB, yB, xE, yE, xR, yR;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9937
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9938
	    xR = w / 2;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9939
	    yR = h / 2;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9940
	    if (angle2 - angle1 >= 360) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9941
		xB = xE = __x + xR + 0.5;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9942
		yB = yE = __y /*+ yR + 0.5*/;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9943
	    } else {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9944
		double sin(), cos();
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9945
		float rad1, rad2;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9946
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9947
		if (angle1 <= 180)
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9948
		  angle1 = 180 - angle1;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9949
		else
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9950
		  angle1 = 360 + 180 - angle1;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9951
		angle2 = angle1 - angle2;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9952
		/* sigh - compute the intersections ... */
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9953
		rad1 = (angle1 * 3.14159265359) / 180.0;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9954
		rad2 = (angle2 * 3.14159265359) / 180.0;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9955
		xB = cos(rad1) * xR;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9956
		yB = sin(rad1) * yR;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9957
		xE = cos(rad2) * xR;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9958
		yE = sin(rad2) * yR;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9959
		xB = __x + xR - xB + 0.5;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9960
		yB = __y + yR - yB + 0.5;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9961
		xE = __x + xR - xE + 0.5;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
  9962
		yE = __y + yR - yE + 0.5;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9963
	    }
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9964
	    DPRINTF(("Arc x=%d y=%d w=%d h=%d xB=%d xE=%d yB=%d yE=%d a1=%f a2=%f\n",__x,__y,w,h,(int)xB,(int)xE,(int)yB,(int)yE,angle1,angle2));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9965
	    Arc(hDC,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9966
		__x, __y,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9967
		__x + w, __y + h,
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9968
		(int)xB, (int)yB,
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9969
		(int)xE, (int)yE);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9970
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  9971
	    GcDataReleasePen(hDC, gcData);
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  9972
	}
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  9973
#ifndef CACHE_LAST_DC
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9974
	_releaseDC(gcData);
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
  9975
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9976
	RETURN ( self );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9977
    }
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9978
    bad: ;
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9979
%}.
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
  9980
    self primitiveFailed
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9981
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9982
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  9983
displayLineFromX:x0 y:y0 toX:x1 y:y1 in:ignoredDrawableId with:aGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9984
    "draw a line. If the coordinates are not integers, an error is triggered."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9985
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9986
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9987
    if (__isExternalAddress(aGCId)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9988
     && __bothSmallInteger(x0, y0)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9989
     && __bothSmallInteger(x1, y1)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9990
	struct gcData *gcData = _GCDATA(aGCId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9991
	int __x1 = __intVal(x1), __y1 = __intVal(y1);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
  9992
	HDC hDC = _getDC(gcData);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
  9993
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  9994
/*      DPRINTF(("displayLine: %d/%d -> %d/%d\n",
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9995
		    __intVal(x0), __intVal(y0),
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
  9996
		    __x1, __y1));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
  9997
*/
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
  9998
	if (! GcDataGetPen(hDC, gcData)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
  9999
	    DPRINTF(("displayLine: no pen\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10000
	} else {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10001
	    MoveToEx(hDC, __intVal(x0), __intVal(y0), NULL);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10002
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10003
	    LineTo(hDC, __x1, __y1);
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 10004
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10005
	    /*
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10006
	     * end-point ...
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10007
	     */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10008
	    LineTo(hDC, __x1+1, __y1);
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 10009
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10010
	    GcDataReleasePen(hDC, gcData);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10011
	}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10012
#ifndef CACHE_LAST_DC
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10013
	_releaseDC(gcData);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10014
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10015
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10016
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10017
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10018
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10019
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10020
displayPointX:px y:py in:ignoredDrawableId with:aGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10021
    "draw a point. If x/y are not integers, an error is triggered."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10022
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 10023
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10024
    if (__isExternalAddress(aGCId)
1725
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10025
     && __bothSmallInteger(px, py)) {
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 10026
	struct gcData *gcData = _GCDATA(aGCId);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10027
	HDC hDC;
1725
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10028
	POINT p;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10029
	int __x = __intVal(px), __y = __intVal(py);
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 10030
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 10031
#ifdef OLD
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10032
	int savedLStyle = gcData->lStyle;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10033
	int savedLWidth = gcData->lineWidth;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10034
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10035
	/*
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10036
	 * a point is a point - no matter what lineWidth we have set before
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10037
	 */
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10038
	if ((gcData->lStyle != PS_SOLID)
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10039
	 || (gcData->lineWidth > 1)) {
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10040
	    FLUSH_CACHED_DC(gcData);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10041
	    gcData->lStyle = PS_SOLID;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10042
	    gcData->lineWidth = 0;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10043
	}
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10044
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10045
	hDC = _getDC(gcData);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10046
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 10047
	if (! GcDataGetPen(hDC,gcData)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10048
	    DPRINTF(("displayPoint: no pen\n"));
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 10049
	} else {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10050
	    MoveToEx(hDC, __x, __y, NULL);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10051
	    /*
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10052
	     * end-point ...
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10053
	     */
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10054
	    LineTo(hDC, __x+1, __y);
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10055
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10056
	    GcDataReleasePen(hDC, gcData);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10057
	}
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10058
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 10059
# ifndef CACHE_LAST_DC
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10060
	_releaseDC(gcData);
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 10061
# endif
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10062
	if ((gcData->lStyle != savedLStyle)
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10063
	 || (gcData->lineWidth != savedLWidth)) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10064
	    FLUSH_CACHED_DC(gcData);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10065
	    gcData->lStyle = savedLStyle;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10066
	    gcData->lineWidth = savedLWidth;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10067
	}
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 10068
#else /* NEW */
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 10069
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 10070
	hDC = _getDC(gcData);
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 10071
	SetPixelV(hDC, __x, __y, gcData->fgColor);
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 10072
# ifndef CACHE_LAST_DC
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 10073
	_releaseDC(gcData);
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 10074
# endif
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 10075
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 10076
#endif /* NEW */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10077
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10078
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10079
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10080
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10081
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10082
displayPolygon:aPolygon in:ignoredDrawableId with:aGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10083
    "draw a polygon, the argument aPolygon is a Collection of individual points,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10084
     which define the polygon.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10085
     If any coordinate is not integer, an error is triggered."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10086
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10087
    |numberOfPoints|
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10088
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10089
    numberOfPoints := aPolygon size.
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10090
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10091
%{
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10092
    OBJ point, px, py;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10093
    int i, num;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10094
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10095
    if (__isExternalAddress(aGCId)
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10096
     && __isSmallInteger(numberOfPoints)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10097
	struct gcData *gcData = _GCDATA(aGCId);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10098
	HDC hDC = 0;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10099
	POINT p;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10100
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10101
	num = __intVal(numberOfPoints);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10102
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10103
	for (i=0; i<num; i++) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10104
	    point = __AT_(aPolygon, __MKSMALLINT(i+1));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10105
	    if (! __isPoint(point)) goto fail;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10106
	    px = _point_X(point);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10107
	    py = _point_Y(point);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10108
	    if (! __bothSmallInteger(px, py)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10109
		goto fail;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10110
	    }
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10111
	}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10112
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10113
	hDC = _getDC(gcData);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 10114
	if (! GcDataGetPen(hDC,gcData)) {
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10115
	    DPRINTF(("displayPolygon: no pen\n"));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10116
	} else {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10117
	    for (i=0; i<num; i++) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10118
		point = __AT_(aPolygon, __MKSMALLINT(i+1));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10119
		px = _point_X(point);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10120
		py = _point_Y(point);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10121
		p.x = __intVal(px);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10122
		p.y = __intVal(py);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10123
		if (i == 0) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10124
		    MoveToEx(hDC, p.x, p.y, NULL);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10125
		} else {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10126
		    if (i == (num-1)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10127
			PolylineTo(hDC, &p, 1);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10128
		    } else {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10129
			LineTo(hDC, p.x, p.y);
4181
91439783248a bugfix: display polygon PRE_04_JUN_04
ca
parents: 4161
diff changeset
 10130
#ifdef PRE_04_JUN_04
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10131
			/*
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10132
			 * end-point ...
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10133
			 */
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10134
			LineTo(hDC, p.x+1, p.y);
4181
91439783248a bugfix: display polygon PRE_04_JUN_04
ca
parents: 4161
diff changeset
 10135
#endif
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10136
		    }
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10137
		}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10138
	    }
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10139
	    GcDataReleasePen(hDC, gcData);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10140
	}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10141
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10142
#ifndef CACHE_LAST_DC
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10143
	_releaseDC(gcData);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10144
#endif
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10145
	RETURN ( self );
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10146
    }
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10147
fail: ;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10148
%}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10149
!
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10150
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10151
displayPolylines:aPolyline in:ignoredDrawableId with:aGCId
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10152
    "draw a polyline, the argument aPolyline is a collection of individual points,
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10153
     which define the lines (p1/p2 pairs); must be even in size.
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10154
     If any coordinate is not integer, an error is triggered."
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10155
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10156
    |numberOfPoints|
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10157
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10158
    numberOfPoints := aPolyline size.
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10159
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10160
%{
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10161
    OBJ point, px, py;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10162
    int i, num;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10163
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10164
    if (__isExternalAddress(aGCId)
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10165
     && __isSmallInteger(numberOfPoints)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10166
	struct gcData *gcData = _GCDATA(aGCId);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10167
	HDC hDC = 0;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10168
	POINT p;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10169
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10170
	num = __intVal(numberOfPoints);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10171
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10172
	for (i=0; i<num; i++) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10173
	    point = __AT_(aPolyline, __MKSMALLINT(i+1));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10174
	    if (! __isPoint(point)) goto fail;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10175
	    px = _point_X(point);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10176
	    py = _point_Y(point);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10177
	    if (! __bothSmallInteger(px, py)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10178
		goto fail;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10179
	    }
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10180
	}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10181
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10182
	hDC = _getDC(gcData);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 10183
	if (! GcDataGetPen(hDC,gcData)) {
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10184
	    DPRINTF(("displayPolygon: no pen\n"));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10185
	} else {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10186
	    for (i=0; i<num; i++) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10187
		point = __AT_(aPolyline, __MKSMALLINT(i+1));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10188
		px = _point_X(point);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10189
		py = _point_Y(point);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10190
		p.x = __intVal(px);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10191
		p.y = __intVal(py);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10192
		if ((i & 1) == 0) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10193
		    MoveToEx(hDC, p.x, p.y, NULL);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10194
		} else {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10195
		    LineTo(hDC, p.x, p.y);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10196
		    /*
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10197
		     * end-point ...
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10198
		     */
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10199
		    LineTo(hDC, p.x+1, p.y);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10200
		}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10201
	    }
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10202
	    GcDataReleasePen(hDC, gcData);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10203
	}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10204
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10205
#ifndef CACHE_LAST_DC
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10206
	_releaseDC(gcData);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10207
#endif
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10208
	RETURN ( self );
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10209
    }
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10210
fail: ;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 10211
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10212
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10213
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10214
displayRectangleX:x y:y width:width height:height in:ignoredDrawableId with:aGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10215
    "draw a rectangle. If the coordinates are not integers, an error is triggered."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10216
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
 10217
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10218
    int w, h;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10219
    int xL, yT;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10220
    if (__isExternalAddress(aGCId)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10221
     && __bothSmallInteger(x, y)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10222
     && __bothSmallInteger(width, height)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10223
	struct gcData *gcData = _GCDATA(aGCId);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10224
	HDC hDC = _getDC(gcData);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10225
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10226
	xL = __intVal(x);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10227
	yT = __intVal(y);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10228
	w = __intVal(width);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10229
	h = __intVal(height);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10230
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10231
	DPRINTF(("displayRectangle: %d/%d -> %d/%d\n",
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10232
			xL, yT, w, h));
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 10233
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10234
	if ((w >= 0) && (h >= 0)) {
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 10235
	    if (! GcDataGetPen(hDC,gcData)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10236
		DPRINTF(("displayRect: no pen\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10237
	    } else {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10238
		MoveToEx(hDC, xL, yT, NULL);
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10239
#if 0
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10240
		LineTo(hDC, xL+w, yT);     // to top-right
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10241
		LineTo(hDC, xL+w, yT+h);   // to bot-right
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10242
		LineTo(hDC, xL, yT+h);     // to bot-left
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10243
		LineTo(hDC, xL, yT);       // back to top-left
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10244
#else
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10245
		LineTo(hDC, xL+w, yT);       // to top-right
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10246
		LineTo(hDC, xL+w, yT+h);     // to bot-right
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10247
		MoveToEx(hDC, xL, yT, NULL); // back to top-left
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10248
		LineTo(hDC, xL, yT+h);       // to bot-left
3976
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10249
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10250
#ifndef PRE_31_JAN_03
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10251
		LineTo(hDC, xL+w+1, yT+h);   // move pen one pixel more
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10252
#else
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10253
		LineTo(hDC, xL+w, yT+h);     // to bot-right
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 10254
#endif
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10255
3976
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10256
#endif
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10257
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10258
		GcDataReleasePen(hDC, gcData);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10259
	    }
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10260
	}
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10261
#ifndef CACHE_LAST_DC
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10262
	_releaseDC(gcData);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10263
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10264
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10265
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10266
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10267
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10268
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10269
displayString:aString from:index1 to:index2 x:x y:y in:ignoredDrawableId with:aGCId opaque:opaque
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10270
    "draw a sub-string - if opaque is false, draw foreground only; otherwise, draw both
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10271
     foreground and background characters.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10272
     If the coordinates are not integers, an error is triggered."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10273
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
 10274
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10275
    unsigned char *cp;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10276
    OBJ cls;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10277
    int  i1, i2, l, n;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10278
    int nInstBytes;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10279
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10280
    if (__isExternalAddress(aGCId)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10281
     && __isNonNilObject(aString)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10282
     && __bothSmallInteger(index1, index2)
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 10283
     && __bothSmallInteger(x, y))
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10284
    {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10285
	struct gcData *gcData = _GCDATA(aGCId);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10286
	int pX, pY;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10287
	HDC hDC = _getDC(gcData);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10288
	HFONT hOldFont;
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10289
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10290
#ifndef PRE_22_FEP_2007
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10291
#       define N_QUICK_CHARS    1024
4729
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 10292
	unsigned short quickWchars[N_QUICK_CHARS];
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 10293
	unsigned short *wcharPtr;
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10294
	int mustFree = 0;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10295
	int i;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10296
#endif
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10297
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10298
	pX = __intVal(x);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10299
	pY = __intVal(y);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10300
	pY -= gcData->fontAscent;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10301
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10302
	if (opaque == true) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10303
	    if (gcData->bkMode != BK_OPAQUE) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10304
		SetBkMode(hDC, OPAQUE);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10305
		gcData->bkMode = BK_OPAQUE;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10306
	    }
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10307
	} else {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10308
	    if (gcData->bkMode != BK_TRANSPARENT) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10309
		SetBkMode(hDC, TRANSPARENT);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10310
		gcData->bkMode = BK_TRANSPARENT;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10311
	    }
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10312
	}
4941
f9fae1143962 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4939
diff changeset
 10313
	/* leftover code from tries to make TextOut honor the gc-mode,
f9fae1143962 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4939
diff changeset
 10314
	 * until I googled, that TextOut does not (by purpose, or backward-bug compatibility)
f9fae1143962 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4939
diff changeset
 10315
	 */
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10316
#if 0
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10317
	hOldFont = SelectObject(hDC, gcData->hFont);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10318
	SetTextColor(hDC, gcData->fgColor);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10319
	SetBkColor(hDC, gcData->bgColor);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10320
#endif
4941
f9fae1143962 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4939
diff changeset
 10321
#if 0
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 10322
	GcDataGetPen(hDC, gcData);
4941
f9fae1143962 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4939
diff changeset
 10323
#endif
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10324
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10325
	cls = __qClass(aString);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10326
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10327
	i1 = __intVal(index1) - 1;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10328
	if (i1 >= 0) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10329
	    i2 = __intVal(index2) - 1;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10330
	    if (i2 < i1) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 10331
		goto ret;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10332
	    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10333
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10334
	    cp = _stringVal(aString);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10335
	    l = i2 - i1 + 1;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10336
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
 10337
	    if ((cls == @global(String)) || (cls == @global(Symbol))) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10338
		n = _stringSize(aString);
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10339
    commonOutChars:
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
 10340
		if (i2 < n) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10341
		    cp += i1;
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10342
		    CPRINTF(("string1: %s pos=%d/%d l=%d hDC=%x\n", cp, pX, pY,l,hDC));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10343
2664
5077cdd062c5 cut long strings for TextOut
Claus Gittinger <cg@exept.de>
parents: 2663
diff changeset
 10344
		    if (l > 32767) {
5077cdd062c5 cut long strings for TextOut
Claus Gittinger <cg@exept.de>
parents: 2663
diff changeset
 10345
			l = 32767;
5077cdd062c5 cut long strings for TextOut
Claus Gittinger <cg@exept.de>
parents: 2663
diff changeset
 10346
		    }
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10347
#ifdef PRE_22_FEP_2007
2664
5077cdd062c5 cut long strings for TextOut
Claus Gittinger <cg@exept.de>
parents: 2663
diff changeset
 10348
		    if (! TextOut(hDC, pX, pY, (char *)cp, l)) {
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10349
			PRINTF(("Textout failed. %d\n", GetLastError()));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10350
		    }
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10351
#else
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10352
		    if (l <= N_QUICK_CHARS) {
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10353
			wcharPtr = quickWchars;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10354
			mustFree = 0;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10355
		    } else {
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10356
			wcharPtr = malloc(sizeof(short)*l);
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10357
			if (! wcharPtr) goto ret;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10358
			mustFree = 1;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10359
		    }
4729
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 10360
		    for (i=0; i<l; i++) wcharPtr[i] = ((unsigned char *)cp)[i];
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10361
		    if (! TextOutW(hDC, pX, pY, wcharPtr, l)) {
4729
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 10362
			PRINTF(("WinWorkstation [warning]: TextoutW failed. %d [%d]\n", GetLastError(), __LINE__));
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10363
		    }
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10364
		    if (mustFree) free(wcharPtr);
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10365
#endif
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10366
		}
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10367
		goto ret;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10368
	    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10369
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10370
	    nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10371
	    cp += nInstBytes;
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 10372
	    n = __byteArraySize(aString) - nInstBytes;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10373
2364
50a217088763 more standard cursors.
Claus Gittinger <cg@exept.de>
parents: 2348
diff changeset
 10374
	    if (__isBytes(aString)) {
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 10375
		goto commonOutChars;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10376
	    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10377
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 10378
	    /* Unicode */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10379
	    if (__isWords(aString)) {
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 10380
		n = n / 2;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10381
		if (i2 < n) {
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 10382
		    WIDECHAR *w_cp = (WIDECHAR *)cp;
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 10383
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 10384
		    w_cp += i1;
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 10385
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 10386
		    if (! TextOutW(hDC, pX, pY, w_cp, l)) {
4729
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 10387
			PRINTF(("WinWorkstation [warning]: TextoutW failed. %d [%d]\n", GetLastError(), __LINE__));
3492
7cc5502dbf65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3481
diff changeset
 10388
		    }
7cc5502dbf65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3481
diff changeset
 10389
		    goto ret;
7cc5502dbf65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3481
diff changeset
 10390
		}
7cc5502dbf65 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3481
diff changeset
 10391
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10392
	}
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 10393
ret:;
4941
f9fae1143962 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4939
diff changeset
 10394
#if 0
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 10395
	GcDataReleasePen(hDC, gcData);
4941
f9fae1143962 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4939
diff changeset
 10396
#endif
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10397
#if 0
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10398
	SelectObject(hDC, hOldFont);
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10399
#endif
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10400
#ifndef CACHE_LAST_DC
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10401
	_releaseDC(gcData);
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 10402
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10403
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10404
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10405
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10406
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10407
drawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth padding:padd
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10408
			  width:imageWidth height:imageHeight
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10409
			      x:srcx y:srcy
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10410
			   into:ignoredDrawableId
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10411
			      x:dstx y:dsty
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10412
			  width:w height:h
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10413
			   with:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10414
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10415
    "draw a bitImage which has depth id, width iw and height ih into
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10416
     the drawable. draw a region of w/h pixels from srcx/srcy to dstx/dsty.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10417
     Individual source pixels have bitsPerPixel bits, allowing to draw
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10418
     depth and pixel-units to be different.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10419
     It has to be checked elsewhere, that the server can do it with the given
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10420
     depth - otherwise, primitive failure will be signalled.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10421
     Also it is assumed, that the colormap is setup correctly and the
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10422
     colors are allocated - otherwise the colors may be wrong."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10423
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10424
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10425
     sorry; I had to separate it into 2 methods, since XPutImage needs
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10426
     an unlimited stack, and thus cannot send primitiveFailed
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10427
    "
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10428
    (self primDrawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth padding:padd
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10429
					width:imageWidth height:imageHeight
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10430
					     x:srcx y:srcy
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10431
					  into:ignoredDrawableId
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10432
					     x:dstx y:dsty
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10433
					 width:w height:h
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10434
					  with:aGCId)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10435
    ifFalse:[
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10436
	"
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10437
	 also happens, if a segmentation violation occurs in the
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10438
	 XPutImage ...
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10439
	"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10440
	self primitiveFailed
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10441
    ].
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10442
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10443
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10444
fillArcX:x y:y width:width height:height from:startAngle angle:angle
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10445
	       in:ignoredDrawableId with:aGCId
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10446
    "fill an arc. If any coordinate is not integer, an error is triggered.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10447
     The angles may be floats or integer - they are given in degrees."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10448
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10449
%{
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10450
    int __x, __y, w, h;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10451
    float angle1, angle2;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10452
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10453
    if (__isSmallInteger(startAngle))
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10454
	angle1 = (float)(__intVal(startAngle));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10455
    else if (__isFloat(startAngle)) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10456
	angle1 = __floatVal(startAngle);
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10457
    } else if (__isShortFloat(startAngle)) {
2297
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
 10458
	angle1 = __shortFloatVal(startAngle);
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10459
    } else goto bad;
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10460
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10461
    if (__isSmallInteger(angle))
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10462
	angle2 = (float)(__intVal(angle));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10463
    else if (__isFloat(angle)) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10464
	angle2 = __floatVal(angle);
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10465
    } else if (__isShortFloat(angle)) {
2297
3443e454a52d preps for clipboard support (not yet finished)
Claus Gittinger <cg@exept.de>
parents: 2284
diff changeset
 10466
	angle2 = __shortFloatVal(angle);
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10467
    } else goto bad;
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10468
2930
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
 10469
    if (angle2 <= 0) {
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
 10470
	RETURN (self);
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
 10471
    }
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
 10472
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10473
    if (__isExternalAddress(aGCId)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10474
     && __bothSmallInteger(x, y)
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 10475
     && __bothSmallInteger(width, height))
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10476
     {
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10477
	struct gcData *gcData = _GCDATA(aGCId);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10478
	HDC hDC;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10479
	HBRUSH hBrush;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10480
	HPEN prevPen = 0;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10481
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10482
	w = __intVal(width);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10483
	h = __intVal(height);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10484
	__x = __intVal(x);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10485
	__y = __intVal(y);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10486
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10487
	hDC = _getDC(gcData);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10488
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 10489
	hBrush = GcDataGetBrush(hDC, gcData);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 10490
	if (hBrush == 0) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10491
	    DPRINTF(("fillArc: no brush\n"));
2339
9777d3509d1f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2338
diff changeset
 10492
	} else {
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10493
	    HPEN hPen = 0;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10494
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10495
	    if (0 /* __isWinNT */) {
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 10496
		hPen = GcDataGetPen(hDC, gcData);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 10497
		if (hPen == 0) {
2930
6b6db22e2259 arc with 0-angle
Claus Gittinger <cg@exept.de>
parents: 2929
diff changeset
 10498
		    DPRINTF(("fillArc: no pen\n"));
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10499
		    goto failpen;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10500
		}
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10501
	    } else {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10502
		prevPen = SelectObject(hDC, __nullPen);
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10503
		w++;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10504
		h++;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10505
	    }
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10506
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10507
	    {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10508
		double xB, yB, xE, yE, xR, yR;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10509
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10510
		xR = w / 2;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10511
		yR = h / 2;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10512
		if (angle2 - angle1 >= 360) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10513
		    xB = xE = __x + xR + 0.5;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10514
		    yB = yE = __y /*+ yR + 0.5*/;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10515
		} else {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10516
		    double sin(), cos();
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10517
		    float rad1, rad2;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10518
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10519
		    if (angle1 <= 180)
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10520
			angle1 = 180 - angle1;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10521
		    else
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10522
			angle1 = 360 + 180 - angle1;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10523
		    angle2 = angle1 - angle2;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10524
		    /* sigh - compute the intersections ... */
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10525
		    rad1 = (angle1 * 3.14159265359) / 180.0;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10526
		    rad2 = (angle2 * 3.14159265359) / 180.0;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10527
		    xB = cos(rad1) * xR;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10528
		    yB = sin(rad1) * yR;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10529
		    xE = cos(rad2) * xR;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10530
		    yE = sin(rad2) * yR;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10531
		    xB = __x + xR - xB + 0.5;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10532
		    yB = __y + yR - yB + 0.5;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10533
		    xE = __x + xR - xE + 0.5;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10534
		    yE = __y + yR - yE + 0.5;
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10535
		}
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10536
		DPRINTF(("fillArc x=%d y=%d w=%d h=%d xB=%d xE=%d yB=%d yE=%d a1=%f a2=%f\n",__x,__y,w,h,(int)xB,(int)xE,(int)yB,(int)yE,angle1,angle2));
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10537
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10538
		Pie(hDC,
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10539
		    __x, __y,
2817
3be0cda12180 fillArc off-by-one fix
Claus Gittinger <cg@exept.de>
parents: 2800
diff changeset
 10540
		    __x + w + 1, __y + h + 1,
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10541
		    (int)xB, (int)yB,
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10542
		    (int)xE, (int)yE);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10543
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10544
		if (hPen) {
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10545
		    GcDataReleasePen(hDC, gcData);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10546
		}
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10547
	    }
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10548
failpen:
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10549
#ifdef CACHE_LAST_CG
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10550
	    if (prevPen) SelectObject(hDC, prevPen);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10551
#endif
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10552
	    GcDataReleaseBrush(hDC, gcData);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10553
	}
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10554
#ifndef CACHE_LAST_DC
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10555
	_releaseDC(gcData);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10556
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10557
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10558
    }
2270
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10559
    bad: ;
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10560
%}.
b58aa9d04cfe oops - passed right/bottom instead of width/height to expose event
Claus Gittinger <cg@exept.de>
parents: 2264
diff changeset
 10561
    self primitiveFailed
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10562
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10563
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10564
fillPolygon:aPolygon in:ignoredDrawableId with:aGCId
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10565
    "fill a polygon given by its points.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10566
     If any coordinate is not integer, an error is triggered."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10567
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10568
    |numberOfPoints|
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10569
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10570
    numberOfPoints := aPolygon size.
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10571
    self
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 10572
	primFillPolygon:aPolygon n:numberOfPoints
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10573
	in:ignoredDrawableId with:aGCId
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10574
!
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10575
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10576
fillRectangleX:x y:y width:width height:height in:ignoredDrawableId with:aGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10577
    "fill a rectangle. If any coordinate is not integer, an error is triggered."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10578
2642
2178ebc9756a code cleanup
Claus Gittinger <cg@exept.de>
parents: 2641
diff changeset
 10579
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10580
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10581
    int w, h;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10582
    if (__isExternalAddress(aGCId)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10583
     && __bothSmallInteger(x, y)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10584
     && __bothSmallInteger(width, height)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10585
	w = __intVal(width);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10586
	h = __intVal(height);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10587
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10588
	if ((w >= 0) && (h >= 0)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10589
	    struct gcData *gcData = _GCDATA(aGCId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10590
	    HDC hDC;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10591
	    HBRUSH hBrush;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10592
	    RECT rct;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10593
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10594
	    hDC = _getDC(gcData);
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 10595
2663
b03c1fdd073c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
 10596
	    hBrush = GcDataGetBrush(hDC, gcData);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10597
	    if (! hBrush) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10598
		PRINTF(("fillRectangle: no brush\n"));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10599
	    } else {
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10600
		rct.left = __intVal(x);
3976
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10601
		rct.top  = __intVal(y);
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10602
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10603
#ifndef PRE_31_JAN_03
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10604
		rct.right  = rct.left + w;
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10605
		rct.bottom = rct.top  + h;
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10606
#else
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10607
		rct.right  = rct.left + w + 1;    /* definitiv ! */
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10608
		rct.bottom = rct.top  + h + 1;
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10609
#endif
2538
75869b009af5 code cleanup;
Claus Gittinger <cg@exept.de>
parents: 2511
diff changeset
 10610
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10611
		CPRINTF(("fillRectangle:%d.%d -> %d.%d\n",rct.left,rct.top,rct.right,rct.bottom));
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10612
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
 10613
		/*
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
 10614
		 * for solid draws (without function), can use FillRect,
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
 10615
		 * which is faster and does not need a pen.
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
 10616
		 */
2663
b03c1fdd073c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
 10617
		if ((gcData->rop2 == R2_COPYPEN)
b03c1fdd073c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
 10618
		 && (gcData->bitbltrop2 == BITBLT_COPY)) {
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
 10619
		    AQUIRE_DRAW_MUTEX
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
 10620
		    FillRect(hDC, &rct, hBrush);
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
 10621
		    RELEASE_DRAW_MUTEX
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10622
		    GcDataReleaseBrush(hDC, gcData);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 10623
		} else {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10624
		    HPEN prevPen;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10625
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10626
		    prevPen = SelectObject(hDC, __nullPen);
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
 10627
/* sigh - conflict between ST/X's Rectangle and Win32's Rectangle */
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
 10628
# undef Rectangle
3976
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10629
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10630
#ifndef PRE_31_JAN_03
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10631
		    Rectangle(hDC, rct.left, rct.top, rct.right +1, rct.bottom +1);
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10632
#else
2663
b03c1fdd073c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
 10633
		    Rectangle(hDC, rct.left, rct.top, rct.right, rct.bottom);
3976
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10634
#endif
e4fc7d7c2a42 bugfix: filling rectangle
ca
parents: 3973
diff changeset
 10635
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
 10636
# define Rectangle __DEF_Rectangle
2663
b03c1fdd073c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2661
diff changeset
 10637
		    GcDataReleaseBrush(hDC, gcData);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10638
#ifdef CACHE_LAST_DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10639
		    SelectObject(hDC, prevPen);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10640
#endif
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
 10641
		}
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10642
	    }
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10643
#ifndef CACHE_LAST_DC
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10644
	    _releaseDC(gcData);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 10645
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10646
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10647
	RETURN ( self );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10648
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10649
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10650
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10651
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10652
primDrawBits:imageBits bitsPerPixel:bitsPerPixel depth:imageDepth padding:padd
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10653
			      width:imageWidth height:imageHeight
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10654
				  x:srcx y:srcy
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10655
			       into:ignoredDrawableId
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10656
				  x:dstx y:dsty
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10657
			      width:w height:h
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10658
			       with:aGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10659
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10660
    "since XPutImage may allocate huge amount of stack space
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10661
     (some implementations use alloca), this must run with unlimited stack."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10662
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 10663
%{
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10664
    unsigned char fastBits[10000];
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10665
    unsigned char *b_bits = 0;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10666
    unsigned char *allocatedBits = 0;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10667
    struct gcData *gcData = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10668
    HDC hDC = (HDC)0;
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10669
    unsigned char *__imageBits = 0;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10670
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10671
    if (__isByteArray(imageBits)) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10672
	__imageBits = __ByteArrayInstPtr(imageBits)->ba_element;
3850
6d3def73ffce also handle subclasses of externalBytes
Claus Gittinger <cg@exept.de>
parents: 3832
diff changeset
 10673
    } else if (__isExternalBytesLike(imageBits)) {
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10674
	__imageBits = (unsigned char *)(__externalBytesAddress(imageBits));
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10675
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10676
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10677
    if (ISCONNECTED
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10678
     && __isExternalAddress(aGCId)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10679
     && __bothSmallInteger(srcx, srcy)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10680
     && __bothSmallInteger(dstx, dsty)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10681
     && __bothSmallInteger(w, h)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10682
     && __bothSmallInteger(imageWidth, imageHeight)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10683
     && __bothSmallInteger(imageDepth, bitsPerPixel)
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10684
     && __isSmallInteger(padd)
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10685
     && __imageBits)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10686
     {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10687
	struct
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10688
	{
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10689
	  BITMAPINFOHEADER bmiHeader;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10690
	  DWORD r;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10691
	  DWORD g;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10692
	  DWORD b;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10693
	} bitmap;
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10694
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10695
	gcData = _GCDATA(aGCId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10696
	if (! gcData )
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10697
	    goto fail;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10698
	hDC = _getDC(gcData);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10699
	DDPRINTF(("hDC = %x\n", hDC));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10700
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10701
	if (__intVal(padd) != WIN32PADDING) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10702
	    int row, col;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10703
	    unsigned char *cp;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10704
	    unsigned char *pBits;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10705
	    int b_width, b_height, bytesPerRowST, bytesPerRowWN, padding, nBytes;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10706
	    int bi = __intVal(bitsPerPixel);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10707
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10708
	    b_width = __intVal(w);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10709
	    b_height = __intVal(h);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10710
	    bytesPerRowST = (b_width * bi + (__intVal(padd)-1)) / __intVal(padd);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10711
	    bytesPerRowWN = (b_width * bi + (WIN32PADDING-1)) / WIN32PADDING * (WIN32PADDING/8);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10712
	    padding = bytesPerRowWN - bytesPerRowST;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10713
	    nBytes = b_height * bytesPerRowWN;
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 10714
	    /*console_printf("padd %d bs %d bw %d p %d\n",__intVal(padd),bytesPerRowST,bytesPerRowWN,padding);*/
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10715
	    if (padding) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10716
		if (nBytes < sizeof(fastBits)) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10717
		    cp = b_bits = fastBits;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10718
		} else {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10719
		    cp = b_bits = allocatedBits = (unsigned char *) malloc(nBytes);
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10720
		}
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10721
		if (cp) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10722
		    pBits = __imageBits;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10723
		    for (row = b_height; row; row--) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10724
			for (col = bytesPerRowST; col; col--) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10725
			    *cp++ = *pBits++;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10726
			}
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10727
			cp += padding;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10728
		    }
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10729
		} else
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10730
		    goto fail;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10731
	    }
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10732
	}
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10733
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10734
	if (b_bits == 0) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10735
	    b_bits = __imageBits;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10736
	}
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10737
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10738
	bitmap.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10739
	bitmap.bmiHeader.biPlanes = 1;
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10740
	if (__intVal(imageDepth) == 24) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10741
	    /*bitmap.bmiHeader.biCompression = BI_BITFIELDS;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10742
	    bitmap.r = 0xff0000;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10743
	    bitmap.g = 0x00ff00;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10744
	    bitmap.b = 0x0000ff;*/
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10745
	    bitmap.bmiHeader.biCompression = BI_RGB;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10746
	} else if (__intVal(imageDepth) == 16) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10747
	    /*bitmap.bmiHeader.biCompression = BI_RGB;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10748
	    bitmap.bmiHeader.biCompression = BI_BITFIELDS;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10749
	    bitmap.b = 0x001f;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10750
	    bitmap.g = 0x07e0;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10751
	    bitmap.r = 0xf800;*/
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10752
	    bitmap.b = 0;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10753
	    bitmap.g = 0;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10754
	    bitmap.r = 0;
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10755
	    bitmap.bmiHeader.biCompression = BI_RGB;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10756
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10757
	bitmap.bmiHeader.biSizeImage = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10758
	bitmap.bmiHeader.biXPelsPerMeter = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10759
	bitmap.bmiHeader.biYPelsPerMeter = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10760
	bitmap.bmiHeader.biClrUsed = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10761
	bitmap.bmiHeader.biClrImportant = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10762
	bitmap.bmiHeader.biWidth = __intVal(imageWidth);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10763
	bitmap.bmiHeader.biHeight = -(__intVal(imageHeight));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10764
	bitmap.bmiHeader.biBitCount = __intVal(bitsPerPixel);
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 10765
	/*console_printf("drawBits depth:%d bitsPerPixel:%d IW%d W:%d H:%d\n",__intVal(imageDepth),bitmap.bmiHeader.biBitCount,bitmap.bmiHeader.biWidth,__intVal(w),bitmap.bmiHeader.biHeight);*/
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10766
	SetDIBitsToDevice(hDC,__intVal(dstx),__intVal(dsty),
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10767
			      __intVal(w), __intVal(h),
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10768
			      __intVal(srcx), __intVal(srcy),
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10769
			      0,__intVal(h),
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10770
			      (void *)b_bits,
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10771
			      (BITMAPINFO*)&bitmap,DIB_RGB_COLORS);
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10772
	if (allocatedBits) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10773
	    free(allocatedBits);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 10774
	}
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10775
#ifndef CACHE_LAST_DC
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10776
	_releaseDC(gcData);
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10777
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10778
	RETURN ( true );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10779
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10780
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10781
fail: ;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10782
    PRINTF(("create temp bitmap FAILED!!!\n"));
2389
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10783
    if (allocatedBits) {
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10784
	PRINTF(("freeing up temp bitmap bits ...\n"));
3703d9b22e33 handle externalBytes in drawBits & createBitmap
Claus Gittinger <cg@exept.de>
parents: 2383
diff changeset
 10785
	free(allocatedBits);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10786
    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10787
#ifndef CACHE_LAST_DC
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10788
    if (hDC) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10789
	_releaseDC(gcData);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10790
    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 10791
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10792
%}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10793
.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10794
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10795
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10796
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 10797
primFillPolygon:aPolygon n:numberOfPoints in:ignoredDrawableId with:aGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10798
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 10799
%{
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10800
    OBJ point, px, py;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10801
    int i, num;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10802
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10803
    if (__isExternalAddress(aGCId)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10804
     && __isSmallInteger(numberOfPoints)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10805
	struct gcData *gcData = _GCDATA(aGCId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10806
	HDC hDC;
1725
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10807
	POINT p;
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
 10808
	HBRUSH hBrush;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10809
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10810
	num = __intVal(numberOfPoints);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10811
	if (num < 3) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10812
	    RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10813
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10814
	for (i=0; i<num; i++) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10815
	    point = __AT_(aPolygon, __MKSMALLINT(i+1));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10816
	    if (! __isPoint(point)) goto fail;
1725
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10817
	    px = _point_X(point);
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10818
	    py = _point_Y(point);
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10819
	    if (! __bothSmallInteger(px, py))
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10820
		goto fail;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10821
	}
1725
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10822
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10823
	hDC = _getDC(gcData);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10824
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 10825
	hBrush = GcDataGetBrush(hDC,gcData);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 10826
	if (hBrush == 0) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10827
	    DPRINTF(("fillPolygon: no brush\n"));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10828
	} else {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10829
	    HPEN prevPen;
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10830
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10831
	    prevPen = SelectObject(hDC, __nullPen);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10832
1725
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10833
	    BeginPath(hDC);
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10834
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10835
	    for (i=0; i<num; i++) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10836
		point = __AT_(aPolygon, __MKSMALLINT(i+1));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10837
		px = _point_X(point);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10838
		py = _point_Y(point);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10839
		if (i == 0) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10840
		    MoveToEx(hDC, __intVal(px), __intVal(py), NULL);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10841
		} else {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10842
		    if (i == (num-1)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10843
			p.x = __intVal(px);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10844
			p.y = __intVal(py);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10845
			PolylineTo(hDC, &p, 1);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10846
		    } else {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10847
			LineTo(hDC, __intVal(px), __intVal(py));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10848
		    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10849
		}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10850
	    }
1725
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10851
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10852
	    EndPath(hDC);
061ac79b48cf line drawing
Claus Gittinger <cg@exept.de>
parents: 1723
diff changeset
 10853
	    FillPath(hDC);
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10854
	    GcDataReleaseBrush(hDC, gcData);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10855
#ifdef CACHE_LAST_DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10856
	    SelectObject(hDC, prevPen);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 10857
#endif
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10858
	}
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10859
#ifndef CACHE_LAST_DC
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10860
	_releaseDC(gcData);
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 10861
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10862
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10863
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10864
fail: ;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 10865
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 10866
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10867
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 10868
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10869
!WinWorkstation methodsFor:'event forwarding'!
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10870
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10871
activate:aBoolean view:aView
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10872
    "some view was activated/deactivated.
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10873
     For compatibility we send a focus-event to that topView"
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10874
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10875
    aBoolean ifFalse:[
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10876
	activeView := nil.
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10877
	self focusOutView:aView.
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10878
    ] ifTrue:[
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10879
	activeView := aView.
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10880
	self focusInView:aView.
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10881
    ].
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10882
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10883
    "Created: / 28.4.1999 / 14:51:51 / cg"
2599
9c0749ee47ed #activate:view: via sensor
Claus Gittinger <cg@exept.de>
parents: 2598
diff changeset
 10884
    "Modified: / 28.4.1999 / 15:07:09 / cg"
2598
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10885
!
648c300ed7c7 #activate:view: is only used in WinWorkstation (moved from DevWorkstat)
Claus Gittinger <cg@exept.de>
parents: 2597
diff changeset
 10886
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10887
configureX:x y:y width:w height:h view:aView
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10888
    "forward a configure for some view"
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10889
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10890
    aView realized ifTrue:[
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 10891
	super configureX:x y:y width:w height:h view:aView
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10892
    ]
4577
3df3646d702f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4576
diff changeset
 10893
3df3646d702f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4576
diff changeset
 10894
    "Modified: / 08-09-2006 / 19:40:18 / cg"
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10895
!
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 10896
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10897
copyDataEvent:parameter eventData:dataBytes view:aView
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10898
    "forward a copyData event for some view as a client message"
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10899
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10900
    aView isNil ifTrue:[
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10901
	"/ event arrived, after I destroyed it myself
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10902
	^ self
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10903
    ].
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10904
    aView sensor
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10905
	copyDataEvent:parameter
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10906
	eventData:dataBytes
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10907
	view:aView
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10908
!
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10909
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10910
displayChange
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10911
    "the display metrics/settings have changed.
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10912
     This is a speciality of windows.
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10913
     TODO: Tell the viewStyle to update itself,
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10914
	   and tell all views to reinit their style.
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10915
     For now,this is ignored, except for updating my metrics."
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10916
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10917
    self initializeVariableScreenProperties.
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10918
!
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 10919
4457
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10920
dropFiles:files view:view position:dropPosition handle:dropHandle
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10921
    "called when files are dropped from windows.
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10922
     The dropHandle is required to free Win32 data (and to remove the drop-file)
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10923
     eventually"
4455
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10924
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10925
"/    Transcript showCR:'Drop files:'.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10926
"/    Transcript show:'  View:'; showCR:view.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10927
"/    Transcript show:'  Position:'; showCR:dropPosition.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10928
"/    Transcript showCR:'  Files:'.
4457
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10929
"/    files do:[:f|
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10930
"/        Transcript showCR:('    ', f printString)
4455
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10931
"/    ].
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10932
"/
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10933
    view isNil ifTrue:[
4457
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10934
	"/ event arrived, after I destroyed it myself
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10935
	^ self
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 10936
    ].
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10937
    view sensor
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 10938
	dropFiles:files view:view position:dropPosition handle:dropHandle
4455
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10939
!
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 10940
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10941
fontChange
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10942
    "the system fonts (users preferences) have changed.
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10943
     This is a speciality of windows.
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10944
     TODO: Tell the viewStyle to update itself,
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 10945
	   and tell all views to reinit their style.
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10946
     For now,this is ignored."
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10947
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 10948
    IgnoreFontChanges ~~ true ifTrue:[
2684
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 10949
"/        'WinWorkstation [info]: fontChange ignored for now.' infoPrintCR
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 10950
    ]
2684
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 10951
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 10952
    "Modified: / 19.5.1999 / 23:37:17 / cg"
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10953
!
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10954
5207
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10955
mouseWheelMotion:buttonState x:x y:y amount:amount deltaTime:dTime view:aView
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10956
    "the mousewheel event as delivered by win32 has a bug:
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10957
     the view passed here is always the topView - not the view under the pointer.
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10958
     For compatibility with unix, we figure out the view here and pass that one down."
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10959
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10960
    |focusView|
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10961
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10962
    aView isNil ifTrue:[
5230
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 10963
	"/ event arrived, after I destroyed it myself
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 10964
	^ self
5207
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10965
    ].
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10966
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10967
    aView windowGroup notNil ifTrue:[
5230
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 10968
	focusView := aView windowGroup focusView.
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 10969
    ].
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 10970
    aView sensor
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 10971
	mouseWheelMotion:buttonState x:x y:y amount:amount deltaTime:dTime
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 10972
	view:(focusView ? aView)
5207
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10973
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10974
    "Modified: / 21.5.1999 / 13:05:53 / cg"
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10975
!
8271db9f29ee fix around bug due to windows-wrong-view-in-mouseWheelEvent
sr
parents: 5198
diff changeset
 10976
4230
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10977
nativeWidgetCommand:commandId view:aView
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10978
    "forward a command event for some view.
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10979
     (Button, CheckBox etc.)"
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10980
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10981
    |sensor|
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10982
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10983
    aView isNil ifTrue:[
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10984
	"/ event arrived, after I destroyed it myself
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10985
	^ self
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10986
    ].
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10987
    sensor := aView sensor.
4249
af3c0e138c8a *** empty log message ***
ca
parents: 4248
diff changeset
 10988
    sensor
af3c0e138c8a *** empty log message ***
ca
parents: 4248
diff changeset
 10989
	nativeWidgetCommand:#'win32nativeWMCommand:'
af3c0e138c8a *** empty log message ***
ca
parents: 4248
diff changeset
 10990
	arguments:(Array with:commandId)
af3c0e138c8a *** empty log message ***
ca
parents: 4248
diff changeset
 10991
	view:aView
4230
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10992
!
6e80dbe10f18 nativeWidget stuff
Claus Gittinger <cg@exept.de>
parents: 4181
diff changeset
 10993
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10994
queryEndSession
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10995
    "system is about to be shut down.
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10996
     This is a speciality of windows.
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 10997
     TODO: Tell all views to close themself.
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10998
     For now, this is ignored."
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 10999
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11000
    'WinWorkstation [info]: queryEndSession ignored for now.' infoPrintCR.
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11001
    ^ true
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11002
!
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11003
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 11004
settingsChange
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 11005
    "some system settings (users preferences) have changed.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 11006
     This is a speciality of windows.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 11007
     For now, only a few attributes are reinitialized."
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 11008
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 11009
    self initializeVariableSettingsProperties.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 11010
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 11011
2333
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
 11012
systemColorChange:aWindow
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11013
    "the system colors (users preferences) have changed.
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11014
     This is a speciality of windows.
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 11015
     Tell the viewStyle to update itself,
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 11016
     and tell all view to reinit its style."
2333
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
 11017
2682
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
 11018
    |anyChange|
ad97ce27c345 check if SYSCOLORCHANGE is real
Claus Gittinger <cg@exept.de>
parents: 2681
diff changeset
 11019
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 11020
    IgnoreSysColorChanges ~~ true ifTrue:[
4578
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11021
	"/ first check, if there was really a change
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11022
	"/ (when exceed is running, we get plenty of those messages ...)
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11023
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11024
	SystemColorValues isNil ifTrue:[
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11025
	    SystemColorValues := IdentityDictionary new.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11026
	].
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11027
	anyChange := false.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11028
	self supportedSystemColorKeys do:[:key |
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11029
	    |oldValue newValue|
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11030
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11031
	    oldValue := SystemColorValues at:key ifAbsent:nil.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11032
	    newValue := self getSystemColor:key.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11033
	    oldValue ~= newValue ifTrue:[
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11034
		SystemColorValues at:key put:newValue.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11035
		anyChange := true.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11036
	    ]
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11037
	].
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11038
	anyChange ifTrue:[
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11039
	    "/ TODO: this should go through the sensor ...
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11040
	    "/ ...and be handled as an event by the views thread.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11041
	    SimpleView readStyleSheetAndUpdateAllStyleCaches.
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11042
	    aWindow withAllSubViewsDo:[:aView |
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11043
		aView reinitStyle
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11044
	    ]
4952db9d2081 maxExtent handling
Claus Gittinger <cg@exept.de>
parents: 4577
diff changeset
 11045
	]
2333
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
 11046
    ]
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
 11047
4577
3df3646d702f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4576
diff changeset
 11048
    "Modified: / 08-09-2006 / 19:39:20 / cg"
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11049
!
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11050
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11051
trayAction:eventCode view:aView
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 11052
    "forward a tray event for some view."
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11053
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11054
    |sensor message arg|
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11055
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11056
    aView isNil ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11057
	"/ event arrived, after I destroyed it myself
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11058
	^ self
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11059
    ].
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11060
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11061
    eventCode == 512 "WM_MOUSEMOVE" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11062
	"/ mouse motion
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11063
	message := #trayMouseMotion
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11064
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11065
    eventCode == 513 "WM_LBUTTONDOWN" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11066
	"/ left-button-press
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11067
	message := #trayButtonPress:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11068
	arg := 1.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11069
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11070
    eventCode == 514 "WM_LBUTTONUP" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11071
	"/ left-button-release
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11072
	message := #trayButtonRelease:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11073
	arg := 1.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11074
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11075
    eventCode == 515 "WM_LBUTTONDBLCLK" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11076
	"/ left-button-double-click
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11077
	message := #trayButtonDoubleClick:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11078
	arg := 1.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11079
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11080
    eventCode == 516 "WM_RBUTTONDOWN" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11081
	"/ right-button-press
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11082
	message := #trayButtonPress:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11083
	arg := 3.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11084
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11085
    eventCode == 517 "WM_RBUTTONUP" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11086
	"/ right-button-release
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11087
	message := #trayButtonRelease:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11088
	arg := 3.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11089
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11090
    eventCode == 518 "WM_RBUTTONDBLCLK" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11091
	"/ left-button-double-click
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11092
	message := #trayButtonDoubleClick:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11093
	arg := 3.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11094
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11095
    eventCode == 519 "WM_MBUTTONDOWN" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11096
	"/ middle-button-press
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11097
	message := #trayButtonPress:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11098
	arg := 2.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11099
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11100
    eventCode == 520 "WM_MBUTTONUP" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11101
	"/ middle-button-release
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11102
	message := #trayButtonRelease:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11103
	arg := 2.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11104
    ].
4821
b8a6faa474ff *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4819
diff changeset
 11105
    eventCode == 521 "WM_MBUTTONDBLCLK" ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11106
	"/ middle-button-double-click
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11107
	message := #trayButtonDoubleClick:.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11108
	arg := 2.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11109
    ].
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11110
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11111
    message isNil ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11112
	Transcript showCR:eventCode.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11113
	^ self.
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11114
    ].
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11115
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11116
    sensor := aView sensor.
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11117
    sensor
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11118
	trayAction:message
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11119
	arguments:(Array with:arg)
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 11120
	view:aView
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11121
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11122
    "Created: / 31-10-2007 / 00:13:31 / cg"
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 11123
    "Modified: / 05-11-2007 / 12:14:28 / cg"
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11124
! !
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11125
4236
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11126
!WinWorkstation methodsFor:'event forwarding-native'!
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11127
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 11128
win32NativeScroll:scrollCode position:newPos view:aScrollBar
4236
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11129
    "native scrollbar widget event."
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11130
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11131
    aScrollBar isNil ifTrue:[
4237
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 11132
	"/ event arrived, after I destroyed it myself
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 11133
	^ self
4236
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11134
    ].
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11135
4248
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
 11136
    self class debugNative ifTrue:[
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
 11137
	'WinWorkstation [info]: native scroll event' infoPrint.
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
 11138
	    ' code=' infoPrint.
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
 11139
	    scrollCode infoPrint.
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
 11140
	    ' position=' infoPrint.
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
 11141
	    newPos infoPrintCR.
976b5e046d29 *** empty log message ***
ca
parents: 4247
diff changeset
 11142
    ].
4237
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 11143
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 11144
    aScrollBar sensor
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 11145
	nativeWidgetCommand:#win32NativeScroll:position:
4237
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 11146
	arguments:(Array with:scrollCode with:newPos) view:aScrollBar
4236
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11147
! !
b494cf063864 *** empty log message ***
ca
parents: 4235
diff changeset
 11148
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11149
!WinWorkstation methodsFor:'event handling'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11150
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11151
dispatchEventFor:aViewIdOrNil withMask:eventMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11152
    "central event handling method:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11153
     get next event and send appropriate message to the sensor or view.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11154
     If the argument aViewIdOrNil is nil, events for any view are processed,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11155
     otherwise only events for the view with given id are processed.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11156
     If the argument aMask is nonNil, only events for this eventMask are
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11157
     handled.
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11158
     WARNING: this may block to wait for an event - you better check for a
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11159
	      pending event before calling this."
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11160
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11161
    (self getEventFor:aViewIdOrNil withMask:eventMask) ifTrue:[
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11162
	AbortSignal handle:[:ex |
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11163
	    ex return
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11164
	] do:[
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11165
	    self dispatchLastEvent.
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11166
	]
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11167
    ].
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11168
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11169
    "Modified: 19.8.1997 / 17:10:42 / cg"
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11170
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11171
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11172
dispatchExposeEventFor:aViewIdOrNil
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11173
    "get next expose event and send appropriate message to the sensor or view.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11174
     If the argument aViewIdOrNil is nil, events for any view are processed,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11175
     otherwise only events for the view with given id are processed."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11176
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11177
    self dispatchEventFor:aViewIdOrNil withMask:(self eventMaskFor:#expose)
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11178
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11179
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11180
dispatchLastEvent
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11181
    |theView symS arg butt sibling windowID siblingID propertyID selectionID targetID requestorID
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11182
     eventType|
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11183
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11184
%{  /* xxSTACK: 8000 */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11185
    struct queuedEvent *ev = 0;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11186
    struct queuedEvent _ev_buf;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11187
    struct inlineCache *ipS;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11188
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11189
    static struct inlineCache vid = _ILC1;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11190
    static struct inlineCache conf = _ILC5;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11191
    static struct inlineCache skp = _ILC4;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11192
    static struct inlineCache skr = _ILC4;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11193
    static struct inlineCache exp = _ILC5;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11194
    static struct inlineCache gexpS = _ILC6;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11195
    static struct inlineCache nexpS = _ILC1;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11196
    static struct inlineCache clr = _ILC5;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11197
    static struct inlineCache bp = _ILC4;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11198
    static struct inlineCache br = _ILC4;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11199
    static struct inlineCache bmp = _ILC4;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11200
    static struct inlineCache bsp = _ILC4;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11201
    static struct inlineCache mot = _ILC4;
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
 11202
    static struct inlineCache mwh = _ILC6;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11203
    static struct inlineCache unmap = _ILC1;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11204
    static struct inlineCache map = _ILC1;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11205
    static struct inlineCache termS = _ILC1;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11206
    static struct inlineCache destr = _ILC1;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11207
    static struct inlineCache setCurs = _ILC1;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11208
    static struct inlineCache focOut = _ILC1;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11209
    static struct inlineCache focIn = _ILC1;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11210
    static struct inlineCache act = _ILC2;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11211
    static struct inlineCache pe = _ILC4;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11212
    static struct inlineCache pl = _ILC2;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11213
    static struct inlineCache vis = _ILC1;
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
 11214
    static struct inlineCache sysClrChg = _ILC1;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11215
    static struct inlineCache fontChg = _ILC0;
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 11216
    static struct inlineCache settingChg = _ILC0;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11217
    static struct inlineCache qEndSess = _ILC0;
4832
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 11218
    static struct inlineCache power = _ILC0;
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 11219
    static struct inlineCache quit = _ILC0;
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
 11220
    static struct inlineCache command = _ILC2;
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 11221
    static struct inlineCache trayMessage = _ILC2;
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 11222
    static struct inlineCache win32NativeScroll = _ILC3;
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 11223
    static struct inlineCache win32DrawItem = _ILC2;
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 11224
    static struct inlineCache copyData = _ILC3;
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
 11225
4457
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11226
    static struct inlineCache dropFiles = _ILC4;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11227
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11228
    int x, y, w, h;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11229
    int keyCode, modifiers, isDoubleClick = 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11230
    int isDown = 1;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11231
    int state, dir;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11232
    OBJ upDown;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11233
    OBJ eB;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11234
    char nameBuffer[100];
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11235
    HWND hWnd = 0;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11236
    DDPRINTF(("dispatchLast\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11237
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11238
    eB = __INST(eventBuffer);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11239
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11240
    if (__isByteArray(eB)) {
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11241
	ev = (struct queuedEvent *)(__ByteArrayInstPtr(eB)->ba_element);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11242
    } else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 11243
	console_fprintf(stderr, "WinWorkstation [error]: no eventBuffer\n");
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11244
	RETURN (false);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11245
    }
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11246
    if (ev) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11247
	_ev_buf = *ev;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11248
	ev = &_ev_buf;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11249
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11250
    hWnd = ev->ev_hWnd;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11251
    if (!(hWnd /*&& IsWindow(hWnd)*/)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11252
	DPRINTF(("wrong hWnd in event in dispatchLastEvent\n"));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11253
	RETURN (false);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11254
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11255
    {
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11256
	OBJ t;
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11257
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11258
	/*
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11259
	 * very often, its another event for the same view ...
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11260
	 * avoid creation & lookup then.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11261
	 */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11262
#if 1
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11263
	if ((t = __INST(lastId)) != nil) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11264
	    if (__isExternalAddress(t)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11265
		if (_HWNDVal(t) == hWnd) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11266
		    theView = __INST(lastView);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11267
		    if (__isNonNilObject(theView)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11268
			if (__qClass(theView) == nil) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11269
			    theView = nil;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11270
			}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11271
		    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11272
		}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11273
	    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11274
	}
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11275
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11276
	if (theView == nil) {
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11277
	    windowID = __MKOBJ(ev->ev_hWnd);
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11278
	    theView = (*vid.ilc_func)(self, @symbol(viewFromId:), nil, &vid, windowID);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11279
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11280
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11281
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11282
    if (theView == nil) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11283
	DPRINTF(("nil view [hWnd=%x msg=0x%x] in dispatchEvent\n",
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11284
		 ev->ev_hWnd, ev->ev_message));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11285
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11286
	RETURN (false);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11287
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11288
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11289
    switch (ev->ev_message) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11290
	    case WM_WINDOWPOSCHANGED:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11291
		{
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11292
		    RECT rct;
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11293
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11294
		    x = ev->ev_x;
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11295
		    y = ev->ev_y;
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11296
		    w = ev->ev_w;
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11297
		    h = ev->ev_h;
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11298
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11299
		    DPRINTF((">>> WM_WINDOWPOSCHANGED -> configure %d/%d , %d/%d\n", x,y,w,h));
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11300
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11301
		    (*conf.ilc_func)(self,
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11302
				     @symbol(configureX:y:width:height:view:),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11303
				     nil, &conf,
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11304
				     __MKSMALLINT(x),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11305
				     __MKSMALLINT(y),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11306
				     __MKSMALLINT(w),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11307
				     __MKSMALLINT(h),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11308
				     theView);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11309
		}
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11310
		break;
2419
b2633c30ff7a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2418
diff changeset
 11311
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 11312
	    case WM_DROPFILES:
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 11313
		{
4457
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11314
		    HDROP hDrop = (HDROP) ev->ev_wParam;
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11315
		    int   count = DragQueryFile( hDrop,0xffffffff,0,0 );
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11316
5230
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 11317
		    DPRINTFIF(__debug_WM_DROPFILES__ , ("count=%d hDrop=%x\n", count, hDrop));
4457
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11318
		    if (count > 0) {
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11319
			OBJ  dropHandle, files, position;
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11320
			char buf[MAXPATH];
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11321
			int  i;
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11322
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11323
			dropHandle = __MKOBJ(hDrop);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11324
			__PROTECT__(dropHandle);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11325
			files = __ARRAY_NEW_INT( count );
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11326
			__UNPROTECT__(dropHandle);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11327
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11328
			for (i = 0;i < count;i++) {
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11329
			    OBJ s;
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11330
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11331
			    DragQueryFile(hDrop,i,buf,sizeof(buf));
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11332
			    __PROTECT__(dropHandle);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11333
			    __PROTECT__(files);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11334
			    __PROTECT__(theView);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11335
			    s = __MKSTRING(buf);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11336
			    __UNPROTECT__(theView);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11337
			    __UNPROTECT__(files);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11338
			    __UNPROTECT__(dropHandle);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11339
			    __ArrayInstPtr(files)->a_element[i] = s; __STORE(files, s);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11340
			}
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11341
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11342
			{
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11343
			    POINT pos;
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11344
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11345
			    DragQueryPoint(hDrop, &pos);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11346
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11347
			    __PROTECT__(dropHandle);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11348
			    __PROTECT__(files);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11349
			    __PROTECT__(theView);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11350
			    position = __MKPOINT_INT(pos.x, pos.y);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11351
			    __UNPROTECT__(theView);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11352
			    __UNPROTECT__(files);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11353
			    __UNPROTECT__(dropHandle);
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11354
			}
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11355
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11356
			(*dropFiles.ilc_func)
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11357
			    ( self
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11358
			      , @symbol(dropFiles:view:position:handle:)
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11359
			      , nil, &dropFiles,
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11360
			      files, theView, position, dropHandle
de5fd63eaa8c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4455
diff changeset
 11361
			    );
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
 11362
		    }
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 11363
		}
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 11364
		break;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11365
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11366
	    case WM_SHOWWINDOW:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11367
		if (ev->ev_wParam == TRUE) {
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11368
		    DPRINTF((">>> WM_SHOWWINDOW -> mappedView:\n"));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11369
		    arg = @symbol(unobscured);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11370
		    (*vis.ilc_func)(theView,
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11371
				    @symbol(visibilityChange:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11372
				    nil, &vis, arg);
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11373
		    (*map.ilc_func)(self,
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11374
				    @symbol(mappedView:),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11375
				    nil, &map, theView);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11376
		} else {
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11377
		    DPRINTF((">>> WM_SHOWWINDOW -> unMappedView:\n"));
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11378
#if 0
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11379
		    arg = @symbol(fullyObscured);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11380
		    (*vis.ilc_func)(theView,
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11381
				    @symbol(visibilityChange:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11382
				    nil, &vis, arg);
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11383
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11384
		    (*unmap.ilc_func)(self,
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11385
				      @symbol(unmappedView:),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11386
				      nil, &unmap, theView);
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11387
		}
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11388
		break;
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11389
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11390
	    case __WM_ICONIFIED:
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11391
		if (ev->ev_wParam) {
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11392
		    DPRINTF((">>> __WM_ICONIFIED -> unMappedView:\n"));
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11393
#if 0
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11394
		    arg = @symbol(fullyObscured);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11395
		    (*vis.ilc_func)(theView,
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11396
				    @symbol(visibilityChange:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11397
				    nil, &vis, arg);
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11398
#endif
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11399
		    (*unmap.ilc_func)(self,
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11400
				      @symbol(unmappedView:),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11401
				      nil, &unmap, theView);
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11402
		} else {
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11403
		    DPRINTF((">>> __WM_DEICONIFIED -> mappedView:\n"));
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11404
		    arg = @symbol(unobscured);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11405
		    (*vis.ilc_func)(theView,
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11406
				    @symbol(visibilityChange:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11407
				    nil, &vis, arg);
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11408
		    (*map.ilc_func)(self,
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11409
				    @symbol(mappedView:),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11410
				    nil, &map, theView);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11411
		}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11412
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11413
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11414
	    case WM_CLOSE:
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11415
		DPRINTF((">>> WM_CLOSE -> terminateView:\n"));
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11416
		(*termS.ilc_func)(self,
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11417
				  @symbol(terminateView:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11418
				  nil, &termS, theView);
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11419
		break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11420
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11421
	    case WM_DESTROY:
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11422
		DPRINTF((">>> WM_DESTROY -> destroyedView\n"));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11423
		(*destr.ilc_func)(self,
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11424
				  @symbol(destroyedView:),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11425
				  nil, &destr, theView);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11426
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11427
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11428
	    case WM_ACTIVATE:
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11429
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11430
		switch (LOWORD(ev->ev_wParam)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11431
		    case WA_INACTIVE:
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11432
			DPRINTF((">>> WM_ACTIVATE inactive h=%x\n", ev->ev_hWnd));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11433
			(*act.ilc_func)(self,
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11434
					@symbol(activate:view:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11435
					nil, &act,
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11436
					false, theView);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11437
			break;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11438
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11439
		    case WA_ACTIVE:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11440
		    case WA_CLICKACTIVE:
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11441
			DPRINTF((">>> WM_ACTIVATE active h=%x\n", ev->ev_hWnd));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11442
			(*act.ilc_func)(self,
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11443
					@symbol(activate:view:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11444
					nil, &act,
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11445
					true, theView);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11446
			break;
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11447
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11448
		    default:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11449
			break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11450
		}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11451
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11452
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11453
	    case WM_MOUSEACTIVATE:
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11454
		if (__debug_WM_MOUSEACTIVATE__) {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11455
		    PRINTF((">>> WM_MOUSEACTIVATE h=%x -> focusInView:\n", ev->ev_hWnd));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11456
		}
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11457
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11458
		(*focIn.ilc_func)(self,
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11459
				  @symbol(focusInView:),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11460
				  nil, &focIn, theView);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11461
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11462
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11463
	    case WM_SETFOCUS:
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11464
		DPRINTF((">>> WM_SETFOCUS h=%x -> focusInView:\n", ev->ev_hWnd));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11465
		(*focIn.ilc_func)(self,
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11466
				  @symbol(focusInView:),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11467
				  nil, &focIn, theView);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11468
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11469
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11470
	    case WM_KILLFOCUS:
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11471
		DPRINTF((">>> WM_KILLFOCUS h=%x -> focusOutOfView\n", ev->ev_hWnd));
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11472
		(*focOut.ilc_func)(self,
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11473
				   @symbol(focusOutView:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11474
				   nil, &focOut, theView);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11475
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11476
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11477
	    case __WM_GEXPOSE:
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11478
		x = ev->ev_x;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11479
		y = ev->ev_y;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11480
		w = ev->ev_w;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11481
		h = ev->ev_h;
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11482
		DPRINTF((">>> __WM_GEXPOSE -> gExpose %d/%d -> %d/%d\n", x, y, w, h));
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11483
#if 0
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11484
		if (GetWindow_unmapping(hWnd)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 11485
		    console_fprintf(stderr, "oops - __WM_GEXPOSE for unmapping\n");
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11486
		}
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11487
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11488
		(*gexpS.ilc_func)(self,
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11489
				  @symbol(graphicsExposeX:y:width:height:final:view:),
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11490
				  nil, &gexpS,
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11491
				  __MKSMALLINT(x),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11492
				  __MKSMALLINT(y),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11493
				  __MKSMALLINT(w),
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11494
				  __MKSMALLINT(h),
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 11495
				  ev->ev_wParam ? true : false,
2705
d16abb07c15b fixed graphicsExpose/noExpose handling (final-flag was wrong)
Claus Gittinger <cg@exept.de>
parents: 2700
diff changeset
 11496
				  theView);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11497
		break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11498
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11499
	    case __WM_NOGEXPOSE:
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
 11500
		DPRINTFIF(__debug_WM_EXPOSE__, (">>> __WM_NOGEXPOSE -> noExpose\n"));
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11501
#if 0
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11502
		if (GetWindow_unmapping(hWnd)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 11503
		    console_fprintf(stderr, "oops - __WM_NOGEXPOSE for unmapping\n");
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11504
		}
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11505
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11506
		 (*nexpS.ilc_func)(self,
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11507
				   @symbol(noExposeView:), nil, &nexpS,
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 11508
				   theView);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 11509
		break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11510
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11511
# ifdef LATE_GENERATE_EXPOSE
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11512
	    case __WM_PAINT:
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11513
		{
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11514
		    PAINTSTRUCT ps;
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11515
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
 11516
		    AQUIRE_DRAW_MUTEX
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11517
		    __generateExposes(hWnd, NULL, WM_PAINT, 0);
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
 11518
		    RELEASE_DRAW_MUTEX
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
 11519
3735
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11520
# if 0
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11521
		    BeginPaint(hWnd, &ps);
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11522
		    EndPaint(hWnd, &ps);
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11523
# endif
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11524
		}
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11525
		break;
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11526
# endif
d8d32e0ff26e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3721
diff changeset
 11527
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11528
	    case WM_PAINT:
2404
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
 11529
		x = ev->ev_x;
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
 11530
		y = ev->ev_y;
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
 11531
		w = ev->ev_w;
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
 11532
		h = ev->ev_h;
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11533
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11534
#if 0
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11535
		if (GetWindow_unmapping(hWnd)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 11536
		    console_fprintf(stderr, "oops - WM_PAINT for unmapping\n");
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11537
		}
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11538
#endif
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11539
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11540
#ifndef PRE_21_NOV
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
 11541
		__clearWindow(hWnd, x, y, w, h);
3958
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11542
#else
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11543
# if WM_PAINT_CLEAR_LATE
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11544
		__clearWindow(hWnd, x, y, w, h);
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11545
# endif
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11546
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11547
#endif
cc150a3525b9 bugfix: redraw windows
ca
parents: 3951
diff changeset
 11548
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11549
#ifdef DEBUG_COLORIZE_WM_PAINT_RECTS2
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11550
		{
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11551
		    HDC hDC;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11552
		    HBRUSH hBrush;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11553
		    RECT rect;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11554
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11555
		    hBrush = CreateSolidBrush(BlackPixel);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11556
		    hDC = GetWindowDC(hWnd);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11557
		    SelectClipRgn(hDC, NULL);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11558
		    rect.left = x;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11559
		    rect.top = y;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11560
		    rect.right = x+w;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11561
		    rect.bottom = y+h;
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11562
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11563
		    FillRect(hDC, &rect, hBrush);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11564
		    _DeleteBrush(hBrush, __LINE__);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11565
		    ReleaseDC(hWnd, hDC);
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11566
		}
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11567
#endif
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11568
		if (__debug_WM_PAINT__) {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11569
		    PRINTF((">>> WM_PAINT -> expose %d/%d -> %d/%d\n", x, y, w, h));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11570
		}
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11571
		(*exp.ilc_func)(self,
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11572
			 @symbol(exposeX:y:width:height:view:),
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11573
			 nil, &exp,
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11574
			 __MKSMALLINT(x),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11575
			 __MKSMALLINT(y),
2404
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
 11576
			 __MKSMALLINT(w),
136a8bb344a8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2389
diff changeset
 11577
			 __MKSMALLINT(h),
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11578
			 theView);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11579
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11580
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11581
	    case WM_LBUTTONDBLCLK:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11582
		isDoubleClick = 1;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11583
		butt = __MKSMALLINT(Button1);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11584
		goto commonButtonDown;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11585
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11586
	    case WM_LBUTTONUP:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11587
		isDown = 0;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11588
		butt = __MKSMALLINT(Button1);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11589
		goto commonButtonDown;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11590
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11591
	    case WM_LBUTTONDOWN:
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11592
		butt = __MKSMALLINT(Button1);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11593
		goto commonButtonDown;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11594
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11595
	    case WM_MBUTTONDBLCLK:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11596
		isDoubleClick = 1;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11597
		butt = __MKSMALLINT(Button2);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11598
		goto commonButtonDown;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11599
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11600
	    case WM_MBUTTONUP:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11601
		isDown = 0;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11602
		butt = __MKSMALLINT(Button2);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11603
		goto commonButtonDown;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11604
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11605
	    case WM_MBUTTONDOWN:
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11606
		butt = __MKSMALLINT(Button2);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11607
		goto commonButtonDown;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11608
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11609
	    case WM_RBUTTONDBLCLK:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11610
		isDoubleClick = 1;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11611
		butt = __MKSMALLINT(Button3);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11612
		goto commonButtonDown;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11613
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11614
	    case WM_RBUTTONUP:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11615
		isDown = 0;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11616
		butt = __MKSMALLINT(Button3);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11617
		goto commonButtonDown;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11618
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11619
	    case WM_RBUTTONDOWN:
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11620
		butt = __MKSMALLINT(Button3);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11621
		goto commonButtonDown;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11622
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11623
	    commonButtonDown:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11624
		x = ev->ev_x;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11625
		y = ev->ev_y;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11626
		modifiers = ev->ev_modifiers;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11627
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11628
		if (__INST(buttonTranslation) != nil) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11629
		    butt = __AT_(__INST(buttonTranslation), butt);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11630
		}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11631
		arg = butt;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11632
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11633
		__INST(altDown) = (modifiers & AltMask) ? true : false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11634
		__INST(metaDown) = (modifiers & MetaMask) ? true : false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11635
		__INST(shiftDown) = (modifiers & ShiftMask) ? true : false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11636
		__INST(ctrlDown) = (modifiers & ControlMask) ? true : false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11637
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11638
		if (deltaDoubleClickX == -999) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11639
		    deltaDoubleClickX = GetSystemMetrics(SM_CXDOUBLECLK);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11640
		    deltaDoubleClickY = GetSystemMetrics(SM_CYDOUBLECLK);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11641
		}
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11642
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11643
		if (isDoubleClick) {
4476
4ba4a3ac09bc fix: double click in popup windows (affects ExtendedComboBox)
Claus Gittinger <cg@exept.de>
parents: 4462
diff changeset
 11644
		    multiClickCount = 2;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11645
		    ipS = &bmp;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11646
		    symS = @symbol(buttonMultiPress:x:y:view:);
4476
4ba4a3ac09bc fix: double click in popup windows (affects ExtendedComboBox)
Claus Gittinger <cg@exept.de>
parents: 4462
diff changeset
 11647
		    nextMultiClickTime = ev->ev_time + __intVal(__INST(multiClickTimeDelta));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11648
		} else {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11649
		    if (isDown) {
4476
4ba4a3ac09bc fix: double click in popup windows (affects ExtendedComboBox)
Claus Gittinger <cg@exept.de>
parents: 4462
diff changeset
 11650
			if (multiClickCount
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11651
			 && (ev->ev_time < nextMultiClickTime)
4610
4e7993041072 fix: do not treat two quick presses as double-click, if the button is different.
Claus Gittinger <cg@exept.de>
parents: 4578
diff changeset
 11652
			 && (butt == lastButton)
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11653
			 && (x >= (lastClickX - (deltaDoubleClickX / 2)))
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11654
			 && (x <= (lastClickX + (deltaDoubleClickX / 2)))
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11655
			 && (y >= (lastClickY - (deltaDoubleClickY / 2)))
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11656
			 && (y <= (lastClickY + (deltaDoubleClickY / 2)))
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11657
			) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11658
			    ipS = &bmp;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11659
			    symS = @symbol(buttonMultiPress:x:y:view:);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11660
			} else {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11661
			    ipS = &bp;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11662
			    symS = @symbol(buttonPress:x:y:view:);
4476
4ba4a3ac09bc fix: double click in popup windows (affects ExtendedComboBox)
Claus Gittinger <cg@exept.de>
parents: 4462
diff changeset
 11663
			    multiClickCount = 0;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11664
			}
4476
4ba4a3ac09bc fix: double click in popup windows (affects ExtendedComboBox)
Claus Gittinger <cg@exept.de>
parents: 4462
diff changeset
 11665
			multiClickCount = multiClickCount + 1;
4ba4a3ac09bc fix: double click in popup windows (affects ExtendedComboBox)
Claus Gittinger <cg@exept.de>
parents: 4462
diff changeset
 11666
			nextMultiClickTime = ev->ev_time + __intVal(__INST(multiClickTimeDelta));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 11667
		    } else {
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11668
			ipS = &br;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11669
			symS = @symbol(buttonRelease:x:y:view:);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11670
		    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11671
		}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11672
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11673
		if (isDown || isDoubleClick) {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11674
		    lastClickX = x;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11675
		    lastClickY = y;
4610
4e7993041072 fix: do not treat two quick presses as double-click, if the button is different.
Claus Gittinger <cg@exept.de>
parents: 4578
diff changeset
 11676
		    lastButton = butt;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11677
		}
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11678
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11679
		if (__debug_WM_BUTTONUP__ | __debug_WM_BUTTONDOWN__) {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11680
		    if (__isSymbol(arg)) {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11681
			PRINTF(("buttonPress/buttonRelease: %s %d/%d\n",
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11682
				    __stringVal(arg), x, y));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11683
		    } else {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11684
			PRINTF(("buttonPress/buttonRelease: %d %d/%d\n",
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11685
				    __intVal(arg), x, y));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11686
		    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11687
		}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11688
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11689
		(*(*ipS).ilc_func)(self, symS, nil, ipS,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11690
				   arg,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11691
				   __MKSMALLINT(x),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11692
				   __MKSMALLINT(y),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11693
				   theView);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11694
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11695
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11696
	    case __WM_MOUSEENTER:
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11697
		x = ev->ev_x;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11698
		y = ev->ev_y;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11699
		state = ev->ev_modifiers;
3962
425f5e384a15 enable cash PEN and BRUSH
ca
parents: 3961
diff changeset
 11700
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11701
		if (__debug_WM_MOUSEENTER__) {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11702
		    PRINTF((">>> WM_MOUSEENTER: %x %d/%d state:%x\n", ev->ev_hWnd, x, y, state));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11703
		}
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11704
#if 0
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11705
		if (GetWindow_unmapping(hWnd)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 11706
		    console_fprintf(stderr, "oops - WM_MOUSEENTER for unmapping\n");
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11707
		}
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11708
#endif
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11709
		(*pe.ilc_func)(self, @symbol(pointerEnter:x:y:view:),
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11710
				    nil, &pe,
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11711
				    __MKSMALLINT(state),
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11712
				    __MKSMALLINT(x),
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11713
				    __MKSMALLINT(y),
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11714
				    theView);
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11715
		break;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11716
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11717
	    case __WM_MOUSELEAVE:
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11718
		state = ev->ev_modifiers;
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11719
		if (__debug_WM_MOUSELEAVE__) {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11720
		    PRINTF((">>> WM_MOUSELEAVE: %x state:%x\n", ev->ev_hWnd, state));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11721
		}
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11722
#if 0
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11723
		if (GetWindow_unmapping(hWnd)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 11724
		    console_fprintf(stderr, "oops - WM_MOUSELEAVE for unmapping\n");
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 11725
		}
3741
42ca299b104f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3735
diff changeset
 11726
#endif
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11727
		(*pl.ilc_func)(self, @symbol(pointerLeave:view:),
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11728
				    nil, &pl,
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11729
				    __MKSMALLINT(state),
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11730
				    theView);
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11731
		break;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11732
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11733
	    case WM_MOUSEMOVE:
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11734
		x = ev->ev_x;
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11735
		y = ev->ev_y;
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11736
		state = ev->ev_modifiers;
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11737
		if (__debug_WM_MOUSEMOVE__) {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11738
		    PRINTF((">>> WM_MOUSEMOVE: %d/%d %x\n", x, y, state));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 11739
		}
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11740
		(*mot.ilc_func)(self, @symbol(buttonMotion:x:y:view:),
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11741
				    nil, &mot,
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11742
				    __MKSMALLINT(state),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11743
				    __MKSMALLINT(x),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11744
				    __MKSMALLINT(y),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11745
				    theView);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11746
		break;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11747
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11748
#ifdef WM_MOUSEWHEEL
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11749
	    case WM_MOUSEWHEEL:
5231
7d35c3c15dfb x,y in mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
 11750
		x = ev->ev_x;
7d35c3c15dfb x,y in mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 5230
diff changeset
 11751
		y = ev->ev_y;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11752
		state = ev->ev_modifiers;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11753
		dir = ev->ev_wParam;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11754
		DPRINTF((">>> WM_MOUSEWHEEL: %d %x\n", dir, state));
4455
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11755
		{
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11756
		    OBJ tim;
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11757
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11758
		    __PROTECT__(theView);
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11759
		    tim = __MKUINT(ev->ev_time);
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11760
		    __UNPROTECT__(theView);
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11761
		    (*mwh.ilc_func)(self, @symbol(mouseWheelMotion:x:y:amount:deltaTime:view:),
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11762
				    nil, &mwh,
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
 11763
				    __MKSMALLINT(state),
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
 11764
				    __MKSMALLINT(x),
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
 11765
				    __MKSMALLINT(y),
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11766
				    __MKSMALLINT(dir),
4455
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11767
				    tim,
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11768
				    theView);
4455
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 11769
		}
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11770
		break;
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11771
#endif
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 11772
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11773
	    case WM_CHAR:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 11774
		DPRINTFIF(__debug_WM_CHAR__  , ("WM_CHAR %x %d/%d\n", ev->ev_keyCode, ev->ev_x, ev->ev_y));
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11775
		DPRINTF((">>> WM_CHAR: %d/%d\n", x, y));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11776
		symS = @symbol(keyPress:x:y:view:);
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11777
		ipS = &skp;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11778
		upDown = true;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11779
		goto keyPressAndRelease;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11780
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11781
	    case WM_SYSKEYUP:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11782
	    case WM_KEYUP:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 11783
		DPRINTFIF(__debug_WM_KEYUP__  , (">>> WM_KEYUP / SYSKEYUP: %x %d/%d\n", ev->ev_keyCode, ev->ev_x, ev->ev_y));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11784
		symS = @symbol(keyRelease:x:y:view:);
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11785
		ipS = &skr;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11786
		upDown = false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11787
		goto keyPressAndRelease;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11788
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11789
	    case WM_SYSKEYDOWN:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11790
	    case WM_KEYDOWN:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 11791
		DPRINTFIF(__debug_WM_KEYUP__  , (">>> WM_KEYDOWN / SYSKEYDOWN: %x %d/%d\n", ev->ev_keyCode, ev->ev_x, ev->ev_y));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11792
		symS = @symbol(keyPress:x:y:view:);
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 11793
		ipS = &skp;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11794
		upDown = true;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11795
		/* FALL INTO */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11796
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11797
	    keyPressAndRelease: ;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11798
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11799
		x = ev->ev_x;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11800
		y = ev->ev_y;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11801
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11802
#ifdef NOTDEF
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11803
		{
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11804
		    BYTE vKeyState[256];
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11805
		    char buff[5];
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11806
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 11807
		    GetKeyboardState(vKeyState);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11808
		    ToAscii(ev->ev_keyCode, ev->ev_scanCode, vKeyState, &buff; 0);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11809
		}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11810
#endif
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11811
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11812
		keyCode = ev->ev_keyCode;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11813
		modifiers = ev->ev_modifiers;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11814
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11815
		if (modifiers & TRANSLATED_KEY) {
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 11816
#if 1
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11817
		    if (modifiers & ControlMask) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11818
			if (keyCode < 0x20) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11819
			    keyCode = keyCode + 'a' - 1;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11820
			    if (modifiers & ShiftMask) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11821
				keyCode = keyCode - 'a' + 'A';
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11822
			    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11823
			}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11824
		    } else if (modifiers & (MetaMask | AltMask)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11825
			if (! (modifiers & ShiftMask)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11826
			    if ((keyCode >= 'A') && (keyCode <= 'Z')) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11827
				keyCode = keyCode - 'A' + 'a';
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11828
			    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11829
			}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11830
		    }
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 11831
#endif
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 11832
		    arg = __MKSMALLINT(keyCode & 0xFFFF);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11833
		} else {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11834
		    switch (keyCode) {
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11835
			case VK_F1:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11836
			    arg = @symbol(F1);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11837
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11838
			case VK_F2:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11839
			    arg = @symbol(F2);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11840
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11841
			case VK_F3:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11842
			    arg = @symbol(F3);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11843
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11844
			case VK_F4:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11845
			    arg = @symbol(F4);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11846
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11847
			case VK_F5:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11848
			    arg = @symbol(F5);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11849
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11850
			case VK_F6:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11851
			    arg = @symbol(F6);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11852
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11853
			case VK_F7:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11854
			    arg = @symbol(F7);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11855
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11856
			case VK_F8:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11857
			    arg = @symbol(F8);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11858
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11859
			case VK_F9:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11860
			    arg = @symbol(F9);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11861
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11862
			case VK_F10:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11863
			    arg = @symbol(F10);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11864
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11865
			case VK_F11:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11866
			    arg = @symbol(F11);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11867
			    break;
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11868
			case VK_F12:
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11869
			    arg = @symbol(F12);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 11870
			    break;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11871
			case VK_PRIOR:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11872
			    arg = @symbol(Prior);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11873
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11874
			case VK_NEXT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11875
			    arg = @symbol(Next);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11876
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11877
			case VK_END:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11878
			    arg = @symbol(End);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11879
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11880
			case VK_HOME:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11881
			    arg = @symbol(Home);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11882
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11883
			case VK_LEFT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11884
			    arg = @symbol(CursorLeft);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11885
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11886
			case VK_RIGHT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11887
			    arg = @symbol(CursorRight);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11888
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11889
			case VK_UP:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11890
			    arg = @symbol(CursorUp);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11891
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11892
			case VK_DOWN:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11893
			    arg = @symbol(CursorDown);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11894
			    break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 11895
			case VK_MENU:  /*alt key with w95 ???*/
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11896
			    arg = @symbol(Menu);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11897
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11898
			case VK_LMENU:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11899
			    arg = @symbol(Menu_L);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11900
			    break;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11901
			case VK_RMENU:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11902
			    arg = @symbol(Menu_R);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11903
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11904
			case VK_PAUSE:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11905
			    arg = @symbol(Pause);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11906
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11907
			case VK_HELP:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11908
			    arg = @symbol(Help);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11909
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11910
			case VK_EXECUTE:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11911
			    arg = @symbol(Execute);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11912
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11913
			case VK_CANCEL:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11914
			    arg = @symbol(Cancel);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11915
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11916
			case VK_SELECT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11917
			    arg = @symbol(Select);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11918
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11919
			case VK_PRINT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11920
			    arg = @symbol(Print);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11921
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11922
			case VK_SNAPSHOT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11923
			    arg = @symbol(Snapshot);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11924
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11925
			case VK_INSERT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11926
			    arg = @symbol(Insert);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11927
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11928
			case VK_DELETE:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11929
			    arg = @symbol(Delete);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11930
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11931
			case VK_BACK:
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11932
			    arg = @symbol(BackSpace);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11933
			    break;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11934
			case VK_LWIN:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11935
			    arg = @symbol(Win_L);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11936
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11937
			case VK_RWIN:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11938
			    arg = @symbol(Win_R);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11939
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11940
			case VK_APPS:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11941
			    arg = @symbol(Appl);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11942
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11943
			case VK_NUMPAD0:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11944
			    arg = @symbol(KeyPad0);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11945
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11946
			case VK_NUMPAD1:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11947
			    arg = @symbol(KeyPad1);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11948
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11949
			case VK_NUMPAD2:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11950
			    arg = @symbol(KeyPad2);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11951
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11952
			case VK_NUMPAD3:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11953
			    arg = @symbol(KeyPad3);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11954
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11955
			case VK_NUMPAD4:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11956
			    arg = @symbol(KeyPad4);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11957
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11958
			case VK_NUMPAD5:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11959
			    arg = @symbol(KeyPad5);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11960
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11961
			case VK_NUMPAD6:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11962
			    arg = @symbol(KeyPad6);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11963
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11964
			case VK_NUMPAD7:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11965
			    arg = @symbol(KeyPad7);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11966
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11967
			case VK_NUMPAD8:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11968
			    arg = @symbol(KeyPad8);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11969
			    break;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11970
			case VK_NUMPAD9:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11971
			    arg = @symbol(KeyPad9);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11972
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11973
			case VK_LSHIFT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11974
			    arg = @symbol(Shift_L);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11975
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11976
			case VK_RSHIFT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11977
			    arg = @symbol(Shift_R);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11978
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11979
			case VK_LCONTROL:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11980
			    arg = @symbol(Ctrl_L);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11981
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11982
			case VK_RCONTROL:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11983
			    arg = @symbol(Ctrl_R);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11984
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11985
			case VK_CONTROL:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11986
			    arg = @symbol(Ctrl);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11987
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11988
			case VK_SHIFT:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11989
			    arg = @symbol(Shift);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11990
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11991
			case VK_TAB:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11992
			    arg = @symbol(Tab);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11993
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11994
			case VK_ESCAPE:
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11995
			    arg = @symbol(Escape);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 11996
			    break;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11997
			case VK_NUMLOCK:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11998
			    arg = @symbol(NumLock);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 11999
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12000
			case VK_SCROLL:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12001
			    arg = @symbol(ScrollLock);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12002
			    break;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12003
			case VK_RETURN:
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12004
			    arg = @symbol(Return);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12005
			    break;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12006
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12007
			default:
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12008
#if 0
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12009
			    nameBuffer[0] = 0;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12010
			    GetKeyNameText(ev->ev_scanCode, nameBuffer, sizeof(nameBuffer));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12011
			    if (__debug_WM_KEYUP__ | __debug_WM_KEYDOWN__ | __debug_WM_CHAR__) {
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12012
				PRINTF(("char is <%d>\n", keyCode));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12013
			    }
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12014
#endif
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12015
			    arg = __MKSMALLINT(keyCode & 0xFFFF);
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12016
			    break;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12017
		    }
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12018
		}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12019
		__INST(altDown) = (modifiers & AltMask) ? true : false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12020
		__INST(metaDown) = (modifiers & MetaMask) ? true : false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12021
		__INST(shiftDown) = (modifiers & ShiftMask) ? true : false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12022
		__INST(ctrlDown) = (modifiers & ControlMask) ? true : false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12023
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12024
		if (__debug_WM_CHAR__ | __debug_WM_KEYUP__ | __debug_WM_KEYDOWN__) {
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12025
		    PRINTF(("%s: code=%x mod=%x ", __stringVal(symS), keyCode, modifiers));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12026
		    PRINTF((" alt=%d meta=%d ", __INST(altDown) == true , __INST(metaDown) == true));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12027
		    PRINTF((" sh=%d ctrl=%d", __INST(shiftDown) == true , __INST(ctrlDown) == true));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12028
		    PRINTF((" arg=%x\n", arg));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12029
		}
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 12030
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12031
		(*(*ipS).ilc_func)(self, symS, nil, ipS,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12032
				   arg,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12033
				   __MKSMALLINT(x),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12034
				   __MKSMALLINT(y),
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12035
				   theView);
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12036
		break;
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12037
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12038
	   case WM_SYSCOLORCHANGE:
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12039
		DPRINTF((">>> WM_SYSCOLORCHANGE\n"));
2325
d95eb3639ca2 sysColorChange
Claus Gittinger <cg@exept.de>
parents: 2310
diff changeset
 12040
		(*sysClrChg.ilc_func)(self, @symbol(systemColorChange:), nil, &sysClrChg, theView);
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12041
		break;
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12042
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12043
	   case WM_FONTCHANGE:
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12044
		DPRINTF((">>> WM_FONTCHANGE\n"));
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12045
		(*fontChg.ilc_func)(self, @symbol(fontChange), nil, &fontChg);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12046
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12047
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 12048
	   case WM_WININICHANGE:
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 12049
		DPRINTF((">>> WM_WININICHANGE\n"));
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 12050
		(*settingChg.ilc_func)(self, @symbol(settingsChange), nil, &settingChg);
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 12051
		break;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 12052
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 12053
	   case WM_DISPLAYCHANGE:
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 12054
		DPRINTF((">>> WM_DISPLAYCHANGE\n"));
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 12055
		(*fontChg.ilc_func)(self, @symbol(displayChange), nil, &fontChg);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 12056
		break;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 12057
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12058
	   case WM_QUERYENDSESSION:
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12059
		DPRINTF((">>> WM_QUERYENDSESSION\n"));
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12060
		(*qEndSess.ilc_func)(self, @symbol(queryEndSession), nil, &qEndSess);
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12061
		break;
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12062
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12063
#ifdef LATER
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12064
	   case WM_POWER:
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12065
		DPRINTF((">>> WM_POWER\n"));
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12066
		(*power.ilc_func)(self, @symbol(powerDown), nil, &power);
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12067
	       break;
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12068
#endif
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12069
	    /* native widget actions */
4145
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
 12070
	    case WM_COMMAND:
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
 12071
		DPRINTF((">>> WM_COMMAND\n"));
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
 12072
		(*command.ilc_func)(self, @symbol(nativeWidgetCommand:view:), nil, &command,
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
 12073
				__MKSMALLINT(ev->ev_wParam), theView);
c1d5d9449460 preps for native widgets
ca
parents: 4143
diff changeset
 12074
	       break;
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12075
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 12076
	    /* tray action */
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 12077
	    case WM_TRAY_MESSAGE:
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 12078
		DPRINTF((">>> WM_TRAY_MESSAGE\n"));
4832
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 12079
		(*trayMessage.ilc_func)(self, @symbol(trayAction:view:), nil, &trayMessage,
4819
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 12080
				__MKSMALLINT(ev->ev_arg1), theView);
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 12081
		break;
a002a6d6ed4c trayEvents
Claus Gittinger <cg@exept.de>
parents: 4816
diff changeset
 12082
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12083
	    /* message from another process */
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12084
	    case WM_COPYDATA:
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12085
		DPRINTF((">>> WM_COPYDATA\n"));
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12086
		{
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12087
		    OBJ eventData;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12088
		    void *data = (void *)(ev->ev_arg1);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12089
		    int nBytes = ev->ev_arg2;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12090
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12091
		    if (ev->ev_arg1) {
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12092
			__PROTECT__(theView);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12093
			eventData = __MKBYTEARRAY(data, nBytes);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12094
			__UNPROTECT__(theView);
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12095
		    } else {
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12096
			eventData = nil;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12097
		    }
5023
d4ce50f55568 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5018
diff changeset
 12098
		    (*copyData.ilc_func)(self, @symbol(copyDataEvent:eventData:view:), nil, &copyData,
d4ce50f55568 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5018
diff changeset
 12099
				__MKSMALLINT(ev->ev_wParam), eventData, theView);
5010
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12100
		}
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12101
		break;
3bc0c08fdf55 CopyData event support
Claus Gittinger <cg@exept.de>
parents: 4946
diff changeset
 12102
4832
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 12103
#ifdef LATER
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 12104
	    case WM_QUIT:
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 12105
		DPRINTF((">>> WM_QUIT_MESSAGE\n"));
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 12106
		(*quit.ilc_func)(self, @symbol(quitCommand:), nil, &quit);
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 12107
		break;
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 12108
#endif
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12109
	    case WM_HSCROLL:
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12110
	    case WM_VSCROLL:
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12111
		{
4237
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12112
		    int scrollCode = 0;
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12113
		    OBJ scrollCodeOrScrollCodeSymbol = nil, positionOrNil = nil;
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12114
		    int pos = 0;
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12115
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12116
		    scrollCode = LOWORD(ev->ev_wParam);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12117
		    scrollCodeOrScrollCodeSymbol = __MKSMALLINT(scrollCode);
4237
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12118
		    positionOrNil = nil;
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12119
		    switch (scrollCode) {
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12120
			case SB_BOTTOM:
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12121
			    scrollCodeOrScrollCodeSymbol = @symbol(SB_BOTTOM);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12122
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12123
			case SB_TOP:
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12124
			    scrollCodeOrScrollCodeSymbol = @symbol(SB_TOP);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12125
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12126
			case SB_ENDSCROLL:
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12127
			    scrollCodeOrScrollCodeSymbol = @symbol(SB_ENDSCROLL);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12128
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12129
			case SB_LINEDOWN:
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12130
			    if (ev->ev_message == WM_HSCROLL) {
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12131
				scrollCodeOrScrollCodeSymbol = @symbol(SB_LINERIGHT);
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12132
			    } else {
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12133
				scrollCodeOrScrollCodeSymbol = @symbol(SB_LINEDOWN);
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12134
			    }
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12135
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12136
			case SB_LINEUP:
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12137
			    if (ev->ev_message == WM_HSCROLL) {
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12138
				scrollCodeOrScrollCodeSymbol = @symbol(SB_LINELEFT);
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12139
			    } else {
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12140
				scrollCodeOrScrollCodeSymbol = @symbol(SB_LINEUP);
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12141
			    }
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12142
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12143
			case SB_PAGEDOWN:
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12144
			    if (ev->ev_message == WM_HSCROLL) {
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12145
				scrollCodeOrScrollCodeSymbol = @symbol(SB_PAGERIGHT);
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12146
			    } else {
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12147
				scrollCodeOrScrollCodeSymbol = @symbol(SB_PAGEDOWN);
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12148
			    }
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12149
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12150
			case SB_PAGEUP:
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12151
			    if (ev->ev_message == WM_HSCROLL) {
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12152
				scrollCodeOrScrollCodeSymbol = @symbol(SB_PAGELEFT);
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12153
			    } else {
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12154
				scrollCodeOrScrollCodeSymbol = @symbol(SB_PAGEUP);
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12155
			    }
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12156
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12157
			case SB_THUMBPOSITION:
4240
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 12158
			    if (ev->ev_message == WM_HSCROLL) {
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 12159
				scrollCodeOrScrollCodeSymbol = @symbol(SB_THUMBPOSITIONHORIZONTAL);
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 12160
			    } else {
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 12161
				scrollCodeOrScrollCodeSymbol = @symbol(SB_THUMBPOSITIONVERTICAL);
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 12162
			    }
4237
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12163
			    pos = HIWORD(ev->ev_wParam);
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12164
			    positionOrNil = __MKSMALLINT(pos);
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12165
			    break;
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12166
			case SB_THUMBTRACK:
4241
fdcafa929dd9 *** empty log message ***
ca
parents: 4240
diff changeset
 12167
			    if (ev->ev_message == WM_HSCROLL) {
fdcafa929dd9 *** empty log message ***
ca
parents: 4240
diff changeset
 12168
				scrollCodeOrScrollCodeSymbol = @symbol(SB_THUMBTRACKHORIZONTAL);
fdcafa929dd9 *** empty log message ***
ca
parents: 4240
diff changeset
 12169
			    } else {
fdcafa929dd9 *** empty log message ***
ca
parents: 4240
diff changeset
 12170
				scrollCodeOrScrollCodeSymbol = @symbol(SB_THUMBTRACKVERTICAL);
fdcafa929dd9 *** empty log message ***
ca
parents: 4240
diff changeset
 12171
			    }
4237
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12172
			    pos = HIWORD(ev->ev_wParam);
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12173
			    positionOrNil = __MKSMALLINT(pos);
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12174
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12175
			default:
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12176
			    DPRINTF((">>> WM_SCROLL: unhandled scrollCode:%d %d\n", scrollCode));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12177
			    break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12178
		    }
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12179
		    NDPRINTF((">>> WM_SCROLL: %d %d\n", scrollCode, pos));
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12180
4239
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12181
		    (*win32NativeScroll.ilc_func)(self, @symbol(win32NativeScroll:position:view:),
363116abbf51 *** empty log message ***
ca
parents: 4238
diff changeset
 12182
					nil, &win32NativeScroll,
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12183
					scrollCodeOrScrollCodeSymbol,
4237
68fcb2feaf0a *** empty log message ***
ca
parents: 4236
diff changeset
 12184
					positionOrNil,
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12185
					theView);
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12186
		}
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12187
		break;
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 12188
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12189
	    case WM_DRAWITEM:
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12190
		{
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12191
		    NDPRINTF((">>> WM_DRAWITEM: wParam: %x\n", ev->ev_wParam));
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12192
		    (*win32DrawItem.ilc_func)(self, @symbol(win32DrawItem:view:),
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12193
					nil, &win32DrawItem,
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12194
					__MKSMALLINT(ev->ev_wParam),
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12195
					theView);
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12196
		}
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12197
		break;
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 12198
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12199
	    default:
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 12200
		UNHANDLED_EVENT_PRINTF(("WinWorkstat [info]: >>> unhandled event: %x\n", ev->ev_message));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12201
		break;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12202
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12203
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12204
    ^ true
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12205
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12206
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12207
dispatchPendingEvents
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12208
    "central event handling method for modal operation.
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12209
     (i.e. this is now only used in the modal debugger)
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12210
     Dispatch any pending events; return when no more are pending.
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12211
     This code is somewhat special, since X has a concept of graphic
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12212
     expose events (which are sent after a bitblt). After such a bitblt,
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12213
     we only handle exposes until the graphicsExpose arrives.
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12214
     Other systems may not need such a kludge"
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12215
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12216
    [self eventPendingWithSync:false] whileTrue:[
4440
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12217
	(self getEventFor:nil withMask:nil) ifTrue:[
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 12218
	    AbortOperationRequest handle:[:ex |
4440
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12219
		ex return
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12220
	    ] do:[
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12221
		self dispatchLastEvent.
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12222
		"/ multi-screen config: give others a chance
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12223
		"/ (needed because we run at high (non-timesliced) prio)
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12224
		Processor yield.
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12225
	    ]
ec0be9612eca *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4439
diff changeset
 12226
	].
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12227
    ]
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12228
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12229
    "Modified: 19.8.1997 / 17:11:18 / cg"
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12230
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12231
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12232
disposeEventsWithMask:aMask for:aWindowIdOrNil
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12233
    "dispose (throw away) specific events. If aWindowId is nil,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12234
     events matching the mask are thrown away regardless of which
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12235
     view they are for. Otherwise, only matching events for that
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12236
     view are flushed."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12237
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12238
%{  /* NOCONTEXT */
2733
5af2417bc450 pass x/y with mouseWheel event
Claus Gittinger <cg@exept.de>
parents: 2732
diff changeset
 12239
   DPRINTF(("WinWorkstation: disposeEventsWithMask:for: not yet implemented.\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12240
   RETURN ( self );
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 12241
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12242
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12243
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12244
eventMaskFor:anEventSymbol
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12245
    "return the eventMask bit-constant corresponding to an event symbol"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12246
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12247
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12248
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12249
    int m = 0;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12250
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12251
    if (anEventSymbol == @symbol(keyPress)) m = KeyPressMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12252
    else if (anEventSymbol == @symbol(keyRelease)) m = KeyReleaseMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12253
    else if (anEventSymbol == @symbol(buttonPress)) m = ButtonPressMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12254
    else if (anEventSymbol == @symbol(buttonRelease)) m = ButtonReleaseMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12255
    else if (anEventSymbol == @symbol(buttonMotion)) m = ButtonMotionMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12256
    else if (anEventSymbol == @symbol(pointerMotion)) m = PointerMotionMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12257
    else if (anEventSymbol == @symbol(expose)) m = ExposureMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12258
    else if (anEventSymbol == @symbol(focusChange)) m = FocusChangeMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12259
    else if (anEventSymbol == @symbol(enter)) m = EnterWindowMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12260
    else if (anEventSymbol == @symbol(leave)) m = LeaveWindowMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12261
    else if (anEventSymbol == @symbol(keymapState)) m = KeymapStateMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12262
    else if (anEventSymbol == @symbol(visibilityChange)) m = VisibilityChangeMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12263
    else if (anEventSymbol == @symbol(structureNotify)) m = StructureNotifyMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12264
    else if (anEventSymbol == @symbol(resizeRedirect)) m = ResizeRedirectMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12265
    else if (anEventSymbol == @symbol(propertyChange)) m = PropertyChangeMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12266
    else if (anEventSymbol == @symbol(colormapChange)) m = ColormapChangeMask;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12267
    RETURN (__MKSMALLINT(m));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12268
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12269
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12270
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12271
eventPending
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12272
    "return true, if any event is pending.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12273
     This looks for both the internal queue and the display connection."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12274
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12275
    ^ self eventPendingWithSync:false
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12276
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12277
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12278
eventPending:anEventSymbol for:aWindowIdOrNil
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12279
    "return true, if a specific event is pending"
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12280
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12281
    ^ self eventsPending:(self eventMaskFor:anEventSymbol) for:aWindowIdOrNil withSync:false
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12282
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12283
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12284
eventPendingWithSync:doSync
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12285
    "return true, if any event is pending.
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12286
     The doSync argument is ignored here - in windows, all drawing is synchronous."
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12287
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12288
    doSync notNil ifTrue:[self flush].
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12289
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 12290
%{
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 12291
    if (hasEventQueued()) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 12292
	RETURN (true);
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 12293
    }
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 12294
%}.
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12295
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12296
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12297
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12298
eventQueued
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12299
    "return true, if any event is queued"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12300
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12301
    ^ self eventQueuedAlready
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12302
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12303
    "Created: 12.12.1995 / 21:43:00 / stefan"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12304
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12305
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12306
eventQueuedAlready
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12307
    "return true, if any event is queued internally.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12308
     (i.e. in X's internal event queue, which is both filled by explicit
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12309
      nextEvent calls AND whenever drawing is done and events are pending on
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12310
      the display connection)."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12311
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 12312
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12313
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12314
    DDPRINTF(("peek q - "));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12315
    if (hasEventQueued()) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12316
	DDPRINTF(("true\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12317
	RETURN (true);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12318
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12319
    DDPRINTF(("false\n"));
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12320
%}.
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12321
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12322
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12323
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12324
eventsPending:anEventMask for:aWindowIdOrNil withSync:doSync
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
 12325
    "return true, if any of the masked events is pending.
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
 12326
     The doSync argument is ignored here - in windows, all drawing is synchronous."
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12327
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12328
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12329
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 12330
    DDPRINTF(("eventsPending mask %x - not implemented\n", __intVal(anEventMask)));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12331
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12332
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12333
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12334
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12335
exposeEventPendingFor:aWindowIdOrNil withSync:doSync
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12336
    "return true, if any expose event is pending for a specific view,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12337
     or any view (if the arg is nil).
1705
0be9e1cae5cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1685
diff changeset
 12338
     This is an X specific interface - not used on windows (scrolling is synchronous)"
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12339
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12340
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12341
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12342
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12343
getEventFor:aViewIdOrNil withMask:eventMask
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12344
    "read next event - put into local eventBuffer.
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12345
     If aViewIdOrNil is nil, events for any view are fetched;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12346
     otherwise only events for that specific view will be fetched.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12347
     Returns true, if there was an event, false otherwise."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12348
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 12349
%{  /* NOCONTEXT */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12350
    HWND win, wWanted;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12351
    int evMask;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12352
    OBJ eB;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12353
    struct queuedEvent *ev;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12354
    struct queuedEvent *qev;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12355
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12356
    eB = __INST(eventBuffer);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12357
    if (! __isByteArray(eB)) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 12358
	console_fprintf(stderr, "WinWorkstation [error]: no eventBuffer\n");
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12359
	/* RETURN (false); */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12360
    } else {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12361
	ev = (struct queuedEvent *)(__ByteArrayInstPtr(eB)->ba_element);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12362
	ev->ev_message = 0;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12363
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12364
	if (__isSmallInteger(eventMask)) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12365
	    evMask = __intVal(eventMask);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12366
	} else {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12367
	    evMask = ~0;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12368
	}
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12369
	if (__isExternalAddress(aViewIdOrNil)) {
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12370
	    wWanted = _HWNDVal(aViewIdOrNil);
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12371
	} else{
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12372
	    wWanted = 0;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 12373
	}
2736
6e79e8f5ae7e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2733
diff changeset
 12374
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12375
	do { /* only to allow continue */
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12376
	    if (deqEvent(ev, wWanted, evMask)) {
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 12377
#ifdef COMPRESS_WINDOWPOSCHANGED
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12378
		if ((ev->ev_hWnd == lastPos_win)
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12379
		 && (ev->ev_message == WM_WINDOWPOSCHANGED)
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12380
		 && ((ev->ev_x != lastPos_x)
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12381
		     || (ev->ev_y != lastPos_y)
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12382
		     || (ev->ev_w != lastPos_w)
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12383
		     || (ev->ev_h != lastPos_h))) {
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12384
		    /*
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 12385
		     * ignore intermediate resize events
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 12386
		     * (that event is an intermediate one, because the peek-values
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 12387
		     *  have already been updated for another event)
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12388
		     */
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12389
		    EVENT_PRINTF(("ignored WINDOWPOSCHANGED (%d:%d / %d:%d / %d:%d / %d:%d\n",
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12390
				  ev->ev_x, lastPos_x,
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12391
				  ev->ev_y, lastPos_y,
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12392
				  ev->ev_w, lastPos_w,
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 12393
				  ev->ev_h, lastPos_h ));
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12394
		    continue;
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12395
		}
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 12396
#endif
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12397
		RETURN ( true );
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12398
	    }
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 12399
	} while (0);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12400
    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12401
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12402
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12403
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12404
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12405
handleAllEvents
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 12406
    "from now on, handle any kind of event.
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 12407
     Always with win32."
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 12408
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12409
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12410
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12411
handleExposeOnlyFor:aView
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 12412
    "from now on, handle expose events only.
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 12413
     Never with win32."
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 12414
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12415
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12416
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12417
setEventMask:aMask in:aWindowId
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 12418
    "tell the display, that we are only interested in events from aMask, which
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 12419
     is the bitwise-or of the eventMask bits (see 'eventMaskFor:')"
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12420
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12421
%{  /* NOCONTEXT */
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12422
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12423
    if (__isExternalAddress(aWindowId)
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12424
     && __isSmallInteger(aMask)) {
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12425
	HWND hWnd = _HWNDVal(aWindowId);
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12426
	int mask = __intVal(aMask);
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12427
	localWindowInfo *lI;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12428
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 12429
	lI = GETLOCALWINDOWINFOPTR(hWnd);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 12430
	if (lI) {
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12431
#ifdef DEBUGMASK
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12432
	    PRINTF(("new eventMask %x\n",mask));
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12433
	    printMask(mask);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12434
#endif
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12435
	    lI->eventMask = mask;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12436
	    RETURN ( self );
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12437
	}
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12438
    }
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12439
%}.
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12440
    self primitiveFailed
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12441
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12442
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12443
!WinWorkstation methodsFor:'event sending'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12444
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12445
sendKeyOrButtonEvent:typeSymbol x:xPos y:yPos keyOrButton:keySymCodeOrButtonNr state:stateMask toViewId:targetId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12446
    "send a keyPress/Release or buttonPress/Release event to some (possibly alien) view.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12447
     TypeSymbol must be one of: #keyPress, #keyRelease, #buttonPress , #buttonRelease.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12448
     For buttonEvents, the keySymCodeOrButtonNr must be the buttons number (1, 2 ...);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12449
     for key events, it can be either a symbol (as listen in X's keySyms)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12450
     or a numeric keysym code. If state is nil, the modifier bits (shift & control)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12451
     are computed from the keyboardMap - if non-nil, these are passed as modifierbits.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12452
     The non-nil case is the lowlevel entry, where state must include any shift/ctrl information
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12453
     (not very user friendly)"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12454
2672
81c4e65507df *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2670
diff changeset
 12455
    'WinWorkstation [warning]: sendKeyOrButtonEvent unimplemented' infoPrintCR.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12456
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12457
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12458
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12459
!WinWorkstation methodsFor:'font stuff'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12460
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12461
createFontFor:aFontName
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12462
    "a basic method for font allocation; this method allows
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12463
     any font to be aquired (even those not conforming to
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12464
     standard naming conventions, such as cursor, fixed or k14)"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12465
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12466
%{
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12467
    HGDIOBJ hFont;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12468
    char *fn;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12469
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12470
    if (__isString(aFontName) || __isSymbol(aFontName)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12471
	fn = __stringVal(aFontName);
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12472
	if ((strcmp(fn, "fixed") == 0) || (strcmp(fn, "ANSI_FIXED_FONT") == 0)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12473
	    hFont = GetStockObject(ANSI_FIXED_FONT);
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12474
	} else if ((strcmp(fn, "variable") == 0) || (strcmp(fn, "ANSI_VAR_FONT") == 0)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12475
	    hFont = GetStockObject(ANSI_VAR_FONT);
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12476
	} else if ((strcmp(fn, "system") == 0) || (strcmp(fn, "SYSTEM_FONT") == 0)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12477
	    hFont = GetStockObject(SYSTEM_FONT);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12478
	} else if ((strcmp(fn, "systemFixed") == 0) || (strcmp(fn, "SYSTEM_FIXED_FONT") == 0)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12479
	    hFont = GetStockObject(SYSTEM_FIXED_FONT);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12480
	} else if ((strcmp(fn, "deviceDefault") == 0) || (strcmp(fn, "DEVICE_DEFAULT_FONT") == 0)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12481
	    hFont = GetStockObject(DEVICE_DEFAULT_FONT);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12482
	} else {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12483
	    hFont = GetStockObject(ANSI_FIXED_FONT);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12484
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12485
	if (hFont) {
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 12486
	    DPRINTF(("createFontFor:%s -> %x\n", fn, hFont));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12487
	    RETURN ( __MKOBJ(hFont) );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12488
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12489
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12490
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12491
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12492
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12493
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 12494
fontDescriptionFromLogicalFontInfoArray:anInfoArray
3972
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12495
    |fntDescr family face style logicalSize pointSize encoding|
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 12496
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12497
    family := anInfoArray at:16.
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12498
    face   := anInfoArray at:6.
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12499
    style  := anInfoArray at:15.
3972
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12500
    logicalSize   := anInfoArray at:1.
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12501
    encoding := anInfoArray at:17.
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 12502
3972
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12503
    logicalSize := logicalSize abs.
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12504
    "/ convert from device to point size
3973
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12505
    pointSize := (logicalSize / self getLogicalPixelSizeY * 72.0).
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 12506
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 12507
    fntDescr := FontDescription
5230
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 12508
		    family:family
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 12509
		    face:face
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 12510
		    style:style
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 12511
		    size:pointSize
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 12512
		    sizeUnit:#pt
071a281c6c42 debug prints
Claus Gittinger <cg@exept.de>
parents: 5207
diff changeset
 12513
		    encoding:encoding.
5198
a95b6a853a3b changed #pixelSize
Claus Gittinger <cg@exept.de>
parents: 5190
diff changeset
 12514
    fntDescr setPixelSize:logicalSize.
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 12515
    ^ fntDescr.
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 12516
!
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 12517
3480
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 12518
fontMetricsOf:fontId
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 12519
    "return a fonts metrics info object"
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 12520
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 12521
    |rawData info|
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12522
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 12523
    rawData := Array new:15.
3481
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 12524
    (self primFontMetricsOf:fontId intoArray:rawData) isNil ifTrue:[
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12525
	self primitiveFailed.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12526
	^ self
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12527
    ].
3481
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 12528
3480
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 12529
    info := DeviceWorkstation::DeviceFontMetrics new.
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 12530
    info
3481
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 12531
      ascent:(rawData at:1)
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 12532
      descent:(rawData at:2)
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 12533
      maxAscent:(rawData at:3)
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 12534
      maxDescent:(rawData at:4)
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 12535
      minWidth:(rawData at:5)
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 12536
      maxWidth:(rawData at:6)
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 12537
      avgWidth:(rawData at:7)
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 12538
      minCode:(rawData at:8)
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 12539
      maxCode:16rFFFF "(rawData at:9)"
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 12540
      direction:nil
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 12541
      encoding:(rawData at:11).
3480
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 12542
    ^ info
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12543
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12544
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12545
fontsInFamily:aFamilyName face:aFaceName filtering:filter
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12546
    "return a set of all available fonts in aFamily/aFace on this display.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12547
     On WinWorkStations there is curently Face
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12548
     But only thise matching filter (if nonNil)."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12549
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12550
    |allFonts fonts|
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12551
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12552
    allFonts := self listOfAvailableFonts.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12553
    allFonts isNil ifTrue:[^ nil].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12554
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12555
    fonts := Set new.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12556
    allFonts do:[:fntDescr |
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12557
	(aFamilyName sameAs:(fntDescr family)) ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12558
	    (filter isNil or:[filter value:fntDescr]) ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12559
		fonts add:fntDescr
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12560
	    ]
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12561
	]
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12562
    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12563
    ^ fonts
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12564
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12565
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12566
getAvailableFontsMatching:pattern
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12567
    "return an Array filled with font names matching aPattern"
4523
df48174867cc Do not collapse a maximized window on #activate:
Stefan Vogel <sv@exept.de>
parents: 4511
diff changeset
 12568
    self shouldImplement.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12569
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12570
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12571
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12572
getDefaultFont
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12573
    "return a default font id - used when class Font cannot
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12574
     find anything usable"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12575
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12576
     ^ self createFontFor:'fixed'
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12577
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12578
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12579
getFontWithFamily:familyString face:faceString
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12580
	    style:styleArgString size:sizeArg sizeUnit:sizeUnitArg
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12581
	    encoding:encodingSym
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12582
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12583
    "try to get the specified font, if not available, try the next smaller
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12584
     font."
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12585
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12586
    |styleString theName theId xlatedStyle id spacing pxSize ptSize|
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12587
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12588
    styleString := styleArgString.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12589
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12590
    "special: if face is nil, allow access to X-fonts"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12591
    faceString isNil ifTrue:[
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12592
	sizeArg notNil ifTrue:[
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12593
	    theName := familyString , '-' , sizeArg printString
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12594
	] ifFalse:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12595
	    theName := familyString
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12596
	].
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12597
	theName isNil ifTrue:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12598
	    "
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12599
	     mhmh - fall back to the default font
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12600
	    "
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12601
	    theName := 'fixed'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12602
	].
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12603
	theId := self createFontFor:theName.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12604
	theId isNil ifTrue:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12605
	    theId := self getDefaultFont
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12606
	].
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12607
	^ theId
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12608
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12609
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12610
    "/ spacing other than 'normal' is contained as last component
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12611
    "/ in style
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12612
    styleString notNil ifTrue:[
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12613
	((styleString endsWith:'-narrow')
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12614
	 or:[styleString endsWith:'-semicondensed']) ifTrue:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12615
	    |i|
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12616
	    i := styleString lastIndexOf:$-.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12617
	    spacing := styleString copyFrom:(i+1).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12618
	    styleString := styleString copyTo:(i-1).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12619
	] ifFalse:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12620
	    spacing := 'normal'.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12621
	].
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12622
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12623
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12624
    xlatedStyle := styleString.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12625
    xlatedStyle notNil ifTrue:[
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12626
	xlatedStyle := xlatedStyle first asString
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12627
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12628
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12629
    pxSize := sizeUnitArg == #px ifTrue:[sizeArg] ifFalse:[nil].
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12630
    ptSize := sizeUnitArg == #pt ifTrue:[sizeArg] ifFalse:[nil].
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12631
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12632
    id := self
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12633
	    getFontWithFoundry:'*'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12634
	    family:familyString asLowercase
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12635
	    weight:faceString
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12636
	    slant:styleString "/ xlatedStyle
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12637
	    spacing:spacing
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12638
	    pixelSize:pxSize
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12639
	    size:ptSize
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12640
	    registry:'*'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12641
	    encoding:encodingSym.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12642
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12643
    id isNil ifTrue:[
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12644
	(encodingSym notNil and:[encodingSym ~= '*']) ifTrue:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12645
	    "/ too stupid: encodings come in both cases
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12646
	    id := self
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12647
		    getFontWithFoundry:'*'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12648
		    family:familyString asLowercase
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12649
		    weight:faceString
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12650
		    slant:styleString
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12651
		    spacing:spacing
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12652
		    pixelSize:pxSize
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12653
		    size:ptSize
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12654
		    registry:'*'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12655
		    encoding:encodingSym asUppercase.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12656
	    id isNil ifTrue:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12657
		id := self
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12658
			getFontWithFoundry:'*'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12659
			family:familyString asLowercase
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12660
			weight:faceString
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12661
			slant:styleString
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12662
			spacing:spacing
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12663
			pixelSize:pxSize
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12664
			size:ptSize
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12665
			registry:'*'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12666
			encoding:encodingSym asLowercase.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12667
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12668
		id isNil ifTrue:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12669
		    id := self
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12670
			    getFontWithFoundry:'*'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12671
			    family:familyString asLowercase
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12672
			    weight:faceString asLowercase
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12673
			    slant:styleString asLowercase
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12674
			    spacing:spacing
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12675
			    pixelSize:pxSize
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12676
			    size:ptSize
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12677
			    registry:'*'
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12678
			    encoding:encodingSym asLowercase.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12679
		]
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12680
	    ]
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12681
	]
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12682
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12683
    ^ id
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12684
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12685
    "Modified: 24.2.1996 / 22:37:24 / cg"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12686
    "Modified: 4.7.1996 / 11:38:47 / stefan"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12687
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12688
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12689
getFontWithFoundry:foundry family:family weight:weight
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12690
	      slant:slant spacing:spc pixelSize:pixelSizeOrNil size:pointSize
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12691
	      registry:registry encoding:encoding
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12692
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12693
    "get the specified font, if not available, return nil.
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12694
     For now, this is a poor (incomplete) emulation of the X code ...
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12695
     Individual attributes can be left empty (i.e. '') or nil to match any.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12696
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12697
     foundry:   'adobe', 'misc', 'dec', 'schumacher' ... usually '*'
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12698
     family:    'helvetica' 'courier' 'times' ...
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12699
     weight:    'bold' 'medium' 'demi' ...
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12700
     slant:     'r(oman)' 'i(talic)' 'o(blique)'
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12701
     spacing:   'narrow' 'normal' semicondensed' ... usually '*'
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12702
     pixelSize: 16,18 ... size in pixels; usually left nil
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12703
     size:      size in point (1/72th of an inch). Overwritten by pixelSize if that is not nil
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12704
     registry:  iso8859, sgi ... '*'
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12705
     encoding:  vendor specific encoding (usually '*')
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12706
    "
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12707
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 12708
    "
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12709
     Windows-NT/95 allows the creation of a font with the following parameters
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12710
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12711
	nHeight
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12712
	nWidth
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12713
	nEscapement
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12714
	nOrientation
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12715
	fnWeight        FW_DONTCARE, FW_NORMAL, FW_MEDIUM, FW_BOLD, ...
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12716
	fdwItalic       TRUE or FALSE
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12717
	fdwUnderline    TRUE or FALSE
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12718
	fdwStrikeOut    TRUE or FALSE
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12719
	fdwCharSet      ANSI_CHARSET, UNICODE_, SYMBOL_, SHIFTJIS_,...
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12720
	fdwOutputPrecision      DEFAULT, STRING, CHAR, ...
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12721
	fdwClipPrecision        DEFAULT, CHAR, STROKE, MASK, ...
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12722
	fdwQuality      DEFAULT, DRAFT, or PROOF.
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12723
	fdwPitchAndFamily
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12724
		DEFAULT, FIXED or VARIABLE pitch
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12725
		DECORATIVE, DONTCASE, MODERN, ROMAN, SCRIPT, or SWISS.
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12726
	lpszFace
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12727
		Typeface Name
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12728
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12729
      These two above descriptions will be matched as follows:
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12730
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12731
	foundry   - ignored
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12732
	family    - mapped to type face name.
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12733
	weight    - mapped to fnWeight
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12734
	slant     - used for style
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12735
	spacing   - NOT USED INITIALLY
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12736
	pixelSize - NOT USED INITIALLY
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12737
	size      - mapped to nHeight
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12738
	registry  - NOT USED INITIALLY
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12739
	encoding  - mapped to fdwCharSet
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12740
     "
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12741
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12742
    |logSize heightIsCellHeight|
3973
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12743
5171
333471dbc830 pixelSized font preps
Claus Gittinger <cg@exept.de>
parents: 5163
diff changeset
 12744
    pixelSizeOrNil notNil ifTrue:[
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12745
	logSize := pixelSizeOrNil.
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12746
	heightIsCellHeight := false.
3973
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12747
    ] ifFalse:[
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12748
	logSize := (pointSize * (self getLogicalPixelSizeY) / 72.0) rounded.
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12749
	heightIsCellHeight := false.
3973
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12750
    ].
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12751
%{
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12752
    HGDIOBJ hFont;
5188
8946ef7cf787 pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5184
diff changeset
 12753
    int nHeight, nWidth, nEscapement, nOrientation;
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12754
    char* work;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12755
    char* work2;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12756
    DWORD fnWeight;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12757
    DWORD fdwItalic;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12758
    DWORD fdwUnderline;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12759
    DWORD fdwStrikeOut;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12760
    DWORD fdwCharSet;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12761
    DWORD fdwOutputPrecision;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12762
    DWORD fdwClipPrecision;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12763
    DWORD fdwQuality;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12764
    DWORD fdwPitchAndFamily;
3973
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12765
    static char faceName[256];
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12766
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12767
/* INITIALIZE */
3973
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12768
    strcpy( faceName, "NULL" );
3972
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12769
    nHeight   = 0;
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12770
    nWidth   = 0;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12771
    nEscapement = 0;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12772
    nOrientation = 0;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12773
    fnWeight = FW_NORMAL;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12774
    fdwItalic = FALSE;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12775
    fdwUnderline = FALSE;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12776
    fdwStrikeOut = FALSE;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12777
    fdwOutputPrecision = OUT_DEFAULT_PRECIS;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12778
    fdwClipPrecision   = CLIP_DEFAULT_PRECIS;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12779
    fdwQuality         = DEFAULT_QUALITY;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12780
    fdwPitchAndFamily  = FF_DONTCARE;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12781
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12782
    fdwCharSet   = ANSI_CHARSET;
4013
cd666b168135 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4009
diff changeset
 12783
    if ((encoding == @symbol('ms-ansi'))) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12784
	fdwCharSet   = ANSI_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12785
    } else if (encoding == @symbol('ms-default')) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12786
	fdwCharSet   = DEFAULT_CHARSET;
4009
19c9c39f286b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4002
diff changeset
 12787
    } else if ((encoding == @symbol('ms-symbol'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12788
	    || (encoding == @symbol('misc-fontspecific'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12789
	fdwCharSet   = SYMBOL_CHARSET;
4009
19c9c39f286b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4002
diff changeset
 12790
    } else if ((encoding == @symbol('ms-shiftjis'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12791
	    || (encoding == @symbol('jisx0208.1983-0'))){
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12792
	fdwCharSet   = SHIFTJIS_CHARSET;
4009
19c9c39f286b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4002
diff changeset
 12793
    } else if ((encoding == @symbol('ms-gb2312'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12794
	    || (encoding == @symbol('gb2312.1980-0'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12795
	fdwCharSet   = GB2312_CHARSET;
4009
19c9c39f286b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4002
diff changeset
 12796
    } else if ((encoding == @symbol('ms-hangeul'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12797
	    || (encoding == @symbol('ksc5601.1987-0'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12798
	fdwCharSet   = HANGEUL_CHARSET;
4009
19c9c39f286b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4002
diff changeset
 12799
    } else if ((encoding == @symbol('ms-chinesebig5'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12800
	    || (encoding == @symbol('big5'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12801
	fdwCharSet   = CHINESEBIG5_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12802
    } else if (encoding == @symbol('ms-oem')) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12803
	fdwCharSet   = OEM_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12804
    } else if (encoding == @symbol('ms-johab')) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12805
	fdwCharSet   = JOHAB_CHARSET;
4009
19c9c39f286b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4002
diff changeset
 12806
    } else if ((encoding == @symbol('ms-hebrew'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12807
	    || (encoding == @symbol('ms-cp1255'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12808
	fdwCharSet   = HEBREW_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12809
    } else if ((encoding == @symbol('ms-arabic'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12810
	    || (encoding == @symbol('ms-cp1256'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12811
	fdwCharSet   = ARABIC_CHARSET;
4009
19c9c39f286b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4002
diff changeset
 12812
    } else if ((encoding == @symbol('ms-greek'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12813
	    || (encoding == @symbol('ms-cp1253'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12814
	fdwCharSet   = GREEK_CHARSET;
4009
19c9c39f286b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4002
diff changeset
 12815
    } else if ((encoding == @symbol('ms-turkish'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12816
	    || (encoding == @symbol('ms-cp1254'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12817
	fdwCharSet   = TURKISH_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12818
    } else if ((encoding == @symbol('ms-russian'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12819
	    || (encoding == @symbol('ms-cp1251'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12820
	fdwCharSet   = RUSSIAN_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12821
    } else if ((encoding == @symbol('ms-easteurope'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12822
	    || (encoding == @symbol('ms-cp1250'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12823
	fdwCharSet   = EASTEUROPE_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12824
    } else if ((encoding == @symbol('ms-baltic'))
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12825
	    || (encoding == @symbol('ms-cp1257'))) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12826
	fdwCharSet   = BALTIC_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12827
    } else if ((encoding == @symbol('ms-vietnamese'))) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12828
	fdwCharSet   = VIETNAMESE_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12829
    } else if ((encoding == @symbol('ms-thai'))) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12830
	fdwCharSet   = THAI_CHARSET;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12831
    } else if ((encoding == @symbol('ms-mac'))) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12832
	fdwCharSet   = MAC_CHARSET;
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12833
#ifdef UNICODE_CHARSET
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12834
    } else if ((encoding == @symbol('ms-unicode'))) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12835
	fdwCharSet   = UNICODE_CHARSET;
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12836
#endif
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12837
    }
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12838
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12839
    if ( __isString( family ) ) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12840
	work = __stringVal( family );
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12841
	if (strcmp( work, "nil" ) != 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12842
	    strncpy( faceName, work, sizeof(faceName)-1 );
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12843
	}
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12844
    }
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12845
4000
4b3439997458 encoding names changed
Claus Gittinger <cg@exept.de>
parents: 3999
diff changeset
 12846
    /* Q: should we allow those ? (they make ST/X programs less portable to X */
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12847
    if( __isString( weight ) ) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12848
	work = __stringVal( weight );
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12849
	if (strcmp( work, "bold" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12850
	    fnWeight = FW_BOLD;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12851
	} else if (strcmp( work, "medium" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12852
	    fnWeight = FW_MEDIUM;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12853
	} else if (strcmp( work, "normal" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12854
	    fnWeight = FW_NORMAL;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12855
	} else if (strcmp( work, "light" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12856
	    fnWeight = FW_LIGHT;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12857
	} else if (strcmp( work, "demi" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12858
	    fnWeight = FW_LIGHT;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12859
	} else if (strcmp( work, "heavy" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12860
	    fnWeight = FW_HEAVY;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12861
	} else if (strcmp( work, "extraBold" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12862
	    fnWeight = FW_EXTRABOLD;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12863
	} else if (strcmp( work, "semiBold" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12864
	    fnWeight = FW_SEMIBOLD;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12865
	} else if (strcmp( work, "thin" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12866
	    fnWeight = FW_THIN;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12867
	} else if (strcmp( work, "extraLight" ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12868
	    fnWeight = FW_EXTRALIGHT;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12869
	}
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12870
    } else if (__isSmallInteger(weight)) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12871
	fnWeight = __intVal(weight);
3973
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12872
    }
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12873
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12874
    if(__isSmallInteger( logSize )) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12875
	nHeight = __intVal( logSize );
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12876
    }
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12877
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12878
    if (__isString(slant)) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12879
	work2 = __stringVal( slant );
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12880
	work  = __stringVal( slant );
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12881
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12882
	if (strncmp(work2, "italic", 6) == 0)  {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12883
	    fdwItalic = TRUE;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12884
	    if ( work2[6] == '-' )
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12885
		strncpy( work, &work2[7], ( strlen( work2) - 7) );
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12886
	} else {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12887
	    if (strncmp(work2, "oblique", 7) == 0)  {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12888
		fdwItalic = TRUE;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12889
		if ( work2[7] == '-' )
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12890
		    strncpy( work, &work2[8], ( strlen( work2) - 8) );
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12891
	    }
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12892
	}
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12893
	if (strncmp( work, "underline", 9 ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12894
	    fdwUnderline = TRUE;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12895
	    if( work[10] == '-' )
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12896
		strncpy( work2, &work[11], ( strlen( work ) - 10 ) );
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12897
	}
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12898
	if (strncmp( work2, "strikeOut", 9 ) == 0 ) {
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12899
	    fdwStrikeOut = TRUE;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12900
	}
3973
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12901
    }
f24046858adc logical font handling
ca
parents: 3972
diff changeset
 12902
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 12903
    DPRINTF(("CreateFont face:%s h=%d w=%d wght=%d\n",
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12904
		faceName, nHeight, nWidth, fnWeight));
5190
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12905
6b257515cb81 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5188
diff changeset
 12906
    hFont = CreateFont(
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12907
			(
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12908
			    (heightIsCellHeight == true)  ?
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12909
				nHeight : -nHeight            /* positive:cell height; negative:character height */
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12910
			),
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12911
			nWidth,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12912
			nEscapement,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12913
			nOrientation,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12914
			fnWeight,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12915
			fdwItalic,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12916
			fdwUnderline,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12917
			fdwStrikeOut,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12918
			fdwCharSet,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12919
			fdwOutputPrecision,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12920
			fdwClipPrecision,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12921
			fdwQuality,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12922
			fdwPitchAndFamily,
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12923
			faceName );
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12924
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 12925
    if (hFont != NULL) {
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12926
	DPRINTF(("createFont: %x\n", hFont));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12927
#ifdef COUNT_RESOURCES
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12928
	__cnt_font++;
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12929
	RES1PRINTF(("CreateFont %d\n", __cnt_font));
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12930
#endif
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12931
	RETURN ( __MKOBJ(hFont) );
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12932
    }
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 12933
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12934
    DPRINTF(("***** ERROR createFontWithFoundry failed ERROR *****\n" ));
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12935
%}.
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12936
    ^ nil
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12937
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12938
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12939
     Display getFontWithFoundry:'*'
5236
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12940
			 family:'courier'
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12941
			 weight:'medium'
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12942
			  slant:'r'
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12943
			spacing:nil
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12944
		      pixelSize:nil
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12945
			   size:13
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12946
		       registry:'iso8859'
c36d0e416566 WM_QUERYENDSESSION and WM_ENDSESSION events
Stefan Vogel <sv@exept.de>
parents: 5232
diff changeset
 12947
		       encoding:'*'
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12948
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12949
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12950
    "new NT Version: 20.2.1997 / 22:33:29 / dq"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12951
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 12952
3972
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12953
getLogicalPixelSizeY
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12954
%{
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12955
    RETURN( __MKSMALLINT(__logPixelSY) );
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12956
%}
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12957
!
1536810c6a0e *** empty log message ***
ca
parents: 3971
diff changeset
 12958
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12959
listOfAvailableFonts
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12960
    "return a list with all available fonts on this display.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12961
     Since this takes a long time, keep the result of the query for the
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12962
     next time. The elements of the returned collection are instances of
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12963
     FontDescription."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 12964
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12965
    |list typeFaceList|
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 12966
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12967
    listOfFonts notNil ifTrue:[^ listOfFonts].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12968
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12969
    list := OrderedCollection new.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12970
    typeFaceList := OrderedCollection new.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12971
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12972
    [
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12973
      self primEnumFontTypesInto:typeFaceList.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12974
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12975
      "/Transcript showCR:typeFaceList.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12976
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12977
      typeFaceList do:[:typeFace |
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12978
	  self primEnumFontsIn:typeFace into:list.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12979
	  0
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12980
      ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12981
    ] valueUninterruptably.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 12982
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 12983
    "/ Transcript showCR:list.
2926
0f238dfe4207 italic font fix
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
 12984
    listOfFonts := OrderedCollection new.
0f238dfe4207 italic font fix
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
 12985
    list do:[:anInfoArray |
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12986
	| fntDescr italicFontDescr |
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12987
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12988
	fntDescr := self fontDescriptionFromLogicalFontInfoArray:anInfoArray.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12989
	listOfFonts add:fntDescr.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12990
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12991
	"/ manually generate italic version (any font can be made italic here)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12992
	(fntDescr style startsWith:'roman') ifTrue:[
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12993
	    italicFontDescr := FontDescription
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12994
			    family:fntDescr family
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12995
			    face:fntDescr face
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12996
			    style:('italic' , (fntDescr style copyFrom:'roman' size+1))
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12997
			    size:fntDescr size
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12998
			    encoding:fntDescr encoding.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 12999
	    listOfFonts add:italicFontDescr.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 13000
	].
2926
0f238dfe4207 italic font fix
Claus Gittinger <cg@exept.de>
parents: 2908
diff changeset
 13001
    ].
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 13002
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13003
    ^ listOfFonts
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13004
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13005
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13006
     Display listOfAvailableFonts.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13007
     Display getAvailableFontsMatching:'*'.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13008
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13009
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13010
    "Modified: 27.9.1995 / 10:54:47 / stefan"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13011
    "Modified: 17.4.1996 / 15:27:57 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13012
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13013
5175
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13014
pixelSizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filterBlock
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13015
    "return a set of all available font pixel sizes in aFamily/aFace/aStyle on this display.
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13016
     Redefined to handle the special case of 0-size (which stands for any)"
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13017
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13018
    |sizes|
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13019
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13020
    sizes := super pixelSizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filterBlock.
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13021
    (sizes notNil and:[sizes includes:0]) ifTrue:[
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 13022
	"special: size 0 means:
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 13023
	 there are scaled versions in all sizes available"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 13024
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 13025
	^ #(6 8 10 12 13 14 15 16 18 20 22 24 28 32 48 64)
5175
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13026
    ].
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13027
    ^ sizes
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13028
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13029
    "
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13030
     Display pixelSizesInFamily:'courier' face:'bold' style:'roman'
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13031
    "
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13032
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13033
    "Created: 27.2.1996 / 01:38:15 / cg"
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13034
!
e45a5033e9ac pixel size support
Claus Gittinger <cg@exept.de>
parents: 5173
diff changeset
 13035
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13036
primEnumFontTypesInto:typeFaceList
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13037
%{
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13038
    if (__tmpDC) {
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13039
#ifdef USE_EnumFontFamiliesEx
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13040
	EnumFontFamiliesEx( __tmpDC, NULL, EnumFPTypeFaceProc, (DWORD)&(typeFaceList));
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13041
#else
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13042
	EnumFontFamilies( __tmpDC, NULL, EnumFPTypeFaceProc, (DWORD)&(typeFaceList));
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13043
#endif
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13044
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13045
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13046
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13047
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13048
primEnumFontsIn:typeFace into:fontList
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13049
%{
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13050
    char *cp;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13051
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13052
    if (__isString(typeFace)) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13053
	if (__tmpDC) {
3995
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13054
#ifdef USE_EnumFontFamiliesEx
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13055
	    EnumFontFamiliesEx(__tmpDC, __stringVal(typeFace), EnumFontsProc, (DWORD)&(fontList));
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13056
#else
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13057
	    EnumFontFamilies(__tmpDC, __stringVal(typeFace), EnumFontsProc, (DWORD)&(fontList));
ceac5815ea42 font stuff
ca
parents: 3976
diff changeset
 13058
#endif
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13059
	}
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13060
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13061
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13062
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13063
3481
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13064
primFontMetricsOf:fontId intoArray:rawData
3480
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13065
    "evaluate aBlock, passing a fonts metrics as arguments.
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13066
     fill passed array as:
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13067
      ascent     -> (data at:1)
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13068
      descent    -> (data at:2)
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13069
      maxAscent  -> (data at:3)
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13070
      maxDescent -> (data at:4)
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13071
      minWidth   -> (data at:5)
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13072
      maxWidth   -> (data at:6)
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13073
      avgWidth   -> (data at:7).
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13074
      minChar    -> (data at:8).
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13075
      maxChar    -> (data at:9).
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13076
      defaultChar-> (data at:10).
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13077
      charSet    -> (data at:11).
3480
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13078
"
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13079
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13080
%{
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13081
3480
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13082
    if (__isExternalAddress(fontId)
3481
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13083
     && __isArray(rawData)
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13084
     && (__arraySize(rawData) >= 11)) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13085
	SIZE size;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13086
	int avgWidth;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13087
	HGDIOBJ hFont;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13088
	HGDIOBJ prevFont;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13089
	TEXTMETRIC tmet;
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13090
	static char *s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13091
	static int len;
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13092
	OBJ t;
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13093
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13094
	hFont = _HGDIOBJVal(fontId);
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13095
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13096
	/*
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13097
	 * temporarily set this font in the tmpDC (root-) context
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13098
	 */
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13099
#ifdef CACHE_LAST_TMP_FONT
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13100
	if (__tmpDC_hfont != hFont) {
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13101
	    prevFont = SelectObject(__tmpDC, hFont);
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13102
	    if (__tmpDC_prev_hfont == NULL) {
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13103
		__tmpDC_prev_hfont = prevFont;
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13104
	    }
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13105
	    __tmpDC_hfont = hFont;
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13106
	}
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13107
#else
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13108
	prevFont = SelectObject(__tmpDC, hFont);
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13109
#endif
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13110
	GetTextMetricsW(__tmpDC, &tmet);
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13111
	if (len == 0) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13112
	    len = strlen(s);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13113
	}
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13114
#if 0
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13115
	GetTextExtentPoint32(__tmpDC, s, len, &size);
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13116
	avgWidth = (size.cx / (len / 2) + 1) / 2;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13117
#else
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13118
	avgWidth = tmet.tmAveCharWidth;
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13119
#endif
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13120
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13121
#ifndef CACHE_LAST_TMP_FONT
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13122
	SelectObject(__tmpDC, prevFont);
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13123
#endif
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13124
3481
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13125
	__ArrayInstPtr(rawData)->a_element[0] = __MKSMALLINT(tmet.tmAscent);        /* ascent     -> (data at:1) */
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13126
	__ArrayInstPtr(rawData)->a_element[1] = __MKSMALLINT(tmet.tmDescent);       /* descent    -> (data at:2) */
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13127
	__ArrayInstPtr(rawData)->a_element[2] = __MKSMALLINT(tmet.tmAscent);        /* maxAscent  -> (data at:3) */
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13128
	__ArrayInstPtr(rawData)->a_element[3] = __MKSMALLINT(tmet.tmDescent);       /* maxDescent -> (data at:4) */
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13129
	__ArrayInstPtr(rawData)->a_element[4] = __MKSMALLINT(avgWidth);             /* minWidth   -> (data at:5) */
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13130
	__ArrayInstPtr(rawData)->a_element[5] = __MKSMALLINT(tmet.tmMaxCharWidth);  /* maxWidth   -> (data at:6) */
6a46fa2a728b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3480
diff changeset
 13131
	__ArrayInstPtr(rawData)->a_element[6] = __MKSMALLINT(avgWidth);             /* avgWidth   -> (data at:7) */
4087
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13132
	__ArrayInstPtr(rawData)->a_element[7] = __MKSMALLINT(tmet.tmFirstChar);     /* min        -> (data at:8) */
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13133
	__ArrayInstPtr(rawData)->a_element[8] = __MKSMALLINT(tmet.tmLastChar);      /* max        -> (data at:9) */
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13134
	__ArrayInstPtr(rawData)->a_element[9] = __MKSMALLINT(tmet.tmDefaultChar);   /* default    -> (data at:10) */
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13135
	t = __charSetSymbolFor(tmet.tmCharSet);
7adf8102c9d9 windows font stuff
ca
parents: 4074
diff changeset
 13136
	__ArrayInstPtr(rawData)->a_element[10]= t; __STORE(rawData, t);             /* charSet    -> (data at:11) */
3480
541ef52df2b8 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3470
diff changeset
 13137
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13138
	DPRINTF(("textMetrics h=%x  avgAsc=%d avgDesc=%d minW=%d maxW=%d avgW=%d\n",
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13139
		    hFont, tmet.tmAscent, tmet.tmDescent, avgWidth, tmet.tmMaxCharWidth,
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13140
		    tmet.tmAveCharWidth));
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13141
	RETURN (self);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13142
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13143
    RETURN (nil);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13144
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13145
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13146
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13147
releaseFont:aFontId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13148
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13149
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13150
    if (__isExternalAddress(aFontId)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13151
	HGDIOBJ hFont = _HGDIOBJVal(aFontId);
2619
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
 13152
8cd6909a436e cache black & white pens
Claus Gittinger <cg@exept.de>
parents: 2617
diff changeset
 13153
	if (hFont) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13154
#ifdef COUNT_RESOURCES
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13155
	    __cnt_font--;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13156
	   RES1PRINTF(("DestroyFont %d\n",__cnt_font));
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13157
#endif
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 13158
	   DPRINTF(("ReleaseFont: %x\n", hFont));
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13159
	   _DeleteFont(hFont, __LINE__);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13160
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13161
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13162
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13163
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13164
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13165
sizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13166
    "return a set of all available font sizes in aFamily/aFace/aStyle
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13167
     on this display.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13168
     Redefined to handle X's special case of 0-size (which stands for any)"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13169
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13170
    |sizes|
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13171
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13172
    sizes := super sizesInFamily:aFamilyName face:aFaceName style:aStyleName filtering:filter.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13173
    (sizes notNil and:[sizes includes:0]) ifTrue:[
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13174
	"special: in X11R5 and above, size 0 means:
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13175
	 there are scaled versions in all sizes available"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13176
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13177
	^ #(4 5 6 7 8 9 10 11 12 14 16 18 20 22 24 28 32 48 64)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13178
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13179
    ^ sizes
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13180
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13181
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13182
     Display sizesInFamily:'courier' face:'bold' style:'roman'
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13183
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13184
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13185
    "Created: 27.2.1996 / 01:38:15 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13186
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13187
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13188
widthOf:aString from:index1 to:index2 inFont:aFontId
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13189
    "leftover - bw compatibility"
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13190
    ^ self
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13191
	widthOf:aString from:index1 to:index2 inFont:aFontId
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13192
	in:nil with:nil
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13193
!
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13194
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13195
widthOf:aString from:index1 to:index2 inFont:aFontId in:ignoredDrawableId with:aGCId
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13196
%{  /* NOCONTEXT */
4729
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 13197
    unsigned char *cp;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13198
    int len, n, i1, i2, l;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13199
    OBJ cls;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13200
    int nInstBytes;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13201
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13202
    if (__bothSmallInteger(index1, index2)
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13203
     && __isExternalAddress(aFontId)
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13204
     && __isNonNilObject(aString)) {
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13205
	HGDIOBJ hFont,prevFont;
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13206
	HDC hDC;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13207
	SIZE tsize;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13208
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13209
#ifndef PRE_22_FEP_2007
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13210
#       define N_QUICK_CHARS    1024
4729
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 13211
	unsigned short quickWchars[N_QUICK_CHARS];
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 13212
	unsigned short *wcharPtr;
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13213
	int mustFree = 0;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13214
	int i;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13215
#endif
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13216
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13217
	hFont = _HGDIOBJVal(aFontId);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13218
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13219
	if (__isExternalAddress(aGCId)) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13220
	    struct gcData *gcData = _GCDATA(aGCId);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13221
	    hDC = _getDC(gcData);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13222
	    prevFont = SelectObject(hDC, hFont);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13223
	} else {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13224
	    hDC = __tmpDC;
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13225
#ifdef CACHE_LAST_TMP_FONT
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13226
	    if (__tmpDC_hfont != hFont) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13227
		prevFont = SelectObject(hDC, hFont);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13228
		if (__tmpDC_prev_hfont == NULL) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13229
		    __tmpDC_prev_hfont = prevFont;
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13230
		}
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13231
		__tmpDC_hfont = hFont;
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13232
	    }
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13233
#else
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13234
	    prevFont = SelectObject(hDC, hFont);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13235
#endif
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13236
	}
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13237
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13238
	i1 = __intVal(index1) - 1;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13239
	cls = __qClass(aString);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13240
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13241
	if (i1 >= 0) {
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13242
	    i2 = __intVal(index2) - 1;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13243
	    if (i2 < i1) {
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13244
		RETURN ( __MKSMALLINT( 0 ) );
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13245
	    }
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13246
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13247
	    cp = (char *) _stringVal(aString);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13248
	    l = i2 - i1 + 1;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13249
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13250
	    if ((cls == @global(String)) || (cls == @global(Symbol))) {
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13251
		n = _stringSize(aString);
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13252
    commonWidthChars:
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13253
		if (i2 < n) {
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13254
		    cp += i1;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13255
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13256
#ifdef PRE_22_FEP_2007
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13257
		    GetTextExtentPoint32(hDC, cp, l, &tsize);
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13258
#else
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13259
		    if (l <= N_QUICK_CHARS) {
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13260
			wcharPtr = quickWchars;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13261
			mustFree = 0;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13262
		    } else {
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13263
			wcharPtr = malloc(sizeof(short)*l);
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13264
			if (! wcharPtr) RETURN (__MKSMALLINT(0));
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13265
			mustFree = 1;
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13266
		    }
4729
037a913e50db umlaute with TextOutW fixed
Claus Gittinger <cg@exept.de>
parents: 4727
diff changeset
 13267
		    for (i=0; i<l; i++) wcharPtr[i] = ((unsigned char *)cp)[i];
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13268
		    GetTextExtentPoint32W(hDC, wcharPtr, l, &tsize);
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13269
		    if (mustFree) free(wcharPtr);
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13270
#endif
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13271
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13272
#ifdef SUPERDEBUG
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13273
		    if (__debug__) {
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13274
			char buf[80];
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13275
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13276
			GetTextFace(hDC,80,buf);
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13277
			console_printf("font1 %x %s >%s< l=%d dx=%d\n",hFont,buf,cp,l,tsize.cx);
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13278
		    }
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13279
#endif
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13280
		    if (__isExternalAddress(aGCId)) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13281
			SelectObject(hDC, prevFont);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13282
		    } else {
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13283
#ifndef CACHE_LAST_TMP_FONT
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13284
			SelectObject(hDC, prevFont);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13285
#endif
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13286
		    }
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13287
		    RETURN ( __MKSMALLINT(tsize.cx) );
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13288
		}
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13289
		RETURN (__MKSMALLINT(0));
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13290
	    }
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13291
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13292
	    nInstBytes = __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars));
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13293
	    cp += nInstBytes;
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13294
	    n = __byteArraySize(aString) - nInstBytes;
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13295
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13296
	    if (__isBytes(aString)) {
4727
5a4f88a6e58b always draw 16bit strings
Claus Gittinger <cg@exept.de>
parents: 4726
diff changeset
 13297
		goto commonWidthChars;
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13298
	    }
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13299
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13300
	    /* Unicode */
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13301
	    if (__isWords(aString)) {
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13302
		n = n / 2;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 13303
		if (i2 < n) {
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13304
		    WIDECHAR *w_cp = (WIDECHAR *)cp;
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13305
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13306
		    w_cp += i1;
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13307
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13308
		    GetTextExtentPoint32W(hDC, w_cp, l, &tsize);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13309
		    if (__isExternalAddress(aGCId)) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13310
			SelectObject(hDC, prevFont);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13311
		    } else {
3493
f074b49b4091 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3492
diff changeset
 13312
#ifndef CACHE_LAST_TMP_FONT
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13313
			SelectObject(hDC, prevFont);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13314
#endif
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 13315
		    }
3493
f074b49b4091 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3492
diff changeset
 13316
		    RETURN ( __MKSMALLINT(tsize.cx) );
f074b49b4091 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3492
diff changeset
 13317
		}
3494
ffa880fb2749 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3493
diff changeset
 13318
		RETURN (__MKSMALLINT(0));
3493
f074b49b4091 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3492
diff changeset
 13319
	    }
f074b49b4091 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3492
diff changeset
 13320
	}
f074b49b4091 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3492
diff changeset
 13321
    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13322
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13323
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13324
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13325
4511
4430c632995a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4504
diff changeset
 13326
!WinWorkstation methodsFor:'grabbing'!
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13327
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13328
allowEvents:mode
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13329
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13330
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13331
grabKeyboardIn:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13332
    "grab the keyboard"
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13333
%{
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13334
#ifdef NOT_YET_IMPLEMENTED
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13335
    if (__isExternalAddress(aWindowId)) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13336
      HWND hWnd = _HWNDVal(aWindowId);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13337
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13338
      CPRINTF(("grabKeyboard in %x\n",hWnd));
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13339
    }
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13340
#endif
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13341
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13342
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13343
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13344
grabPointerIn:aWindowId withCursor:aCursorId pointerMode:pMode keyboardMode:kMode confineTo:confineId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13345
    "grap the pointer - return true if ok"
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13346
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13347
%{
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13348
    if (__isExternalAddress(aWindowId)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13349
	HWND hWnd = _HWNDVal(aWindowId);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13350
	HCURSOR hCursor = 0;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13351
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 13352
	if (__currentCapture != CAPTURE_NONE) {
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13353
	    PostMessage(__currentPointerView, WM_THREAD_SETCAPTURE, 0, 0);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13354
	    //ReleaseCapture();
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13355
	}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13356
#if 1
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13357
	/*
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13358
	 * place a special, invisible view above the root
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13359
	 */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13360
	if (hWnd == __rootWin) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13361
	    hWnd = __rootWinSpezial;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13362
	    ShowWindow(hWnd, SW_SHOWNOACTIVATE);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13363
	    //EnableWindow(hWnd,TRUE);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13364
	    SetWindowPos(hWnd, HWND_TOP,
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13365
			 0, 0, 0, 0,
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 13366
			 SWP_NOREDRAW | SWP_NOSENDCHANGING | SWP_NOCOPYBITS
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 13367
			 | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13368
	    CPRINTF(("setRootCapture %x\n",hWnd));
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13369
	}
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13370
#endif
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13371
	if (__isExternalAddress(aCursorId)) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13372
	    hCursor = _HCURSORVal(aCursorId);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13373
	    CPRINTF(("grabPointerIn  SetCapture %x\n",hWnd));
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13374
	}
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13375
	PostMessage(hWnd, WM_THREAD_SETCAPTURE, (INT)hWnd, (INT)hCursor);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13376
	RETURN (true);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13377
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13378
%}.
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13379
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13380
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13381
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13382
ungrabKeyboard
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13383
    "release the keyboard"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13384
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13385
    activeKeyboardGrab := nil.
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13386
%{
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13387
#ifdef NOT_YET_IMPLEMENTED
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13388
    CPRINTF(("ungrabKeyboard\n"));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13389
#endif
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13390
%}
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13391
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13392
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13393
ungrabPointer
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13394
    "release the pointer"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13395
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13396
%{  /* NOCONTEXT */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13397
    CPRINTF(("ungrabPointer 1\n"));
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13398
    PostThreadMessage(_dispatchThreadId, WM_THREAD_SETCAPTURE, 0, 0);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13399
%}.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13400
    activePointerGrab := nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13401
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13402
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13403
!WinWorkstation methodsFor:'graphic context stuff'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13404
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 13405
noClipIn:aWindowId gc:aGCId
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13406
    "disable clipping rectangle"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13407
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13408
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13409
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 13410
    if (__isExternalAddress(aWindowId)
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13411
     && __isExternalAddress(aGCId)) {
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 13412
	struct gcData *gcData = _GCDATA(aGCId);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13413
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13414
	if (gcData->clipping != FALSE) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13415
	    gcData->clipping = FALSE;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13416
#ifdef CACHE_LAST_DC
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 13417
	    if (lastGcData == gcData) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13418
		SelectClipRgn(gcData->_hDC, NULL);
2661
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 13419
	    }
c68f92ae1cb5 cache the last view-bg-filling DC
Claus Gittinger <cg@exept.de>
parents: 2659
diff changeset
 13420
#endif
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13421
	}
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13422
	RETURN (self);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13423
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13424
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13425
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13426
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13427
setBackground:bgColorIndex in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13428
    "set background color to be drawn with"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13429
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13430
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13431
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13432
    if (__isExternalAddress(aGCId)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13433
	struct gcData *gcData = _GCDATA(aGCId);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13434
	COLORREF bgColor;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13435
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13436
	bgColor = (COLORREF)st2RGB(__intVal(bgColorIndex),gcData);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13437
	if (bgColor != gcData->bgColor) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13438
	    gcData->bgColor = bgColor;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13439
#ifdef CACHE_LAST_DC
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13440
	    if (lastGcData == gcData) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13441
		SetBkColor(gcData->_hDC, bgColor);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13442
		/*
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13443
		 * no need to flush pen - it does not depend upon
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13444
		 * the bg color
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13445
		 */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13446
	    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13447
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13448
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13449
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 13450
	CPRINTF(("setBackground: %x\n", bgColor));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13451
	RETURN (self);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13452
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13453
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13454
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13455
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13456
setBitmapMask:aBitmapId in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13457
    "set or clear the drawing mask - a bitmap mask using current fg/bg"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13458
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13459
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13460
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13461
    if (__isExternalAddress(aGCId)) {
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13462
	struct gcData *gcData = _GCDATA(aGCId);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13463
	HBITMAP oldM;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13464
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13465
	oldM = gcData->hMask;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13466
	if (__isExternalAddress(aBitmapId))
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13467
	    gcData->hMask = _HBITMAPVAL(aBitmapId);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13468
	else
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13469
	    gcData->hMask = 0;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13470
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13471
	if (oldM != gcData->hMask) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13472
	    FLUSH_CACHED_DC(gcData);
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 13473
	    CPRINTF(("masks set to %x\n",gcData->hMask));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13474
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13475
	RETURN (self);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13476
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13477
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13478
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13479
1685
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
 13480
setClipByChildren:aBool in:aWindowId gc:aGCId
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13481
    "enable/disable drawing into child views"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13482
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13483
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13484
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13485
    if (ISCONNECTED && __isExternalAddress(aGCId)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13486
	struct gcData *gcData = _GCDATA(aGCId);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13487
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13488
	if (gcData && gcData->hWnd) {
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13489
	    int newClip;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13490
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13491
	    newClip = (aBool == true) ? TRUE : FALSE;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13492
	    if (newClip != gcData->clipByChildren) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13493
		/* set/clear clip by children */
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13494
		gcData->clipByChildren = newClip;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13495
		FLUSH_CACHED_DC(gcData);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13496
	    }
1685
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
 13497
	} else {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13498
	    DPRINTF(("clipping by child failed - invalid window\n" ));
1685
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
 13499
	}
9a37c81aef2d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1676
diff changeset
 13500
    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13501
%}.
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 13502
    ^ self
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13503
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13504
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 13505
setClipX:clipX y:clipY width:clipWidth height:clipHeight in:ignoredDrawableId gc:aGCId
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13506
    "clip to a rectangle"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13507
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13508
"
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13509
      p--w---
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13510
      |     |
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13511
      h     |  the clipping rectangle
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13512
      |     |
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13513
      -------
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13514
	  where p = ( clipX, clipY ), w = clipWidth, h = clipHeight
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13515
"
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13516
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13517
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13518
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13519
    if (  __isExternalAddress(aGCId)
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13520
       && __bothSmallInteger(clipX, clipY)
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 13521
       && __bothSmallInteger(clipWidth, clipHeight) ) {
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 13522
	struct gcData *gcData = _GCDATA(aGCId);
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13523
	int cX, cY, cW, cH;
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13524
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13525
	cX = __intVal(clipX);
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13526
	cY = __intVal(clipY);
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13527
	cW = __intVal(clipWidth);
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13528
	cH = __intVal(clipHeight);
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13529
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13530
	if ((gcData->clipping != TRUE)
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13531
	 || (cX != gcData->clipX)
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13532
	 || (cY != gcData->clipY)
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13533
	 || (cW != gcData->clipW)
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13534
	 || (cH != gcData->clipH)) {
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13535
	    gcData->clipping = TRUE;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13536
	    gcData->clipX = cX;
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13537
	    gcData->clipY = cY;
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13538
	    gcData->clipW = cW;
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13539
	    gcData->clipH = cH;
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13540
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13541
#ifdef CACHE_LAST_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13542
	    /*
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13543
	     * must update current cached DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13544
	     */
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13545
	    if (lastGcData == gcData) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13546
		HRGN region = CreateRectRgn(cX, cY, cX + cW, cY + cH);
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13547
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13548
		if (region == NULL ) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13549
		    console_fprintf(stderr, "WinWorkstat [warning]: clipping region creation failed\n");
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13550
		    FLUSH_CACHED_DC(gcData);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13551
		} else {
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13552
		    if (SelectClipRgn(gcData->_hDC, region) == ERROR ) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13553
			console_fprintf(stderr, "WinWorkstat [warning]: select clipping region failed\n");
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13554
			FLUSH_CACHED_DC(gcData);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13555
		    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13556
		    _DeleteObject(region, __LINE__);
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13557
		}
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13558
	    }
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13559
#endif
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13560
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13561
	RETURN (self);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13562
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13563
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13564
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13565
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13566
setDashes:dashList dashOffset:offset in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13567
    "set line attributes"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13568
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13569
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13570
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13571
    if (__isExternalAddress(aGCId)) {
2677
e2b213c76ec8 preps for WM_MOUSEWHEEL;
Claus Gittinger <cg@exept.de>
parents: 2672
diff changeset
 13572
	PRINTF(("WinWorkstat [warning]: dashes not (yet) implemented\n"));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13573
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13574
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13575
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13576
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13577
setFont:aFontId in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13578
    "set font to be drawn in"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13579
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13580
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13581
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13582
    if (__isExternalAddress(aGCId)
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13583
     && __isExternalAddress(aFontId))
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13584
    {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13585
	struct gcData *gcData = _GCDATA(aGCId);
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13586
	HGDIOBJ prevFont, hFont;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13587
	TEXTMETRIC tmet;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13588
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13589
	hFont = _HGDIOBJVal(aFontId);
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13590
	if (gcData->hFont != hFont) {
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13591
	    gcData->hFont = hFont;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13592
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13593
#ifdef CACHE_LAST_TMP_FONT
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13594
	    if (__tmpDC_hfont != hFont) {
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13595
		prevFont = SelectObject(__tmpDC, hFont);
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13596
		if (__tmpDC_prev_hfont == NULL) {
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13597
		    __tmpDC_prev_hfont = prevFont;
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13598
		}
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13599
		__tmpDC_hfont = hFont;
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13600
	    }
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13601
#else
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13602
	    prevFont = SelectObject(__tmpDC, hFont);
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13603
#endif
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13604
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13605
	    GetTextMetrics(__tmpDC, &tmet);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13606
	    gcData->fontAscent = tmet.tmAscent;
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13607
#ifdef SUPERDEBUG
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13608
	    if (__debug__) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13609
		char buf[80];
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13610
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13611
		GetTextFace(__tmpDC, 80, buf);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13612
		PRINTF(("setFont: %x %s\n", hFont, buf));
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13613
	    }
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13614
#endif
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13615
#ifndef CACHE_LAST_TMP_FONT
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13616
	    SelectObject(__tmpDC, prevFont);
2696
fca447dc99a8 cache the last tmpDC font (req'd for widthOfString query)
Claus Gittinger <cg@exept.de>
parents: 2695
diff changeset
 13617
#endif
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13618
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13619
#ifdef CACHE_LAST_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13620
	    /*
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13621
	     * must update current cached DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13622
	     */
2623
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13623
	    if (lastGcData == gcData) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13624
		prevFont = SelectObject(gcData->_hDC, hFont);
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13625
		if (! gcData->save_hFont) {
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13626
		    gcData->save_hFont = prevFont;
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13627
		}
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13628
	    }
f35bd0833a59 more tuning (more caching)
Claus Gittinger <cg@exept.de>
parents: 2620
diff changeset
 13629
#endif
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13630
	    RETURN ( self );
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13631
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13632
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13633
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13634
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13635
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13636
setForeground:fgColorIndex background:bgColorIndex in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13637
    "set foreground and background colors to be drawn with"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13638
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13639
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13640
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13641
    if (__isExternalAddress(aGCId)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13642
	struct gcData *gcData = _GCDATA(aGCId);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13643
	COLORREF fg, bg, oldFg, oldBg;
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13644
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13645
	fg = (COLORREF)st2RGB(__intVal(fgColorIndex),gcData);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13646
	bg = (COLORREF)st2RGB(__intVal(bgColorIndex),gcData);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13647
	oldFg = gcData->fgColor;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13648
	oldBg = gcData->bgColor;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13649
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13650
	if ((fg != oldFg) || (bg != oldBg)) {
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13651
	    gcData->fgColor = fg;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13652
	    gcData->bgColor = bg;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13653
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13654
#ifdef CACHE_LAST_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13655
	    /*
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13656
	     * must update or flush current cached DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13657
	     */
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13658
	    if (lastGcData == gcData) {
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13659
		/* Pen only depends upon fg-color */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13660
		if (fg != oldFg) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13661
		    SetTextColor(gcData->_hDC, fg);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13662
		    FLUSH_CACHED_PEN(gcData);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13663
		}
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13664
		if (bg != oldBg) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13665
		    SetBkColor(gcData->_hDC, bg);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13666
		}
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 13667
		FLUSH_CACHED_BRUSH(gcData);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13668
	    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13669
#endif
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 13670
	    CPRINTF(("setForeground: %x background: %x\n", gcData->fgColor, gcData->bgColor));
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13671
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13672
	RETURN (self);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13673
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13674
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13675
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13676
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13677
setForeground:fgColorIndex background:bgColorIndex mask:aBitmapId in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13678
    "set foreground and background colors to be drawn with using mask or
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13679
     solid (if aBitmapId is nil)"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13680
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13681
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13682
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13683
    if (__isExternalAddress(aGCId)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13684
	struct gcData *gcData = _GCDATA(aGCId);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13685
	COLORREF fg, bg, oldFg, oldBg;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13686
	HBITMAP m, oldM;
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13687
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13688
	fg = (COLORREF)st2RGB(__intVal(fgColorIndex),gcData);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13689
	bg = (COLORREF)st2RGB(__intVal(bgColorIndex),gcData);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13690
	if (__isExternalAddress(aBitmapId))
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13691
	    m = _HBITMAPVAL(aBitmapId);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13692
	else
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13693
	    m = 0;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13694
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13695
	oldFg = gcData->fgColor;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13696
	oldBg = gcData->bgColor;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13697
	oldM = gcData->hMask;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13698
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13699
	if ((oldFg != fg) || (oldBg != bg) || (oldM != m)) {
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13700
	    gcData->fgColor = fg;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13701
	    gcData->bgColor = bg;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13702
	    gcData->hMask = m;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13703
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13704
#ifdef CACHE_LAST_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13705
	    /*
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13706
	     * must update or flush current cached DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13707
	     */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13708
	    if (lastGcData == gcData) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13709
		if (oldM == m) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13710
		    /*
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13711
		     * only fg/bg changed
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13712
		     */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13713
		    /* Pen only depends upon fg-color */
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13714
		    if (fg != oldFg) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13715
			SetTextColor(gcData->_hDC, fg);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13716
			FLUSH_CACHED_PEN(gcData);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13717
		    }
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13718
		    if (bg != oldBg) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13719
			SetBkColor(gcData->_hDC, bg);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13720
		    }
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 13721
		    FLUSH_CACHED_BRUSH(gcData);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13722
		} else {
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13723
		    _releaseDC(gcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13724
		}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13725
	    }
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13726
#endif
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 13727
	    CPRINTF(("setForeground: %x background: %x mask: %x\n", gcData->fgColor, gcData->bgColor,gcData->hMask));
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13728
	}
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13729
	RETURN (self);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13730
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13731
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13732
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13733
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13734
setForeground:fgColorIndex background:bgColorIndex mask:aBitmapId lineWidth:aLineWidth in:aGCId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13735
    "set foreground and background colors to be drawn with using mask or
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13736
     solid (if aBitmapId is nil); also set lineWidth"
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13737
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13738
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13739
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13740
    if (__isExternalAddress(aGCId)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13741
	struct gcData *gcData = _GCDATA(aGCId);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13742
	COLORREF fg, bg, oldFg, oldBg;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13743
	HBITMAP m, oldM;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13744
	int lw, oldLw;
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13745
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13746
	fg = (COLORREF)st2RGB(__intVal(fgColorIndex),gcData);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13747
	bg = (COLORREF)st2RGB(__intVal(bgColorIndex),gcData);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13748
	if (__isExternalAddress(aBitmapId))
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13749
	    m = _HBITMAPVAL(aBitmapId);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 13750
	else
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13751
	    m = 0;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13752
	lw = __intVal(aLineWidth);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13753
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13754
	oldFg = gcData->fgColor;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13755
	oldBg = gcData->bgColor;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13756
	oldLw = gcData->lineWidth;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13757
	oldM = gcData->hMask;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13758
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13759
	if ((oldFg != fg) || (oldBg != bg)
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13760
	 || (oldLw != lw) || (oldM != m)) {
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13761
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13762
	    gcData->fgColor = fg;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13763
	    gcData->bgColor = bg;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13764
	    gcData->lineWidth = lw;
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13765
	    gcData->hMask = m;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13766
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13767
#ifdef CACHE_LAST_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13768
	    /*
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13769
	     * must update or flush current cached DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13770
	     */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13771
	    if (lastGcData == gcData) {
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13772
		if ((oldM == m) && (oldLw == lw)) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13773
		    /*
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13774
		     * only fg/bg changed
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13775
		     */
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13776
		    /* Pen only depends upon fg-color */
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13777
		    if (fg != oldFg) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13778
			SetTextColor(gcData->_hDC, fg);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13779
			FLUSH_CACHED_PEN(gcData);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13780
		    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13781
		    if (bg != oldBg) {
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13782
			SetBkColor(gcData->_hDC, bg);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13783
		    }
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13784
		    FLUSH_CACHED_BRUSH(gcData);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13785
		} else {
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13786
		    _releaseDC(gcData);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13787
		}
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13788
	    }
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13789
#endif
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13790
	    CPRINTF(("setForeground: %x background: %x mask: %x linewidth: %d\n",
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13791
			gcData->fgColor, gcData->bgColor,
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13792
			gcData->hMask, gcData->lineWidth));
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13793
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13794
	RETURN (self);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13795
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13796
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13797
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13798
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13799
setForeground:fgColorIndex in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13800
    "set foreground color to be drawn with"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13801
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13802
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13803
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13804
    HDC hDC;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13805
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13806
    if (__isExternalAddress(aGCId)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13807
	struct gcData *gcData = _GCDATA(aGCId);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13808
	COLORREF fg;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13809
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13810
	fg = (COLORREF)st2RGB(__intVal(fgColorIndex),gcData);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13811
	if (fg != gcData->fgColor) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13812
	    gcData->fgColor = fg;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13813
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13814
#ifdef CACHE_LAST_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13815
	    /*
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13816
	     * must update or flush current cached DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13817
	     */
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13818
	    if (lastGcData == gcData) {
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13819
		/* Pen depends upon fg-color */
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13820
		SetTextColor(gcData->_hDC, fg);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13821
		FLUSH_CACHED_PEN(gcData);
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 13822
		FLUSH_CACHED_BRUSH(gcData);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13823
	    }
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13824
#endif
2643
737ca05060bb handle iconification/deiconification (bad origin)
Claus Gittinger <cg@exept.de>
parents: 2642
diff changeset
 13825
	    CPRINTF(("setForeground: %x\n", gcData->fgColor));
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13826
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13827
	RETURN (self);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13828
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13829
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13830
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13831
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13832
setFunction:aFunctionSymbol in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13833
    "set alu function to be drawn with"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13834
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13835
%{  /* NOCONTEXT */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13836
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13837
    if (__isExternalAddress(aGCId)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13838
	struct gcData *gcData = _GCDATA(aGCId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13839
	int fun = -1;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13840
	int bfun = -1;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13841
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13842
	if (aFunctionSymbol == @symbol(copy)) {
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13843
	    fun = R2_COPYPEN;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13844
	    bfun = BITBLT_COPY;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13845
	} else if (aFunctionSymbol == @symbol(copyInverted)) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13846
	    fun = R2_NOTCOPYPEN;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13847
	    bfun = BITBLT_COPYINVERTED;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13848
	} else if (aFunctionSymbol == @symbol(xor)) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13849
	    fun = R2_XORPEN;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13850
	    bfun = BITBLT_XOR;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13851
	} else if (aFunctionSymbol == @symbol(and)) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13852
	    fun = R2_MASKPEN;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13853
	    bfun = BITBLT_AND;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13854
	} else if (aFunctionSymbol == @symbol(or)) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13855
	    fun = R2_MERGEPEN;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13856
	    bfun = BITBLT_OR;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13857
	}
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13858
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13859
	if (fun != -1) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13860
#if 0
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13861
	    console_printf("set func to");
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13862
	    switch (bfun) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13863
		case BITBLT_COPY:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13864
		    console_printf("BITBLT_COPY\n");
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13865
		    break;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13866
		case BITBLT_COPYINVERTED:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13867
		    console_printf("BITBLT_COPYINVERTED\n");
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13868
		    break;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13869
		case BITBLT_XOR:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13870
		    console_printf("BITBLT_XOR\n");
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13871
		    break;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13872
		case BITBLT_AND:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13873
		    console_printf("BITBLT_AND\n");
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13874
		    break;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13875
		case BITBLT_OR:
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13876
		    console_printf("BITBLT_OR\n");
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13877
		    break;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13878
	    }
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13879
#endif
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13880
	} else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13881
	    INFOFPRINTF( (stderr, "WinWorkstat [warning]: unsuported Rasterfunction\n") );
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13882
	    fun = R2_COPYPEN;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13883
	    bfun = BITBLT_COPY;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13884
	}
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13885
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13886
	if ((fun != gcData->rop2)
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13887
	 || (bfun != gcData->bitbltrop2)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13888
	    gcData->rop2 = fun;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13889
	    gcData->bitbltrop2 = bfun;
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13890
#ifdef CACHE_LAST_DC
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13891
	    /*
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13892
	     * must update current cached DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 13893
	     */
2424
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13894
	    if (gcData == lastGcData) {
03e8723c1bd5 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2420
diff changeset
 13895
		SetROP2(gcData->_hDC, fun);
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13896
	    }
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 13897
#endif
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13898
	}
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13899
    } else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 13900
	INFOFPRINTF((stderr, "WinWorkstation [warning]: Rasterfunction no GC\n"));
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13901
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13902
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13903
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13904
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13905
setGraphicsExposures:aBoolean in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13906
    "set or clear the graphics exposures flag"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13907
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13908
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13909
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13910
setLineWidth:aNumber style:lineStyle cap:capStyle join:joinStyle in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13911
    "set line attributes"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13912
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13913
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13914
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13915
    HDC hDC;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13916
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13917
    if (__isExternalAddress(aGCId)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13918
     && __isSmallInteger(aNumber)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13919
	struct gcData *gcData = _GCDATA(aGCId);
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13920
	int style;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13921
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13922
	gcData->lineWidth = __intVal(aNumber);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13923
	if (lineStyle == @symbol(solid)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13924
	    style = PS_SOLID;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13925
	} else if (lineStyle == @symbol(dashed)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13926
	    style= PS_DASH;
2348
9a229f591de7 do early vieBackground fill (in event thread);
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
 13927
	} else if (lineStyle == @symbol(dotted)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13928
	    style= PS_DOT;
2348
9a229f591de7 do early vieBackground fill (in event thread);
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
 13929
	} else if (lineStyle == @symbol(dashDot)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13930
	    style= PS_DASHDOT;
2348
9a229f591de7 do early vieBackground fill (in event thread);
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
 13931
	} else if (lineStyle == @symbol(dashDotDot)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13932
	    style= PS_DASHDOTDOT;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13933
	} else
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13934
	    style= PS_SOLID;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13935
	gcData->lStyle &= ~PS_STYLE_MASK;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13936
	gcData->lStyle |= style;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13937
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13938
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13939
	if (capStyle == @symbol(round)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13940
	    style = PS_ENDCAP_ROUND;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13941
	} else if (capStyle == @symbol(square)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13942
	    style = PS_ENDCAP_SQUARE;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13943
	} else if (capStyle == @symbol(flat)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13944
	    style = PS_ENDCAP_FLAT;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13945
	} else
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13946
	    style = PS_ENDCAP_FLAT;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13947
	gcData->lStyle &= ~PS_ENDCAP_MASK;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13948
	gcData->lStyle |= style;
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 13949
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13950
	if (joinStyle == @symbol(bevel)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13951
	    style = PS_JOIN_BEVEL;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13952
	} else if (joinStyle == @symbol(miter)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13953
	    style = PS_JOIN_MITER;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13954
	} else if (joinStyle == @symbol(round)) {
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13955
	    style = PS_JOIN_ROUND;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13956
	} else
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13957
	    style = PS_JOIN_MITER;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13958
	gcData->lStyle &= ~PS_JOIN_MASK;
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13959
	gcData->lStyle |= style;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13960
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13961
	FLUSH_CACHED_DC(gcData);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13962
	RETURN (self);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13963
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 13964
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13965
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13966
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13967
setMaskOriginX:orgX y:orgY in:aGCId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13968
    "set the mask origin"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 13969
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13970
%{  /* NOCONTEXT */
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13971
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13972
    if (__isExternalAddress(aGCId)
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13973
     && __bothSmallInteger(orgX,orgY)) {
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13974
	struct gcData *gcData = _GCDATA(aGCId);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13975
	int oX, oY;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13976
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13977
	oX = __intVal(orgX);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13978
	oY = __intVal(orgY);
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13979
	if ((oX != gcData->maskOrgX)
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13980
	 || (oY != gcData->maskOrgY)) {
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13981
	    gcData->maskOrgX = __intVal(orgX);
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13982
	    gcData->maskOrgY = __intVal(orgY);;
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 13983
	    FLUSH_CACHED_DC(gcData);
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13984
	}
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 13985
	RETURN (self);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13986
    }
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13987
%}
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13988
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13989
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13990
setPixmapMask:aPixmapId in:aGCId
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13991
    "set or clear the drawing mask - a pixmap mask providing full color"
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13992
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 13993
%{  /* NOCONTEXT */
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 13994
    if (__isExternalAddress(aGCId)) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13995
	struct gcData *gcData = _GCDATA(aGCId);
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13996
	HBITMAP oldM;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13997
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 13998
	oldM = gcData->hMask;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 13999
	if (__isExternalAddress(aPixmapId))
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 14000
	    gcData->hMask = _HBITMAPVAL(aPixmapId);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14001
	else
2327
a8ae776721c8 fixed maskOrigin setting
Claus Gittinger <cg@exept.de>
parents: 2325
diff changeset
 14002
	    gcData->hMask = 0;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14003
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 14004
	if (oldM != gcData->hMask) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 14005
	    FLUSH_CACHED_DC(gcData);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 14006
	    DPRINTF(("PixmapMasks set to %x\n",gcData->hMask));
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 14007
	}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14008
	RETURN (self);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14009
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14010
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14011
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14012
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14013
!WinWorkstation methodsFor:'initialize / release'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14014
4916
10e7ece60c50 Handle numeric keypad keys with NumLock pressed
Stefan Vogel <sv@exept.de>
parents: 4906
diff changeset
 14015
closeConnection
2369
72986787c2b0 preparations for DC, PEN & BRUSH caching (does not work yet);
Claus Gittinger <cg@exept.de>
parents: 2368
diff changeset
 14016
    "close down the connection to the display"
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14017
4916
10e7ece60c50 Handle numeric keypad keys with NumLock pressed
Stefan Vogel <sv@exept.de>
parents: 4906
diff changeset
 14018
"/    Processor disableSemaphore:eventSema
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14019
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14020
3832
85b5220f7ade *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3828
diff changeset
 14021
initializeDefaultKeyboardMappingsIn:aKeyboardMap
4916
10e7ece60c50 Handle numeric keypad keys with NumLock pressed
Stefan Vogel <sv@exept.de>
parents: 4906
diff changeset
 14022
10e7ece60c50 Handle numeric keypad keys with NumLock pressed
Stefan Vogel <sv@exept.de>
parents: 4906
diff changeset
 14023
    #(
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14024
	Copy            Ctrlc           "copy selection to buffer"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14025
	Cut             Ctrlx           "cut selection into buffer"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14026
	Paste           Ctrlv           "paste buffer or external selection"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14027
	UserAbort       CtrlCancel      "Abort window process"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14028
	UserInterrupt   Pause           "interrupt window process"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14029
	$0              KeyPad0         "NumLocked numeric keypad keys..."
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14030
	$1              KeyPad1
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14031
	$2              KeyPad2
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14032
	$3              KeyPad3
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14033
	$4              KeyPad4
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14034
	$5              KeyPad5
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14035
	$6              KeyPad6
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14036
	$7              KeyPad7
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14037
	$8              KeyPad8
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14038
	$9              KeyPad9
4916
10e7ece60c50 Handle numeric keypad keys with NumLock pressed
Stefan Vogel <sv@exept.de>
parents: 4906
diff changeset
 14039
    ) pairWiseDo:[:eachMapping :eachKey|
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14040
	    aKeyboardMap
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14041
		bindValue:eachMapping to:eachKey.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 14042
	].
5108
5c92e9b267db *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5088
diff changeset
 14043
5c92e9b267db *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5088
diff changeset
 14044
    "
5c92e9b267db *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 5088
diff changeset
 14045
     Screen default initializeDefaultKeyboardMappingsIn:Screen default keyboardMap
4916
10e7ece60c50 Handle numeric keypad keys with NumLock pressed
Stefan Vogel <sv@exept.de>
parents: 4906
diff changeset
 14046
    "
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 14047
!
3832
85b5220f7ade *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3828
diff changeset
 14048
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14049
initializeDefaultValues
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 14050
    focusMode := #activeWindow.
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 14051
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
 14052
"/    self activateOnClick:true.
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
 14053
"/    self ignoreButtonPressOnActivate:false.
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
 14054
"/    self rightButtonIsLowerWindow:true.
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
 14055
"/    self shiftedLeftButtonIsLowerWindow:true.
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
 14056
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14057
    buttonTranslation := ButtonTranslation.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14058
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14059
    self initializeModifierMappings
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14060
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14061
2695
5d9794d67a5a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2688
diff changeset
 14062
initializeDevice
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14063
%{
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14064
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14065
    int scr;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14066
    int maxRGBDepth;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14067
    int rgbRedMask, rgbGreenMask, rgbBlueMask;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14068
    int nvi, i;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14069
    char *type, *nm;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14070
    int dummy;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14071
    int mask, shift, nBits;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14072
    HDC _rootDC;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14073
    OBJ id;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14074
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14075
    if (firstInstance) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14076
	OSVERSIONINFO osvi;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14077
	WNDCLASS wc;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14078
	firstInstance = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14079
	DPRINTF(("first create - registerClass\n"));
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14080
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14081
	memset(&osvi, 0, sizeof(OSVERSIONINFO));
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14082
	osvi.dwOSVersionInfoSize = sizeof (OSVERSIONINFO);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14083
	GetVersionEx (&osvi);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14084
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14085
	__INST(isWin95) = __INST(isWinXP) = false;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14086
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14087
	switch (osvi.dwMajorVersion) {
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14088
	    default:
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14089
		__isWinNT = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14090
		__isWinXP = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14091
		__isWinVista = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14092
		__INST(isWinXP) = true;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14093
		break;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14094
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14095
	    case 6:
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14096
		// vista, longhorn
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14097
		__isWinNT_NEW_BEHAVIOUR = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14098
		__isWinNT = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14099
		__isWinXP = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14100
		__isWinVista = 1;
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14101
		__INST(isWinXP) = true;
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14102
		break;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14103
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14104
	    case 5:
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14105
		// 2k, xp and 2003
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14106
		__isWinNT_NEW_BEHAVIOUR = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14107
		__isWinNT = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14108
		if (osvi.dwMinorVersion >= 1) {
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14109
		    if (osvi.dwMinorVersion >= 2) {
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14110
			// windows server 2003
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14111
		    }
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14112
		    __INST(isWinXP) = true;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14113
		    __isWinXP = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14114
		} else {
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14115
		    __isWin2k = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14116
		}
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14117
		break;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14118
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14119
	    case 4:
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14120
		// nt4.0
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14121
		__isWinNT_NEW_BEHAVIOUR = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14122
	    case 3:
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14123
		// nt3.51
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14124
		__isWinNT = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14125
		break;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14126
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14127
	    // actually: no longer supported
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14128
	    case 2:
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14129
	    case 1:
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14130
	    case 0:
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14131
		__isWin95 = 1;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14132
		__INST(isWin95) = true;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14133
		break;
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14134
	}
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14135
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 14136
	if (! __isWin95 ) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14137
	    NUM_PEN_CACHED = NUM_PEN_CACHED_NT;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14138
	    NUM_BRUSH_CACHED = NUM_BRUSH_CACHED_NT;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14139
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14140
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14141
	/*
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14142
	 * register class: ST/X
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14143
	 */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14144
	wc.style = 0
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14145
		   /* | CS_OWNDC */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14146
		   /* | CS_HREDRAW */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14147
		   /* | CS_VREDRAW */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14148
		  | CS_DBLCLKS;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14149
	wc.lpfnWndProc = (WNDPROC) MainWndProc;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14150
	wc.cbClsExtra = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14151
	wc.cbWndExtra = N_WINDOW_PRIVATE;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14152
	wc.hInstance = (HANDLE) __getHInstance();
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14153
	wc.hIcon = NULL;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14154
	wc.hCursor = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14155
	wc.hbrBackground = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14156
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14157
	wc.lpszMenuName =  NULL;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14158
	wc.lpszClassName = wapp_name;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14159
	if (! RegisterClassW(&wc)) {
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14160
	    DPRINTF(("RegisterClassW failed\n"));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14161
	}
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14162
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14163
	/*
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14164
	 * register class: ST/X:Root
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14165
	 */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14166
	wc.style = 0;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14167
	wc.lpfnWndProc = (WNDPROC) MainWndProc;
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14168
	wc.cbClsExtra = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14169
	wc.cbWndExtra = N_WINDOW_PRIVATE;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14170
	wc.hInstance = (HANDLE) __getHInstance();
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14171
	wc.hIcon = NULL;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14172
	wc.hCursor = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14173
	wc.hbrBackground = GetStockObject(HOLLOW_BRUSH);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14174
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14175
	wc.lpszMenuName =  NULL;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14176
	wc.lpszClassName = wapp_nameRoot;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14177
	if (! RegisterClassW(&wc)) {
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14178
	    DPRINTF(("RegisterClassW failed\n"));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14179
	}
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14180
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14181
	/*
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14182
	 * register class: ST/X:Popup
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14183
	 */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14184
	wc.style = CS_SAVEBITS;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14185
	if (__isWinXP) {
3714
84947d7fb23d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3713
diff changeset
 14186
#ifndef CS_DROPSHADOW
84947d7fb23d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3713
diff changeset
 14187
# define CS_DROPSHADOW    0x020000
84947d7fb23d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3713
diff changeset
 14188
#endif
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14189
	    wc.style |= CS_DROPSHADOW;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14190
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14191
	wc.lpfnWndProc = (WNDPROC) MainWndProc;;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14192
	wc.cbClsExtra = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14193
	wc.cbWndExtra = N_WINDOW_PRIVATE;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14194
	wc.hInstance = (HANDLE) __getHInstance();
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14195
	wc.hIcon = NULL;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14196
	wc.hCursor = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14197
	wc.hbrBackground = GetStockObject(HOLLOW_BRUSH);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14198
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14199
	wc.lpszMenuName =  NULL;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14200
	wc.lpszClassName = wapp_namePopup;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14201
	if (! RegisterClassW(&wc)) {
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14202
	    DPRINTF(("RegisterClassW failed\n"));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14203
	}
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14204
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14205
	/*
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14206
	 * register class: ST/X:Dialog
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14207
	 */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14208
	wc.style = CS_SAVEBITS;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14209
	wc.lpfnWndProc = (WNDPROC) MainWndProc;;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14210
	wc.cbClsExtra = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14211
	wc.cbWndExtra = N_WINDOW_PRIVATE;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14212
	wc.hInstance = (HANDLE) __getHInstance();
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14213
	wc.hIcon = NULL;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14214
	wc.hCursor = 0;
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14215
	wc.hbrBackground = GetStockObject(HOLLOW_BRUSH);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14216
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14217
	wc.lpszMenuName =  NULL;
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14218
	wc.lpszClassName = wapp_nameDialog;
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14219
	if (! RegisterClassW(&wc)) {
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14220
	    DPRINTF(("RegisterClassW failed\n"));
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 14221
	}
5072
fcd3884582e0 unicode stuff
Claus Gittinger <cg@exept.de>
parents: 5067
diff changeset
 14222
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14223
	/*
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14224
	 * generate my events
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14225
	 */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14226
	hDispatchThreadRunningEvent = CreateEvent(
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14227
				NULL,            /* no security attributes */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14228
				FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14229
				FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14230
				"DispatchThreadRunning"); /* name of event */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14231
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14232
	if (hDispatchThreadRunningEvent == NULL) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14233
	    console_fprintf(stderr, "WinWorkstation [fatal]: CreateEvent-0 failed\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14234
	    exit(1);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14235
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14236
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14237
	hNeverTriggered = CreateEvent(
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14238
				NULL,            /* no security attributes */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14239
				FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14240
				FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14241
				"Never");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14242
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14243
	if (hNeverTriggered == NULL) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14244
	    console_fprintf(stderr, "WinWorkstation [fatal]: CreateEvent-1 failed\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14245
	    exit(1);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14246
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14247
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14248
	hCreateEvent = CreateEvent(
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14249
				NULL,            /* no security attributes */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14250
				FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14251
				FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14252
				"CreateEvents"); /* name of event */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14253
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14254
	if (hCreateEvent == NULL) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14255
	    console_fprintf(stderr, "WinWorkstation [fatal]: CreateEvent-2 failed\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14256
	    exit(1);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14257
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14258
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14259
	hInputEvent = CreateEvent(
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14260
				NULL,            /* no security attributes */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14261
				FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14262
				FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14263
				"InputEvents");  /* name of event */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14264
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14265
	if (hInputEvent == NULL) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14266
	    console_fprintf(stderr, "WinWorkstation [fatal]: CreateEvent-3 failed\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14267
	    exit(1);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14268
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14269
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14270
	if (hEventsMutex) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14271
	    console_fprintf(stderr, "WinWorkstation [fatal]: hEventsMutex already created\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14272
	    exit(1);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14273
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14274
	hEventsMutex = CreateMutex(
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14275
				NULL,            /* no security attributes */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14276
				FALSE,           /* initially not owned */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14277
				"EventsMutex");  /* name of mutex */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14278
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14279
	if (! hEventsMutex) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14280
	    console_fprintf(stderr, "WinWorkstation [fatal]: hEventsMutex failed\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14281
	    exit(1);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14282
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14283
	DuplicateHandle(GetCurrentProcess(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14284
			hEventsMutex,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14285
			GetCurrentProcess(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14286
			&hEventsMutex,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14287
			DUPLICATE_SAME_ACCESS,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14288
			FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14289
			DUPLICATE_SAME_ACCESS);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14290
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
 14291
#ifdef USE_PAINT_MUTEX
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14292
	hPaintMutex = CreateMutex(
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14293
				NULL,           /* no security attributes */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14294
				FALSE,          /* initially not owned */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14295
				"PaintMutex");  /* name of mutex */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14296
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14297
	if (hPaintMutex == NULL) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14298
	    console_fprintf(stderr, "WinWorkstation [fatal]: CreateMutex(PaintMutex) failed\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14299
	    exit(1);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14300
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14301
	DuplicateHandle(GetCurrentProcess(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14302
			hPaintMutex,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14303
			GetCurrentProcess(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14304
			&hPaintMutex,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14305
			DUPLICATE_SAME_ACCESS,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14306
			FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14307
			DUPLICATE_SAME_ACCESS);
2728
911b6cf212c0 handle 0-return from GetRegionData
Claus Gittinger <cg@exept.de>
parents: 2724
diff changeset
 14308
#endif
3961
e2f3d8b87361 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3958
diff changeset
 14309
#ifdef USE_DRAW_MUTEX
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14310
	hDrawMutex = CreateMutex(
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14311
				NULL,           /* no security attributes */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14312
				FALSE,          /* initially not owned */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14313
				"DrawMutex");   /* name of mutex */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14314
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14315
	if (hDrawMutex == NULL) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14316
	    console_fprintf(stderr, "WinWorkstation [fatal]: CreateMutex(DrawMutex) failed\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14317
	    exit(1);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14318
	}
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14319
	DuplicateHandle(GetCurrentProcess(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14320
			hDrawMutex,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14321
			GetCurrentProcess(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14322
			&hDrawMutex,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14323
			DUPLICATE_SAME_ACCESS,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14324
			FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14325
			DUPLICATE_SAME_ACCESS);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14326
#endif
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14327
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14328
	_masterThreadId = GetCurrentThreadId();
2336
e7a3b0ec8d52 keypad key-events
Claus Gittinger <cg@exept.de>
parents: 2333
diff changeset
 14329
#ifndef WIN32THREADS
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14330
	DuplicateHandle(GetCurrentProcess(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14331
			GetCurrentThread(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14332
			GetCurrentProcess(),
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14333
			&_masterThread,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14334
			DUPLICATE_SAME_ACCESS,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14335
			FALSE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14336
			DUPLICATE_SAME_ACCESS);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14337
#endif
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14338
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14339
	initEventqueue();
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14340
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14341
	/*
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14342
	 * start the event dispatcher thread and wait for it to
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14343
	 * be ready
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14344
	 */
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14345
	CreateThread((LPSECURITY_ATTRIBUTES)0,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14346
		     EVENT_THREAD_STACKSIZE,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14347
		     (LPTHREAD_START_ROUTINE)dispatchThread,
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14348
		     0, 0, &_dispatchThreadId);
4713
199dbf1a1406 changed #initializeDevice - call CreateThread instead of beginthreadNT
Stefan Vogel <sv@exept.de>
parents: 4712
diff changeset
 14349
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
 14350
#ifdef STARTUP_DISPATCHTHREAD_DEBUG
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14351
	console_fprintf(stderr, "WinWorkstation [info]: dispatchThreadId=%x\n", _dispatchThreadId);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14352
#endif
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14353
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14354
	if (WaitForSingleObject(hDispatchThreadRunningEvent, 5000L) != WAIT_OBJECT_0) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14355
	    console_fprintf(stderr, "WinWorkstation [error]: oops - timeout waiting for eventThread to start\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14356
	}
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
 14357
#ifdef STARTUP_DISPATCHTHREAD_DEBUG
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14358
	console_fprintf(stderr, "WinWorkstation [info]: got ThreadRunningEvent\n");
4672
a26b308cd0c5 work around strange timing in dispatchEvent thread startup.
ca
parents: 4610
diff changeset
 14359
#endif
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14360
    }
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 14361
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14362
#if 0
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14363
    __rootDesk = OpenDesktop ("Desktop0", 0, FALSE, GENERIC_ALL);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14364
    if (!__rootDesk) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14365
	PRINTF(("OpenDesktop fail\n"));
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14366
	__rootDesk = CreateDesktop ("Desktop0", NULL, NULL, 0, DESKTOP_WRITEOBJECTS, NULL);
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14367
	if (!__rootDesk) {
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14368
	    PRINTF(("CreateDesktop fail\n"));
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14369
	}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14370
    }
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14371
#endif
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 14372
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14373
    __rootWin = GetDesktopWindow();
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14374
    __PROTECT__(self);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14375
    id = __MKOBJ(__rootWin);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14376
    __UNPROTECT__(self);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14377
    __INST(rootWin) = id; __STORE(self, id);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14378
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14379
    _rootDC = __rootDC = CreateDC("DISPLAY", NULL, NULL, NULL);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14380
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14381
    __tmpDC = CreateCompatibleDC(_rootDC);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 14382
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 14383
    __nullPen = GetStockObject(NULL_PEN);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 14384
    __blackPen = GetStockObject(BLACK_PEN);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 14385
    __whitePen = GetStockObject(WHITE_PEN);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 14386
    __blackBrush = GetStockObject(BLACK_BRUSH);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 14387
    __whiteBrush = GetStockObject(WHITE_BRUSH);
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 14388
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14389
    __PROTECT__(self);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14390
    id = __MKOBJ(_rootDC);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14391
    __UNPROTECT__(self);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14392
    __INST(rootDC) = id; __STORE(self, id);
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14393
%}.
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14394
!
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14395
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14396
initializeEventBuffer
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14397
    |sz|
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14398
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14399
%{
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14400
    sz = __MKSMALLINT(sizeof(struct queuedEvent) + 100);
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14401
%}.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14402
    eventBuffer isNil ifTrue:[
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14403
	eventBuffer := ByteArray new:sz.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14404
    ].
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14405
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14406
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14407
initializeFor:aDisplayName
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14408
    "initialize the receiver for a connection to the display;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14409
     the argument, aDisplayName is ignored under Win32.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14410
     (who knows - it may be used in the future to support multiple
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14411
      windows displays ...)"
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14412
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14413
    displayId notNil ifTrue:[
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 14414
	"/ already connected - trying to trick me ?
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 14415
	^ self
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14416
    ].
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14417
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14418
    displayId := self primInitializeFor:aDisplayName.
3632
a25578a48a6c Raise signal on device open error.
Stefan Vogel <sv@exept.de>
parents: 3589
diff changeset
 14419
    displayId isNil ifTrue:[
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 14420
	self class deviceOpenErrorSignal raiseWith:aDisplayName
3632
a25578a48a6c Raise signal on device open error.
Stefan Vogel <sv@exept.de>
parents: 3589
diff changeset
 14421
    ].
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14422
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14423
    dispatching := false.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14424
    isSlow := false.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14425
    shiftDown := false.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14426
    ctrlDown := false.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14427
    metaDown := false.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14428
    altDown := false.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14429
    motionEventCompression := true.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14430
    buttonsPressed := 0.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14431
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14432
    self initializeScreenProperties.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14433
    self initializeDevice.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14434
    self initializeVariableScreenProperties.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14435
    self initializeVariableSettingsProperties.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14436
    self initializeDeviceResourceTables.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14437
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14438
    self initializeDefaultValues.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14439
    self initializeEventBuffer.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14440
    self initializeSpecialFlags.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14441
    self initializeKeyboardMap.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14442
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14443
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14444
initializeModifierMappings
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14445
    shiftModifiers := #(#'Shift_L' #'Shift_R' #'Shift').
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14446
    ctrlModifiers := #(#'Ctrl_L' #'Ctrl_R' #'Ctrl').
4946
d4c1424b0431 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4941
diff changeset
 14447
    metaModifiers := #(#'Alt_L' #'Alt' #'Menu').
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14448
    altModifiers := #(#'Alt_R').
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14449
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14450
2604
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
 14451
initializeSpecialFlags
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
 14452
    "perform additional special server implementation flags"
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
 14453
!
cbac29ab6d78 added #supportsIconMasks
Claus Gittinger <cg@exept.de>
parents: 2602
diff changeset
 14454
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14455
initializeVariableScreenProperties
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 14456
    "fetch properties which can be changed via the users display-settings.
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14457
     Invoked initially and as a result of the displayChange event."
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14458
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14459
%{
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 14460
    int nvi, i, val, capabilities, planes, numcolors, numpens;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14461
    RECT rect;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14462
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14463
    GetWindowRect(__rootWin, &rect);
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14464
    __INST(width) = __MKSMALLINT(rect.right - rect.left);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14465
    __INST(height) = __MKSMALLINT(rect.bottom - rect.top);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 14466
    DPRINTF(("screen is %d/%d\n", __intVal(__INST(width)), __intVal(__INST(height))));
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14467
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 14468
    __realDepth = GetDeviceCaps(__rootDC, BITSPIXEL);
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14469
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14470
#ifdef ALWAYSTRUECOLOR
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14471
    __depth = 24;  /* its a hack */
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14472
#else
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 14473
    __depth = __realDepth;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14474
    if (__depth == 15)
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14475
	__depth = 16;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14476
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14477
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14478
#if 0
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14479
    numcolors = GetDeviceCaps(__rootDC, NUMCOLORS);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14480
    numpens = GetDeviceCaps(__rootDC, NUMPENS);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14481
    planes = GetDeviceCaps(__rootDC, PLANES);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14482
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14483
    DPRINTF(("screen has %d planes\n", planes));
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14484
    DPRINTF(("numcolors is %d\n", numcolors));
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14485
    DPRINTF(("numpens is %d\n", numpens));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 14486
#endif
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 14487
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14488
    __INST(depth) = __MKSMALLINT(__depth);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14489
    __INST(ncells) = __MKSMALLINT(1<<__depth);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14490
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14491
    val = GetDeviceCaps(__rootDC, HORZSIZE);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 14492
    DPRINTF(("HORSIZE=%d\n",val));
4386
fb6f4030c861 care to not set widthMM/heightMM to 0
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
 14493
    if (val > 0) {
fb6f4030c861 care to not set widthMM/heightMM to 0
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
 14494
	__INST(widthMM) = __MKSMALLINT(val);
fb6f4030c861 care to not set widthMM/heightMM to 0
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
 14495
    }
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14496
    val = GetDeviceCaps(__rootDC, VERTSIZE);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 14497
    DPRINTF(("VERTSIZE=%d\n",val));
4386
fb6f4030c861 care to not set widthMM/heightMM to 0
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
 14498
    if (val > 0) {
fb6f4030c861 care to not set widthMM/heightMM to 0
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
 14499
	__INST(heightMM) = __MKSMALLINT(val);
fb6f4030c861 care to not set widthMM/heightMM to 0
Claus Gittinger <cg@exept.de>
parents: 4374
diff changeset
 14500
    }
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14501
    __logPixelSY = GetDeviceCaps(__rootDC, LOGPIXELSY);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14502
    capabilities = GetDeviceCaps(__rootDC, RASTERCAPS);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14503
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14504
#ifdef LATER
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14505
    console_printf("device support:\n");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14506
    if (capabilities & RC_BANDING)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14507
	console_printf(" RC_BANDING");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14508
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14509
    if (capabilities & RC_BITBLT)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14510
	console_printf(" RC_BITBLT");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14511
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14512
    if (capabilities & RC_BITMAP64)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14513
	console_printf(" RC_BITMAP64");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14514
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14515
    if (capabilities & RC_DI_BITMAP)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14516
	console_printf(" RC_DI_BITMAP");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14517
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14518
    if (capabilities & RC_DIBTODEV)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14519
	console_printf(" RC_DIBTODEV");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14520
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14521
    if (capabilities & RC_FLOODFILL)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14522
	console_printf(" RC_FLOODFILL");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14523
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14524
    if (capabilities & RC_PALETTE)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14525
	console_printf(" RC_PALETTE");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14526
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14527
    if (capabilities & RC_SCALING)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14528
	console_printf(" RC_SCALING");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14529
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14530
    if (capabilities & RC_STRETCHBLT)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14531
	console_printf(" RC_STRETCHBLT");
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14532
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14533
    if (capabilities & RC_STRETCHDIB)
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14534
	console_printf(" RC_STRETCHDIB");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14535
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14536
    console_printf("\n");
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14537
    console_printf("cursor size %d %d\n", GetSystemMetrics(SM_CXCURSOR), GetSystemMetrics(SM_CYCURSOR));
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14538
#endif
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14539
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14540
    __INST(whitepixel) = __MKSMALLINT(WhitePixel);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14541
    __INST(blackpixel) = __MKSMALLINT(BlackPixel);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14542
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14543
    __INST(monitorType) = @symbol(unknown);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14544
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14545
#ifdef ALWAYSTRUECOLOR
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14546
    __INST(hasColors) = true;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14547
    __INST(hasGreyscales) = true;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14548
    __INST(visualType) = @symbol(TrueColor);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14549
    __INST(redShift) = __MKSMALLINT(0);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14550
    __INST(greenShift) = __MKSMALLINT(8);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14551
    __INST(blueShift) = __MKSMALLINT(16);
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 14552
    switch (__realDepth) {
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14553
	case 15:
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14554
	case 16:
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14555
	    __INST(bitsPerRGB) = __MKSMALLINT(5);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14556
	    break;
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14557
	default:
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14558
	    __INST(bitsPerRGB) = __MKSMALLINT(8);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14559
    }
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14560
    __INST(bitsRed) = __INST(bitsGreen) = __INST(bitsBlue) = __MKSMALLINT(8);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14561
    __INST(redMask) = __MKSMALLINT(0xFF);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14562
    __INST(greenMask) = __MKSMALLINT(0xFF00);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14563
    __INST(blueMask) = __MKSMALLINT(0xFF0000);
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14564
#else
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14565
    if (! (capabilities & RC_PALETTE)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14566
	DPRINTF(("no palette\n"));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14567
	if (__depth == 1) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14568
	    __INST(hasColors) = false;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14569
	    __INST(hasGreyscales) = false;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14570
	    __INST(visualType) = @symbol(GrayScale);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14571
	    __INST(monitorType) = @symbol(monochrome);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14572
	} else {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14573
	    __INST(hasColors) = true;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14574
	    __INST(hasGreyscales) = true;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14575
	    if ((__depth == 16) || (__depth == 15)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14576
	      __INST(visualType) = @symbol(TrueColor);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14577
	      __INST(blueShift) = __MKSMALLINT(0);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14578
	      __INST(greenShift) = __MKSMALLINT(5);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14579
	      __INST(redShift) = __MKSMALLINT(11);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14580
	      __INST(bitsPerRGB) = __MKSMALLINT(5);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14581
	      __INST(bitsRed) = __INST(bitsGreen) = __INST(bitsBlue) = __MKSMALLINT(5);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14582
	      __INST(blueMask) = __MKSMALLINT(0x1f);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14583
	      __INST(greenMask) = __MKSMALLINT(0x7e0);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14584
	      __INST(redMask) = __MKSMALLINT(0xf800);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14585
	    } else {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14586
	      __INST(visualType) = @symbol(TrueColor);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14587
	      __INST(redShift) = __MKSMALLINT(0);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14588
	      __INST(greenShift) = __MKSMALLINT(8);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14589
	      __INST(blueShift) = __MKSMALLINT(16);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14590
	      __INST(bitsPerRGB) = __MKSMALLINT(8);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14591
	      __INST(bitsRed) = __INST(bitsGreen) = __INST(bitsBlue) = __MKSMALLINT(8);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14592
	      __INST(redMask) = __MKSMALLINT(0xFF);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14593
	      __INST(greenMask) = __MKSMALLINT(0xFF00);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14594
	      __INST(blueMask) = __MKSMALLINT(0xFF0000);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14595
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14596
	}
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14597
    } else {
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14598
	val = GetDeviceCaps(__rootDC, SIZEPALETTE); /* First two entries are black and white. */
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 14599
	// console_printf("SizeofPalette %d\n",val);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14600
	__INST(ncells) = __MKSMALLINT(val);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14601
	__INST(blackpixel) = __MKSMALLINT(0);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14602
	__INST(whitepixel) = __MKSMALLINT(1);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14603
	__INST(hasColors) = true;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14604
	__INST(hasGreyscales) = true;
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 14605
	// __INST(usingSystemPalette) = true;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14606
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14607
	__INST(redShift) = __MKSMALLINT(0);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14608
	__INST(greenShift) = __MKSMALLINT(2);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14609
	__INST(blueShift) = __MKSMALLINT(4);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14610
	__INST(bitsPerRGB) = __MKSMALLINT(2);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14611
	__INST(bitsRed) = __INST(bitsGreen) = __INST(bitsBlue) = __MKSMALLINT(2);
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14612
	__INST(redMask) = __MKSMALLINT(0x3);
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14613
	__INST(greenMask) = __MKSMALLINT(0xc);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14614
	__INST(blueMask) = __MKSMALLINT(0x30);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14615
    }
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14616
#endif /* ! ALWAYSTRUECOLOR */
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 14617
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14618
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14619
2746
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14620
initializeVariableSettingsProperties
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14621
    "fetch properties which can be changed via the user settings.
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14622
     Invoked initially and as a result of the settingsChange event."
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14623
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14624
%{
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14625
    UINT multiClickTime;
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14626
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14627
    multiClickTime = GetDoubleClickTime();
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14628
    DPRINTF(("multiClickTime = %d\n", multiClickTime));
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14629
    __INST(multiClickTimeDelta) = __MKSMALLINT(multiClickTime);
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14630
%}
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14631
!
6aed7520c22f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2743
diff changeset
 14632
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14633
primInitializeFor:aDisplayName
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14634
    "initialize the receiver for a connection to a display;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14635
     the argument, aDisplayName may be nil (for the default display)
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14636
     or the name of the display server as hostname:number
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14637
     (not yet under WIN32)"
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14638
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 14639
%{  /* NOCONTEXT */
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 14640
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14641
    RETURN ( __MKSMALLINT(1) );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14642
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14643
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14644
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14645
reinitialize
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14646
    rootWin := rootDC := nil.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14647
    super reinitialize.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14648
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14649
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14650
!WinWorkstation methodsFor:'keyboard mapping'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14651
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14652
altModifierMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14653
    "return the mask (in motionEvents) for the alt-key modifier.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14654
     Notice: ST/X may use the left ALT key as CMD/Meta key,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14655
     therefore return a variable here, which can be changed during startup."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14656
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14657
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14658
    RETURN (__MKSMALLINT(AltMask));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14659
%}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14660
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14661
    "Created: 23.3.1996 / 12:43:22 / cg"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14662
    "Modified: 23.3.1996 / 12:44:56 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14663
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14664
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14665
leftAltMask
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14666
    "return the mask bit for the left Alt modifier key.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14667
     See comment in altModifierMask: / metaModifierMask: for what
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14668
     this could be used."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14669
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14670
%{  /* NOCONTEXT */
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14671
    RETURN (__MKSMALLINT(LeftAltMask));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14672
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14673
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14674
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14675
metaModifierMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14676
    "return the mask (in motionEvents) for the meta-key modifier.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14677
     Notice: ST/X may use the left ALT key as CMD/Meta key,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14678
     therefore return a variable here, which can be changed during startup."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14679
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14680
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14681
    RETURN (__MKSMALLINT(MetaMask));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14682
%}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14683
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14684
    "Created: 23.3.1996 / 12:43:39 / cg"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14685
    "Modified: 23.3.1996 / 12:45:09 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14686
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14687
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14688
modifierMapping
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14689
    "Get the Modifier Mapping.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14690
     We return an array of arrays of keycodes"
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14691
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14692
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14693
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14694
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14695
rightAltMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14696
    "return the mask bit for the right Alt modifier key.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14697
     See comment in altModifierMask: / metaModifierMask: for what
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14698
     this could be used."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14699
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14700
%{  /* NOCONTEXT */
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14701
    RETURN (__MKSMALLINT(RightAltMask));
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14702
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14703
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14704
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14705
stringFromKeycode:code
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14706
    "Get a KeySymbol (a smalltalk symbol) from the keycode."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14707
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14708
    ^ ''
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14709
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14710
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14711
	Display stringFromKeycode:28
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14712
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14713
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14714
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14715
!WinWorkstation methodsFor:'misc'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14716
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14717
beep
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14718
    "output an audible beep"
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14719
5248
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14720
    self beep:#iconExclamation volume:100.
5246
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14721
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14722
    "
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14723
      Display beep
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14724
    "
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14725
!
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14726
5248
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14727
beep:aSymbolOrInteger volume:volumeInPercent
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14728
    "output an audible beep, aSymbolOrInteger define, which sound is used.
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14729
     Volume is ignored here (kept for compatibility with XWorkstation"
5246
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14730
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14731
    UserPreferences current beepEnabled ifFalse:[^ self].
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14732
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14733
%{
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14734
    unsigned int type;    
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14735
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14736
    if (__isSmallInteger(aSymbolOrInteger)) {
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14737
        type = __smallIntegerVal(aSymbolOrInteger);
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14738
    } else if (aSymbolOrInteger == @symbol(iconAsterisk)) {
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14739
        type = MB_ICONASTERISK;
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14740
    } else if (aSymbolOrInteger == @symbol(iconExclamation)) {
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14741
        type = MB_ICONEXCLAMATION;
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14742
    } else if (aSymbolOrInteger == @symbol(iconHand)) {
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14743
        type = MB_ICONHAND;
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14744
    } else if (aSymbolOrInteger == @symbol(iconQuestion)) {
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14745
        type = MB_ICONQUESTION;
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14746
    } else if (aSymbolOrInteger == @symbol(ok)) {
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14747
        type = MB_OK;
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14748
    } else {
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14749
        type = 0xffffffff;
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14750
    }
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14751
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 14752
#ifdef BEEP_IN_WINTHREAD
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 14753
    PostThreadMessage(_dispatchThreadId, WM_THREAD_BEEP, 0, 0);
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 14754
#else
5246
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14755
    MessageBeep(type);
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14756
#endif
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14757
%}
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14758
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14759
    "
5248
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14760
      Display beep:#iconExclamation volume:100
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14761
      Display beep:#iconAsterisk volume:100
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14762
      Display beep:#iconQuestion volume:100
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14763
      Display beep:#iconHand volume:100
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14764
      Display beep:#ok volume:100
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14765
      Display beep:nil volume:100
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 14766
      Display beep:0 volume:100
5246
b9025a68e914 new: #beep:
Stefan Vogel <sv@exept.de>
parents: 5236
diff changeset
 14767
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14768
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14769
4832
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 14770
canEndSession:aBoolean
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 14771
    "if set to false, Windows is not allowed to finish this session.
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 14772
     The default is true."
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 14773
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 14774
    CanEndSession := aBoolean.
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 14775
!
e0db4a6e9cd2 canEndSession
Claus Gittinger <cg@exept.de>
parents: 4831
diff changeset
 14776
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14777
flush
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14778
    "send all buffered drawing to the display.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14779
     This may be required to make certain, that all previous operations
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14780
     are really sent to the display before continuing. For example,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14781
     after a cursor-change with a followup long computation.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14782
     (otherwise, the cursor change request may still be in the output buffer)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14783
     See also #sync, which even waits until the request has been processed."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14784
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 14785
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 14786
     GdiFlush();
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14787
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14788
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14789
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14790
setInputFocusTo:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14791
    self setInputFocusTo:aWindowId revertTo:nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14792
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14793
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14794
setInputFocusTo:aWindowId revertTo:revertSymbol
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14795
    "set the focus to the view as defined by aWindowId.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14796
     Passing nil set the focus to no window and lets the display discard all
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14797
     input until a new focus is set.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14798
     RevertSymbol specifies what should happen if the view becomes invisible;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14799
     passing one of #parent, #root or nil specifies that the focus should be
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14800
     given to the parent view, the root view or no view."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14801
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 14802
%{
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14803
    if (__isExternalAddress(aWindowId)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14804
	HWND hWnd = _HWNDVal(aWindowId);
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
 14805
	int r = 0;
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14806
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14807
	if (revertSymbol == @symbol(parent)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14808
	    r = 1;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14809
	} else if (revertSymbol == @symbol(root)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14810
	    r = 2;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14811
	}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14812
	if (hWnd) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14813
	    if (GetFocus() != hWnd) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14814
		CPRINTF(("setInputFocusTo %x revertTo %d\n",hWnd,r));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14815
#ifdef SET_FOCUS_IN_WINTHREAD
2668
5d124ccee006 NT fixes
Claus Gittinger <cg@exept.de>
parents: 2667
diff changeset
 14816
		PostMessage(hWnd, WM_THREAD_SETFOCUS, (INT)hWnd, GetCurrentThreadId());
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14817
#else
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14818
		if (SetFocus(hWnd) == 0) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14819
		    PRINTF(("SetFocus to %x failed.\n",hWnd));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14820
		}
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14821
#endif
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14822
	    } else {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 14823
		CPRINTF(("setInputFocusTo %x revertTo %d\n",hWnd,r));
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
 14824
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14825
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14826
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14827
    }
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 14828
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14829
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 14830
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 14831
!WinWorkstation methodsFor:'native dialogs'!
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 14832
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14833
nativeConfirm:aString title:titleString flags:flags initialAnswer:trueOrFalse
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14834
     ^ self
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14835
	    nativeMessageBoxFor:nil
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14836
	    text:aString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14837
	    title:titleString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14838
	    flags:flags
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14839
	    blocking:false
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14840
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14841
     "
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14842
      Screen current
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14843
	nativeConfirm:'please confirm'
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14844
	title:'Confirm'
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14845
	flags:#( APPLMODAL ICONQUESTION OKCANCEL)
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14846
	initialAnswer:true
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14847
     "
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14848
     "
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14849
      Screen current
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14850
	nativeConfirm:'Yes or No'
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14851
	title:'Confirm'
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14852
	flags:#( APPLMODAL ICONQUESTION YESNO)
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14853
	initialAnswer:true
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14854
     "
4732
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 14855
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 14856
    "Modified: / 02-03-2007 / 15:37:57 / cg"
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14857
!
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14858
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14859
nativeConfirmOKCancel:aString title:titleString initialAnswer:trueOrFalse
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14860
     ^ (self
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14861
	    nativeConfirm:aString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14862
	    title:titleString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14863
	    flags:#( APPLMODAL ICONQUESTION OKCANCEL)
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14864
	    initialAnswer:trueOrFalse) == #IDOK
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14865
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14866
     "
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14867
      Screen current
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14868
	nativeConfirmOKCancel:'please confirm' title:'Confirm' initialAnswer:true
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14869
     "
4732
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 14870
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 14871
    "Modified: / 02-03-2007 / 15:37:32 / cg"
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14872
!
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14873
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14874
nativeConfirmYesNo:aString title:titleString initialAnswer:trueOrFalse
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14875
     ^ (self
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14876
	    nativeConfirm:aString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14877
	    title:titleString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14878
	    flags:#( APPLMODAL ICONQUESTION YESNO)
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14879
	    initialAnswer:trueOrFalse) == #IDYES
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14880
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14881
     "
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14882
      Screen current
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 14883
	nativeConfirmYesNo:'please confirm' title:'Confirm' initialAnswer:true
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14884
     "
4732
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 14885
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 14886
    "Modified: / 02-03-2007 / 15:12:49 / cg"
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14887
!
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 14888
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14889
nativeFileDialogFor:ownerId save:isSaveDialog title:titleOrNil inDirectory:dirPathOrNil
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14890
	     initialAnswer:initialOrNil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14891
	     filter:filterArrayOrNil extension:extensionOrNil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14892
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14893
    "start a native open-file dialog.
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14894
     If not cancelled, the selected fileName is returned; nil otherwise.
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14895
     Of course, this one looks like the
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14896
     Windows file dialog - no matter which viewStyle settings are active.
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14897
     Notice: if no ownerId is given, the dialog pops up at 0@0.
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14898
     filterArrayOrNil: if non nil, must be an array of 2-element arrays,
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14899
		       each element specifying filter commnet and filter
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14900
		       i.e. #( 'bitmap files (*.bmp)' '*.bmp' )
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14901
		       i.e. #( 'smalltalk files' '*.st' )
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14902
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14903
     EXPERIMENTAL & non-portable: use with caution"
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14904
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14905
    |flags|
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14906
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14907
    isSaveDialog ifTrue:[
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14908
	flags := #(
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14909
			#ENABLESIZING
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14910
			#HIDEREADONLY
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14911
			#EXPLORER
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14912
			#ENABLESIZING
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14913
			#OVERWRITEPROMPT
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14914
		  )
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14915
    ] ifFalse:[
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14916
	flags := #(
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14917
			#ENABLESIZING
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14918
			#HIDEREADONLY
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14919
			#EXPLORER
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14920
			#ENABLESIZING
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14921
		  )
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14922
    ].
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14923
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14924
    ^ self
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14925
	nativeFileDialogFor:ownerId
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14926
	save:isSaveDialog
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14927
	title:titleOrNil
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14928
	inDirectory:dirPathOrNil
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14929
	initialAnswer:initialOrNil
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14930
	flags:flags
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14931
	filter:filterArrayOrNil
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14932
	extension:extensionOrNil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14933
	blocking:false
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14934
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14935
    "
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14936
     Display
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14937
	nativeFileDialogFor:nil save:false
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14938
	title:'Test OpenFile Dialog'
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14939
	inDirectory:nil
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14940
	initialAnswer:nil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14941
	filter:nil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14942
	extension:nil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14943
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14944
     Display
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14945
	nativeFileDialogFor:nil save:true
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14946
	title:'Test SaveFile Dialog'
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14947
	inDirectory:nil
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14948
	initialAnswer:nil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14949
	filter:nil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14950
	extension:nil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14951
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14952
     Display
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14953
	nativeFileDialogFor:nil save:true
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14954
	title:'Test SaveFile Dialog'
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14955
	inDirectory:nil
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14956
	initialAnswer:'newFile.bmp'
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14957
	filter:nil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14958
	extension:'bmp'
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14959
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14960
     Display
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14961
	nativeFileDialogFor:nil save:false
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14962
	title:'Test OpenFile Dialog'
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14963
	inDirectory:nil
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14964
	initialAnswer:nil
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14965
	filter:#(
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14966
		    #( 'all files'       '*.*' )
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14967
		    #( 'smalltalk files' '*.st' )
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14968
		    #( 'change files'    '*.chg' )
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14969
		    #( 'image files'     '*.img' )
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14970
		)
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14971
	extension:nil
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14972
    "
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14973
!
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 14974
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 14975
nativeFileDialogFor:ownerId save:isSaveDialog title:titleOrNil inDirectory:dirPathOrNil
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 14976
	     initialAnswer:initialOrNil flags:flagArray
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14977
	     filter:filterArrayOrNil extension:extensionOrNil
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 14978
	     blocking:blocking
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14979
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14980
    "start a native open-file dialog.
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14981
     If not cancelled, the selected fileName is returned; nil otherwise.
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14982
     Of course, this one looks like the
3524
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 14983
     Windows file dialog - no matter which viewStyle settings are active.
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 14984
     Notice: if no ownerId is given, the dialog pops up at 0@0.
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14985
     filterArrayOrNil: if non nil, must be an array of 2-element arrays,
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14986
		       each element specifying filter commnet and filter
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14987
		       i.e. #( 'bitmap files (*.bmp)' '*.bmp' )
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14988
		       i.e. #( 'smalltalk files' '*.st' )
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14989
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14990
     EXPERIMENTAL & non-portable: use with caution"
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14991
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 14992
    |rslt errorCode fileName|
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14993
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14994
%{  /* STACK: 32000*/
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14995
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 14996
#ifndef NO_NATIVE_DIALOGS
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 14997
    OPENFILENAME ofn;
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 14998
    HWND hWndOwner = NULL;
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 14999
    char fileNameBuffer[256] = "\0";
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15000
    char filterBuffer[1024*4] = "\0";
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15001
    BOOL __rslt;
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15002
    jmp_buf exitJmpBuf;
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15003
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15004
    if (__isExternalAddress(ownerId)) {
3521
951a266969d1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3509
diff changeset
 15005
	hWndOwner = _HWNDVal(ownerId);
951a266969d1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3509
diff changeset
 15006
    }
951a266969d1 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3509
diff changeset
 15007
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15008
# ifdef OPENFILENAME_SIZE_VERSION_400
3526
e9c3f08c2305 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3525
diff changeset
 15009
    ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400; // sizeof(ofn);
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15010
# else
3544
6c59714157cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3526
diff changeset
 15011
    ofn.lStructSize = sizeof(ofn);
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15012
# endif
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15013
    ofn.hwndOwner = hWndOwner;
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15014
    ofn.hInstance = NULL;
3524
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15015
4405
f4c62bb63035 isArrayLike to support immutable arrays
Claus Gittinger <cg@exept.de>
parents: 4388
diff changeset
 15016
    if ((filterArrayOrNil != nil) && __isArrayLike(filterArrayOrNil)) {
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15017
	char *dst = filterBuffer;
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 15018
	unsigned int idx;
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15019
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15020
	for (idx=0; idx<__arraySize(filterArrayOrNil); idx++) {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15021
	    OBJ el = __ArrayInstPtr(filterArrayOrNil)->a_element[idx];
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 15022
// console_printf("idx = %d\n", idx);
4405
f4c62bb63035 isArrayLike to support immutable arrays
Claus Gittinger <cg@exept.de>
parents: 4388
diff changeset
 15023
	    if (__isArrayLike(el) && (__arraySize(el) == 2)) {
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15024
		OBJ descr, filter;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15025
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15026
		descr = __ArrayInstPtr(el)->a_element[0];
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15027
		filter = __ArrayInstPtr(el)->a_element[1];
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15028
		if (__isString(descr) && __isString(filter)) {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15029
		    char *src = __stringVal(descr);
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15030
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 15031
// console_printf("descr: %s filter: %s\n", __stringVal(descr), __stringVal(filter));
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15032
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15033
		    // append (incl 0-byte)
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15034
		    while (*src) {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15035
			*dst++ = *src++;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15036
		    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15037
		    *dst++ = '\0';
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15038
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15039
		    src = __stringVal(filter);
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15040
		    // append (incl 0-byte)
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15041
		    while (*src) {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15042
			*dst++ = *src++;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15043
		    }
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15044
		    *dst++ = '\0';
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15045
		}
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15046
	    }
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15047
	}
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15048
	*dst++ = '\0';
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15049
	*dst = '\0';
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15050
	ofn.lpstrFilter = filterBuffer;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15051
	ofn.nFilterIndex = 1;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15052
    } else {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15053
	ofn.lpstrFilter = NULL;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15054
	ofn.nFilterIndex = 0;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15055
    }
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15056
    ofn.lpstrCustomFilter = NULL;
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15057
    ofn.nMaxCustFilter = 0;
3524
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15058
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15059
    if (__isString(initialOrNil)) {
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15060
	strcpy(fileNameBuffer, __stringVal(initialOrNil));
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15061
    }
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15062
    ofn.lpstrFile = fileNameBuffer;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15063
    ofn.nMaxFile = sizeof(fileNameBuffer);
3524
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15064
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15065
    ofn.lpstrFileTitle = NULL;
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15066
    ofn.nMaxFileTitle = 0;
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15067
    if (__isString(dirPathOrNil)) {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15068
	ofn.lpstrInitialDir = __stringVal(dirPathOrNil);
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15069
    } else {
3524
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15070
	ofn.lpstrInitialDir = NULL;
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15071
    }
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15072
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15073
    if (__isString(titleOrNil)) {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15074
	ofn.lpstrTitle = __stringVal(titleOrNil);
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15075
    } else {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15076
	ofn.lpstrTitle = "";
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15077
    }
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15078
    ofn.nFileOffset = 0;
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15079
    ofn.nFileExtension = 0;
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15080
    if (__isString(extensionOrNil)) {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15081
	ofn.lpstrDefExt = __stringVal(extensionOrNil);
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15082
    } else {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15083
	ofn.lpstrDefExt = NULL;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15084
    }
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15085
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15086
    ofn.lCustData = NULL;
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15087
    ofn.lpfnHook = NULL;
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15088
    ofn.lpTemplateName = NULL;
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15089
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15090
    ofn.Flags = 0;
4405
f4c62bb63035 isArrayLike to support immutable arrays
Claus Gittinger <cg@exept.de>
parents: 4388
diff changeset
 15091
    if (__isNonNilObject(flagArray) && __isArrayLike(flagArray)) {
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 15092
	unsigned int i;
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15093
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15094
	for (i=0; i<__arraySize(flagArray); i++) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15095
	    OBJ flag = __ArrayInstPtr(flagArray)->a_element[i];
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15096
	    int flagVal = 0;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15097
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15098
	    if (__isSmallInteger(flag)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15099
		flagVal = __intVal(flag);
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15100
	    } else if (flag == @symbol(READONLY)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15101
		flagVal = OFN_READONLY;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15102
	    } else if (flag == @symbol(OVERWRITEPROMPT)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15103
		flagVal = OFN_OVERWRITEPROMPT;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15104
	    } else if (flag == @symbol(HIDEREADONLY)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15105
		flagVal = OFN_HIDEREADONLY;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15106
	    } else if (flag == @symbol(NOCHANGEDIR)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15107
		flagVal = OFN_NOCHANGEDIR;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15108
	    } else if (flag == @symbol(SHOWHELP)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15109
		flagVal = OFN_SHOWHELP;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15110
	    } else if (flag == @symbol(ENABLEHOOK)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15111
		flagVal = OFN_ENABLEHOOK;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15112
	    } else if (flag == @symbol(ENABLETEMPLATE)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15113
		flagVal = OFN_ENABLETEMPLATE;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15114
	    } else if (flag == @symbol(ENABLETEMPLATEHANDLE)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15115
		flagVal = OFN_ENABLETEMPLATEHANDLE;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15116
	    } else if (flag == @symbol(NOVALIDATE)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15117
		flagVal = OFN_NOVALIDATE;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15118
	    } else if (flag == @symbol(ALLOWMULTISELECT)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15119
		flagVal = OFN_ALLOWMULTISELECT;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15120
	    } else if (flag == @symbol(EXTENSIONDIFFERENT)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15121
		flagVal = OFN_EXTENSIONDIFFERENT;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15122
	    } else if (flag == @symbol(PATHMUSTEXIST)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15123
		flagVal = OFN_PATHMUSTEXIST;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15124
	    } else if (flag == @symbol(FILEMUSTEXIST)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15125
		flagVal = OFN_FILEMUSTEXIST;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15126
	    } else if (flag == @symbol(CREATEPROMPT)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15127
		flagVal = OFN_CREATEPROMPT;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15128
	    } else if (flag == @symbol(SHAREAWARE)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15129
		flagVal = OFN_SHAREAWARE;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15130
	    } else if (flag == @symbol(NOREADONLYRETURN)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15131
		flagVal = OFN_NOREADONLYRETURN;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15132
	    } else if (flag == @symbol(NOTESTFILECREATE)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15133
		flagVal = OFN_NOTESTFILECREATE;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15134
	    } else if (flag == @symbol(NONETWORKBUTTON)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15135
		flagVal = OFN_NONETWORKBUTTON;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15136
	    } else if (flag == @symbol(NOLONGNAMES)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15137
		flagVal = OFN_NOLONGNAMES;
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15138
# ifdef OFN_EXPLORER
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15139
	    } else if (flag == @symbol(EXPLORER)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15140
		flagVal = OFN_EXPLORER;
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15141
# endif
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15142
# ifdef OFN_NODEREFERENCELINKS
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15143
	    } else if (flag == @symbol(NODEREFERENCELINKS)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15144
		flagVal = OFN_NODEREFERENCELINKS;
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15145
# endif
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15146
# ifdef OFN_LONGNAMES
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15147
	    } else if (flag == @symbol(LONGNAMES)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15148
		flagVal = OFN_LONGNAMES;
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15149
# endif
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15150
# ifdef OFN_ENABLEINCLUDENOTIFY
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15151
	    } else if (flag == @symbol(ENABLEINCLUDENOTIFY)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15152
		flagVal = OFN_ENABLEINCLUDENOTIFY;
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15153
# endif
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15154
# ifdef OFN_ENABLESIZING
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15155
	    } else if (flag == @symbol(ENABLESIZING)) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15156
		flagVal = OFN_ENABLESIZING;
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15157
# endif
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15158
	    }
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15159
	    ofn.Flags |= flagVal;
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15160
	}
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15161
    }
3524
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15162
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15163
    if (isSaveDialog == true) {
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15164
	if (blocking == true) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15165
	    __rslt = GetSaveFileName(&ofn);
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15166
	} else {
3583
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15167
	    do {
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15168
		__threadErrno = 0;
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15169
		__rslt = __STX_API_CALL1( "GetSaveFileName", (void *)GetSaveFileName, (void *)(&ofn));
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15170
	    } while ((__rslt < 0) && (__threadErrno == EINTR));
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15171
	}
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15172
    } else {
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15173
	if (blocking == true) {
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15174
	    __rslt = GetOpenFileName(&ofn);
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15175
	} else {
3583
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15176
	    do {
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15177
		__threadErrno = 0;
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15178
		__rslt = __STX_API_CALL1( "GetOpenFileName", (void *)GetOpenFileName, (void *)(&ofn));
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15179
	    } while ((__rslt < 0) && (__threadErrno == EINTR));
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15180
	}
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15181
    }
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15182
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15183
    if ( @global(WinWorkstation:VerboseNativeDialogs) == true) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15184
	console_fprintf(stderr, "WinWorkstation [info]: after GetOpenFileName\n");
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15185
    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15186
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15187
    if (setjmp(exitJmpBuf)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15188
	__setAtExitLongJmp(0);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15189
	if ( @global(WinWorkstation:VerboseNativeDialogs) == true) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15190
	    console_fprintf(stderr, "WinWorkstation [warning]: exit longjmp\n");
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15191
	}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15192
	rslt = false;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15193
	errorCode = __MKSMALLINT(0);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15194
	goto getOutOfHere;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15195
    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15196
    __setAtExitLongJmp(exitJmpBuf);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15197
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15198
    if (__rslt == TRUE) {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15199
	rslt = true;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15200
	fileName = __MKSTRING(fileNameBuffer);
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15201
    } else {
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15202
	rslt = false;
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15203
	errorCode = __MKSMALLINT(CommDlgExtendedError());
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15204
    }
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15205
    __setAtExitLongJmp(0);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15206
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15207
#else
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15208
    errorCode = __MKSMALLINT(-1);
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15209
#endif /* NO_NATIVE_DIALOGS */
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 15210
getOutOfHere: ;
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15211
%}.
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15212
    (errorCode notNil) ifTrue:[
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 15213
	errorCode ~~ 0 ifTrue:[
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 15214
	    self primitiveFailed.
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 15215
	].
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 15216
	^ nil
3524
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15217
    ].
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15218
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15219
    ^ fileName
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15220
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15221
    "
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15222
     Display
3523
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15223
	nativeFileDialogFor:nil save:false
4c9da20060cd *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3521
diff changeset
 15224
	title:'Test OpenFile Dialog'
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15225
	inDirectory:nil
3524
acda6406358d native fileDialog
Claus Gittinger <cg@exept.de>
parents: 3523
diff changeset
 15226
	initialAnswer:nil
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15227
	flags:#( ENABLESIZING HIDEREADONLY EXPLORER ENABLESIZING )
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15228
	filter:#(
3525
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15229
		    #( 'all files'       '*.*' )
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15230
		    #( 'smalltalk files' '*.st' )
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15231
		    #( 'change files'    '*.chg' )
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15232
		    #( 'image files'     '*.img' )
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15233
		)
0afbeec72edb *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3524
diff changeset
 15234
	extension:nil
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15235
	blocking:false
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15236
    "
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15237
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15238
    "
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15239
     Display
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15240
	nativeFileDialogFor:nil save:false
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15241
	title:'Test OpenFile Dialog'
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15242
	inDirectory:nil
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15243
	initialAnswer:nil
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15244
	flags:#( ENABLESIZING HIDEREADONLY EXPLORER ENABLESIZING )
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15245
	filter:#(
3548
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15246
		    #( 'all files'       '*.*' )
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15247
		    #( 'smalltalk files' '*.st' )
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15248
		    #( 'change files'    '*.chg' )
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15249
		    #( 'image files'     '*.img' )
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15250
		)
5c33ea9fc4f3 conditional compilation for native dialog support
Claus Gittinger <cg@exept.de>
parents: 3544
diff changeset
 15251
	extension:nil
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15252
	blocking:true
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15253
    "
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15254
!
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15255
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15256
nativeGetDefaultPrinterDialog
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15257
    "start a native printer dialog.
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15258
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15259
     EXPERIMENTAL & non-portable: use with caution"
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15260
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15261
    |errorCode newDCHandle|
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15262
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15263
%{  /* STACK: 32000*/
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15264
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15265
#ifdef NO_NATIVE_DIALOGS
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15266
# define NO_NATIVE_PRINT_DIALOGS
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15267
#endif
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15268
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15269
#define NO_NATIVE_PRINT_DIALOGS
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15270
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15271
#ifndef NO_NATIVE_PRINT_DIALOGS
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15272
    PRINTDLG pdsetup;
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15273
    OBJ newGCHandle;
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15274
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15275
    memset(&pdsetup, 0, sizeof(pdsetup));
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15276
    pdsetup.lStructSize = sizeof(pdsetup);
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15277
    pdsetup.Flags = PD_RETURNDEFAULT | PD_RETURNDC;
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15278
    if (! PrintDlg(&pdsetup)) {
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15279
	RETURN (nil);
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15280
    }
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15281
    if ( pdsetup.hDC ) {
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15282
	newDCHandle = __MKOBJ( pdsetup.hDC );
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15283
    }
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15284
#else
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15285
    errorCode = __MKSMALLINT(-1);
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15286
#endif /* NO_NATIVE_PRINT_DIALOGS */
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15287
%}.
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15288
    (errorCode notNil) ifTrue:[
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15289
	self primitiveFailed.
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15290
	^ nil
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15291
    ].
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15292
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15293
    ^ newDCHandle
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15294
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15295
    "
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15296
     Display nativeGetDefaultPrinterDialog
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15297
    "
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15298
!
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15299
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15300
nativeGetPrinterDialogDefault:defaultBoolean
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15301
    "start a native printer dialog.
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15302
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15303
     EXPERIMENTAL & non-portable: use with caution"
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15304
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15305
    |errorCode newDCHandle|
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15306
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15307
%{  /* STACK: 32000*/
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15308
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15309
#ifdef NO_NATIVE_DIALOGS
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15310
# define NO_NATIVE_PRINT_DIALOGS
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15311
#endif
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15312
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15313
#define xxNO_NATIVE_PRINT_DIALOGS
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15314
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15315
#ifndef NO_NATIVE_PRINT_DIALOGS
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15316
    PRINTDLG pdsetup;
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15317
    OBJ newGCHandle;
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15318
    int answer;
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15319
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15320
    memset(&pdsetup, 0, sizeof(pdsetup));
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15321
    pdsetup.lStructSize = sizeof(pdsetup);
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15322
    pdsetup.Flags = PD_RETURNDC;
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15323
    if (defaultBoolean == true) {
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15324
	pdsetup.Flags |= PD_RETURNDEFAULT;
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15325
    }
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15326
# ifdef BLOCKING
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15327
    answer = PrintDlg(&pdsetup);
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15328
# else
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15329
    answer = __STX_API_CALL1( "PrintDlg",
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15330
					(void *)PrintDlg,
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15331
					(void *)&pdsetup );
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15332
# endif
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15333
    if (! answer) {
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15334
	RETURN (nil);
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15335
    }
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15336
    if ( pdsetup.hDC ) {
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15337
	newDCHandle = __MKOBJ( pdsetup.hDC );
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15338
    }
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15339
#else
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15340
    errorCode = __MKSMALLINT(-1);
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15341
#endif /* NO_NATIVE_PRINT_DIALOGS */
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15342
%}.
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15343
    (errorCode notNil) ifTrue:[
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15344
	self primitiveFailed.
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 15345
	^ nil
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15346
    ].
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15347
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15348
    ^ newDCHandle
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15349
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15350
    "
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15351
     Display nativeGetPrinterDialogDefault:true
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15352
     Display nativeGetPrinterDialogDefault:false
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15353
    "
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15354
!
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 15355
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15356
nativeInformationOK:aString title:titleString
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15357
     ^ self
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15358
	    nativeConfirm:aString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15359
	    title:titleString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15360
	    flags:#( APPLMODAL ICONINFORMATION OK)
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15361
	    initialAnswer:nil
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15362
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15363
     "
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15364
      Screen current
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15365
	nativeInformationOK:'Some Info' title:'Info'
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15366
     "
4732
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 15367
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 15368
    "Modified: / 02-03-2007 / 15:37:40 / cg"
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15369
!
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15370
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15371
nativeMessageBoxFor:ownerId text:textOrNil title:titleOrNil flags:flagArray blocking:blocking
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15372
    "start a native message box dialog.
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15373
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15374
     EXPERIMENTAL & non-portable: use with caution"
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15375
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15376
    |errorCode answer|
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15377
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15378
%{  /* STACK: 32000*/
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15379
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15380
#ifndef NO_NATIVE_DIALOGS
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15381
    HWND hWndOwner = NULL;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15382
    int boxFlags = 0;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15383
    char *__title;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15384
    char *__text;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15385
    int __answer;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15386
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15387
    if (__isExternalAddress(ownerId)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15388
	hWndOwner = _HWNDVal(ownerId);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15389
    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15390
    if (__isString(titleOrNil)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15391
	__title = __stringVal(titleOrNil);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15392
    } else {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15393
	__title = "";
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15394
    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15395
    if (__isString(textOrNil)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15396
	__text = __stringVal(textOrNil);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15397
    } else {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15398
	__text = "";
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15399
    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15400
4405
f4c62bb63035 isArrayLike to support immutable arrays
Claus Gittinger <cg@exept.de>
parents: 4388
diff changeset
 15401
    if (__isNonNilObject(flagArray) && __isArrayLike(flagArray)) {
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 15402
	unsigned int i;
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15403
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15404
	for (i=0; i<__arraySize(flagArray); i++) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15405
	    OBJ flag = __ArrayInstPtr(flagArray)->a_element[i];
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15406
	    int flagVal = 0;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15407
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15408
	    if (__isSmallInteger(flag)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15409
		flagVal = __intVal(flag);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15410
	    } else if (flag == @symbol(ABORTRETRYIGNORE)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15411
		flagVal = MB_ABORTRETRYIGNORE;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15412
	    } else if (flag == @symbol(APPLMODAL)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15413
		flagVal = MB_APPLMODAL;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15414
	    } else if (flag == @symbol(DEFAULT_DESKTOP_ONLY)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15415
		flagVal = MB_DEFAULT_DESKTOP_ONLY;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15416
	    } else if (flag == @symbol(DEFBUTTON1)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15417
		flagVal = MB_DEFBUTTON1;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15418
	    } else if (flag == @symbol(DEFBUTTON2)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15419
		flagVal = MB_DEFBUTTON2;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15420
	    } else if (flag == @symbol(DEFBUTTON3)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15421
		flagVal = MB_DEFBUTTON3;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15422
	    } else if (flag == @symbol(ICONASTERISK)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15423
		flagVal = MB_ICONASTERISK;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15424
	    } else if (flag == @symbol(ICONHAND)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15425
		flagVal = MB_ICONHAND;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15426
	    } else if (flag == @symbol(ICONINFORMATION)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15427
		flagVal = MB_ICONINFORMATION;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15428
	    } else if (flag == @symbol(ICONQUESTION)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15429
		flagVal = MB_ICONQUESTION;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15430
	    } else if (flag == @symbol(ICONSTOP)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15431
		flagVal = MB_ICONSTOP;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15432
	    } else if (flag == @symbol(OK)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15433
		flagVal = MB_OK;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15434
	    } else if (flag == @symbol(OKCANCEL)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15435
		flagVal = MB_OKCANCEL;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15436
	    } else if (flag == @symbol(RETRYCANCEL)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15437
		flagVal = MB_RETRYCANCEL;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15438
	    } else if (flag == @symbol(SETFOREGROUND)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15439
		flagVal = MB_SETFOREGROUND;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15440
	    } else if (flag == @symbol(SYSTEMMODAL)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15441
		flagVal = MB_SYSTEMMODAL;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15442
	    } else if (flag == @symbol(TASKMODAL)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15443
		flagVal = MB_TASKMODAL;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15444
	    } else if (flag == @symbol(YESNO)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15445
		flagVal = MB_YESNO;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15446
	    } else if (flag == @symbol(YESNOCANCEL)) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15447
		flagVal = MB_YESNOCANCEL;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15448
	    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15449
	    boxFlags |= flagVal;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15450
	}
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15451
    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15452
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15453
    if (blocking == true) {
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15454
	__answer = MessageBox(hWndOwner,
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15455
		   __text,
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15456
		   __title,
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15457
		   boxFlags);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15458
    } else {
3583
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15459
	do {
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15460
	    __threadErrno = 0;
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15461
	    __answer = __STX_API_CALL4( "MessageBox",
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15462
					(void *)MessageBox,
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15463
					(void *)hWndOwner,
3583
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15464
					(void *)__text,
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15465
					(void *)__title,
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15466
					(void *)boxFlags);
85cacfd02787 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3582
diff changeset
 15467
	} while ((__answer < 0) && (__threadErrno == EINTR));
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15468
    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15469
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15470
    switch (__answer) {
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15471
	case IDABORT:
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15472
	    answer = @symbol(IDABORT);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15473
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15474
	case IDCANCEL:
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15475
	    answer = @symbol(IDCANCEL);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15476
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15477
	case IDIGNORE:
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15478
	    answer = @symbol(IDIGNORE);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15479
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15480
	case IDNO:
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15481
	    answer = @symbol(IDNO);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15482
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15483
	case IDOK:
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15484
	    answer = @symbol(IDOK);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15485
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15486
	case IDRETRY:
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15487
	    answer = @symbol(IDRETRY);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15488
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15489
	case IDYES:
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15490
	    answer = @symbol(IDYES);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15491
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15492
	default:
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15493
	    answer = __MKSMALLINT(__answer);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15494
	    break;
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15495
    }
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15496
#else
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15497
    errorCode = __MKSMALLINT(-1);
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15498
#endif /* NO_NATIVE_DIALOGS */
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15499
%}.
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15500
    (errorCode notNil) ifTrue:[
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15501
	self primitiveFailed.
3718
6818104e175e *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3714
diff changeset
 15502
	^ nil
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15503
    ].
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15504
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15505
    ^ answer
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15506
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15507
    "
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15508
     Display
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15509
	nativeMessageBoxFor:nil
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15510
	text:'Hello world'
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15511
	title:'Message'
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15512
	flags:#( OK APPLMODAL ICONSTOP )
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15513
	blocking:true
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15514
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15515
     Display
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15516
	nativeMessageBoxFor:nil
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15517
	text:'Hello world'
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15518
	title:'Message'
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15519
	flags:#( OK APPLMODAL ICONSTOP )
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15520
	blocking:false
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15521
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15522
     Display
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15523
	nativeMessageBoxFor:nil
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15524
	text:'Hello world'
3570
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15525
	title:'Message'
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15526
	flags:#( ABORTRETRYIGNORE ICONSTOP )
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15527
	blocking:false
b48b4f789317 event handling (min/max);
Claus Gittinger <cg@exept.de>
parents: 3564
diff changeset
 15528
    "
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15529
!
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15530
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15531
nativeWarnOK:aString title:titleString
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15532
     ^ self
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15533
	    nativeConfirm:aString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15534
	    title:titleString
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15535
	    flags:#( APPLMODAL ICONSTOP OK)
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15536
	    initialAnswer:nil
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15537
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15538
     "
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15539
      Screen current
4745
778644e0c89b Can compile with MS Visual C++ 8 / 2005
Stefan Vogel <sv@exept.de>
parents: 4732
diff changeset
 15540
	nativeWarnOK:'some warning' title:'Warning'
3571
7b97a1b3ff80 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 3570
diff changeset
 15541
     "
4732
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 15542
b5bdb640655a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4729
diff changeset
 15543
    "Modified: / 02-03-2007 / 15:37:47 / cg"
3508
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15544
! !
6d320fc07f4f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3506
diff changeset
 15545
4238
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15546
!WinWorkstation methodsFor:'native widget support'!
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15547
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15548
nativeDialogs
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15549
    ^ NativeDialogs ? false
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15550
!
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15551
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15552
nativeDialogs:aBoolean
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15553
    "enable / disable use of native dialogs.
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15554
     This is an experimental, unfinished, unsupported feature.
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15555
     For now, this only affects some file-, warning-, information and confirmation dialogs."
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15556
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15557
    NativeDialogs := aBoolean
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15558
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15559
    "
4240
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 15560
     Screen current nativeDialogs:true
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 15561
     Screen current nativeDialogs:false
4238
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15562
    "
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15563
!
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15564
4261
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15565
nativeWidgets
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15566
    ^ NativeWidgets ? false
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15567
!
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15568
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15569
nativeWidgets:aBoolean
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15570
    "enable / disable use of native widgets.
4238
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15571
     This is an experimental, unfinished, unsupported feature.
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15572
     For now, this only affects some widgets."
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15573
4261
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15574
    NativeWidgets := aBoolean
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15575
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15576
    "
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15577
     Screen current nativeWidgets:true
0eed7aee7d20 *** empty log message ***
ca
parents: 4257
diff changeset
 15578
     Screen current nativeWidgets:false
4238
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15579
    "
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15580
!
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15581
4263
d9dbe59481dd *** empty log message ***
ca
parents: 4262
diff changeset
 15582
supportsNativeDialogs
d9dbe59481dd *** empty log message ***
ca
parents: 4262
diff changeset
 15583
    ^ true
d9dbe59481dd *** empty log message ***
ca
parents: 4262
diff changeset
 15584
d9dbe59481dd *** empty log message ***
ca
parents: 4262
diff changeset
 15585
    "
d9dbe59481dd *** empty log message ***
ca
parents: 4262
diff changeset
 15586
     Screen current supportsNativeDialogs
d9dbe59481dd *** empty log message ***
ca
parents: 4262
diff changeset
 15587
    "
d9dbe59481dd *** empty log message ***
ca
parents: 4262
diff changeset
 15588
!
d9dbe59481dd *** empty log message ***
ca
parents: 4262
diff changeset
 15589
4238
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15590
supportsNativeWidgets
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15591
    ^ true
4240
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 15592
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 15593
    "
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 15594
     Screen current supportsNativeWidgets
d51a36bff70e *** empty log message ***
ca
parents: 4239
diff changeset
 15595
    "
4238
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15596
! !
c0bb223e53be *** empty log message ***
ca
parents: 4237
diff changeset
 15597
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15598
!WinWorkstation methodsFor:'pointer queries '!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15599
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15600
anyButtonStateMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15601
    "return an integer for masking out any button from a
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15602
     buttonStates value."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15603
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15604
    "/ should use ``Display buttonXMotionMask bitOr:....''
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15605
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15606
%{  /* NOCONTEXT */
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 15607
    RETURN ( __MKSMALLINT(AnyButtonMask) );
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15608
%}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15609
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15610
    "Modified: 23.3.1996 / 12:41:33 / cg"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15611
    "Created: 23.3.1996 / 12:46:35 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15612
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15613
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15614
buttonStates
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15615
    "return an integer representing the state of the pointer buttons;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15616
     a one-bit in positions 0.. represent a pressed button.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15617
     See the button1Mask/button2Mask/button3Mask,
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15618
     shiftMask/controlMask and modifierMask methods for the meaning of the bits."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15619
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 15620
%{  /* NOCONTEXT */
2253
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15621
    int modifiers = 0;
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15622
    int b1m = Button1Mask;
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15623
    int b3m = Button3Mask;
2688
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 15624
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 15625
    if (GetSystemMetrics(SM_SWAPBUTTON)) {
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 15626
	b3m = Button1Mask;
21f9fac6292a eat buttonPress event on activate;
Claus Gittinger <cg@exept.de>
parents: 2684
diff changeset
 15627
	b1m = Button3Mask;
2253
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15628
    }
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15629
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15630
    if (GetAsyncKeyState(VK_LBUTTON) & 0x8000)
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15631
	modifiers |= b1m;
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15632
    if (GetAsyncKeyState(VK_MBUTTON) & 0x8000)
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15633
	modifiers |= Button2Mask;
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15634
    if (GetAsyncKeyState(VK_RBUTTON) & 0x8000)
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15635
	modifiers |= b3m;
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 15636
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 15637
    RETURN (__MKSMALLINT(modifiers));
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 15638
%}
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15639
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15640
    "
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15641
     Display buttonStates
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15642
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15643
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15644
    "is the control-key pressed ?
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15645
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15646
     Display buttonStates bitTest:(Display controlMask)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15647
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15648
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15649
    "is the alt/meta-key pressed ?
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15650
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15651
     Display buttonStates bitTest:(Display altModifierMask)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15652
     Display buttonStates bitTest:(Display metaModifierMask)
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15653
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15654
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15655
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15656
leftButtonStateMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15657
    "return an integer for masking out the left button from a
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15658
     buttonStates value"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15659
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15660
    "/ should use ``Display button1MotionMask''
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15661
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15662
%{  /* NOCONTEXT */
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15663
    RETURN ( __MKSMALLINT(Button1Mask) );
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15664
%}.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15665
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15666
    "Modified: 23.3.1996 / 12:41:33 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15667
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15668
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15669
middleButtonStateMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15670
    "return an integer for masking out the middle button from a
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15671
     buttonStates value"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15672
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15673
    "/ should use ``Display button2MotionMask''
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15674
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15675
%{  /* NOCONTEXT */
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15676
    RETURN ( __MKSMALLINT(Button2Mask) );
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15677
%}.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15678
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15679
    "Modified: 23.3.1996 / 12:41:43 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15680
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15681
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15682
pointerPosition
2743
e8ec65f5a42b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2740
diff changeset
 15683
    "return the current pointer position in root-window (i.e. screen) coordinates"
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15684
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 15685
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15686
    POINT p;
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15687
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15688
    if (! GetCursorPos(&p)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15689
	p.x = 0;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15690
	p.y = 0;
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15691
    }
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15692
    RETURN (__MKPOINT_INT(p.x, p.y));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15693
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15694
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15695
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15696
rightButtonStateMask
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15697
    "return an integer for masking out the right button from a
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15698
     buttonStates value"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15699
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15700
    "/ should use ``Display button3MotionMask''
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15701
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15702
%{  /* NOCONTEXT */
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15703
    RETURN ( __MKSMALLINT(Button3Mask) );
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15704
%}.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15705
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15706
    "Modified: 23.3.1996 / 12:41:52 / cg"
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15707
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15708
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15709
rootPositionOfLastEvent
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15710
    "return the position in root-window coordinates
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15711
     of the last button, key or pointer event"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15712
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 15713
%{  /* NOCONTEXT */
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15714
    RETURN (__MKPOINT_INT(evRootX, evRootY));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15715
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15716
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15717
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15718
setPointerPosition:newPosition
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15719
    "change the pointer position in root-window coordinates."
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15720
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 15721
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15722
    if (__isPoint(newPosition)) {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15723
	OBJ xpos, ypos;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15724
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15725
	xpos = __point_X(newPosition);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15726
	ypos = __point_Y(newPosition);
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15727
	if (__bothSmallInteger(xpos, ypos)) {
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15728
	    SetCursorPos(__intVal(xpos), __intVal(ypos));
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15729
	}
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15730
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15731
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15732
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15733
1723
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15734
setPointerPosition:newPosition in:aWindowId
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15735
    "change the pointer position to a new position relative to the
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15736
     given windows origin (which may be the rootWindow).
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15737
     Be careful with this - its usually not very ergonimically
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15738
     to change the mousePointer position.
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15739
     This interface is provided for special applications (presentation
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15740
     playback) and should not be used in normal applications."
dd0862bde826 not bad ....
Claus Gittinger <cg@exept.de>
parents: 1706
diff changeset
 15741
3895
31caf29bcda1 there is no setCursorPosition (?!)
Claus Gittinger <cg@exept.de>
parents: 3850
diff changeset
 15742
"/    self setCursorPosition:(self translatePoint:newPosition from:aWindowId to:self rootView id).
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15743
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15744
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15745
!WinWorkstation methodsFor:'retrieving pixels'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15746
1461
6d8b022bfcd8 renamed getBitsFrom to getBitsFromId
Claus Gittinger <cg@exept.de>
parents: 1426
diff changeset
 15747
getBitsFromId:aDrawableId x:srcx y:srcy width:w height:h into:imageBits
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15748
    "get bits from a drawable into the imageBits. The storage for the bits
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15749
     must be big enough for the data to fit. If ok, returns an array with some
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15750
     info and the bits in imageBits. The info contains the depth, bitOrder and
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15751
     number of bytes per scanline. The number of bytes per scanline is not known
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15752
     in advance, since the X-server is free to return whatever it thinks is a good padding."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15753
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15754
    |rawInfo info|
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15755
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15756
    ((w <= 0) or:[h <= 0]) ifTrue:[
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15757
	self primitiveFailed.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15758
	^ nil
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15759
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15760
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 15761
    rawInfo := Array new:11.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15762
		  "1 -> bit order"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15763
		  "2 -> depth"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15764
		  "3 -> bytes_per_line"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15765
		  "4 -> byte_order"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15766
		  "5 -> format"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15767
		  "6 -> bitmap_unit"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15768
		  "7 -> bitmap_pad"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15769
		  "8 -> bits_per_pixel"
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 15770
		  "9 -> red_mask"
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 15771
		  "10 -> green_mask"
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 15772
		  "11 -> blue_mask"
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15773
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15774
    "/ had to extract the getPixel call into a separate method, to specify
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15775
    "/ unlimitedStack (some implementations use alloca and require huge amounts
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15776
    "/ of temporary stack space
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15777
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15778
    (self primGetBitsFrom:aDrawableId x:srcx y:srcy width:w height:h into:imageBits infoInto:rawInfo) ifTrue:[
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15779
	info := IdentityDictionary new.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15780
	info at:#bitOrder put:(rawInfo at:1).
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15781
	info at:#depth put:(rawInfo at:2).
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15782
	info at:#bytesPerLine put:(rawInfo at:3).
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15783
	info at:#byteOrder put:(rawInfo at:4).
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15784
	info at:#format put:(rawInfo at:5).
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15785
	info at:#bitmapUnit put:(rawInfo at:6).
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15786
	info at:#bitmapPad put:(rawInfo at:7).
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15787
	info at:#bitsPerPixel put:(rawInfo at:8).
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 15788
	info at:#redMask put:(rawInfo at:9).
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 15789
	info at:#greenMask put:(rawInfo at:10).
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 15790
	info at:#blueMask put:(rawInfo at:11).
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15791
	^ info
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15792
    ].
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15793
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15794
     some error occured - either args are not smallintegers, imageBits is not a ByteArray
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15795
     or is too small to hold the bits
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15796
    "
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15797
    ^ self primitiveFailed
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15798
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15799
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15800
getBitsFromPixmapId:aDrawableId x:srcx y:srcy width:w height:h into:imageBits
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15801
    "get bits from a drawable into the imageBits. The storage for the bits
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15802
     must be big enough for the data to fit. If ok, returns an array with some
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15803
     info and the bits in imageBits. The info contains the depth, bitOrder and
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15804
     number of bytes per scanline. The number of bytes per scanline is not known
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15805
     in advance, since the X-server is free to return whatever it thinks is a good padding."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15806
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15807
    |rawInfo info|
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15808
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15809
    ((w <= 0) or:[h <= 0]) ifTrue:[
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15810
	self primitiveFailed.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15811
	^ nil
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15812
    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15813
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 15814
    rawInfo := Array new:11.
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15815
		  "1 -> bit order"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15816
		  "2 -> depth"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15817
		  "3 -> bytes_per_line"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15818
		  "4 -> byte_order"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15819
		  "5 -> format"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15820
		  "6 -> bitmap_unit"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15821
		  "7 -> bitmap_pad"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15822
		  "8 -> bits_per_pixel"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15823
		  "9 -> red_mask"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15824
		  "10 -> green_mask"
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15825
		  "11 -> blue_mask"
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15826
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15827
    "/ had to extract the getPixel call into a separate method, to specify
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15828
    "/ unlimitedStack (some implementations use alloca and require huge amounts
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15829
    "/ of temporary stack space
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15830
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15831
    (self primGetBitsFromPixmap:aDrawableId x:srcx y:srcy width:w height:h into:imageBits infoInto:rawInfo) ifTrue:[
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15832
	info := IdentityDictionary new.
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15833
	info at:#bitOrder put:(rawInfo at:1).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15834
	info at:#depth put:(rawInfo at:2).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15835
	info at:#bytesPerLine put:(rawInfo at:3).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15836
	info at:#byteOrder put:(rawInfo at:4).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15837
	info at:#format put:(rawInfo at:5).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15838
	info at:#bitmapUnit put:(rawInfo at:6).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15839
	info at:#bitmapPad put:(rawInfo at:7).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15840
	info at:#bitsPerPixel put:(rawInfo at:8).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15841
	info at:#redMask put:(rawInfo at:9).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15842
	info at:#greenMask put:(rawInfo at:10).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15843
	info at:#blueMask put:(rawInfo at:11).
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 15844
	^ info
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15845
    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15846
    "
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15847
     some error occured - either args are not smallintegers, imageBits is not a ByteArray
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15848
     or is too small to hold the bits
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15849
    "
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15850
    ^ self primitiveFailed
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15851
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15852
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 15853
getPixelX:px y:py from:ignoredDrawableId with:aGCId
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15854
    "return the pixel value at x/y; coordinates start at 0/0 for the upper left.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15855
     Nil is returned for invalid coordinates or if any other problem arises."
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15856
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15857
%{  /* NOCONTEXT */
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15858
    if (__isExternalAddress(aGCId)
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15859
     && __bothSmallInteger(px, py)) {
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15860
	struct gcData *gcData = _GCDATA(aGCId);
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15861
	HDC hDC;
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15862
	int __x = __intVal(px), __y = __intVal(py);
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15863
	int pixel;
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15864
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15865
	hDC = _getDC(gcData);
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15866
	pixel = GetPixel(hDC, __x, __y);
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15867
#ifndef CACHE_LAST_DC
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15868
	_releaseDC(gcData);
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15869
#endif
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15870
	/*
4235
e90c1cad5151 *** empty log message ***
ca
parents: 4232
diff changeset
 15871
	 * for compatibility, returns the pixelValue
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15872
	 * from a monochrome bitmap
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15873
	 */
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15874
	if (gcData->hBitmap) {
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15875
	    if (gcData->bitmapColorBitCount == 1) {
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15876
		pixel = (pixel == 0) ? 0 : 1;
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15877
	    }
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15878
	}
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15879
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15880
	RETURN ( __MKSMALLINT(pixel & 0xFFFFFF) );
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15881
    }
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 15882
%}.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 15883
    ^ nil
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15884
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15885
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15886
primGetBitsFrom:aDrawableId x:srcX y:srcY width:w height:h into:imageBits infoInto:info
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 15887
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 15888
%{
2711
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
 15889
    int     height, width;
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 15890
    unsigned int numBytes;
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15891
    int     bytesPerRow;
2711
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
 15892
    HWND    hWnd;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15893
    HBITMAP hBitmap = 0;
2711
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
 15894
    HDC     bDC = 0;
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
 15895
    struct {
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 15896
	BITMAPINFOHEADER bmiHeader;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 15897
	DWORD r;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 15898
	DWORD g;
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 15899
	DWORD b;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15900
    } bitmap;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15901
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15902
    if (__isExternalAddress(aDrawableId)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15903
     && __bothSmallInteger(srcX, srcY)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15904
     && __bothSmallInteger(w, h)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15905
     && __isArray(info)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15906
     && __isByteArray(imageBits))
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15907
    {
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15908
	hWnd = _HWNDVal( aDrawableId );
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15909
	BMDPRINTF(("primGetBits %x\n",hWnd));
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 15910
	if( hWnd != 0 ) {
2711
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
 15911
	    HDC wDC;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15912
	    HANDLE prevBitmap;
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15913
	    int widthRoundedUpToNextMultipleOf4 = ((width + 3 ) / 4) * 4;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15914
	    int widthUsed;
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15915
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15916
	    bDC = CreateCompatibleDC(__rootDC);
2711
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
 15917
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15918
	    BMDPRINTF(("primGetBits srcX %d srcY %d w %d h %d\n",__intVal(srcX),__intVal(srcY),__intVal(w),__intVal(h)));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15919
	    height =  __intVal(h);
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15920
	    width  =  __intVal(w);
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15921
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15922
	    widthUsed = widthRoundedUpToNextMultipleOf4;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15923
	    widthUsed = width;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15924
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15925
	    BMDPRINTF(("width %d height %d\n",width,height));
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15926
	    hBitmap = CreateCompatibleBitmap(__rootDC, widthUsed, height);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15927
	    if (!hBitmap)
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15928
		goto fail;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15929
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15930
	    bitmap.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15931
	    bitmap.bmiHeader.biPlanes = 1;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 15932
#ifdef ALWAYSTRUECOLOR
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 15933
	    bitmap.bmiHeader.biCompression = BI_RGB;
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15934
	    bytesPerRow = (((width*3) + 3 ) / 4) * 4;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 15935
#else
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15936
	    if (__depth == 24) {
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15937
		bitmap.bmiHeader.biCompression = BI_RGB;
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15938
		bytesPerRow = (((width*3) + 3 ) / 4) * 4;
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15939
	    } else if (__depth == 16) {
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 15940
# if 0
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15941
		bitmap.bmiHeader.biCompression = BI_BITFIELDS;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15942
		bitmap.b = 0x001f;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15943
		bitmap.g = 0x07e0;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15944
		bitmap.r = 0xf800;
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15945
		bytesPerRow = (((width*2) + 1 ) / 4) * 4;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 15946
# else
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15947
		bitmap.b = 0;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15948
		bitmap.g = 0;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15949
		bitmap.r = 0;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 15950
		bitmap.bmiHeader.biCompression = BI_RGB;
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15951
		bytesPerRow = (((width*3) + 3 ) / 4) * 4;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 15952
# endif
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 15953
	    }
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 15954
#endif /* ALWAYSTRUECOLOR */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15955
	    bitmap.bmiHeader.biSizeImage = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15956
	    bitmap.bmiHeader.biXPelsPerMeter = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15957
	    bitmap.bmiHeader.biYPelsPerMeter = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15958
	    bitmap.bmiHeader.biClrUsed = 0;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15959
	    bitmap.bmiHeader.biClrImportant = 0;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 15960
	    bitmap.bmiHeader.biBitCount = __depth;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15961
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 15962
	    bitmap.bmiHeader.biWidth = widthUsed;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15963
	    bitmap.bmiHeader.biHeight = -height;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15964
2711
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
 15965
	    wDC = GetDC(hWnd);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15966
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15967
	    SelectObject(bDC, hBitmap);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15968
	    if (BitBlt(bDC,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15969
		   0,0,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15970
		   width,height,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15971
		   wDC,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15972
		   __intVal(srcX), __intVal(srcY),
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15973
		   SRCCOPY)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15974
		 == 0
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15975
		)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15976
	    {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 15977
		INFOFPRINTF((stderr, "WinWorkstation [warning]: in primGetBitsFrom: BitBlt\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15978
	    }
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15979
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15980
#ifdef CACHE_LAST_DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15981
	    if (lastGcData && (lastGcData->_hDC == wDC)) {
2732
bb3d3b26a81c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2728
diff changeset
 15982
# ifdef DEBUG_DC_REUSE
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 15983
		console_fprintf(stderr, "WinWorkstation [info]: Oops - dont release - cachedDC reuse\n", __LINE__);
2732
bb3d3b26a81c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2728
diff changeset
 15984
# endif
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15985
	    } else
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15986
#endif
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15987
#ifdef CACHE_LAST_WM_PAINT_DC
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15988
	    if (last_wm_paint_dc && (last_wm_paint_dc == wDC)) {
2732
bb3d3b26a81c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2728
diff changeset
 15989
# ifdef DEBUG_DC_REUSE
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 15990
		console_fprintf(stderr, "WinWorkstation [info]: Oops - dont release - last_wm_paint_dc reuse\n", __LINE__);
2732
bb3d3b26a81c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2728
diff changeset
 15991
# endif
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15992
	    } else
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15993
#endif
2711
11b5c243693c memory leak (DC-leak), when bitmap creation failed.
Claus Gittinger <cg@exept.de>
parents: 2706
diff changeset
 15994
	    ReleaseDC(hWnd, wDC);
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 15995
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 15996
	    if (GetDIBits(bDC,hBitmap,0,height,0,(struct tagBITMAPINFO *)&bitmap,DIB_RGB_COLORS) == 0)
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15997
	    {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 15998
		INFOFPRINTF((stderr, "WinWorkstation [warning]: noinfo returned in primGetBits\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 15999
		goto fail;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16000
	    }
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16001
	    BMDPRINTF(("bitmap info:%d %d %d %d\n",
3553
5a51330ea94a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3548
diff changeset
 16002
			bitmap.bmiHeader.biWidth, bitmap.bmiHeader.biHeight,
5a51330ea94a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3548
diff changeset
 16003
			bitmap.bmiHeader.biBitCount, bitmap.bmiHeader.biSizeImage));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16004
	    numBytes = bitmap.bmiHeader.biSizeImage;
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16005
	    if( numBytes != 0 ) {
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16006
		if (numBytes > __byteArraySize(imageBits)) {
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16007
		    /* imageBits too small */
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 16008
		    INFOFPRINTF((stderr, "WinWorkstation [warning]: primGetBits - byteArray too small (is:%d need:%d; w:%d h:%d)\n",
3553
5a51330ea94a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3548
diff changeset
 16009
				__byteArraySize(imageBits), numBytes,
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16010
				bitmap.bmiHeader.biWidth, -bitmap.bmiHeader.biHeight
3553
5a51330ea94a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3548
diff changeset
 16011
			     ));
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16012
		    goto fail;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16013
		}
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16014
		BMDPRINTF(("numBytes %d\n",numBytes));
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16015
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16016
		bitmap.bmiHeader.biHeight = -height;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16017
		if (GetDIBits(bDC,hBitmap,0,height,__ByteArrayInstPtr(imageBits)->ba_element,(struct tagBITMAPINFO *)&bitmap,DIB_RGB_COLORS) == 0)
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16018
		{
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 16019
		    INFOFPRINTF((stderr, "WinWorkstation [warning]: zero bits returned in primGetBits\n"));
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16020
		    goto fail;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16021
		}
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16022
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16023
		/* swap red and blue (windows delivers BGR) */
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16024
		{
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16025
		    char *cp = __ByteArrayInstPtr(imageBits)->ba_element;
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16026
#ifdef PRE_18_FEB_05
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16027
		    int n = numBytes;
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16028
		    for ( ;n > 0; n -= 3, cp += 3) {
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16029
			  char b = cp[0];
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16030
			  cp[0] = cp[2];
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16031
			  cp[2] = b;
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16032
		    }
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16033
#else
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16034
		    int h;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16035
		    char *rowp = cp;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16036
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16037
		    for (h=height; h>0; h--) {
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16038
			int w;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16039
			char *pixel = rowp;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16040
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16041
			for (w=width; w>0; w--) {
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16042
			    char b;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16043
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16044
			    b = pixel[0];
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16045
			    pixel[0] = pixel[2];
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16046
			    pixel[2] = b;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16047
			    pixel += 3;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16048
			};
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16049
			rowp += bytesPerRow;
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16050
		    };
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16051
#endif
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16052
		}
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16053
	    } else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 16054
		INFOFPRINTF((stderr, "WinWorkstation [warning]: unacceptable bitmap in primGetBits\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16055
		goto fail;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16056
	    }
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16057
	} else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 16058
	    INFOFPRINTF((stderr, "WinWorkstation [warning]: unacceptable bitmap in primGetBits\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16059
	    goto fail;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16060
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16061
4351
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16062
	__ArrayInstPtr(info)->a_element[0] = @symbol(msbFirst);                                 // bitOrder
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16063
	__ArrayInstPtr(info)->a_element[1] = __MKSMALLINT(1);                                   // depth
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16064
#ifdef PRE_18_FEB_05
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16065
	__ArrayInstPtr(info)->a_element[2] = __MKSMALLINT(numBytes/height); //__MKSMALLINT(widthRoundedUpToNextMultipleOf4);    // bytesPerLine
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16066
#else
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16067
	__ArrayInstPtr(info)->a_element[2] = __MKSMALLINT(bytesPerRow);                         // bytesPerLine
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16068
#endif
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16069
	__ArrayInstPtr(info)->a_element[3] = @symbol(msbFirst);                                 // byteOrder
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16070
	__ArrayInstPtr(info)->a_element[4] = @symbol(XYPixmap);                                 // format
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16071
	__ArrayInstPtr(info)->a_element[5] = __MKSMALLINT(0);                                   // bitmapUnit
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16072
	__ArrayInstPtr(info)->a_element[6] = __MKSMALLINT(WIN32PADDING);                        // bitmapPad
b19ce9513305 get bits from screen fixed
Claus Gittinger <cg@exept.de>
parents: 4328
diff changeset
 16073
	__ArrayInstPtr(info)->a_element[7] = __MKSMALLINT(bitmap.bmiHeader.biBitCount);         // bitsPerPixel
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16074
	__ArrayInstPtr(info)->a_element[8] = __MKSMALLINT(0x0000FF);   // redMask
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16075
	__ArrayInstPtr(info)->a_element[9] = __MKSMALLINT(0x00FF00);   // greenMask
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16076
	__ArrayInstPtr(info)->a_element[10] = __MKSMALLINT(0xFF0000);  // blueMask
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16077
	if (bDC)
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16078
	    DeleteDC(bDC);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16079
	if (hBitmap)
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 16080
	    _DeleteObject(hBitmap, __LINE__);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16081
	RETURN ( true );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16082
    }
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16083
fail: ;
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16084
    if (bDC)
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 16085
	DeleteDC(bDC);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16086
    if (hBitmap)
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 16087
	_DeleteObject(hBitmap, __LINE__);
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16088
%}.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16089
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16090
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16091
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16092
primGetBitsFromPixmap:aDrawableId x:srcX y:srcY width:w height:h into:imageBits infoInto:info
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 16093
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 16094
%{
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 16095
    int            height, width;
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 16096
    unsigned int   numBytes;
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 16097
    unsigned char* ep = 0;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16098
    HBITMAP        xBitmap;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16099
    HBITMAP hBitmap = 0;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16100
    HDC bDC = 0;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16101
    HDC xDC = 0;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16102
    struct
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16103
    {
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16104
	BITMAPINFOHEADER bmiHeader;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16105
	DWORD rgb[2];
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16106
    } bitmap;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16107
    BITMAP bitmapInfo;
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16108
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16109
    if (__isExternalAddress(aDrawableId)
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16110
     && __bothSmallInteger(srcX, srcY)
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 16111
     && __bothSmallInteger(w, h)
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 16112
     && __isArray(info)
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16113
     && __isByteArray(imageBits))
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16114
    {
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16115
	xBitmap = _HBITMAPVAL( aDrawableId );
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16116
	BMDPRINTF(("primGetBitsFromPixmap %x\n",xBitmap));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16117
	if (xBitmap != 0) {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16118
	    xDC = GetDC(0);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16119
	    SelectObject(xDC, xBitmap);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16120
	    GetObject(xBitmap,sizeof(bitmapInfo),&bitmapInfo);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16121
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16122
	    bDC = CreateCompatibleDC(__rootDC);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16123
	    BMDPRINTF(("srcX %d srcY %d w %d h %d\n",__intVal(srcX),__intVal(srcY),__intVal(w),__intVal(h)));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16124
	    height =  __intVal(h);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16125
	    width  =  __intVal(w);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16126
	    BMDPRINTF(("width %d height %d\n",width,height));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16127
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16128
	    hBitmap = CreateCompatibleBitmap(xDC, width, height);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16129
	    if (!hBitmap)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16130
		goto fail;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16131
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16132
	    SelectObject(bDC,hBitmap);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16133
	    if (BitBlt(bDC,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16134
		   0,0,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16135
		   width,height,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16136
		   xDC,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16137
		   __intVal(srcX), __intVal(srcY),
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16138
		   SRCCOPY)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16139
		 == 0
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16140
		)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16141
	    {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16142
		 BMDPRINTF(("ERROR in primGetBitsFromPixmap: BitBlt\n"));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16143
		 goto fail;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16144
	    }
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16145
	    bitmap.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16146
	    bitmap.bmiHeader.biPlanes = 1;
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 16147
#ifdef ALWAYSTRUECOLOR
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16148
	    bitmap.bmiHeader.biCompression = BI_RGB;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16149
#else
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16150
	    if (__depth == 24) {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16151
		/*bitmap.bmiHeader.biCompression = BI_BITFIELDS;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16152
		bitmap.r = 0xff0000;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16153
		bitmap.g = 0x00ff00;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16154
		bitmap.b = 0x0000ff;*/
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16155
		bitmap.bmiHeader.biCompression = BI_RGB;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16156
	    } else if (__depth == 16) {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16157
		/*bitmap.bmiHeader.biCompression = BI_RGB;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16158
		bitmap.bmiHeader.biCompression = BI_BITFIELDS;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16159
		bitmap.b = 0x001f;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16160
		bitmap.g = 0x07e0;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16161
		bitmap.r = 0xf800;*/
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16162
		bitmap.bmiHeader.biCompression = BI_RGB;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16163
	    } else {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16164
		BMDPRINTF(("primGetBitsFromPixmap: unsupported depth\n"));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16165
		got fail;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16166
	    }
2601
d97601d0098e getSystemMetrics now an instance method
Claus Gittinger <cg@exept.de>
parents: 2599
diff changeset
 16167
#endif /* ALWAYSTRUECOLOR */
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16168
	    bitmap.bmiHeader.biSizeImage = 0;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16169
	    bitmap.bmiHeader.biXPelsPerMeter = 0;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16170
	    bitmap.bmiHeader.biYPelsPerMeter = 0;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16171
	    bitmap.bmiHeader.biClrUsed = 0;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16172
	    bitmap.bmiHeader.biClrImportant = 0;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16173
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16174
	    bitmap.bmiHeader.biWidth = width;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16175
	    bitmap.bmiHeader.biHeight = -height;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16176
	    bitmap.bmiHeader.biBitCount = bitmapInfo.bmBitsPixel;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16177
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16178
	    if (GetDIBits(bDC,hBitmap,0,height,0,(struct tagBITMAPINFO *)&bitmap,DIB_RGB_COLORS) == 0)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16179
	    {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16180
		BMDPRINTF(("noinfo returned\n"));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16181
		goto fail;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16182
	    }
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16183
	    BMDPRINTF(("bitmap info:%d %d %d %d\n",bitmap.bmiHeader.biWidth,bitmap.bmiHeader.biHeight,bitmap.bmiHeader.biBitCount,bitmap.bmiHeader.biSizeImage));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16184
	    numBytes = bitmap.bmiHeader.biSizeImage;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16185
	    if ( numBytes != 0 ) {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16186
		if (numBytes > __byteArraySize(imageBits)) {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16187
		    /* imageBits too small */
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16188
		    BMDPRINTF(("provided byteArray too small\n"));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16189
		    goto fail;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16190
		}
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16191
		BMDPRINTF(("numBytes %d\n",numBytes));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16192
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16193
		bitmap.bmiHeader.biHeight = -height;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16194
		bitmap.bmiHeader.biBitCount = bitmapInfo.bmBitsPixel; /*__depth;*/
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16195
		bitmap.rgb[0] = 0;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16196
		bitmap.rgb[1] = 0xffffff;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16197
		if (GetDIBits(xDC,xBitmap,0,height,__ByteArrayInstPtr(imageBits)->ba_element,(struct tagBITMAPINFO *)&bitmap,DIB_RGB_COLORS) == 0)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16198
		{
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16199
		    BMDPRINTF(("zero bits returned\n"));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16200
		    goto fail;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16201
		}
3562
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16202
7b8bb39f9332 fixed pixmap readout for win32, where red and green are exchanged
Claus Gittinger <cg@exept.de>
parents: 3560
diff changeset
 16203
#if 0
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16204
		{
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16205
		    /* swap red and blue (windows delivers BGR) */
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16206
		    char *cp = __ByteArrayInstPtr(imageBits)->ba_element;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16207
		    int n = numBytes;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16208
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16209
		    for ( ;n > 0; n -= 3, cp += 3) {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16210
			  char b = cp[0];
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16211
			  cp[0] = cp[2];
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16212
			  cp[2] = b;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16213
		    }
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16214
		}
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16215
#endif
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16216
	    } else {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16217
		BMDPRINTF(("unacceptable bitmap\n"));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16218
		goto fail;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16219
	    }
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16220
	} else {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16221
	    BMDPRINTF(("unacceptable bitmap\n"));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16222
	    goto fail;
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16223
	}
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16224
	__ArrayInstPtr(info)->a_element[0] = @symbol(msbFirst);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16225
	__ArrayInstPtr(info)->a_element[1] = __MKSMALLINT(1);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16226
	__ArrayInstPtr(info)->a_element[2] = __MKSMALLINT(numBytes/height);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16227
	__ArrayInstPtr(info)->a_element[3] = @symbol(lsbFirst);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16228
	__ArrayInstPtr(info)->a_element[4] = (bitmap.bmiHeader.biBitCount == 1) ? @symbol(ZPixmap) : @symbol(XYPixmap);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16229
	__ArrayInstPtr(info)->a_element[5] = __MKSMALLINT(0);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16230
	__ArrayInstPtr(info)->a_element[6] = __MKSMALLINT(WIN32PADDING);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16231
	__ArrayInstPtr(info)->a_element[7] = __MKSMALLINT(bitmap.bmiHeader.biBitCount);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16232
	__ArrayInstPtr(info)->a_element[8] = __MKSMALLINT(0xFF0000);   // redMask
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16233
	__ArrayInstPtr(info)->a_element[9] = __MKSMALLINT(0x00FF00);   // greenMask
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16234
	__ArrayInstPtr(info)->a_element[10] = __MKSMALLINT(0x0000FF);  // blueMask
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16235
	if (bDC)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16236
	    DeleteDC(bDC);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16237
	if (xDC)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16238
	    ReleaseDC(0, xDC); //DeleteDC(xDC);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16239
	if (hBitmap)
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16240
	    DeleteObject(hBitmap);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16241
	RETURN ( true );
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 16242
    }
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16243
fail:
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16244
    if (bDC)
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16245
	DeleteDC(bDC);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16246
    if (xDC)
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16247
	ReleaseDC(0, xDC); //DeleteDC(xDC);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16248
    if (hBitmap)
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 16249
	DeleteObject(hBitmap);
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16250
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 16251
%}.
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16252
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16253
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16254
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16255
!WinWorkstation methodsFor:'style defaults'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16256
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16257
defaultStyleValueFor:aKey
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16258
    "return a default style value, given a key.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16259
     These defaults are used if nothing is specified
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16260
     in the style sheet
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16261
     This allows for empty values in style sheets, and defaults
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16262
     being provided by the display (which makes sense with Windows,
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16263
     where the systemDefaults are used ..."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16264
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16265
    |clr|
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16266
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16267
"/    aKey == #shadowColor ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16268
"/        ^ Color black
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16269
"/    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16270
"/    aKey == #lightColor ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16271
"/        ^ Color white
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16272
"/    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16273
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16274
    aKey == #viewBackgroundColor ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16275
	clr := self getSystemColor:#COLOR_WINDOW.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16276
    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16277
    aKey == #textForegroundColor ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16278
	clr := self getSystemColor:#COLOR_WINDOWTEXT
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16279
    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16280
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16281
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16282
"/    aKey == #scrollerViewBackgroundColor ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16283
"/        ^ Color white
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16284
"/    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16285
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16286
"/    aKey == #textBackgroundColor ifTrue:[
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16287
"/        ^ Color white.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16288
"/    ].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16289
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16290
    clr notNil ifTrue:[^ clr].
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16291
    ^ super defaultStyleValueFor:aKey
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16292
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16293
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16294
!WinWorkstation methodsFor:'tray access'!
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16295
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16296
addTrayIconFor:aView
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16297
	icon:wicon iconMask:wiconMaskArg
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16298
	toolTipMessage:toolTipMessageArg
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16299
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16300
    "add an icon to the tray for aView (which will receive tray-events in the future.
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16301
     The icon, mask and toolTopText are optional.
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16302
     Windows places a limit of 63 characters to the tooltip - so dont be to chatty here..."
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16303
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16304
    |windowId wiconId wiconMask invertedWiconMask wiconMaskId
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16305
     wiconWidth wiconHeight toolTipMessage|
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16306
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16307
    "/ the toolTop string cannot be longer than 64 characters including the NULL terminator
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16308
    toolTipMessageArg size > 63 ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16309
	toolTipMessage := toolTipMessageArg copyTo:63
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16310
    ] ifFalse:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16311
	toolTipMessage := toolTipMessageArg.
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16312
    ].
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16313
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16314
    windowId := aView id.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16315
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16316
    wicon notNil ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16317
	wiconId := (wicon asFormOn:self) id.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16318
	wiconHeight := wicon height.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16319
	wiconWidth  := wicon width.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16320
	wiconMask := wiconMaskArg.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16321
	wiconMask isNil ifTrue:[
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16322
	    wiconMask := wicon mask.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16323
	].
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16324
	wiconMask notNil ifTrue:[
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16325
	    "/ WIN32's mask has zeros for opaque pixels
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16326
	    invertedWiconMask := wiconMask copy.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16327
	    invertedWiconMask bits invert.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16328
	    invertedWiconMask := invertedWiconMask onDevice:self.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16329
	    wiconMaskId := invertedWiconMask id
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16330
	].
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16331
    ].
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16332
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16333
%{  /* STACK: 20000 */
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16334
#ifndef WM_TRAY_MESSAGE
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16335
# define WM_TRAY_MESSAGE (WM_USER+0x200)
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16336
#endif
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16337
    HBITMAP        xBitMap, maskBitmap;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16338
    HICON          xIcon = (HICON)0;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16339
    ICONINFO       iconInfo;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16340
    NOTIFYICONDATA nid;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16341
    unsigned char fastBits[10000];
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16342
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16343
    /* get bitmap for icon */
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16344
    if ( __isExternalAddress(wiconId) ) {
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16345
	xBitMap = _HBITMAPVAL( wiconId );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16346
	if ( xBitMap != 0 ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16347
	    BITMAP bm;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16348
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16349
	    if (GetObject(xBitMap, sizeof(bm), (LPSTR)&bm)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16350
		int d = bm.bmPlanes * bm.bmBitsPixel;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16351
		BYTE *ep;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16352
		int height, width;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16353
		int nBytes;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16354
		unsigned char *allocatedBits = 0;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16355
		int privateMask = 0;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16356
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16357
		if ( __isExternalAddress(wiconMaskId) ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16358
		    maskBitmap = _HBITMAPVAL( wiconMaskId );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16359
		} else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16360
		    if (wiconMaskId != nil) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16361
			PRINTF(("WinWorkstat [warning]: wiconMaskId is not an external address\n"));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16362
		    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16363
		    maskBitmap = 0;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16364
		}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16365
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16366
		/*
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16367
		 * if there is no mask, generate one
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16368
		 */
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16369
		if (maskBitmap == 0) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16370
		    DPRINTF(("Bitmap w:%d h:%d p:%d d:%d\n",bm.bmWidth,bm.bmHeight,bm.bmPlanes,bm.bmBitsPixel));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16371
		    height = __intVal( wiconHeight );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16372
		    width  = __intVal( wiconWidth  );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16373
		    nBytes = ( width + 15 ) / 8;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16374
		    nBytes = height * nBytes;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16375
		    if (nBytes < sizeof(fastBits)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16376
			ep = fastBits;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16377
		    } else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16378
			ep = allocatedBits = (unsigned char *) malloc(nBytes);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16379
		    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16380
		    if ( ep == 0 ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16381
			PRINTF(( "WinWorkstat [warning]: malloc failed\n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16382
		    } else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16383
			memset(ep, 0, nBytes);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16384
			maskBitmap = CreateBitmap(width, height, 1, 1, ep );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16385
			if ( maskBitmap == NULL ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16386
			    PRINTF(( "WinWorkstat [warning]: mask CREATION failed\n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16387
			} else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16388
			    privateMask = 1;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16389
			}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16390
		    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16391
		}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16392
		if ( maskBitmap != NULL ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16393
		    DPRINTF(( "BITMAP mask CREATED!!!\n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16394
		    iconInfo.fIcon = TRUE;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16395
		    iconInfo.hbmMask  = maskBitmap;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16396
		    iconInfo.hbmColor = xBitMap;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16397
		    xIcon = CreateIconIndirect( &iconInfo );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16398
		    if (privateMask) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16399
			DeleteObject( maskBitmap );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16400
		    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16401
		} else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16402
		    PRINTF(( "WinWorkstat [warning]: no mask for icon !\n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16403
		}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16404
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16405
		if (allocatedBits) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16406
		    free(allocatedBits);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16407
		}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16408
	    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16409
	} else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16410
	    DPRINTF(("WinWorkstat [warning]: xBitMap is zero \n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16411
	}
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16412
    } else {
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16413
	if (wiconId != nil) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16414
	    PRINTF(("WinWorkstat [warning]: wiconId is not an external address\n"));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16415
	}
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16416
    }
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16417
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16418
    ZeroMemory(&nid, sizeof(NOTIFYICONDATA));
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16419
    nid.cbSize = sizeof(NOTIFYICONDATA);
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16420
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16421
    if (__isExternalAddress(windowId)) {
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16422
	HWND hwnd = _HWNDVal(windowId);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16423
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16424
	if (hwnd && IsWindow(hwnd)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16425
	    nid.hWnd = hwnd; //the hWnd and uID members allow the OS to uniquely identify your icon.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16426
			     // One window (the hWnd) can have more than one icon, as long as they have unique uIDs.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16427
	    nid.uFlags =
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16428
		NIF_ICON        //we're adding an icon
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16429
		| NIF_MESSAGE   //we want the tray to send a message to the window identified by hWnd when something happens to our icon (see uCallbackMesage member below).
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16430
		| NIF_TIP;      //our icon has a tooltip.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16431
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16432
	    nid.uCallbackMessage = WM_TRAY_MESSAGE; //this message must be handled in hwnd's window procedure. more info below.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16433
	    if (xIcon) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16434
		nid.hIcon   = xIcon;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16435
		/* wc.hIconSm = wiconId; In 4.x there are large and small icons */
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16436
	    } else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16437
		nid.hIcon = NULL;        /* THIS MUST BE NULL TO DELETE ICONS */
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16438
	    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16439
	    if (__isString(toolTipMessage)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16440
		strcpy(nid.szTip, __stringVal(toolTipMessage));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16441
	    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16442
	    Shell_NotifyIcon(NIM_ADD, &nid);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16443
	}
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16444
    }
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16445
%}
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16446
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16447
    "
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16448
     |v icon|
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16449
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16450
     v := StandardSystemView new.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16451
     v openAndWait.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16452
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16453
     icon := Icon stxIcon.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16454
     Screen current
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16455
	  addTrayIconFor:v
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16456
	  icon:icon iconMask:nil
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16457
	  toolTipMessage:'Hi There'
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16458
    "
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16459
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16460
    "Created: / 31-10-2007 / 01:51:49 / cg"
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16461
    "Modified: / 05-11-2007 / 12:18:54 / cg"
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16462
!
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16463
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16464
removeTrayIconFor:aView
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16465
    "remove the tray icon"
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16466
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16467
    |windowId wiconId wiconMask invertedWiconMask wiconMaskId
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16468
     wiconWidth wiconHeight|
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16469
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16470
    windowId := aView id.
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16471
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16472
%{  /* STACK: 20000 */
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16473
#ifndef WM_TRAY_MESSAGE
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16474
# define WM_TRAY_MESSAGE (WM_USER+0x200)
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16475
#endif
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16476
    NOTIFYICONDATA nid;
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16477
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16478
    ZeroMemory(&nid, sizeof(NOTIFYICONDATA));
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16479
    nid.cbSize = sizeof(NOTIFYICONDATA);
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16480
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16481
    if (__isExternalAddress(windowId)) {
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16482
	HWND hwnd = _HWNDVal(windowId);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16483
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16484
	if (hwnd && IsWindow(hwnd)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16485
	    nid.hWnd = hwnd;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16486
	    Shell_NotifyIcon(NIM_DELETE, &nid);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16487
	}
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16488
    }
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16489
%}
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16490
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16491
    "
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16492
     |v icon|
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16493
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16494
     v := StandardSystemView new.
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16495
     v openAndWait.
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16496
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16497
     icon := Icon stxIcon.
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16498
     Screen current
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16499
	  addTrayIconFor:v
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16500
	  icon:icon iconMask:nil
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16501
	  toolTipMessage:'Hi There'.
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16502
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16503
     Delay waitForSeconds:3.
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16504
     icon := Tools::NewSystemBrowser defaultIcon.
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16505
     Screen current
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16506
	  setTrayIconFor:v
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16507
	  icon:icon iconMask:nil.
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16508
     Delay waitForSeconds:3.
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16509
     Screen current
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16510
	    removeTrayIconFor:v.
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16511
    "
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16512
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16513
    "Created: / 05-11-2007 / 12:17:17 / cg"
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16514
!
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16515
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16516
setTrayIconFor:aView icon:wicon iconMask:wiconMaskArg
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16517
    "change the tray icon"
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16518
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16519
    |windowId wiconId wiconMask invertedWiconMask wiconMaskId
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16520
     wiconWidth wiconHeight|
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16521
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16522
    windowId := aView id.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16523
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16524
    wicon notNil ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16525
	wiconId := (wicon asFormOn:self) id.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16526
	wiconHeight := wicon height.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16527
	wiconWidth  := wicon width.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16528
	wiconMask := wiconMaskArg.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16529
	wiconMask isNil ifTrue:[
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16530
	    wiconMask := wicon mask.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16531
	].
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16532
	wiconMask notNil ifTrue:[
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16533
	    "/ WIN32's mask has zeros for opaque pixels
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16534
	    invertedWiconMask := wiconMask copy.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16535
	    invertedWiconMask bits invert.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16536
	    invertedWiconMask := invertedWiconMask onDevice:self.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16537
	    wiconMaskId := invertedWiconMask id
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16538
	].
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16539
    ].
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16540
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16541
%{  /* STACK: 20000 */
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16542
#ifndef WM_TRAY_MESSAGE
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16543
# define WM_TRAY_MESSAGE (WM_USER+0x200)
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16544
#endif
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16545
    HBITMAP        xBitMap, maskBitmap;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16546
    HICON          xIcon = (HICON)0;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16547
    ICONINFO       iconInfo;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16548
    NOTIFYICONDATA nid;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16549
    unsigned char fastBits[10000];
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16550
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16551
    /* get bitmap for icon */
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16552
    if ( __isExternalAddress(wiconId) ) {
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16553
	xBitMap = _HBITMAPVAL( wiconId );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16554
	if ( xBitMap != 0 ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16555
	    BITMAP bm;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16556
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16557
	    if (GetObject(xBitMap, sizeof(bm), (LPSTR)&bm)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16558
		int d = bm.bmPlanes * bm.bmBitsPixel;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16559
		BYTE *ep;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16560
		int height, width;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16561
		int nBytes;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16562
		unsigned char *allocatedBits = 0;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16563
		int privateMask = 0;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16564
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16565
		if ( __isExternalAddress(wiconMaskId) ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16566
		    maskBitmap = _HBITMAPVAL( wiconMaskId );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16567
		} else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16568
		    if (wiconMaskId != nil) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16569
			PRINTF(("WinWorkstat [warning]: wiconMaskId is not an external address\n"));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16570
		    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16571
		    maskBitmap = 0;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16572
		}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16573
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16574
		/*
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16575
		 * if there is no mask, generate one
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16576
		 */
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16577
		if (maskBitmap == 0) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16578
		    DPRINTF(("Bitmap w:%d h:%d p:%d d:%d\n",bm.bmWidth,bm.bmHeight,bm.bmPlanes,bm.bmBitsPixel));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16579
		    height = __intVal( wiconHeight );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16580
		    width  = __intVal( wiconWidth  );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16581
		    nBytes = ( width + 15 ) / 8;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16582
		    nBytes = height * nBytes;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16583
		    if (nBytes < sizeof(fastBits)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16584
			ep = fastBits;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16585
		    } else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16586
			ep = allocatedBits = (unsigned char *) malloc(nBytes);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16587
		    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16588
		    if ( ep == 0 ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16589
			PRINTF(( "WinWorkstat [warning]: malloc failed\n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16590
		    } else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16591
			memset(ep, 0, nBytes);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16592
			maskBitmap = CreateBitmap(width, height, 1, 1, ep );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16593
			if ( maskBitmap == NULL ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16594
			    PRINTF(( "WinWorkstat [warning]: mask CREATION failed\n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16595
			} else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16596
			    privateMask = 1;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16597
			}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16598
		    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16599
		}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16600
		if ( maskBitmap != NULL ) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16601
		    DPRINTF(( "BITMAP mask CREATED!!!\n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16602
		    iconInfo.fIcon = TRUE;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16603
		    iconInfo.hbmMask  = maskBitmap;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16604
		    iconInfo.hbmColor = xBitMap;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16605
		    xIcon = CreateIconIndirect( &iconInfo );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16606
		    if (privateMask) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16607
			DeleteObject( maskBitmap );
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16608
		    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16609
		} else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16610
		    PRINTF(( "WinWorkstat [warning]: no mask for icon !\n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16611
		}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16612
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16613
		if (allocatedBits) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16614
		    free(allocatedBits);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16615
		}
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16616
	    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16617
	} else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16618
	    DPRINTF(("WinWorkstat [warning]: xBitMap is zero \n" ));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16619
	}
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16620
    } else {
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16621
	if (wiconId != nil) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16622
	    PRINTF(("WinWorkstat [warning]: wiconId is not an external address\n"));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16623
	}
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16624
    }
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16625
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16626
    ZeroMemory(&nid, sizeof(NOTIFYICONDATA));
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16627
    nid.cbSize = sizeof(NOTIFYICONDATA);
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16628
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16629
    if (__isExternalAddress(windowId)) {
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16630
	HWND hwnd = _HWNDVal(windowId);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16631
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16632
	if (hwnd && IsWindow(hwnd)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16633
	    nid.hWnd = hwnd; //the hWnd and uID members allow the OS to uniquely identify your icon.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16634
			     // One window (the hWnd) can have more than one icon, as long as they have unique uIDs.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16635
	    nid.uFlags = NIF_ICON;      //our icon has a tooltip.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16636
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16637
	    if (xIcon) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16638
		nid.hIcon   = xIcon;
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16639
		/* wc.hIconSm = wiconId; In 4.x there are large and small icons */
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16640
	    } else {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16641
		nid.hIcon = NULL;        /* THIS MUST BE NULL TO DELETE ICONS */
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16642
	    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16643
	    Shell_NotifyIcon(NIM_MODIFY, &nid);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16644
	}
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16645
    }
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16646
%}
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16647
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16648
    "
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16649
     |v icon|
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16650
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16651
     v := StandardSystemView new.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16652
     v openAndWait.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16653
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16654
     icon := Icon stxIcon.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16655
     Screen current
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16656
	  addTrayIconFor:v
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16657
	  icon:icon iconMask:nil
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16658
	  toolTipMessage:'Hi There'.
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16659
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16660
     Delay waitForSeconds:3.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16661
     icon := Tools::NewSystemBrowser defaultIcon.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16662
     Screen current
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16663
	  setTrayIconFor:v
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16664
	  icon:icon iconMask:nil.
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16665
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16666
    "
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16667
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16668
    "Created: / 31-10-2007 / 11:41:33 / cg"
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16669
    "Modified: / 05-11-2007 / 12:19:12 / cg"
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16670
!
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16671
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16672
setTrayIconsToolTipMessageFor:aView to:toolTipMessageArg
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16673
    "Change the toolTopText.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16674
     Windows seems to have a bug here, in that while being shown,
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16675
     a change of the toolTipText is not immediately visible
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16676
     (i.e. the new text will appear when the current toolTip view is hidden
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16677
     and reopened)
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16678
     Windows places a limit of 63 characters to the tooltip - so dont be to chatty here..."
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16679
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16680
    |windowId wiconId wiconMask invertedWiconMask wiconMaskId
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16681
     wiconWidth wiconHeight toolTipMessage|
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16682
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16683
    "/ the toolTop string cannot be longer than 64 characters including the NULL terminator
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16684
    toolTipMessageArg size > 63 ifTrue:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16685
	toolTipMessage := toolTipMessageArg copyTo:63
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16686
    ] ifFalse:[
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16687
	toolTipMessage := toolTipMessageArg.
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16688
    ].
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16689
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16690
    windowId := aView id.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16691
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16692
%{  /* STACK: 20000 */
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16693
    NOTIFYICONDATA nid;
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16694
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16695
    ZeroMemory(&nid, sizeof(NOTIFYICONDATA));
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16696
    nid.cbSize = sizeof(NOTIFYICONDATA);
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16697
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16698
    if (__isExternalAddress(windowId)) {
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16699
	HWND hwnd = _HWNDVal(windowId);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16700
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16701
	if (hwnd && IsWindow(hwnd)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16702
	    nid.hWnd = hwnd; //the hWnd and uID members allow the OS to uniquely identify your icon.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16703
			     // One window (the hWnd) can have more than one icon, as long as they have unique uIDs.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16704
	    nid.uFlags = NIF_TIP;    //change the tooltip.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16705
	    if (__isString(toolTipMessage)) {
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16706
		strcpy(nid.szTip, __stringVal(toolTipMessage));
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16707
	    }
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16708
	    Shell_NotifyIcon(NIM_MODIFY, &nid);
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16709
	}
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16710
    }
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16711
%}
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16712
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16713
    "
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16714
     |v icon|
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16715
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16716
     v := StandardSystemView new.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16717
     v openAndWait.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16718
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16719
     icon := Icon stxIcon.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16720
     Screen current
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16721
	  addTrayIconFor:v
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16722
	  icon:icon iconMask:nil
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16723
	  toolTipMessage:'Hi There'.
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16724
     1 to:5 do:[:i |
4854
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16725
	 Delay waitForSeconds:2.
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16726
	 Screen current
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16727
	      setTrayIconsToolTipMessageFor:v
72fb81def965 debugging native dialogs
Claus Gittinger <cg@exept.de>
parents: 4839
diff changeset
 16728
	      to:(i printString).
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16729
     ].
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16730
     v destroy.
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16731
    "
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16732
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16733
    "Created: / 31-10-2007 / 11:25:49 / cg"
4839
94d6e856774e comments;
Claus Gittinger <cg@exept.de>
parents: 4832
diff changeset
 16734
    "Modified: / 05-11-2007 / 12:20:53 / cg"
4831
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16735
! !
6e6e9579cae0 icon & toolTip update for tray
Claus Gittinger <cg@exept.de>
parents: 4829
diff changeset
 16736
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16737
!WinWorkstation methodsFor:'window stuff'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16738
4792
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16739
activateWindow1:aWindowId
4523
df48174867cc Do not collapse a maximized window on #activate:
Stefan Vogel <sv@exept.de>
parents: 4511
diff changeset
 16740
    "make a window active (so that it gets the focus)"
2333
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
 16741
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 16742
%{  /* NOCONTEXT */
2333
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
 16743
    if (__isExternalAddress(aWindowId)) {
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16744
	HWND win = _HWNDVal(aWindowId);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16745
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16746
	if (win) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16747
	    CPRINTF(("activateWindow %x\n",win));
4353
4547c189668a raise bug under win32
Claus Gittinger <cg@exept.de>
parents: 4351
diff changeset
 16748
#if 0
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16749
	    ShowWindowAsync(win, SW_SHOW);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16750
#else
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16751
	    ShowWindow(win, SW_SHOW);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16752
#endif
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16753
	}
4792
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16754
    }
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16755
%}
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16756
!
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16757
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16758
activateWindow2:aWindowId
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16759
    "make a window active (so that it gets the focus).
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16760
     Paranoid implementation."
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16761
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16762
%{  /* NOCONTEXT */
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16763
    if (__isExternalAddress(aWindowId)) {
4804
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16764
	HWND win = _HWNDVal(aWindowId);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16765
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16766
	if (win) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16767
	    DWORD activeThreadID, activeProcessID;
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16768
	    DWORD myThreadID;
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16769
	    HWND foregroundWindow = GetForegroundWindow();
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16770
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16771
	    if (foregroundWindow) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16772
		activeThreadID = GetWindowThreadProcessId(foregroundWindow, &activeProcessID);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16773
		myThreadID = GetCurrentThreadId();
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16774
		AttachThreadInput(activeThreadID, myThreadID, TRUE);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16775
	    }
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16776
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16777
	    // Do our stuff here ;-)
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16778
	    ShowWindow(win, SW_SHOW);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16779
	    SetForegroundWindow(win);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16780
	    SetFocus(win);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16781
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16782
	    if (foregroundWindow) {
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16783
		AttachThreadInput(activeThreadID, myThreadID, FALSE);
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16784
	    }
8f5c11474e4d font extent computation
Claus Gittinger <cg@exept.de>
parents: 4802
diff changeset
 16785
	}
4792
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16786
    }
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16787
%}
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16788
!
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16789
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16790
activateWindow:aWindowId
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16791
    "make a window active (so that it gets the focus)"
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16792
5150
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 16793
    "/ on some systems I seem to not get the window to be raised with focus.
4792
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16794
    "/ we might try activate2 there.
59e34dfdfae7 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4748
diff changeset
 16795
5150
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 16796
    "/ self activateWindow1:aWindowId
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 16797
    self activateWindow2:aWindowId
2333
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
 16798
!
3f55f0f09e25 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2331
diff changeset
 16799
4490
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 16800
animateWindow:aWindowId show:doShow animation:animationSymbolorNil time:timeInMillisOrNil
4491
c011e738596f *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4490
diff changeset
 16801
    "make a window visible/invisible with animation effect.
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16802
     CAVEAT:
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16803
	This does not work yet correctly, as we do not handle WM_PRINT messages correctly."
4490
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 16804
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 16805
%{
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 16806
    if (__isExternalAddress(aWindowId)) {
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16807
	HWND hWnd = _HWNDVal(aWindowId);
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16808
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16809
	if (hWnd) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16810
	    DWORD how = (doShow == true) ? AW_ACTIVATE : AW_HIDE;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16811
	    DWORD time = 0;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16812
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16813
	    CPRINTF(("mapWindowAnimated %x\n", hWnd));
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16814
	    if (animationSymbolorNil != nil) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16815
		if (__isSmallInteger(timeInMillisOrNil)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16816
		    time = __intVal(timeInMillisOrNil);
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16817
		}
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16818
		if (animationSymbolorNil == @symbol(SLIDE)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16819
		    how |= AW_SLIDE;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16820
		} else if (animationSymbolorNil == @symbol(BLEND)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16821
		    how |= AW_BLEND;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16822
		} else if (animationSymbolorNil == @symbol(CENTER)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16823
		    how |= AW_CENTER;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16824
		} else if (animationSymbolorNil == @symbol(HOR_POSITIVE)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16825
		    how |= AW_HOR_POSITIVE;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16826
		} else if (animationSymbolorNil == @symbol(HOR_NEGATIVE)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16827
		    how |= AW_HOR_NEGATIVE;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16828
		} else if (animationSymbolorNil == @symbol(VER_POSITIVE)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16829
		    how |= AW_VER_POSITIVE;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16830
		} else if (animationSymbolorNil == @symbol(VER_NEGATIVE)) {
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16831
		    how |= AW_VER_NEGATIVE;
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16832
		}
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16833
	    }
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16834
	    AnimateWindow(hWnd, time, how);
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16835
	}
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 16836
	RETURN ( self );
4490
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 16837
    }
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 16838
%}
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 16839
!
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 16840
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16841
configureWindow:aWindowId sibling:siblingId stackMode:modeSymbol
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16842
    "configure stacking operation of aWindowId w.r.t siblingId"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16843
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16844
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16845
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16846
dropFilesWindow:aWindowId accept:doAccept
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16847
    "window accept Files from Shell"
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16848
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 16849
%{  /*  */
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16850
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16851
    if (__isExternalAddress(aWindowId)) {
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16852
	HWND hWnd = _HWNDVal(aWindowId);
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16853
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16854
	if (hWnd) {
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16855
	    if (doAccept == true)
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 16856
	    DragAcceptFiles(hWnd, (doAccept == true) ? TRUE : FALSE);
2374
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16857
	}
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16858
	RETURN ( self );
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16859
    }
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16860
%}
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16861
!
0eccb286561b redefined #preferredIconSize
Claus Gittinger <cg@exept.de>
parents: 2369
diff changeset
 16862
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16863
getParentWindowIdOfWindowId:aChildWindowId
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16864
%{  /* NOCONTEXT */
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16865
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16866
    if (__isExternalAddress(aChildWindowId)) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16867
	HWND wChild = _HWNDVal(aChildWindowId);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16868
	HWND wParent;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16869
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16870
	if (wChild) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16871
	    wParent = GetParent(wChild);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16872
	    if (wParent) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16873
		RETURN ( __MKEXTERNALADDRESS(wParent) );
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16874
	    }
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16875
	}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16876
    }
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16877
%}.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16878
    ^ nil
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16879
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16880
    "
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16881
     |top v|
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16882
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16883
     top := View new.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16884
     v := View in:top.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16885
     top realize.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16886
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16887
     self assert:(Display getParentWindowIdOfWindowId:(v id)) = top id.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16888
    "
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16889
!
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16890
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16891
getThreadIdOfWindowId:windowId
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16892
%{  /* NOCONTEXT */
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16893
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16894
    if (__isExternalAddress(windowId)) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16895
	HWND hwnd = _HWNDVal(windowId);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16896
	DWORD id;
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16897
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16898
	if (hwnd) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16899
	    id = GetWindowThreadProcessId(hwnd, &id);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16900
	    RETURN ( __MKEXTERNALADDRESS(id) );
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16901
	}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16902
    }
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16903
%}.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16904
    ^ nil
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16905
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16906
    "
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16907
     |top|
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16908
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16909
     top := View new.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16910
     top realize.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16911
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16912
     self assert:(Display getThreadIdOfWindowId:(top id)) = OperatingSystem getProcessId.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16913
    "
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16914
!
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16915
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16916
getWindowIdFromThreadId:id
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16917
    |l|
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16918
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16919
    l := OrderedCollection new.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16920
    self primEnumWindowsInto:l.
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16921
    l do:[:eachWindowId |
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16922
	(self getParentWindowIdOfWindowId:eachWindowId) isNil ifTrue:[
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16923
	    "/ a topView
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16924
	    (self getThreadIdOfWindowId:eachWindowId) = id ifTrue:[
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16925
		^ eachWindowId
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16926
	    ].
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16927
	]
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16928
    ].
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16929
    ^ nil
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16930
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16931
    "
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16932
     Display getWindowIdFromThreadId:(OperatingSystem getProcessId)
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16933
    "
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16934
!
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 16935
4455
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16936
isValidWindowId:aWindowId
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16937
    "return true, if the given window ID is (still) valid.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16938
     Especially useful, if the passed windowID is
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16939
     an alien (external) windows id."
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16940
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16941
%{
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16942
    if (__isExternalAddress(aWindowId)) {
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16943
	HWND win = _HWNDVal(aWindowId);
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16944
	DWORD threadID, processID = 0;
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16945
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16946
	if (! IsWindow(win)) {
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16947
	    RETURN (false);
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16948
	}
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16949
	threadID = GetWindowThreadProcessId(win, &processID);
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16950
	if ((threadID==0) || (processID==0)) {
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16951
	    RETURN (false);
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16952
	}
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16953
	RETURN (true);
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16954
    }
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16955
%}.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16956
    self primitiveFailed.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16957
    ^ false
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16958
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16959
    "
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16960
     |v aWindowId ok|
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16961
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16962
     v := StandardSystemView new.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16963
     v label:'hello'.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16964
     v openAndWait.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16965
     aWindowId := v id.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16966
     ok := Display isValidWindowId:aWindowId.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16967
     Transcript showCR:'ok is: ' , ok printString.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16968
     Delay waitForSeconds:1.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16969
     v destroy.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16970
     Delay waitForSeconds:0.5.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16971
     ok := Display isValidWindowId:aWindowId.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16972
     Transcript showCR:'ok is: ' , ok printString.
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16973
    "
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16974
!
934b54c11ed4 drop from windows
Claus Gittinger <cg@exept.de>
parents: 4448
diff changeset
 16975
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16976
lowerWindow:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16977
    "bring a window to back"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16978
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 16979
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16980
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16981
    if (__isExternalAddress(aWindowId)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16982
	HWND win = _HWNDVal(aWindowId);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16983
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 16984
	if (win) {
2244
c47cacb08e76 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2240
diff changeset
 16985
	    CPRINTF(("lowerWindow %x\n",win));
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 16986
	    SetWindowPos(win, HWND_BOTTOM, 0, 0, 0, 0,
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 16987
			 SWP_NOSENDCHANGING |
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 16988
			 SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOSIZE);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16989
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16990
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 16991
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 16992
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16993
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 16994
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 16995
mapView:aView id:aWindowId iconified:aBoolean atX:x y:y width:w height:h minExtent:minExt maxExtent:maxExt
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 16996
    "make a window visible - either as icon or as a real view
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 16997
     in addition, allow change of extend, position, minExtend and maxExtent.
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 16998
     Needed for restart, to allow recreating a view as iconified,
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 16999
     and to collaps/expand windows."
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17000
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17001
    |minW minH maxW maxH|
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17002
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17003
    minExt notNil ifTrue:[
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17004
	minW := minExt x.
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17005
	minH := minExt y.
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17006
    ].
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17007
    maxExt notNil ifTrue:[
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17008
	maxW := maxExt x.
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17009
	maxH := maxExt y.
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17010
    ].
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17011
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17012
%{
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17013
    if (__isExternalAddress(aWindowId)) {
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17014
	HWND win = _HWNDVal(aWindowId);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17015
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17016
	if (win) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17017
	    int bw = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17018
	    int flag = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17019
	    int __left, __top, __width, __height;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17020
	    int winStyleBits;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17021
	    int winExStyleBits;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17022
	    localWindowInfo *lI;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17023
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17024
	    bw = GetWindow_bw(win);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17025
	    winStyleBits = GetWindowLong(win, GWL_STYLE);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17026
	    winExStyleBits = GetWindowLong(win, GWL_EXSTYLE);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17027
	    lI = GETLOCALWINDOWINFOPTR(win);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17028
	    if (! lI) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17029
		console_fprintf(stderr, "WinWorkstation [info]: oops - no localInfo in mapView\n");
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17030
		RETURN (self);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17031
	    }
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17032
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17033
	    if (__bothSmallInteger(x, y)) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17034
		__left = __intVal(x) + bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17035
		__top = __intVal(y) + bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17036
	    } else {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17037
		__left = __top = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17038
		flag |= SWP_NOMOVE;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17039
	    }
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17040
	    if (__bothSmallInteger(w, h)) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17041
		__width = __intVal(w) - bw - bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17042
		__height = __intVal(h) - bw - bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17043
	    } else {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17044
		__width = __height = 100;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17045
		flag |= SWP_NOSIZE;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17046
	    }
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17047
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17048
	    if (__bothSmallInteger(minW, minH)) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17049
		RECT rec;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17050
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17051
		rec.left = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17052
		rec.top = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17053
		rec.right = __intVal(minW);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17054
		rec.bottom = __intVal(minH);
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17055
#ifdef ADJUSTWINDOW
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17056
		AdjustWindowRectEx(&rec, winStyleBits, 0, winExStyleBits);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17057
#endif
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17058
		lI->minWidth = rec.right - rec.left;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17059
		lI->minHeight = rec.bottom - rec.top;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17060
	    }
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17061
	    if (__bothSmallInteger(maxW, maxH)) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17062
		RECT rec;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17063
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17064
		rec.left = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17065
		rec.top = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17066
		rec.right = __intVal(maxW);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17067
		rec.bottom = __intVal(maxH);
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17068
#ifdef ADJUSTWINDOW
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17069
		AdjustWindowRectEx(&rec, winStyleBits, 0, winExStyleBits);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17070
#endif
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17071
		lI->maxWidth = rec.right - rec.left;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17072
		lI->maxHeight = rec.bottom - rec.top;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17073
	    }
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17074
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17075
#ifdef ADJUSTWINDOW
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17076
	    if (flag != (SWP_NOMOVE | SWP_NOSIZE)) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17077
		RECT rec;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17078
		int __left0, __top0, __width0, __height0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17079
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17080
		__left0   = __left;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17081
		__top0    = __top;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17082
		__width0  = __width;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17083
		__height0 = __height;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17084
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17085
		rec.left = __left-2;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17086
		rec.top = __top-2;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17087
		rec.right = rec.left + __width;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17088
		rec.bottom = rec.top + __height;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17089
		AdjustWindowRectEx(&rec, winStyleBits, 0, winExStyleBits);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17090
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17091
		__left = rec.left;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17092
		__top = rec.top;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17093
		__width = rec.right - rec.left;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17094
		__height = rec.bottom - rec.top;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17095
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17096
		CPRINTF(("mapView %x %d/%d %d/%d -> %d/%d %d/%d\n",
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17097
			 win,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17098
			 __left0, __top0, __width0, __height0,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17099
			 __left, __top, __width, __height));
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17100
	    }
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17101
#else
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17102
	    CPRINTF(("mapView %x %d/%d %d/%d\n",
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17103
		     win,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17104
		     __left, __top, __width, __height));
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17105
#endif
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17106
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17107
	    flag |= SWP_NOACTIVATE | SWP_NOSENDCHANGING | SWP_NOZORDER | SWP_NOOWNERZORDER;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17108
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17109
	    if (aBoolean == true) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17110
		/* iconified */
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17111
//              SetWindowPos(win, (HWND)0,
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17112
//                           __left, __top, __width, __height,
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17113
//                           flag);
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17114
//                ShowWindow(win, SW_SHOWMINIMIZED);
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17115
		ShowWindowAsync(win, SW_SHOWMINNOACTIVE);
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
 17116
/*
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17117
		enqEvent(0, win, WM_SHOWWINDOW, FALSE, 0, 0, 0, 0, EV_NOTIME);
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
 17118
*/
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17119
	    } else {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17120
		/* normal */
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17121
		SetWindowPos(win, (HWND)0,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17122
			     __left, __top, __width, __height,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17123
			     flag);
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
 17124
/*
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17125
		enqEvent(0, win, WM_SHOWWINDOW, TRUE, 0, 0, 0, 0, EV_NOTIME);
2681
b86cc145f329 threadsafe printfs now defined in ntIntern.h
Claus Gittinger <cg@exept.de>
parents: 2677
diff changeset
 17126
*/
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17127
		//ShowWindow(win, SW_RESTORE);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17128
		// ShowWindowAsync(win, SW_RESTORE);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17129
		ShowWindowAsync(win, SW_SHOWNOACTIVATE);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17130
	    }
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17131
	}
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17132
	RETURN ( self );
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17133
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17134
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17135
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17136
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17137
mapWindow:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17138
    "make a window visible"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17139
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17140
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17141
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17142
    if (__isExternalAddress(aWindowId)) {
2724
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17143
	HWND hWnd = _HWNDVal(aWindowId);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17144
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17145
	if (hWnd) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17146
	    CPRINTF(("mapWindow %x\n", hWnd));
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17147
	    if (GetParent(hWnd) == 0) {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17148
		ShowWindowAsync(hWnd, SW_SHOWNOACTIVATE);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17149
	    } else {
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17150
		ShowWindowAsync(hWnd, SW_SHOWNORMAL);
a8d2a8723791 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2715
diff changeset
 17151
	    }
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17152
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17153
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17154
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17155
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17156
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17157
4490
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 17158
mapWindow:aWindowId animation:animationSymbolorNil time:timeInMillisOrNil
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 17159
    "make a window visible with some animation effect"
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 17160
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 17161
    self animateWindow:aWindowId show:true animation:animationSymbolorNil time:timeInMillisOrNil
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 17162
!
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 17163
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17164
moveResizeWindow:aWindowId x:x y:y width:w height:h
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17165
    "move and resize a window"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17166
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17167
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17168
    RECT rec;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17169
    if (__isExternalAddress(aWindowId)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17170
     && __bothSmallInteger(x, y)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17171
     && __bothSmallInteger(w, h)) {
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17172
	HWND win = _HWNDVal(aWindowId);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17173
	int bw = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17174
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17175
	if (win) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17176
	    bw = GetWindow_bw(win);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17177
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17178
	    rec.left = __intVal(x) + bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17179
	    rec.top = __intVal(y) + bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17180
	    rec.right = rec.left + __intVal(w) - bw - bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17181
	    rec.bottom = rec.top + __intVal(h) - bw - bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17182
	    if (GetParent(win) == 0) {
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17183
#ifdef ADJUSTWINDOW
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17184
		AdjustWindowRectEx(&rec,GetWindowLong(win,GWL_STYLE),0,GetWindowLong(win,GWL_EXSTYLE));
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17185
#endif
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17186
	    }
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17187
	    CPRINTF(("moveresize %x x:%d y:%d w:%d h:%d -> x:%d y:%d w:%d h:%d\n",win,__intVal(x),__intVal(y),__intVal(w),__intVal(h),rec.left,rec.top,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17188
			 rec.right - rec.left, rec.bottom - rec.top));
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17189
	    SetWindowPos(win, (HWND)0,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17190
			 rec.left, rec.top,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17191
			 rec.right - rec.left, rec.bottom - rec.top,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17192
			 SWP_NOSENDCHANGING | SWP_NOACTIVATE | SWP_NOZORDER | SWP_NOOWNERZORDER);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17193
	}
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17194
	RETURN ( self );
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17195
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17196
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17197
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17198
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17199
moveWindow:aWindowId x:x y:y
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17200
    "move a window"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17201
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17202
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17203
    RECT rec;
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17204
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17205
    if (__isExternalAddress(aWindowId)
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17206
     && __bothSmallInteger(x, y)) {
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17207
	HWND win = _HWNDVal(aWindowId);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17208
	int bw = 0;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17209
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17210
	if (win) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17211
	    bw = GetWindow_bw(win);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17212
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17213
	    rec.left = __intVal(x) + bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17214
	    rec.top = __intVal(y) + bw;
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17215
	    if (GetParent(win) == 0) {
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17216
		rec.right = rec.left + 10;  /* only needed to give adjust some valid numbers */
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17217
		rec.bottom = rec.top + 10;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17218
#ifdef ADJUSTWINDOW
4939
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17219
		AdjustWindowRectEx(&rec, GetWindowLong(win,GWL_STYLE), 0, GetWindowLong(win,GWL_EXSTYLE));
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17220
#endif
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17221
	    }
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17222
	    CPRINTF(("move %x x:%d y:%d -> x:%d y:%d\n", win,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17223
			__intVal(x), __intVal(y), rec.left, rec.top));
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17224
	    SetWindowPos(win, (HWND)0,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17225
			 rec.left, rec.top,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17226
			 0, 0,
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17227
			 SWP_NOSENDCHANGING | SWP_NOACTIVATE | SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER);
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17228
	}
8f9071993f39 workstation: care for pen when drawing text.
Claus Gittinger <cg@exept.de>
parents: 4917
diff changeset
 17229
	RETURN ( self );
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17230
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17231
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17232
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17233
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17234
primEnumChildWindowsOf:aWindowId into:handleList
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17235
%{
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17236
    if (__isExternalAddress(aWindowId)) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17237
	HWND hwParent = _HWNDVal(aWindowId);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17238
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17239
	if ( EnumChildWindows( hwParent, EnumWindowsProc, (DWORD)&(handleList))) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17240
	    DPRINTF(("EnumChildWindows successful\n"));
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17241
	}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17242
    }
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17243
%}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17244
!
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17245
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 17246
primEnumWindowsInto:handleList
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17247
%{
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 17248
    if ( EnumWindows( EnumWindowsProc, (DWORD)&(handleList))) {
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 17249
	DPRINTF(("EnumWindows successful\n"));
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 17250
    }
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 17251
%}
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 17252
!
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 17253
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17254
primEnumWindowsOf:threadId into:handleList
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17255
%{
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17256
    if (__isSmallInteger(threadId)) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17257
	if ( EnumThreadWindows( __intVal(threadId), EnumWindowsProc, (DWORD)&(handleList))) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17258
	    DPRINTF(("EnumThreadWindows successful\n"));
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17259
	}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17260
    }
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17261
%}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17262
!
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17263
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17264
primFindWindow: lpClassName windowName: lpWindowName
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17265
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17266
    "
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17267
    If the function succeeds, the return value is a handle to the window that has the specified class name and window name.
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17268
    If the function fails, the return value is NULL.
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17269
    "
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17270
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17271
    <apicall: handle "FindWindowA" (lpstr lpstr) module: "user32.dll" >
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17272
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17273
    "
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 17274
	self primFindWindow: nil windowName: 'WORK2 ST/X Launcher [FELIXM]' asAsciiZ
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17275
    "
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17276
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17277
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17278
primSendMessage: aWindowId message: message wParam: wParam lParam: lParam
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17279
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17280
    "
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 17281
    Sends the specified message to a window or windows.
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17282
    The SendMessage function calls the window procedure for the specified window and does not return until the window procedure has processed the message.
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17283
    "
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17284
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17285
    <apicall: bool "SendMessageA" (handle uint ulong ulong) module: "user32.dll" >
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17286
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17287
5027
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17288
primSetForegroundWindow: aWindowId
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17289
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17290
    "
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17291
    If the window was brought to the foreground, the return value is nonzero.
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17292
    If the window was not brought to the foreground, the return value is zero.
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17293
    "
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17294
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17295
    <apicall: bool "SetForegroundWindow" (handle) module: "user32.dll" >
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17296
!
683b8654825e added: #primSetForegroundWindow:
fm
parents: 5025
diff changeset
 17297
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17298
primSetWindowIconId:wiconId maskId:wmaskId width:wiconWidth height:wiconHeight in:aWindowId
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17299
%{
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17300
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17301
    HBITMAP        xBitMap, maskBitmap;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17302
    ICONINFO       iconInfo;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17303
    int            height, width;
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17304
    HICON          xIcon = (HICON)0;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17305
    unsigned char  fastBits[10000];
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17306
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17307
    DPRINTF(("primSetWindowIconId\n"));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17308
    if (__isExternalAddress(aWindowId)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17309
     && __isExternalAddress(wiconId)
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17310
     && __bothSmallInteger(wiconWidth, wiconHeight)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17311
	HWND win = _HWNDVal(aWindowId);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17312
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17313
	xBitMap = _HBITMAPVAL( wiconId );
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17314
	if ( xBitMap != 0 ) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17315
	    BITMAP bm;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17316
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17317
	    if (GetObject(xBitMap, sizeof(bm), (LPSTR)&bm)) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17318
		BYTE *ep;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17319
		int privateMask = 0;
2670
fa11fa15988c event sending partially moved to DevWorkstat;
Claus Gittinger <cg@exept.de>
parents: 2668
diff changeset
 17320
		unsigned char  *allocatedBits = 0;
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17321
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17322
		DPRINTF(("Bitmap w:%d h:%d p:%d d:%d\n",bm.bmWidth,bm.bmHeight,bm.bmPlanes,bm.bmBitsPixel));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17323
		height = __intVal( wiconHeight );
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17324
		width  = __intVal( wiconWidth  );
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17325
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17326
		if ( __isExternalAddress(wmaskId) ) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17327
		    maskBitmap = _HBITMAPVAL( wmaskId );
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17328
		} else {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17329
		    if (wmaskId != nil) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17330
			PRINTF(("WinWorkstat [warning]: wmaskId is not an external address\n"));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17331
		    }
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17332
		    maskBitmap = 0;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17333
		}
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17334
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17335
		/*
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17336
		 * if there is no mask, generate one
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17337
		 */
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17338
		if (maskBitmap == 0) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17339
		    int nBytes;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17340
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17341
		    nBytes = ( width + 31 ) / 8;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17342
		    nBytes = height * nBytes;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17343
		    if (nBytes < sizeof(fastBits)) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17344
			ep = fastBits;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17345
		    } else {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17346
			ep = allocatedBits = (unsigned char *) malloc(nBytes);
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17347
		    }
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17348
		    if ( ep == 0 ) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17349
			PRINTF(( "WinWorkstat [warning]: malloc failed\n" ));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17350
		    } else {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17351
			memset(ep, 0, nBytes);
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17352
			maskBitmap = CreateBitmap(width, height, 1, 1, ep );
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17353
			if ( maskBitmap == NULL ) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17354
			    PRINTF(( "WinWorkstat [warning]: mask CREATION failed\n" ));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17355
			} else {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17356
			    privateMask = 1;
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17357
			}
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17358
		    }
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17359
		}
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17360
		if ( maskBitmap != NULL ) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17361
		    DPRINTF(( "BITMAP mask CREATED!!!\n" ));
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17362
		    iconInfo.fIcon = TRUE;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17363
		    iconInfo.hbmMask  =maskBitmap;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17364
		    iconInfo.hbmColor = xBitMap;
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17365
		    xIcon = CreateIconIndirect( &iconInfo );
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17366
		    DPRINTF(( "ICON CREATED!!!\n" ));
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17367
		    if (privateMask) {
2624
cb390689e97f cache last brush
Claus Gittinger <cg@exept.de>
parents: 2623
diff changeset
 17368
			_DeleteObject( maskBitmap, __LINE__ );
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17369
		    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17370
		} else {
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17371
		    PRINTF(( "WinWorkstat [warning]: no mask for icon !\n" ));
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17372
		}
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17373
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17374
		if (allocatedBits) {
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17375
		    free(allocatedBits);
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17376
		}
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17377
	    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17378
	} else {
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17379
	    DPRINTF(("WinWorkstat [warning]: xBitMap is zero \n" ));
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17380
	}
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17381
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17382
	if (xIcon) {
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
 17383
#ifndef TOPWINDOWCLASS
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17384
	    HICON oldIcon = (HICON)0;
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17385
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17386
	    oldIcon = (HICON) GetClassLong(win, GCL_HICON);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17387
	    SetClassLong(win, GCL_HICON, (DWORD)xIcon);
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17388
/* It has to be checked whether this can be deleted!!!!! */
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17389
	    if ( oldIcon ) {
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17390
		if (DestroyIcon( oldIcon )) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17391
		    DPRINTF(( "Old icon deleted\n" ));
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17392
		} else {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 17393
		    console_fprintf(stderr, "failed to delete old icon\n");
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17394
		}
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17395
	    }
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
 17396
#else
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17397
	    SendMessage(win, WM_SETICON,ICON_SMALL, (LPARAM)xIcon);
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17398
	    SendMessage(win, WM_SETICON,ICON_BIG, (LPARAM)xIcon);
2260
954c7dce96aa *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2253
diff changeset
 17399
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17400
	}
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17401
	RETURN (self);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17402
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17403
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17404
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17405
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17406
raiseWindow:aWindowId
4523
df48174867cc Do not collapse a maximized window on #activate:
Stefan Vogel <sv@exept.de>
parents: 4511
diff changeset
 17407
    "bring a window to front - but there may be some windows marked as 'TOPMOST'
df48174867cc Do not collapse a maximized window on #activate:
Stefan Vogel <sv@exept.de>
parents: 4511
diff changeset
 17408
     that are still in front of our window (e.g. cmd.exe apparently marks itself
df48174867cc Do not collapse a maximized window on #activate:
Stefan Vogel <sv@exept.de>
parents: 4511
diff changeset
 17409
     as topmost, when it gets the focus)"
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17410
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17411
%{  /* NOCONTEXT */
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17412
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17413
    if (__isExternalAddress(aWindowId)) {
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17414
	HWND hWnd = _HWNDVal(aWindowId);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17415
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17416
	if (hWnd) {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17417
	    CPRINTF(("raiseWindow %x\n",hWnd));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17418
	    SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17419
			 /* SWP_NOOWNERZORDER |*/
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17420
			SWP_NOSENDCHANGING | SWP_NOACTIVATE |
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17421
			SWP_NOMOVE | SWP_NOSIZE);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17422
	}
5150
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17423
    }
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17424
%}
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17425
!
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17426
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17427
raiseWindowToTop:aWindowId
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17428
    "bring a window to the very front - above all others (even above non-st/x windows).
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17429
     Q: is this a windows-specific thing ?"
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17430
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17431
%{  /* NOCONTEXT */
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17432
577084e6f257 +raiseToTop
Claus Gittinger <cg@exept.de>
parents: 5141
diff changeset
 17433
    if (__isExternalAddress(aWindowId)) {
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17434
	HWND hWnd = _HWNDVal(aWindowId);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17435
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17436
	if (hWnd) {
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17437
	    CPRINTF(("raiseWindow %x\n",hWnd));
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17438
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17439
	    SetWindowPos(hWnd, HWND_TOPMOST, 0, 0, 0, 0,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17440
			 /* SWP_NOOWNERZORDER |*/
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17441
			SWP_NOSENDCHANGING | SWP_NOACTIVATE |
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17442
			SWP_NOMOVE | SWP_NOSIZE);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17443
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17444
	    SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17445
			 /* SWP_NOOWNERZORDER |*/
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17446
			SWP_NOSENDCHANGING | SWP_NOACTIVATE |
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17447
			SWP_NOMOVE | SWP_NOSIZE);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17448
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17449
	    SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17450
			/* SWP_NOOWNERZORDER | */
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17451
			/* SWP_NOSENDCHANGING | SWP_NOACTIVATE | */
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17452
			SWP_NOMOVE | SWP_NOSIZE);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17453
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17454
	    SetWindowPos(hWnd, HWND_TOP, 0, 0, 0, 0,
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17455
			/* SWP_NOOWNERZORDER | */
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17456
			/* SWP_NOSENDCHANGING | SWP_NOACTIVATE | */
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17457
			SWP_NOMOVE | SWP_NOSIZE);
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17458
	}
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17459
    }
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17460
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17461
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17462
4441
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17463
reparentWindow:windowId to:newParentWindowId
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17464
    "change a windows parent (an optional interface)"
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17465
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17466
%{
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17467
    if (__isExternalAddress(windowId)
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17468
     && __isExternalAddress(newParentWindowId)) {
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17469
	HWND hWnd = _HWNDVal(windowId);
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17470
	HWND hWndNewParent = _HWNDVal(newParentWindowId);
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17471
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17472
	SetParent(hWnd, hWndNewParent);
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17473
	RETURN ( true );
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17474
    }
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17475
%}.
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17476
    self primitiveFailed
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17477
!
ebc4b95dd556 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 4440
diff changeset
 17478
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17479
resizeWindow:aWindowId width:w height:h
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17480
    "resize a window"
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17481
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17482
%{  /* NOCONTEXT */
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17483
    RECT rec;
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17484
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17485
    if (__isExternalAddress(aWindowId)
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17486
     && __bothSmallInteger(w, h)) {
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17487
	HWND hWnd = _HWNDVal(aWindowId);
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17488
	int bw;
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17489
2593
1d2dad16f32c *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2554
diff changeset
 17490
	if (hWnd) {
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17491
	    bw = GetWindow_bw(hWnd);
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17492
2715
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 17493
	    rec.left = 0;  /* only needed to have a valid origin in adjust */
cecc5c10f80e implemented getPixel
Claus Gittinger <cg@exept.de>
parents: 2711
diff changeset
 17494
	    rec.top = 0;   /* only needed to have a valid origin in adjust */
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17495
	    rec.right = __intVal(w) - bw - bw;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17496
	    rec.bottom = __intVal(h) - bw - bw;
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17497
#ifdef ADJUSTWINDOW
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17498
	    AdjustWindowRectEx(&rec, GetWindowLong(hWnd, GWL_STYLE), 0, GetWindowLong(hWnd, GWL_EXSTYLE));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17499
#endif
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17500
	    CPRINTF(("resize %x w:%d h:%d -> w:%d h:%d\n",hWnd,__intVal(w),__intVal(h),rec.right - rec.left, rec.bottom - rec.top));
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17501
	    SetWindowPos(hWnd, (HWND)0,
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17502
			 0, 0,
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17503
			 rec.right - rec.left, rec.bottom - rec.top,
5184
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17504
			 SWP_NOSENDCHANGING | SWP_NOACTIVATE |
f53ace9dc9cb pixelSize stuff
Claus Gittinger <cg@exept.de>
parents: 5175
diff changeset
 17505
			 SWP_NOMOVE | SWP_NOZORDER | SWP_NOOWNERZORDER);
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17506
	}
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17507
	RETURN ( self );
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17508
    }
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17509
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17510
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17511
5024
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17512
sendCopyData: aByteArray toWindowId: aWindowId
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17513
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17514
    | externalBytes messageType wParam lParam copyDataStruct result|
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17515
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17516
    (aWindowId isNil or:[aWindowId address == 0]) ifTrue:[^ self].
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17517
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17518
    messageType := 74 "WM_COPYDATA".
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17519
    wParam := 0.
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17520
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17521
    copyDataStruct := CopyDataStructStructure new.
5024
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17522
    copyDataStruct cbData: aByteArray size.
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17523
    externalBytes := ExternalBytes from: aByteArray.
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17524
    copyDataStruct lpData: externalBytes address.
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17525
    lParam := ExternalBytes from: copyDataStruct.
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17526
    result := self primSendMessage: aWindowId message: messageType wParam: wParam lParam: lParam address.
5024
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17527
    externalBytes free.
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17528
    lParam free.
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17529
    ^ result
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17530
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17531
    "
5024
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17532
    |string bytes externalAddress handle|
5025
56bac82aef63 fix #sendCopyDataString: toWindowId:
fm
parents: 5024
diff changeset
 17533
    string := 'c:\pipo.net' , 0 asCharacter asString.
5024
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17534
    bytes := string asByteArray.
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17535
    handle := Display primFindWindow: nil windowName: 'ST/X Launcher [FELIXM]' asAsciiZ.
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17536
    (handle isNil or:[handle address == 0]) ifTrue:[self halt.].
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17537
    externalAddress := handle asExternalAddress.
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17538
    Display setForegroundWindow: externalAddress.
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17539
    ^ Display sendCopyData: bytes toWindowId: externalAddress.
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17540
    "
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17541
!
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17542
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17543
sendCopyDataString: aString toWindowId: aWindowId
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17544
5025
56bac82aef63 fix #sendCopyDataString: toWindowId:
fm
parents: 5024
diff changeset
 17545
    |aByteArray nullTerminatedString |
56bac82aef63 fix #sendCopyDataString: toWindowId:
fm
parents: 5024
diff changeset
 17546
56bac82aef63 fix #sendCopyDataString: toWindowId:
fm
parents: 5024
diff changeset
 17547
    nullTerminatedString := aString , 0 asCharacter asString.
56bac82aef63 fix #sendCopyDataString: toWindowId:
fm
parents: 5024
diff changeset
 17548
    aByteArray := nullTerminatedString asByteArray.
5024
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17549
    self sendCopyData: aByteArray toWindowId: aWindowId
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17550
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17551
    "
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17552
    |string externalAddress handle|
5025
56bac82aef63 fix #sendCopyDataString: toWindowId:
fm
parents: 5024
diff changeset
 17553
    string := 'c:\pipo.net' , 0 asCharacter asString.
56bac82aef63 fix #sendCopyDataString: toWindowId:
fm
parents: 5024
diff changeset
 17554
    handle := Display primFindWindow: nil windowName: 'WORK6 ST/X Launcher [FELIXM]' asAsciiZ.
5024
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17555
    (handle isNil or:[handle address == 0]) ifTrue:[self halt.].
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17556
    externalAddress := handle asExternalAddress.
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17557
    Display setForegroundWindow: externalAddress.
5024
a8d67b2b17b4 add #sendCopyData: toWindowId:
fm
parents: 5023
diff changeset
 17558
    ^ Display sendCopyDataString: string toWindowId: externalAddress.
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17559
    "
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17560
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 17561
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17562
setBackingStore:how in:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17563
    "turn on/off backing-store for a window"
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17564
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17565
    "/ 'WinWorkstation [info]: setBackingStore:in: not yet implemented' infoPrintCR.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17566
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17567
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17568
setBitGravity:how in:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17569
    "set bit gravity for a window"
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17570
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17571
    "/ 'WinWorkstation [info]: setBitGravity:in: not yet implemented' infoPrintCR.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17572
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17573
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17574
setCursor:aCursorId in:aWindowId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17575
    "define a windows cursor
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17576
     Ignored here, since in windows, an application
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17577
     has to manage the cursor itself."
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17578
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17579
%{  /* NOCONTEXT */
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 17580
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 17581
    HCURSOR newCursor;
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 17582
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 17583
    if (ISCONNECTED
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 17584
     && __isExternalAddress(aWindowId)
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 17585
     && __isExternalAddress(aCursorId)) {
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17586
	HWND win = _HWNDVal(aWindowId);
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17587
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17588
	SetWindow_Cursor(win, _HCURSORVal(aCursorId));
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 17589
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 17590
	if( ! __isWinNT_NEW_BEHAVIOUR ) {
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17591
	    /*
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17592
	     * test whether the pointer is currently in that window ...
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17593
	     */
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17594
	    POINT p;
5063
Claus Gittinger <cg@exept.de>
parents: 5062
diff changeset
 17595
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17596
	    GetCursorPos(&p);
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17597
	    if (WindowFromPoint(p) != win) {
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17598
		RETURN ( self );
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17599
	    }
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17600
	}
3969
b1f257b4dd7c menu font from system settings
ca
parents: 3963
diff changeset
 17601
	SetWindow_Cursor(win, _HCURSORVal(aCursorId));
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17602
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 17603
#ifdef SET_CURSOR_IN_WINTHREAD
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17604
	PostMessage(win, WM_THREAD_SETCURSOR, 0, (INT)_HCURSORVal(aCursorId));
2434
ac2a149ed9cc *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2424
diff changeset
 17605
#else
3951
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17606
	SetCursor(_HCURSORVal(aCursorId));
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17607
#endif
37e3af4c726e bugfix in winNT: set the cursor without checking for mouse point in window
ca
parents: 3895
diff changeset
 17608
1416
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 17609
	RETURN ( self );
85b4e23ecd86 davids bitmap & font changes
Claus Gittinger <cg@exept.de>
parents: 1375
diff changeset
 17610
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17611
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17612
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17613
4439
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17614
setForegroundWindow2:aWindowId
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17615
    "make a window the foreground window"
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17616
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17617
%{  /* NOCONTEXT */
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17618
    if (__isExternalAddress(aWindowId)) {
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17619
	HWND win = _HWNDVal(aWindowId);
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17620
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17621
	if (win) {
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17622
	    ShowWindow(win, SW_SHOW);
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17623
	    SetForegroundWindow(win);
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17624
	    BringWindowToTop(win);
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17625
	}
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17626
	RETURN ( self );
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17627
    }
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17628
%}
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17629
!
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17630
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17631
setForegroundWindow:aWindowId
4523
df48174867cc Do not collapse a maximized window on #activate:
Stefan Vogel <sv@exept.de>
parents: 4511
diff changeset
 17632
    "make a window the foreground window.
df48174867cc Do not collapse a maximized window on #activate:
Stefan Vogel <sv@exept.de>
parents: 4511
diff changeset
 17633
     Under Win 98/Me/XP/2000 the window is not raised/activated, if a window from
df48174867cc Do not collapse a maximized window on #activate:
Stefan Vogel <sv@exept.de>
parents: 4511
diff changeset
 17634
     a different process is currently active - in this case the title bar/icon is flashed.
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17635
     this also raises the priority of the sending thread slightly"
4439
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17636
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17637
%{  /* NOCONTEXT */
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17638
    if (__isExternalAddress(aWindowId)) {
4539
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17639
	HWND win = _HWNDVal(aWindowId);
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17640
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17641
	if (win) {
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17642
	    CPRINTF(("setForegroundWindow %x\n",win));
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17643
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17644
	    SetForegroundWindow(win);
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17645
	}
d3aeb93c103b preps for print-dc
Claus Gittinger <cg@exept.de>
parents: 4523
diff changeset
 17646
	RETURN ( self );
4439
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17647
    }
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17648
%}
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17649
!
19f6cd6c7804 yield when dispatching, to allow for other displays to
Claus Gittinger <cg@exept.de>
parents: 4405
diff changeset
 17650
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17651
setIconName:aString in:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17652
    "define a windows iconname"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17653
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17654
%{  /* NOCONTEXT */
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 17655
#if 0
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17656
    if (__isExternalAddress(aWindowId)
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17657
     && (__isString(aString) || __isSymbol(aString))) {
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17658
	HWND win = _HWNDVal(aWindowId);
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17659
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17660
	SetWindowText(win, __stringVal(aString));
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17661
	RETURN (self);
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17662
    }
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 17663
#endif
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17664
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17665
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17666
3809
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17667
setParentWindowIdOf:aChildWindowId to:newParentWindowId
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17668
%{  /* NOCONTEXT */
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17669
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17670
    if (__isExternalAddress(aChildWindowId)
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17671
     && __isExternalAddress(newParentWindowId)) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17672
	HWND wChild = _HWNDVal(aChildWindowId);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17673
	HWND wNewParent = _HWNDVal(newParentWindowId);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17674
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17675
	if (wChild && wNewParent) {
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17676
	    SetParent(wChild, wNewParent);
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17677
	}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17678
    }
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17679
%}
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17680
!
8d6f3606ce2e preps to access alien views
penk
parents: 3741
diff changeset
 17681
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17682
setSaveUnder:yesOrNo in:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17683
    "turn on/off save-under for a window"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17684
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17685
%{  /* NOCONTEXT */
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17686
    if (yesOrNo != false) {
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17687
	DPRINTF(("WinWorkstation [info]: setSaveUnder:in: not (yet) implemented\n"));
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17688
    }
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17689
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17690
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17691
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17692
setTransient:aWindowId for:aMainWindowId
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17693
    "set aWindowId to be a transient of aMainWindow.
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17694
     This will make the transient window to be iconified/deiconified
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17695
     together with the mainWindow.
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17696
     Typically, this is set for modal dialogs."
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17697
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17698
%{  /* NOCONTEXT */
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17699
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17700
#ifdef NOT_YET_SUPPORTED
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17701
    if (__isExternalAddress(aWindowId)) {
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17702
	HWND w;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17703
	HWND cw = _HWNDVal(aWindowId);
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17704
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17705
	if ((aMainWindowId == nil) || (aMainWindowId == __MKSMALLINT(0))) {
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17706
	    w = (HWND) 0;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17707
	} else {
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17708
	    if (__isExternalAddress(aMainWindowId)) {
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17709
		w = _HWNDVal(aMainWindowId);
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17710
	    } else {
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17711
		goto getOutOfHere;
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17712
	    }
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17713
	}
2417
1e40a40e56e0 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2416
diff changeset
 17714
	CPRINTF(("setTransient:%x for:%x\n",cw,w));
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17715
	//SetParent(cw, w);
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17716
	RETURN ( self );
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17717
    }
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17718
 getOutOfHere: ;
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17719
#else
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17720
    RETURN (self);
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17721
#endif
2368
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17722
%}.
a7bd567cd899 md's fixes, drag&drop and clipBoard stuff.
Claus Gittinger <cg@exept.de>
parents: 2364
diff changeset
 17723
    self primitiveFailed
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17724
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17725
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17726
setWindowBackground:aColorIndex in:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17727
    "set the windows background color. This is the color with which
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17728
     the view is filled whenever exposed. Do not confuse this with
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17729
     the background drawing color, which is used with opaque drawing."
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17730
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17731
%{  /* NOCONTEXT */
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17732
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17733
    if (__isExternalAddress(aWindowId)
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17734
     && (__isSmallInteger(aColorIndex))) {
2151
d771faffbc1d md's changes
Claus Gittinger <cg@exept.de>
parents: 2104
diff changeset
 17735
	HWND hWnd = _HWNDVal(aWindowId);
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
 17736
	int clr;
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17737
	HBRUSH oldBrush;
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17738
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 17739
	oldBrush = GetWindow_viewBgBrush(hWnd);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 17740
	if (oldBrush) {
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17741
	    SetWindow_viewBgBrush(hWnd, 0);
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17742
	    _DeleteBrushIfNotInCache(oldBrush, __LINE__);
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17743
	}
2633
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
 17744
	clr = st2RGB(__intVal(aColorIndex), 0);
35a113086b6f better view-bg-brush cashing
Claus Gittinger <cg@exept.de>
parents: 2632
diff changeset
 17745
	SetWindow_viewBgColor(hWnd, clr);
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17746
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17747
	RETURN (self);
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17748
    }
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17749
%}
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17750
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17751
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17752
setWindowBackgroundPixmap:aPixmapId in:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17753
    "set the windows background pattern to be a form.
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17754
     This is the pattern with which the view is filled whenever exposed.
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17755
     Do not confuse this with the background drawing color, which is used
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17756
     with opaque drawing.
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17757
     NOTICE: due to the limitations of WIN95,
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17758
	     background pixmaps which are not 8x8 pixels in size,
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17759
	     are handled by smalltalk code in the WIN95 version."
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17760
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17761
%{
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17762
    if (__isExternalAddress(aWindowId)) {
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17763
	HWND hWnd = _HWNDVal(aWindowId);
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17764
	HBITMAP pixmap;
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17765
	HBRUSH oldBrush, newBrush;
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17766
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17767
	if (__isExternalAddress(aPixmapId))
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17768
	    pixmap = _HBITMAPVAL(aPixmapId);
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17769
	else
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17770
	    pixmap = 0;
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17771
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 17772
	oldBrush = GetWindow_viewBgBrush(hWnd);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 17773
	if (oldBrush) {
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17774
	    SetWindow_viewBgBrush(hWnd, 0);
2667
f35e2d76acc3 brush cache
Claus Gittinger <cg@exept.de>
parents: 2666
diff changeset
 17775
	    _DeleteBrushIfNotInCache(oldBrush, __LINE__);
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17776
	}
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17777
	if (pixmap) {
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17778
	    newBrush = CreatePatternBrush(pixmap);
2659
c181846c6f5a setPixel,
Claus Gittinger <cg@exept.de>
parents: 2653
diff changeset
 17779
	    SetWindow_viewBgBrush(hWnd, newBrush);
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17780
/*
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17781
 *            SetBrushOrgEx(hDC, gcData->maskOrgX, gcData->maskOrgY, 0);
2639
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17782
 */
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17783
	}
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17784
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17785
	RETURN (self);
8b2deda94ef3 support for view-bg-pixmaps
Claus Gittinger <cg@exept.de>
parents: 2633
diff changeset
 17786
    }
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17787
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17788
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17789
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17790
setWindowBorderColor:aColorIndex in:aWindowId
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17791
    "set the windows border color.
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17792
     NOTICE: borders are not supported by the win32 version."
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17793
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17794
%{  /* NOCONTEXT */
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17795
    DPRINTF(("WinWorkstation [info]: setWindowBorderColor:in: not (yet) implemented\n"));
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17796
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17797
    if (__isExternalAddress(aWindowId)
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17798
     && __isSmallInteger(aColorIndex)) {
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17799
	HWND win = _HWNDVal(aWindowId);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17800
	int clr;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17801
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17802
	if (GetParent(win) != 0) {
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17803
	    clr = st2RGB(__intVal(aColorIndex), 0);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17804
	    SetWindow_bdColor(win, clr);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17805
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17806
	    {
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17807
		/*
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17808
		 * force a redraw - even if we do not support
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17809
		 * border colors ... (see UIPainter code)
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17810
		 */
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17811
		RECT rect;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17812
		HRGN rgn;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17813
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17814
		GetWindowRect(win, &rect);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17815
		rgn = CreateRectRgn(rect.left, rect.top, rect.right, rect.bottom);
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 17816
		DefWindowProcW(win, WM_NCPAINT, (WPARAM)rgn, 0);
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17817
		_DeleteObject(rgn, __LINE__);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17818
	    }
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17819
	}
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17820
    }
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17821
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17822
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17823
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17824
setWindowBorderPixmap:aPixmapId in:aWindowId
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17825
    "set the windows border pattern.
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17826
     NOTICE: border pixmaps are not supported by the win32 version."
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17827
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17828
%{  /* NOCONTEXT */
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17829
    DPRINTF(("WinWorkstation [info]: setWindowBorderPixmap:in: not (yet) implemented\n"));
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17830
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17831
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17832
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17833
setWindowBorderWidth:aNumber in:aWindowId
2617
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17834
    "set the windows border width.
d16f608fa54a tuning & code cleanup
Claus Gittinger <cg@exept.de>
parents: 2614
diff changeset
 17835
     NOTICE: borderWidths other than 1 are not supported by the win32 version."
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17836
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17837
%{  /* NOCONTEXT */
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
 17838
    int bw = (aNumber == __MKSMALLINT(0)) ? 0 : 1;
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
 17839
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
 17840
    if (__isExternalAddress(aWindowId)) {
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
 17841
	HWND win = _HWNDVal(aWindowId);
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
 17842
	int gwl;
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
 17843
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
 17844
	gwl = GetWindowLong(win, GWL_STYLE);
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17845
	if (gwl & WS_CHILD) {
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17846
	    SetWindow_bw(win, bw);
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17847
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17848
	    if (bw) {
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17849
		gwl |= WS_BORDER;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17850
	    } else {
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17851
		gwl &= ~WS_BORDER;
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17852
	    }
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17853
	    SetWindowLong(win, GWL_STYLE, gwl);
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17854
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17855
	    /*
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17856
	     * force a redraw - even if we do not support
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17857
	     * border colors ... (see UIPainter code)
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17858
	     */
2348
9a229f591de7 do early vieBackground fill (in event thread);
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
 17859
#if 0
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17860
	    PostMessage(win, WM_NCPAINT, 0, 0);
2348
9a229f591de7 do early vieBackground fill (in event thread);
Claus Gittinger <cg@exept.de>
parents: 2345
diff changeset
 17861
#endif
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17862
	    {
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17863
		RECT rect;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17864
		HRGN rgn;
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17865
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17866
		GetWindowRect(win, &rect);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17867
		rgn = CreateRectRgn(rect.left, rect.top, rect.right, rect.bottom);
5062
eca7f3dd78b7 unicode input
Claus Gittinger <cg@exept.de>
parents: 5027
diff changeset
 17868
		DefWindowProcW(win, WM_NCPAINT, (WPARAM)rgn, 0);
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17869
		_DeleteObject(rgn, __LINE__);
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 17870
	    }
2345
2a39ca8e8b77 more resize (with borderWidth) fixes;
Claus Gittinger <cg@exept.de>
parents: 2344
diff changeset
 17871
	}
2344
998408fb085c borderWidth fixes.
Claus Gittinger <cg@exept.de>
parents: 2340
diff changeset
 17872
    }
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17873
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17874
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17875
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17876
setWindowClass:wClass name:wName in:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17877
    "define class and name of a window.
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17878
     This may be used by the window manager to
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17879
     select client specific resources."
2420
a0a611f5197a CACHE DC
Claus Gittinger <cg@exept.de>
parents: 2419
diff changeset
 17880
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17881
%{  /* NOCONTEXT */
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17882
    DPRINTF(("WinWorkstation [info]: setWindowClass:name:in: not (yet) implemented\n"));
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17883
%}.
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17884
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17885
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17886
setWindowGravity:how in:aWindowId
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17887
    "set the window gravity - this makes the view to move
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17888
     automatically and can avoid redraws (if used properly)"
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17889
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17890
%{  /* NOCONTEXT */
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17891
    int gr = GRAVITY_NONE;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17892
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17893
    if (__isExternalAddress(aWindowId)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17894
	HWND hWnd = _HWNDVal(aWindowId);
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17895
	localWindowInfo *lI;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17896
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17897
	if (how == @symbol(South)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17898
	    gr = GRAVITY_S;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17899
	} else if (how == @symbol(SouthWest)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17900
	    gr = GRAVITY_SW;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17901
	} else if (how == @symbol(SouthEast)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17902
	    gr = GRAVITY_SE;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17903
	} else if (how == @symbol(North)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17904
	    gr = GRAVITY_N;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17905
	} else if (how == @symbol(NorthWest)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17906
	    gr = GRAVITY_NW;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17907
	} else if (how == @symbol(NorthEast)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17908
	    gr = GRAVITY_NE;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17909
	} else if (how == @symbol(East)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17910
	    gr = GRAVITY_E;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17911
	} else if (how == @symbol(West)) {
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17912
	    gr = GRAVITY_W;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17913
	}
4481
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 17914
	lI = GETLOCALWINDOWINFOPTR(hWnd);
e9379ad473c8 code cleanup (compiler warnings should not be ignored !)
Claus Gittinger <cg@exept.de>
parents: 4478
diff changeset
 17915
	if (lI) {
2629
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17916
	    lI->viewGravity = gr;
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17917
	}
d5fcb2aa3181 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2627
diff changeset
 17918
    }
2310
0ca46bcbfc05 commenting, made some functions static,
Claus Gittinger <cg@exept.de>
parents: 2298
diff changeset
 17919
%}.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17920
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17921
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17922
setWindowIcon:aForm mask:aMaskForm in:aWindowId
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17923
    "set a windows icon & iconMask"
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17924
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17925
    |wiconId wmaskId wiconHeight wiconWidth|
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17926
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17927
    aForm notNil ifTrue:[
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17928
	wiconId := aForm id.
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17929
	wiconHeight := aForm height.
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17930
	wiconWidth  := aForm width.
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17931
	aMaskForm notNil ifTrue:[
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17932
	    wmaskId := aMaskForm id
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17933
	].
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17934
	self
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17935
	    primSetWindowIconId:wiconId
2554
7cb1d03d4d47 some fixes in the window-icon handling;
Claus Gittinger <cg@exept.de>
parents: 2538
diff changeset
 17936
	    maskId:wmaskId
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17937
	    width:wiconWidth
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17938
	    height:wiconHeight
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 17939
	    in:aWindowId
1676
9016c45cfd81 fixed solid draws & some event stuff; better.
Claus Gittinger <cg@exept.de>
parents: 1482
diff changeset
 17940
    ].
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17941
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17942
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 17943
setWindowIconWindow:aView in:aWindowId
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17944
    "define a window to be used as icon.
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17945
     This is not supported with Windows (is it possible at all ?)."
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17946
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 17947
    'WinWorkstation [info]: setWindowIconWindow:in: not implemented' infoPrintCR.
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17948
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 17949
2684
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17950
setWindowMinExtent:minExt maxExtent:maxExt in:aWindowId
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17951
    "set a windows minimum & max extents.
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17952
     nil arguments are ignored."
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17953
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17954
    |minW minH maxW maxH|
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17955
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17956
    minExt notNil ifTrue:[
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17957
	minW := minExt x.
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17958
	minH := minExt y.
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17959
    ].
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17960
    maxExt notNil ifTrue:[
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17961
	maxW := maxExt x.
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17962
	maxH := maxExt y.
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17963
    ].
4113
464a850c875a preps for undecorated winStyle
Claus Gittinger <cg@exept.de>
parents: 4092
diff changeset
 17964
%{
2684
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17965
    if (__isExternalAddress(aWindowId)) {
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17966
	HWND win = _HWNDVal(aWindowId);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17967
	RECT rec;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17968
	int winStyleBits;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17969
	int winExStyleBits;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17970
	localWindowInfo *lI;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17971
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17972
	if (win) {
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17973
	    winStyleBits = GetWindowLong(win, GWL_STYLE);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17974
	    winExStyleBits = GetWindowLong(win, GWL_EXSTYLE);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17975
	    lI = GETLOCALWINDOWINFOPTR(win);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17976
	    if (! lI) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 17977
		console_fprintf(stderr, "WinWorkstation [info]: oops - no localInfo in setMinMaxExt\n");
2684
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17978
		RETURN (self);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17979
	    }
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17980
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17981
	    if (__bothSmallInteger(minW, minH)) {
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17982
		RECT rec;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17983
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17984
		rec.left = 0;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17985
		rec.top = 0;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17986
		rec.right = __intVal(minW);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17987
		rec.bottom = __intVal(minH);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17988
#ifdef ADJUSTWINDOW
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17989
		AdjustWindowRectEx(&rec, winStyleBits, 0, winExStyleBits);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17990
#endif
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17991
		lI->minWidth = rec.right - rec.left;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17992
		lI->minHeight = rec.bottom - rec.top;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17993
	    }
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17994
	    if (__bothSmallInteger(maxW, maxH)) {
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17995
		RECT rec;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17996
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17997
		rec.left = 0;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17998
		rec.top = 0;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 17999
		rec.right = __intVal(maxW);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18000
		rec.bottom = __intVal(maxH);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18001
#ifdef ADJUSTWINDOW
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18002
		AdjustWindowRectEx(&rec, winStyleBits, 0, winExStyleBits);
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18003
#endif
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18004
		lI->maxWidth = rec.right - rec.left;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18005
		lI->maxHeight = rec.bottom - rec.top;
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18006
	    }
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18007
	}
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18008
    }
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18009
%}
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18010
!
f8ef5e73fce5 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 2683
diff changeset
 18011
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18012
setWindowName:aString in:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18013
    "define a windows name"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18014
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18015
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18016
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18017
    if (__isExternalAddress(aWindowId)) {
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18018
	HWND win = _HWNDVal(aWindowId);
5067
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18019
	wchar_t nameBuffer[ MAX_LABEL_SIZE ];
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18020
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18021
	if (__isString(aString) || __isSymbol(aString)) {
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18022
	    ch2wch((char *)__stringVal(aString), nameBuffer, MAX_LABEL_SIZE);
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18023
	    SetWindowTextW(win, nameBuffer);
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18024
	    RETURN (self);
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18025
	}
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18026
	if (__isUnicode16String(aString)) {
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18027
	    int l = __unicode16StringSize(aString);
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18028
	    if (l >= MAX_LABEL_SIZE) l = MAX_LABEL_SIZE-1;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18029
	    memmove(nameBuffer, __unicode16StringVal(aString), l*sizeof(wchar_t));
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18030
	    nameBuffer[ l ] = 0;
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18031
	    SetWindowTextW(win, nameBuffer);
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18032
	    RETURN (self);
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18033
	}
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18034
    }
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18035
%}
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18036
    "
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18037
     (StandardSystemView new label:'äöü') open
e03d6ce6b5e7 unicode in windowTitle
Claus Gittinger <cg@exept.de>
parents: 5063
diff changeset
 18038
    "
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 18039
!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 18040
2755
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18041
setWindowShapeEllipticalX:x Y:y width:w height:h in:aWindowId
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18042
    "set the windows shape to an elliptical region"
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18043
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18044
%{
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18045
    if (__isExternalAddress(aWindowId)
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18046
     && __bothSmallInteger(x, y)
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18047
     && __bothSmallInteger(w, h)) {
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18048
	HWND win = _HWNDVal(aWindowId);
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18049
	int left = __intVal(x);
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18050
	int top = __intVal(y);
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18051
	int right = left + __intVal(w);
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18052
	int bottom = top + __intVal(h);
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18053
	HRGN rgn;
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18054
	HDC winDC;
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18055
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18056
	rgn = CreateEllipticRgn(left, top, right, bottom);
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18057
	if (rgn) {
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18058
	    winDC = GetDCEx(win, 0, DCX_WINDOW);
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18059
	    if (winDC) {
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18060
		if (SelectClipRgn(winDC, rgn) == ERROR ) {
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 18061
		    console_fprintf(stderr, "select clipping region failed\n");
2755
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18062
		}
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18063
		ReleaseDC(win, winDC);
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18064
	    }
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18065
	    else
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 18066
		console_fprintf(stderr, "getDC failed\n");
2759
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 18067
1b78ab98b22b redraw the border when it changes;
Claus Gittinger <cg@exept.de>
parents: 2755
diff changeset
 18068
	    _DeleteObject(rgn, __LINE__);
2755
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18069
	}
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18070
	else
4726
d3edd9f38237 debug prints
Claus Gittinger <cg@exept.de>
parents: 4713
diff changeset
 18071
	    console_fprintf(stderr, "region creation failed\n");
2755
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18072
	RETURN ( self );
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18073
    }
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18074
%}.
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18075
    self primitiveFailed
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18076
!
ff1854ac742d *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2754
diff changeset
 18077
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18078
unmapWindow:aWindowId
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18079
    "make a window invisible"
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18080
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18081
%{  /* NOCONTEXT */
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18082
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18083
    if (__isExternalAddress(aWindowId)) {
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18084
	HWND win = _HWNDVal(aWindowId);
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18085
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18086
	if (win) {
2253
864c30e95b4b *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 2251
diff changeset
 18087
	    CPRINTF(("unmapWindow %x\n",win));
3713
9c89f2cca85a *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 3632
diff changeset
 18088
	    SetWindow_unmapping(win, 1);
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18089
	    ShowWindowAsync(win, SW_HIDE);
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18090
	}
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18091
	RETURN ( self );
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18092
    }
2000
3327602cb32e too many changes to be listed
Claus Gittinger <cg@exept.de>
parents: 1920
diff changeset
 18093
%}
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18094
!
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18095
4490
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 18096
unmapWindow:aWindowId animation:animationSymbolorNil time:timeInMillisOrNil
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 18097
    "make a window invisible with some animation effect."
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 18098
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 18099
    self animateWindow:aWindowId show:false animation:animationSymbolorNil time:timeInMillisOrNil
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 18100
!
66a98e08afb9 preps for animated map/unmap
Claus Gittinger <cg@exept.de>
parents: 4488
diff changeset
 18101
2653
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18102
windowIsIconified:aWindowId
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18103
    "return true, if some window is iconified."
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18104
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18105
%{  /* NOCONTEXT */
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18106
    if (__isExternalAddress(aWindowId)) {
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18107
	HWND win = _HWNDVal(aWindowId);
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18108
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18109
	if (win) {
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18110
	    if (GetWindow_iconified(win)) {
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18111
		RETURN (true);
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18112
	    }
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18113
	}
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18114
    }
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18115
%}.
f0ca966a5636 iconify/deiconify;
Claus Gittinger <cg@exept.de>
parents: 2643
diff changeset
 18116
    ^ false
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 18117
! !
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 18118
4243
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18119
!WinWorkstation methodsFor:'window stuff-native'!
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18120
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18121
enableScrollBar:howSymbol in:aWindowId
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18122
    "native scrollBar widget access"
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18123
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18124
%{
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18125
    if (__isExternalAddress(aWindowId)) {
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18126
	HWND win = _HWNDVal(aWindowId);
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18127
	int how;
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18128
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18129
	if (howSymbol == @symbol(ENABLE_BOTH)) {
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18130
	    how = ESB_ENABLE_BOTH;
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18131
	} else if (howSymbol == @symbol(DISABLE_LTUP)) {
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18132
	    how = ESB_DISABLE_LTUP;
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18133
	} else if (howSymbol == @symbol(DISABLE_RTDN)) {
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18134
	    how = ESB_DISABLE_RTDN;
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18135
	} else if (howSymbol == @symbol(DISABLE_BOTH)) {
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18136
	    how = ESB_DISABLE_BOTH;
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18137
	} else {
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18138
	    RETURN ( self );
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18139
	}
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18140
	NDPRINTF(("EnableScrollBar(%d)\n", how));
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18141
	EnableScrollBar(win, SB_CTL, how);
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18142
	RETURN ( self );
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18143
    }
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18144
%}.
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18145
    self primitiveFailed
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18146
!
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18147
4247
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18148
setScrollBarPageSize:sz redraw:redraw in:aWindowId
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18149
    "native scrollBar widget access"
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18150
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18151
%{
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18152
    if (__isExternalAddress(aWindowId)
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18153
     && __isSmallInteger(sz)) {
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18154
	HWND win = _HWNDVal(aWindowId);
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18155
	SCROLLINFO info;
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18156
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18157
	info.cbSize = sizeof(SCROLLINFO);
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18158
	info.nPage = __intVal(sz);
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18159
	info.fMask = SIF_PAGE;
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 18160
	NDPRINTF2(("SetScrollPage(%d)\n", __intVal(sz)));
4247
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18161
	SetScrollInfo(win, SB_CTL, &info, redraw==true ? 1 : 0);
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18162
	RETURN ( self );
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18163
    }
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18164
%}.
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18165
    self primitiveFailed
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18166
!
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18167
4243
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18168
setScrollPosition:newPosition redraw:redraw in:aWindowId
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18169
    "native scrollBar widget access"
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18170
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18171
%{
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18172
    if (__isExternalAddress(aWindowId)
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18173
     && __isSmallInteger(newPosition)) {
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18174
	HWND win = _HWNDVal(aWindowId);
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18175
4253
75016f6083c1 *** empty log message ***
ca
parents: 4249
diff changeset
 18176
	NDPRINTF2(("SetScrollPos(%d)\n", __intVal(newPosition)));
4247
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18177
	SetScrollPos(win, SB_CTL, __intVal(newPosition), redraw==true ? 1 : 0);
4243
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18178
	RETURN ( self );
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18179
    }
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18180
%}.
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18181
    self primitiveFailed
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18182
!
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18183
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18184
setScrollRange:min to:max redraw:redraw in:aWindowId
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18185
    "native scrollBar widget access"
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18186
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18187
%{
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18188
    if (__isExternalAddress(aWindowId)
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18189
     && __bothSmallInteger(min, max)) {
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18190
	HWND win = _HWNDVal(aWindowId);
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18191
4265
c7588de5d8e6 *** empty log message ***
ca
parents: 4263
diff changeset
 18192
	NDPRINTF2(("SetScrollRange(%d..%d)\n", __intVal(min), __intVal(max)));
4247
3a474060ea48 *** empty log message ***
ca
parents: 4243
diff changeset
 18193
	SetScrollRange(win, SB_CTL, __intVal(min), __intVal(max), redraw==true ? 1 : 0);
4243
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18194
	RETURN ( self );
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18195
    }
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18196
%}.
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18197
    self primitiveFailed
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18198
! !
b3a87004ffd1 *** empty log message ***
ca
parents: 4242
diff changeset
 18199
5018
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18200
!WinWorkstation::CopyDataStructStructure class methodsFor:'accessing'!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18201
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18202
sizeInBytes
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18203
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18204
    ^ 12
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18205
! !
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18206
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18207
!WinWorkstation::CopyDataStructStructure class methodsFor:'instance creation'!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18208
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18209
new
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18210
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18211
    ^super new: self sizeInBytes
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18212
! !
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18213
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18214
!WinWorkstation::CopyDataStructStructure methodsFor:'accessing'!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18215
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18216
cbData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18217
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18218
    ^ self doubleWordAt: 4 + 1
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18219
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18220
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18221
cbData: cbData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18222
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18223
    ^ self doubleWordAt: 4 + 1 put: cbData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18224
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18225
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18226
dwData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18227
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18228
    ^ self doubleWordAt: 0 + 1
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18229
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18230
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18231
dwData: dwData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18232
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18233
    ^ self doubleWordAt: 0 + 1 put: dwData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18234
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18235
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18236
lpData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18237
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18238
    ^ self doubleWordAt: 8 + 1
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18239
!
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18240
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18241
lpData: lpData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18242
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18243
    ^ self doubleWordAt: 8 + 1 put: lpData
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18244
! !
0a7b37e2721c sendMessage
fm
parents: 5010
diff changeset
 18245
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18246
!WinWorkstation::PrinterDeviceContextHandle class methodsFor:'documentation'!
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18247
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18248
documentation
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18249
"
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18250
    This is used as a finalization handle for printer contexts
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18251
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18252
    [see also:]
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 18253
	DeviceHandle
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18254
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18255
    [author:]
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 18256
	Claus Gittinger
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18257
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18258
"
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18259
! !
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18260
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18261
!WinWorkstation::PrinterDeviceContextHandle methodsFor:'finalization'!
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18262
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18263
finalize
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18264
    "the PrintingContext for which I am a handle has been collected - tell it to Windows"
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18265
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18266
    |id|
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18267
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18268
    (id := gcId) notNil ifTrue:[
4503
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 18269
	gcId := nil.
Claus Gittinger <cg@exept.de>
parents: 4491
diff changeset
 18270
	device destroyPrinterDC:id.
4488
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18271
    ]
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18272
! !
9326e2cbfa48 first experiements for printing
Claus Gittinger <cg@exept.de>
parents: 4481
diff changeset
 18273
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 18274
!WinWorkstation class methodsFor:'documentation'!
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 18275
1127
a1ca516dc7ab *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 1065
diff changeset
 18276
version
5248
638f38d57e14 Rename beep: to beep:volume: for compatibility with XWorkstation
Stefan Vogel <sv@exept.de>
parents: 5246
diff changeset
 18277
    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.394 2009-05-08 13:23:32 stefan Exp $'
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 18278
! !
3971
a6508d71b9ba *** empty log message ***
ca
parents: 3969
diff changeset
 18279
2232
77cbfa090766 md's changes
Claus Gittinger <cg@exept.de>
parents: 2151
diff changeset
 18280
WinWorkstation initialize!