1993-09-04 12:09:32 +02:00
|
|
|
/*
|
|
|
|
* DC clipping functions
|
|
|
|
*
|
|
|
|
* Copyright 1993 Alexandre Julliard
|
2002-03-10 00:29:33 +01:00
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
|
|
* License as published by the Free Software Foundation; either
|
|
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
* Lesser General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
|
|
* License along with this library; if not, write to the Free Software
|
2006-05-18 14:49:52 +02:00
|
|
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
1994-12-27 15:11:53 +01:00
|
|
|
*/
|
|
|
|
|
2003-09-06 01:08:26 +02:00
|
|
|
#include <stdarg.h>
|
1999-02-28 13:27:56 +01:00
|
|
|
#include <stdlib.h>
|
2000-02-10 20:03:02 +01:00
|
|
|
#include "windef.h"
|
2003-09-06 01:08:26 +02:00
|
|
|
#include "winbase.h"
|
2000-02-10 20:03:02 +01:00
|
|
|
#include "wingdi.h"
|
2021-07-09 15:28:26 +02:00
|
|
|
#include "ntgdi_private.h"
|
2002-03-10 00:29:33 +01:00
|
|
|
#include "wine/debug.h"
|
1993-09-04 12:09:32 +02:00
|
|
|
|
2002-03-10 00:29:33 +01:00
|
|
|
WINE_DEFAULT_DEBUG_CHANNEL(clipping);
|
Release 0.5
Sun Jan 2 12:38:53 1994 David Metcalfe <david@prism.demon.co.uk>
* [windows/class.c]
Implemented GetClassName and GetClassInfo.
* [windows/caret.c]
Various improvements to text caret code.
Fri Dec 31 15:22:22 1993 John Brezak <brezak@apollo.hp.com>
* [misc/comm.c]
Patches to work with NetBSD.
Thu Dec 30 12:11:55 1993 John Richardson <jrichard@cs.uml.edu>
* [objects/bitblt.c] Added StretchBlt().
Tue Jan 4 05:22:07 1994 julliard@di.epfl.ch (Alexandre Julliard)
* [misc/user.c]
Added creation of system message queue.
* [objects/bitmap.c] [objects/dcvalues.c] [windows/dc.c]
Added DC size fields into DC structure.
* [objects/clipping.c]
Bug fix in CLIPPING_IntersectRect().
* [windows/class.c]
Allocate a DCE instead of a DC for CS_CLASSDC classes.
* [windows/clipping.c]
Fixed GetUpdateRect() and GetUpdateRgn() to clip to the client area.
* [windows/dce.c]
Implemented GetDCEx() and GetWindowDC().
* [windows/defwnd.c]
Implemented WM_WINDOWPOSCHANGED handling.
* [windows/event.c]
Preliminary support for Xlib event handling instead of Xt callbacks.
Changed MSG_AddMsg() calls to hardware_event() or PostMessage().
* [windows/message.c]
Preliminary support for multiple message queues.
Implemented hardware_event() to store messages into the system queue.
Implemented Get/SetTaskQueue().
Better WM_PAINT and WM_TIMER handling.
Changes to use Xlib instead of Xt for events.
* [windows/painting.c]
Use GetDCEx() to retrieve the DC, to get a correct visible region.
* [windows/timer.c]
Moved the timer procedure callback into DispatchMessage().
Changed implementation to get rid of Xt timeouts. Timer checking
is now done inside GetMessage().
* [windows/win.c]
Allocate a DCE instead of a DC for CS_OWNDC windows.
Replaced Xt calls with Xlib calls.
Moved window positioning functions into windows/winpos.c
* [windows/winpos.c] (New file)
Rewritten most of the window positioning functions.
Implemented SetWindowPos() and MapWindowPoints().
Jan 3, 94 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [if1632/user.spec]
Bad arguments description for function SetDlgItemText.
* [objects/text.c]
Function DrawText now handle DT_CALCRECT request.
* [misc/message.c]
Message boxes now use DrawText with DT_CALCRECT.
* [windows/graphics.c]
Bug fix in function FrameRect, (it was using PEN instead of BRUSH).
* [windows/win.c]
Bug fix for flags in function ShowWindow.
More accurate WM_SIZE generated by function ShowWindow.
* [controls/listbox.c]
More code for LBS_MULTIPLESEL.
More code for LBS_MULTICOLUMN.
* [include/windows.h]
Bad define for MF_SEPARATOR.
* [controls/menu.c]
New functions: PopMenuWndProc() with 'glues',
CreatePopupMenu(), AppendMenu(), InsertMenu(), RemoveMenu(),
DeleteMenu(), ModifyMenu(), TrackPopupMenu().
Code in stubs: CreateMenu(), DestroyMenu().
Sat Jan 1 10:22:43 1994 Bob Amstadt (bob@pooh)
* loader/wine.c: Added support for relocation types 5 and 6.
Mon Dec 27 11:06:03 1993 Erik Bos (erik@trashcan.hacktic.nl)
* [misc/comm.c]
new functions: BuildCommDCB(), OpenComm(), CloseComm(),
SetCommBreak(), ClearCommBreak(), EscapeCommFunction(), FlushComm(),
GetCommError(), SetCommEventMask(), GetCommEventMask(),
SetCommState(), GetCommState(), TransmitCommChar(), ReadComm(),
WriteComm().
Wed Dec 22 13:00:15 1993 David Metcalfe <david@prism.demon.co.uk>
* [windows/caret.c]
Implemented text caret functions.
Tue Dec 21 06:13:58 1993 julliard@di.epfl.ch (Alexandre Julliard)
* [loader/wine.c]
Bug fix in LoadImage().
* [objects/bitblt.c] [objects/clipping.c] [objects/text.c]
[windows/dc.c] [windows/dce.c] [windows/graphics.c]
Modified graphics calls to take into account the DC origin.
* [windows/defwnd.c]
Added preliminary WM_NCCALCSIZE handling.
* [windows/event.c]
Send WM_NCCALCSIZE message on resize event.
* [windows/win.c]
Send WM_NCCALCSIZE message in CreateWindow().
Realize widgets at creation time (should prevent problems with
unrealized widgets).
Dec 19, 93 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [controls/static.c]
Send mouse & keyboard message received to its parent.
* [controls/scroll.c]
Send keyboard message received to its parent.
* [controls/listbox.c]
Add Navigation keys .
ListBox now use VSCROLL & HSCROLL instead of children.
Alpha version of LBS_MULTIPLESEL.
Alpha version of LBS_MULTICOLUMN.
* [controls/combo.c]
Add Navigation keys on closed ComboBox.
Remove useless 'COMBOBOX_CreateComboBox' function.
Mon Dec 19 20:39:34 1993 Erik Bos (erik@trashcan.hacktic.nl)
* [loader/wine.
LoadImage() modified to use FindFile().
* [misc/file.c]
SetErrorMode added
* [misc/dos_fs.c]
bug fixes.
Dec 13, 93 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [memory/global.c]
bug fix in GlobalGetFreeSegment : good ptr in 'g_prev'.
* [sysres.dll]
preliminary version of a 'glass of wine' bitmap
* [windows/event.c]
New function 'GetCapture'.
* [controls/scroll.c]
Remove useless 'SCROLLBAR_CreateScrollBar' function.
* [controls/listbox.c]
Remove useless 'LISTBOX_CreateListBox' function.
Mon Dec 13 13:51:00 1993 David Metcalfe <david@prism.demon.co.uk>
* [objects/font.c]
Corrected bugs in GetCharWidth().
* [windows/event.c]
Modified EVENT_key to send Windows virtual key codes for
WM_KEYDOWN and WM_KEYUP messages, and a WM_CHAR message
for printable characters.
Wed Dec 08 19:20:00 1993 Karl Guenter Wuensch (hn324wu@unidui.uni-duisburg.de)
* [windows/graphics.c]
Added Polyline and Polygon
Mon Dec 13 14:51:54 1993 Erik Bos (erik@trashcan.hacktic.nl)
* [controls/listbox.c]
ListBoxDirectory() modified to use dos_fs.c's functions to
access files&|drives.
Sat Dec 04 17:04:23 1993 Erik Bos (erik@trashcan.hacktic.nl)
* [misc/dos_fs.c]
Added FindFile() to search a file in a dos/unix style path.
* [misc/file.c]
New Win31 functions: OpenFile, _lcreate, _llseek, GetTempDrive,
GetTempFileName, GetWindowsDirectory, GetSystemDirectory,
GetDriveType.
* [misc/int21.c]
Modified.
Wed Dec 1 16:20:45 1993 Miguel de Icaza (miguel@roxanne.nuclecu.unam.mx)
* [misc/profile.c]
The Profile functions now return the correct values. They now
implement all the features described in the SDK.
Tue Nov 30 13:55:27 1993 Bob Amstadt (bob at amscons)
* [loader/selector.c]
Rewrote selector aliasing routines to use System V IPC
routine to alias memory segments.
Nov 28, 93 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [controls/listbox.c]
More consistency in functions using wIndexes
* [controls/scroll.c]
New function : ShowScrollBar().
* [loader/cursor.c] ... New file
Move cursor functions from [loader/resource.c].
New function : ClipCursor().
New function : GetClipCursor().
New function : CreateCursor().
SetCursor() now working using gloabal variable 'winHasCursor'.
*[object/palette.c]
New stub only : SelectPalette().
New stub only : RealizePalette().
*[win/event.c]
New function : EVENT_enter_notify(),
update 'winHasCursor' and send WM_SETCURSOR.
*[win/defwnd.c]
Add processing of WM_SETCURSOR message.
*[win/win.c]
New members in WND structure : hCursor, hWndVScroll & hWndHScroll.
CreateWindowEx() now create children for WM_HSCROLL & WM_VSCROLL.
New function ClientToScreen().
New function ScreenToClient().
Mon Nov 25 18:25:40 1993 Erik Bos (erik@trashcan.hacktic.nl)
* [files.h / regfunc.h / misc/dos.c]
Removed.
* [misc/dos_fs.c]
Added support for loading dosdrive cfg from wine.ini.
* [misc/int21.c]
Modified.
Wed Nov 24 11:37:33 1993 julliard@disuns2.epfl.ch (Alexandre Julliard)
* [include/atom.h] [memory/atom.c]
Implemented atoms.
* [windows/class.c]
Modified RegisterClass() to use atoms.
Implemented CS_GLOBALCLASS style.
* [windows/message.c]
Implemented RegisterWindowMessage().
* [loader/resource.c]
Bug fix in LoadResource().
* [windows/dialog.c]
Modified CreateDialogParam() to use Find/LoadResource().
1994-01-04 21:14:34 +01:00
|
|
|
|
|
|
|
|
2012-04-30 21:17:00 +02:00
|
|
|
/* return the DC device rectangle if not empty */
|
|
|
|
static inline BOOL get_dc_device_rect( DC *dc, RECT *rect )
|
2011-12-07 16:50:57 +01:00
|
|
|
{
|
2012-04-30 21:17:00 +02:00
|
|
|
*rect = dc->device_rect;
|
2021-08-02 10:03:33 +02:00
|
|
|
offset_rect( rect, -dc->attr->vis_rect.left, -dc->attr->vis_rect.top );
|
2012-04-30 21:17:00 +02:00
|
|
|
return !is_rect_empty( rect );
|
2011-12-07 16:50:57 +01:00
|
|
|
}
|
|
|
|
|
2010-07-29 13:36:43 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* get_clip_rect
|
|
|
|
*
|
|
|
|
* Compute a clip rectangle from its logical coordinates.
|
|
|
|
*/
|
|
|
|
static inline RECT get_clip_rect( DC * dc, int left, int top, int right, int bottom )
|
|
|
|
{
|
|
|
|
RECT rect;
|
|
|
|
|
|
|
|
rect.left = left;
|
|
|
|
rect.top = top;
|
|
|
|
rect.right = right;
|
|
|
|
rect.bottom = bottom;
|
2016-07-18 12:32:56 +02:00
|
|
|
lp_to_dp( dc, (POINT *)&rect, 2 );
|
2021-07-28 11:39:26 +02:00
|
|
|
if (dc->attr->layout & LAYOUT_RTL)
|
2010-07-29 13:36:43 +02:00
|
|
|
{
|
|
|
|
int tmp = rect.left;
|
|
|
|
rect.left = rect.right + 1;
|
|
|
|
rect.right = tmp + 1;
|
|
|
|
}
|
|
|
|
return rect;
|
|
|
|
}
|
|
|
|
|
2012-04-30 21:17:00 +02:00
|
|
|
/***********************************************************************
|
|
|
|
* clip_device_rect
|
|
|
|
*
|
|
|
|
* Clip a rectangle to the whole DC surface.
|
|
|
|
*/
|
|
|
|
BOOL clip_device_rect( DC *dc, RECT *dst, const RECT *src )
|
|
|
|
{
|
|
|
|
RECT clip;
|
|
|
|
|
|
|
|
if (get_dc_device_rect( dc, &clip )) return intersect_rect( dst, src, &clip );
|
|
|
|
*dst = *src;
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
2011-12-06 12:57:30 +01:00
|
|
|
/***********************************************************************
|
|
|
|
* clip_visrect
|
|
|
|
*
|
|
|
|
* Clip a rectangle to the DC visible rect.
|
|
|
|
*/
|
|
|
|
BOOL clip_visrect( DC *dc, RECT *dst, const RECT *src )
|
|
|
|
{
|
|
|
|
RECT clip;
|
|
|
|
|
2012-04-30 21:17:00 +02:00
|
|
|
if (!clip_device_rect( dc, dst, src )) return FALSE;
|
2021-07-07 15:02:59 +02:00
|
|
|
if (NtGdiGetRgnBox( get_dc_region(dc), &clip )) return intersect_rect( dst, dst, &clip );
|
2012-04-30 21:17:00 +02:00
|
|
|
return TRUE;
|
2011-12-06 12:57:30 +01:00
|
|
|
}
|
|
|
|
|
1993-09-04 12:09:32 +02:00
|
|
|
/***********************************************************************
|
2011-12-07 17:09:11 +01:00
|
|
|
* update_dc_clipping
|
1993-09-04 12:09:32 +02:00
|
|
|
*
|
2011-12-07 17:09:11 +01:00
|
|
|
* Update the DC and device clip regions when the ClipRgn or VisRgn have changed.
|
1993-09-04 12:09:32 +02:00
|
|
|
*/
|
2011-12-07 17:09:11 +01:00
|
|
|
void update_dc_clipping( DC * dc )
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2011-03-09 16:21:45 +01:00
|
|
|
PHYSDEV physdev = GET_DC_PHYSDEV( dc, pSetDeviceClipping );
|
2011-12-07 17:49:47 +01:00
|
|
|
HRGN regions[3];
|
|
|
|
int count = 0;
|
2005-03-31 12:19:40 +02:00
|
|
|
|
2011-12-07 17:49:47 +01:00
|
|
|
if (dc->hVisRgn) regions[count++] = dc->hVisRgn;
|
|
|
|
if (dc->hClipRgn) regions[count++] = dc->hClipRgn;
|
|
|
|
if (dc->hMetaRgn) regions[count++] = dc->hMetaRgn;
|
|
|
|
|
|
|
|
if (count > 1)
|
2011-12-06 13:08:19 +01:00
|
|
|
{
|
2021-07-07 15:02:38 +02:00
|
|
|
if (!dc->region) dc->region = NtGdiCreateRectRgn( 0, 0, 0, 0 );
|
2021-07-07 15:02:59 +02:00
|
|
|
NtGdiCombineRgn( dc->region, regions[0], regions[1], RGN_AND );
|
|
|
|
if (count > 2) NtGdiCombineRgn( dc->region, dc->region, regions[2], RGN_AND );
|
2011-12-06 13:08:19 +01:00
|
|
|
}
|
2011-12-07 17:49:47 +01:00
|
|
|
else /* only one region, we don't need the total region */
|
2011-12-06 13:08:19 +01:00
|
|
|
{
|
2021-09-03 14:59:52 +02:00
|
|
|
if (dc->region) NtGdiDeleteObjectApp( dc->region );
|
2011-12-06 13:08:19 +01:00
|
|
|
dc->region = 0;
|
2005-03-31 12:19:40 +02:00
|
|
|
}
|
2011-12-07 17:05:07 +01:00
|
|
|
physdev->funcs->pSetDeviceClipping( physdev, get_dc_region( dc ));
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
|
|
|
|
2004-09-02 22:08:30 +02:00
|
|
|
/***********************************************************************
|
2005-03-31 12:19:40 +02:00
|
|
|
* create_default_clip_region
|
2004-09-02 22:08:30 +02:00
|
|
|
*
|
|
|
|
* Create a default clipping region when none already exists.
|
|
|
|
*/
|
|
|
|
static inline void create_default_clip_region( DC * dc )
|
|
|
|
{
|
2012-02-13 22:09:23 +01:00
|
|
|
RECT rect;
|
2006-12-12 15:00:19 +01:00
|
|
|
|
2012-04-30 21:17:00 +02:00
|
|
|
if (!get_dc_device_rect( dc, &rect ))
|
2006-12-12 15:00:19 +01:00
|
|
|
{
|
2012-02-13 22:09:23 +01:00
|
|
|
rect.left = 0;
|
|
|
|
rect.top = 0;
|
|
|
|
rect.right = GetDeviceCaps( dc->hSelf, DESKTOPHORZRES );
|
|
|
|
rect.bottom = GetDeviceCaps( dc->hSelf, DESKTOPVERTRES );
|
2006-12-12 15:00:19 +01:00
|
|
|
}
|
2012-02-13 22:09:23 +01:00
|
|
|
dc->hClipRgn = CreateRectRgnIndirect( &rect );
|
2004-09-02 22:08:30 +02:00
|
|
|
}
|
|
|
|
|
1993-09-04 12:09:32 +02:00
|
|
|
|
2021-08-04 11:22:02 +02:00
|
|
|
/******************************************************************************
|
|
|
|
* NtGdiExtSelectClipRgn (win32u.@)
|
|
|
|
*/
|
|
|
|
INT WINAPI NtGdiExtSelectClipRgn( HDC hdc, HRGN rgn, INT mode )
|
|
|
|
{
|
|
|
|
INT ret = ERROR;
|
|
|
|
DC *dc;
|
|
|
|
|
|
|
|
if (!(dc = get_dc_ptr( hdc ))) return ERROR;
|
|
|
|
update_dc( dc );
|
2002-05-09 06:03:46 +02:00
|
|
|
|
2011-03-09 16:21:45 +01:00
|
|
|
if (!rgn)
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2013-06-18 06:12:54 +02:00
|
|
|
switch (mode)
|
1998-10-11 20:47:02 +02:00
|
|
|
{
|
2013-06-18 06:12:54 +02:00
|
|
|
case RGN_COPY:
|
2021-09-03 14:59:52 +02:00
|
|
|
if (dc->hClipRgn) NtGdiDeleteObjectApp( dc->hClipRgn );
|
2013-06-18 06:12:54 +02:00
|
|
|
dc->hClipRgn = 0;
|
|
|
|
ret = SIMPLEREGION;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case RGN_DIFF:
|
2021-08-04 11:22:02 +02:00
|
|
|
break;
|
2013-06-18 06:12:54 +02:00
|
|
|
|
|
|
|
default:
|
2011-03-09 16:21:45 +01:00
|
|
|
FIXME("Unimplemented: hrgn NULL in mode: %d\n", mode);
|
2021-08-04 11:22:02 +02:00
|
|
|
break;
|
1998-10-11 20:47:02 +02:00
|
|
|
}
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
2002-06-01 01:06:46 +02:00
|
|
|
else
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2010-07-29 13:36:43 +02:00
|
|
|
HRGN mirrored = 0;
|
|
|
|
|
2021-07-28 11:39:26 +02:00
|
|
|
if (dc->attr->layout & LAYOUT_RTL)
|
2010-07-29 13:36:43 +02:00
|
|
|
{
|
2021-08-04 11:22:02 +02:00
|
|
|
if (!(mirrored = NtGdiCreateRectRgn( 0, 0, 0, 0 )))
|
|
|
|
{
|
|
|
|
release_dc_ptr( dc );
|
|
|
|
return ERROR;
|
|
|
|
}
|
2021-08-02 10:03:33 +02:00
|
|
|
mirror_region( mirrored, rgn, dc->attr->vis_rect.right - dc->attr->vis_rect.left );
|
2011-03-09 16:21:45 +01:00
|
|
|
rgn = mirrored;
|
2010-07-29 13:36:43 +02:00
|
|
|
}
|
|
|
|
|
2000-11-05 03:05:07 +01:00
|
|
|
if (!dc->hClipRgn)
|
2004-09-02 22:08:30 +02:00
|
|
|
create_default_clip_region( dc );
|
1998-10-11 20:47:02 +02:00
|
|
|
|
2011-03-09 16:21:45 +01:00
|
|
|
if (mode == RGN_COPY)
|
2021-07-07 15:02:59 +02:00
|
|
|
ret = NtGdiCombineRgn( dc->hClipRgn, rgn, 0, mode );
|
1998-11-08 14:01:41 +01:00
|
|
|
else
|
2021-07-07 15:02:59 +02:00
|
|
|
ret = NtGdiCombineRgn( dc->hClipRgn, dc->hClipRgn, rgn, mode );
|
2010-07-29 13:36:43 +02:00
|
|
|
|
2021-09-03 14:59:52 +02:00
|
|
|
if (mirrored) NtGdiDeleteObjectApp( mirrored );
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
2021-08-04 11:22:02 +02:00
|
|
|
if (ret != ERROR) update_dc_clipping( dc );
|
|
|
|
release_dc_ptr( dc );
|
2011-03-09 16:21:45 +01:00
|
|
|
return ret;
|
|
|
|
}
|
2003-05-11 04:52:04 +02:00
|
|
|
|
1993-09-04 12:09:32 +02:00
|
|
|
/***********************************************************************
|
2021-08-30 13:56:21 +02:00
|
|
|
* __wine_set_visible_region (win32u.@)
|
1993-09-04 12:09:32 +02:00
|
|
|
*/
|
2012-09-06 12:23:10 +02:00
|
|
|
void CDECL __wine_set_visible_region( HDC hdc, HRGN hrgn, const RECT *vis_rect, const RECT *device_rect,
|
|
|
|
struct window_surface *surface )
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2000-08-19 23:38:55 +02:00
|
|
|
DC * dc;
|
|
|
|
|
2010-07-26 15:28:02 +02:00
|
|
|
if (!(dc = get_dc_ptr( hdc ))) return;
|
Release 941030
Sun Oct 30 13:01:18 1994 Alexandre Julliard (julliard@lamisun.epfl.ch)
* [controls/static.c]
Bug fix for SS_ICON controls.
* [if1632/Imakefile]
Fixed call.o dependencies.
* [objects/clipping.c] [objects/dc.c]
Fixed visible region handling. hVisRgn is always non-null now.
* [windows/dce.c]
Bug fix in GetDCEx for CS_OWNDC windows.
* [windows/nonclient.c] [windows/painting.c]
Fixes to icon window drawing.
* [windows/winpos.c]
A few fixes in SetWindowPos().
Sun Oct 30 12:50:24 1994 Michael Patra <micky@marie.physik.tu-berlin.de>
* [objects/bitblt.c]
BitBlt(): BitBlt is now able to handle any raster operation. If
the request can't be passed to XWindows directly, it's quite
slow, though.
* [*/*.c]
[misc/main.c]
Improvements of the system for handling debug messages. Options are
now also loaded from /usr/lib/X11/app-defaults/Wine (insert
*debugoptions: +xxx there if you want to have turn messages xxx on).
* [controls/menu.c]
DestroyMenu(): The whole window won't be destroyed as a sideeffect
any longer.
* [misc/file.c]
OpenFile(): Fixed bug in searching in system/window-directory.
Sun Oct 30 12:25:53 1994 Jimmy Tirtawangsa <j0t2527@tam2000.tamu.edu>
* [include/windows.h]
Bug fix for window related structures.
DCB and COMSTAT are affected. They must be packed.
* [misc/comm.c]
Bug fix for COM ports:
Dial and dialog window in terminal.exe now works.
Non sequential COM assignments in wine.conf should not break now.
Baudrate can be specified in wine.conf to overcome baudrate limitation
in mswindow. See sample wine.ini
* [include/comm.h]
add baudrate field to DosDeviceStructre
* [object/font.c]
Bug fix for font assignment.
Use pairs of foundry and family fontnames in X11 to correspond with
window's fonts.
Put font assignment ini wine.ini.
* [wine.ini]
Adding optional baudrate after port name in "serialports" section
Add new section, "fonts".
"default" is special key in "fonts" to match any unmatch window font.
Oct 29, 94 (new address) wine@trgcorp.mksinfo.qc.ca (Martin Ayotte)
* [if1632/relay.c]
* [if1632/commdlg.spec] New file.
* [misc/commdlg.c] New file.
* [include/commdlg.h] New file.
Begin of an emulated COMMDLG DLL, built-in for now.
(BTW, if you want to switch between built-in & 16bits CommDlg, only
thing you need to do is to put the real/dummy name in file relay.c)
* [controls/scroll.c]
* [controls/combo.c]
* [controls/listbox.c]
Few bug fixes and/or cosmetic.
* [misc/audio.c]
* [misc/mmaux.c]
bug fixes and flags returned to emulate SB16.
* [misc/midi.c] New file.
skeleton for 'Midi' MMSYSTEM & MCI driver.
* [misc/mcianim.c] New file.
skeleton for 'Animation1' MCI driver.
* [windows/win.c]
Add new stub for GetLastActiveWindow().
Tue Oct 25 09:17:25 1994 Olaf Flebbe (flebbe@tat.physik.uni-tuebingen.de)
* [if1632/call.S] [tools/build.c]
Support for ELF format. (Not complete)
Sun Oct 23 00:51:50 1994 Paul Falstad (pf@zoof)
* [if1632/user.spec]
Add stubs for ArrangeIconicWindows(), etc.
* [if1632/kernel.spec]
Add IsBad*Ptr() functions.
* [loader/signal.c]
Add test_memory(), for use with IsBad*Ptr().
* [windows/winpos.c]
Add stubs for TileChildWindows(), etc.
* [windows/win.c]
IsWindow() shouldn't crash if it's given a bad handle.
Add stub for GetLastActivePopup().
* [memory/global.c]
Implement the IsBad*Ptr() functions.
* [controls/listbox.c]
Return the full longword of the item data in LB_GETITEMDATA.
* [controls/edit.c]
Don't let the user select an area past the end of the text.
* [objects/text.c]
In DrawText(), the code to delete crlfs also removed multiple
consecutive newlines. Also, using DT_CALCRECT didn't return
the right height, and the width wasn't returned at all.
This caused MessageBoxes to be missing much of their text.
* [windows/scroll.c]
ScrollWindow[Ex] didn't work right with null LPRECT arguments.
Fri Oct 21 21:47:19 1994 Paul Falstad (pf@zoof.cts.com)
* [miscemu/int21.c]
Fixed int21 0x42 handler to properly assemble 32-bit seek ptr.
* [misc/property.c]
Fixed inverted logic in EnumProps(), and changed CallBack16()
call to use new arg format.
* [windows/win.c]
Fixed CallBack16() call in Enum[Child]Windows to use new arg
format; this fixes crashes in enum procedures.
Wed Oct 19 21:30:00 PDT 1994 martin@cs.csufresno.edu
* [misc/clipboard.c]
[windows/event.c]
[windows/message.c]
Added cut and paste between Wine and other X clients via
the PRIMARY selection. Text only this time.
* [controls/edit.c]
EDIT_LineLength, EDIT_TextLine return 0 for lines after last one.
* [windows/defwnd.c]
Send WM_SYSCOMMAND to overlapped ancestor window,
not the receiver of WM_SYSKEYDOWN
Sat Oct 22 15:01:02 1994 Thomas Sandford <t.d.g.sandford@bradford.ac.uk>
* [controls/edit.c]
ClientWidth()/ClientHeight() macros: return 0 if size would
be negative
EDIT_StrLength(): takes unsigned char* instead of char*
* [controls/listbox.c]
ListBoxWndProc(): in "case WM_MOUSEMOVE" - set lphl at start of
case instead of in each place required (it was omitted in
some places causing problems!)
* [controls/menu.c]
MENU_CalcItemSize(): don't try to find size of a text item
if the pointer is NULL
* [include/heap.h]
added definition of HEAP_LocalInit()
* [include/msdos.h]
removed buggy pointer() macro (use SAFEMAKEPTR() from segmem.h
instead)
* [loader/selector.c]
IPCCopySelector(): added missing flags to shmget() call
? does this break linux - I added these flags in a previous
patch but they were missing in the corresponding release ?
* [loader/signal.c]
win_fault(): added missing definitions of i, dump for those
not running NetBSD or linux
* [misc/dos_fs.c]
DOS_GetCurrentDir(): made temp[] static so it can be safely
returned
* [miscemu/int21.c,int25.c,int26.c]
Changed all invocations of pointer() to SAFEMAKEPTR(). Included
segmem.h where necessary.
* [windows/dialog.c]
CreateDialogIndirectParam(): Changed HEAP_Init() call to
HEAP_LocalInit(), removed redundant variables
Sat Oct 22 00:29:41 MET 1994 Dag Asheim (dash@ifi.uio.no)
* [loader/library.c] [loader/main.c] [loader/ne_image.c]
[misc/exec.c] [miscemu/int10.c] [miscemu/int21.c]
[objects/bitblt.c] [objects/metafile.c]
Rewritten more printf's to use the new debugging system, and
made wine less verbose per default. Use "-debugmsg +module"
to get (almost) the same behavior as before.
1994-10-30 17:25:19 +01:00
|
|
|
|
2012-09-06 12:23:10 +02:00
|
|
|
TRACE( "%p %p %s %s %p\n", hdc, hrgn,
|
|
|
|
wine_dbgstr_rect(vis_rect), wine_dbgstr_rect(device_rect), surface );
|
Release 941030
Sun Oct 30 13:01:18 1994 Alexandre Julliard (julliard@lamisun.epfl.ch)
* [controls/static.c]
Bug fix for SS_ICON controls.
* [if1632/Imakefile]
Fixed call.o dependencies.
* [objects/clipping.c] [objects/dc.c]
Fixed visible region handling. hVisRgn is always non-null now.
* [windows/dce.c]
Bug fix in GetDCEx for CS_OWNDC windows.
* [windows/nonclient.c] [windows/painting.c]
Fixes to icon window drawing.
* [windows/winpos.c]
A few fixes in SetWindowPos().
Sun Oct 30 12:50:24 1994 Michael Patra <micky@marie.physik.tu-berlin.de>
* [objects/bitblt.c]
BitBlt(): BitBlt is now able to handle any raster operation. If
the request can't be passed to XWindows directly, it's quite
slow, though.
* [*/*.c]
[misc/main.c]
Improvements of the system for handling debug messages. Options are
now also loaded from /usr/lib/X11/app-defaults/Wine (insert
*debugoptions: +xxx there if you want to have turn messages xxx on).
* [controls/menu.c]
DestroyMenu(): The whole window won't be destroyed as a sideeffect
any longer.
* [misc/file.c]
OpenFile(): Fixed bug in searching in system/window-directory.
Sun Oct 30 12:25:53 1994 Jimmy Tirtawangsa <j0t2527@tam2000.tamu.edu>
* [include/windows.h]
Bug fix for window related structures.
DCB and COMSTAT are affected. They must be packed.
* [misc/comm.c]
Bug fix for COM ports:
Dial and dialog window in terminal.exe now works.
Non sequential COM assignments in wine.conf should not break now.
Baudrate can be specified in wine.conf to overcome baudrate limitation
in mswindow. See sample wine.ini
* [include/comm.h]
add baudrate field to DosDeviceStructre
* [object/font.c]
Bug fix for font assignment.
Use pairs of foundry and family fontnames in X11 to correspond with
window's fonts.
Put font assignment ini wine.ini.
* [wine.ini]
Adding optional baudrate after port name in "serialports" section
Add new section, "fonts".
"default" is special key in "fonts" to match any unmatch window font.
Oct 29, 94 (new address) wine@trgcorp.mksinfo.qc.ca (Martin Ayotte)
* [if1632/relay.c]
* [if1632/commdlg.spec] New file.
* [misc/commdlg.c] New file.
* [include/commdlg.h] New file.
Begin of an emulated COMMDLG DLL, built-in for now.
(BTW, if you want to switch between built-in & 16bits CommDlg, only
thing you need to do is to put the real/dummy name in file relay.c)
* [controls/scroll.c]
* [controls/combo.c]
* [controls/listbox.c]
Few bug fixes and/or cosmetic.
* [misc/audio.c]
* [misc/mmaux.c]
bug fixes and flags returned to emulate SB16.
* [misc/midi.c] New file.
skeleton for 'Midi' MMSYSTEM & MCI driver.
* [misc/mcianim.c] New file.
skeleton for 'Animation1' MCI driver.
* [windows/win.c]
Add new stub for GetLastActiveWindow().
Tue Oct 25 09:17:25 1994 Olaf Flebbe (flebbe@tat.physik.uni-tuebingen.de)
* [if1632/call.S] [tools/build.c]
Support for ELF format. (Not complete)
Sun Oct 23 00:51:50 1994 Paul Falstad (pf@zoof)
* [if1632/user.spec]
Add stubs for ArrangeIconicWindows(), etc.
* [if1632/kernel.spec]
Add IsBad*Ptr() functions.
* [loader/signal.c]
Add test_memory(), for use with IsBad*Ptr().
* [windows/winpos.c]
Add stubs for TileChildWindows(), etc.
* [windows/win.c]
IsWindow() shouldn't crash if it's given a bad handle.
Add stub for GetLastActivePopup().
* [memory/global.c]
Implement the IsBad*Ptr() functions.
* [controls/listbox.c]
Return the full longword of the item data in LB_GETITEMDATA.
* [controls/edit.c]
Don't let the user select an area past the end of the text.
* [objects/text.c]
In DrawText(), the code to delete crlfs also removed multiple
consecutive newlines. Also, using DT_CALCRECT didn't return
the right height, and the width wasn't returned at all.
This caused MessageBoxes to be missing much of their text.
* [windows/scroll.c]
ScrollWindow[Ex] didn't work right with null LPRECT arguments.
Fri Oct 21 21:47:19 1994 Paul Falstad (pf@zoof.cts.com)
* [miscemu/int21.c]
Fixed int21 0x42 handler to properly assemble 32-bit seek ptr.
* [misc/property.c]
Fixed inverted logic in EnumProps(), and changed CallBack16()
call to use new arg format.
* [windows/win.c]
Fixed CallBack16() call in Enum[Child]Windows to use new arg
format; this fixes crashes in enum procedures.
Wed Oct 19 21:30:00 PDT 1994 martin@cs.csufresno.edu
* [misc/clipboard.c]
[windows/event.c]
[windows/message.c]
Added cut and paste between Wine and other X clients via
the PRIMARY selection. Text only this time.
* [controls/edit.c]
EDIT_LineLength, EDIT_TextLine return 0 for lines after last one.
* [windows/defwnd.c]
Send WM_SYSCOMMAND to overlapped ancestor window,
not the receiver of WM_SYSKEYDOWN
Sat Oct 22 15:01:02 1994 Thomas Sandford <t.d.g.sandford@bradford.ac.uk>
* [controls/edit.c]
ClientWidth()/ClientHeight() macros: return 0 if size would
be negative
EDIT_StrLength(): takes unsigned char* instead of char*
* [controls/listbox.c]
ListBoxWndProc(): in "case WM_MOUSEMOVE" - set lphl at start of
case instead of in each place required (it was omitted in
some places causing problems!)
* [controls/menu.c]
MENU_CalcItemSize(): don't try to find size of a text item
if the pointer is NULL
* [include/heap.h]
added definition of HEAP_LocalInit()
* [include/msdos.h]
removed buggy pointer() macro (use SAFEMAKEPTR() from segmem.h
instead)
* [loader/selector.c]
IPCCopySelector(): added missing flags to shmget() call
? does this break linux - I added these flags in a previous
patch but they were missing in the corresponding release ?
* [loader/signal.c]
win_fault(): added missing definitions of i, dump for those
not running NetBSD or linux
* [misc/dos_fs.c]
DOS_GetCurrentDir(): made temp[] static so it can be safely
returned
* [miscemu/int21.c,int25.c,int26.c]
Changed all invocations of pointer() to SAFEMAKEPTR(). Included
segmem.h where necessary.
* [windows/dialog.c]
CreateDialogIndirectParam(): Changed HEAP_Init() call to
HEAP_LocalInit(), removed redundant variables
Sat Oct 22 00:29:41 MET 1994 Dag Asheim (dash@ifi.uio.no)
* [loader/library.c] [loader/main.c] [loader/ne_image.c]
[misc/exec.c] [miscemu/int10.c] [miscemu/int21.c]
[objects/bitblt.c] [objects/metafile.c]
Rewritten more printf's to use the new debugging system, and
made wine less verbose per default. Use "-debugmsg +module"
to get (almost) the same behavior as before.
1994-10-30 17:25:19 +01:00
|
|
|
|
2010-07-26 15:28:02 +02:00
|
|
|
/* map region to DC coordinates */
|
2021-07-07 15:02:59 +02:00
|
|
|
NtGdiOffsetRgn( hrgn, -vis_rect->left, -vis_rect->top );
|
Release 960606
Wed Jun 5 20:13:54 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [controls/button.c] [controls/listbox.c]
Fixed wParam of WM_DRAWITEM message.
* [if1632/Makefile.in] [loader/builtin.c]
Remove WPROCS32 DLL, as the relay code can call Wine routines
directly.
* [loader/module.c] [loader/ne_image.c]
Fixed initial stack layout for self-loading modules.
* [tools/build.c]
Fixed data segment building for Win16 modules.
* [windows/defdlg.c]
Implemented Win32 versions of DefDlgProc().
* [windows/dialog.c]
Merged Win16 and Win32 dialog code.
Added support for control extra data in dialog item template.
* [windows/win.c]
Unified Win16 and Win32 versions of CreateWindow().
Implemented Win32 version of GetWindowLong().
* [windows/winproc.c]
Changed the implementation of window procedures, so that 16-bit
winprocs are valid segmented pointers.
Sun Jun 2 16:39:46 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [misc/registry.c]
Fixed another bug in the w95 loader. Quietened some debug output.
Sun Jun 2 10:00:22 1996 Ulrich Schmid <uschmid@mail.hh.provi.de>
* [windows/winproc.c]
Bug fix: WM_PARENTNOTIFY: don't fall through to WM_SETTEXT.
Sat Jun 1 12:37:22 1996 Tristan Tarrant <tst@sthinc.demon.co.uk>
* [resources/TODO] [resources/sysres_It.rc]
Updated font dialog box.
Thu May 30 21:05:19 1996 Albrecht Kleine <kleine@ak.sax.de>
* [include/commdlg.h] [misc/commdlg.c]
ChooseFont() and ChooseColor():
Bugfixes and added more support for some CF_* and CC_* flags:
dialog templates and font size control.
Bugfix in structure definition of CHOOSECOLOR definition.
* [ipc/dde_proc.c] [windows/event.c]
Replaced SendMessage with SendMessage16 and added inclusion of
dde_proc.h for error-free compilation of ipc module.
Thu May 30 19:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/scroll.c]
Made ScrollDC to save/restore current clipping region.
* [misc/clipboard.c] [windows/event.c]
Implemented most of the previously missing features (not tested),
improved text pasting from/to X.
* [if1632/user.spec] [if1632/gdi.spec] [objects/dc.c]
[objects/gdiobj.c] [objects/clipping.c] [windows/dce.c]
[windows/winpos.c] [windows/painting.c]
Updated DCE code, implemented dynamic invalidation of owned DCs.
This fixes a lot of problems with scrolling in WinWord. Not
sure about the effect on -desktop.
Wed May 29 23:35:44 1996 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [win32/time.c] [if1632/kernel32.spec]
Added SetSystemTime and SetTimeZoneInformation.
* [if1632/kernel32.spec]
Added lstrcat, lstrcatA, lstrcmp, lstrcmpA, lstrcpy, lstrlen.
* [include/windows.h]
Added SYSTEM_POWER_STATUS structure and prototypes for
GetSystemPowerStatus, SetSystemPowerState, SetSystemTime.
* [include/kernel32.h]
Added a prototype for SetTimeZoneInformation.
* [win32/environment.c] [if1632/kernel32.spec]
Added GetSystemPowerStatus and SetSystemPowerState stubs.
1996-06-06 20:38:27 +02:00
|
|
|
|
2021-09-03 14:59:52 +02:00
|
|
|
if (dc->hVisRgn) NtGdiDeleteObjectApp( dc->hVisRgn );
|
2010-07-26 15:28:02 +02:00
|
|
|
dc->dirty = 0;
|
2021-08-02 10:03:33 +02:00
|
|
|
dc->attr->vis_rect = *vis_rect;
|
2012-09-05 19:29:29 +02:00
|
|
|
dc->device_rect = *device_rect;
|
2010-07-26 15:28:02 +02:00
|
|
|
dc->hVisRgn = hrgn;
|
2012-09-06 12:23:10 +02:00
|
|
|
dibdrv_set_window_surface( dc, surface );
|
2010-07-30 11:35:33 +02:00
|
|
|
DC_UpdateXforms( dc );
|
2011-12-07 17:09:11 +01:00
|
|
|
update_dc_clipping( dc );
|
2007-09-24 18:19:14 +02:00
|
|
|
release_dc_ptr( dc );
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1996-11-02 15:24:07 +01:00
|
|
|
/***********************************************************************
|
2021-08-04 11:20:53 +02:00
|
|
|
* NtGdiOffsetClipRgn (win32u.@)
|
1993-09-04 12:09:32 +02:00
|
|
|
*/
|
2021-08-04 11:20:53 +02:00
|
|
|
INT WINAPI NtGdiOffsetClipRgn( HDC hdc, INT x, INT y )
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2021-08-04 11:20:53 +02:00
|
|
|
INT ret = NULLREGION;
|
2007-09-17 16:46:29 +02:00
|
|
|
DC *dc = get_dc_ptr( hdc );
|
Release 940602
Sat May 28 12:03:23 1994 Bob Amstadt (bob@pooh)
* miscemu/int21.c (OpenExistingFile):
OpenExistingFile needed to return handle in AX register instead
of the BX register.
* miscemu/int21.c (ioctlGetDeviceInfo):
Added a little code to give a fake result for normal files.
Wed May 25 21:55:38 1994 Bob Amstadt (bob@pooh)
* [memory/global.c]
return value from GlobalSize was completely wrong.
* [miscemu/int21.h]
fixed bug in FindFirst. Directory pointer (dp) was not placed in
dta correctly.
* [tools/build.c]
fixed creation of pop.h to guarantee that flags are restored correctly.
* [misc/comm.c]
changed all occurance of strncmp() to strncasecmp().
BuildCommDCB() should not require that OpenComm() be called first.
* [loader/selector.c]
Heap initialized to size of full segment less stack size and
automatic data size.
Sat May 28 09:14:33 1994 Rick Sladkey (jrs@world.std.com)
* [controls/listbox.c]
Correct typos in ListBoxResetContent where lpls variable is
used where lsls2 variable is meant. Don't call USER_HEAP_FREE
twice on the same handle if hData and hMem are the same.
* [debugger/opcodes/i386-dis.c]
Add new name array names_rmw for table driven decoding of the
16-bit mod/rm field. Omit large case statement in OP_E and
replace with array reference to match existing coding style.
Add new static variable machine with value 286 or 386 to
correctly decode mod/rm field in either 16 or 32 bit modes.
Set it in print_insn_i{2,3}86. In OP_E use it to decide how
to decode mod/rm. While the code was correct for 16 bit code,
it was improperly decoding mod/rm fields on word prefixed
32 bit instructions.
* [debugger/debug.l]
Recognize new token ABORT. Recognize single letters 'p'
and 'q' as tokens.
* [debugger/dbg.y]
Add new token ABORT. Allow print command to be invoked by
'p' and quit command by 'q', ala GDB. Change lots of '};'
to just '}'. Add static dummy_regs to wine_debug so that
wine_debug(0, NULL) doesn't core dump with qmagic.
* [debugger/info.c]
Correct syntax of break command in helptext and omit former
comment about probable bugginess of the disassembly since it
is now correct. Change fprintf of first backtrace stack
frame to match that of the second and subsequent frames.
* [loader/selector.c]
Change construction of command line in CreatePSP from creating
a string that looks like "arg1 arg2 \r" to "arg1 arg2". A DOS
PSP command line looks like " arg1 arg2\r" with the length not
including the trailing "\r" but that is not how Windows does it.
* [loader/library.c]
Change uses of %s to print strings in GetModuleHandle to %x so
that string IDs don't cause a core dump with qmagic. Handle
converting a string id to a literal module handle. For
example, GetModuleHandle((LPSTR) 0x57) now returns 0x57 if
it is a real module handle.
* [misc/message.c]
In MessageBox, translate a NULL title argument to the string "Error".
* [misc/profile.c]
In GetSetProfile translate a NULL Default argument to "". Any
caller whose Default argument is NULL is buggy, but CHARMAP does it
anyway.
* [objects/font.c]
Add NULL pointer checks in EnumFontFamilies to prevent core dumps.
Sat May 28 20:01:51 1994 Jon Tombs (jon@gtex02.us.es)
* New options/resourses nosaveunders and nobackingstore. By
default backingstore and saveunders are now enabled, these use
more memory but avoids those slow (sometimes multiple) redraws
caused be exposure events.
May 30, 94 martin2@trgcorp.solucorp.qc.ca (Martin Ayotte)
* [misc/driver.c] New file
Skeleton for 'Installable Wine Drivers' functions. :-)
* [misc/audio.c] New file
Skeleton for basic 'Audio Driver' functions.
* [misc/network.c] New file
Stubs for few networking functions.
* [misc/mmsystem.c]
More coding ... a dust in a galaxy ...
* [misc/shell.c]
Some coding for 'RegXXX' functions ... a dust in the wind ...
* [misc/profile.c]
Bug fix in GetSetProfile(), bad enumeration if KeyName == NULL.
* [objects/gdi.c]
New function CreateDiscardableBitmap(), it just calling
CreateCompatibleBitmap() for now. It's get 'clock.exe' running ! :-)
* [controls/listbox.c]
* [controls/combo.c]
New font member assigned to SYSTEM_FONT as default.
Added processing for WM_SETFONT message;
Tue May 31 20:34:25 EDT 1994 John Richardson <jrichard@cs.uml.edu>
* [windows/event.c]
Added AsyncMouseButtonsStates array for GetAsyncKeyState.
* [windows/keyboard.c]
Implemented beginning of GetAsyncKeyState.
Wed May 25 23:35:03 1994 David Metcalfe <david@prism.demon.co.uk>
* [objects/metafile.c] [include/metafile.h]
[windows/mapping.c] [objects/clipping.c] [objects/bitblt.c]
[windows/dc.c]
Further metafile support.
1994-06-03 00:38:20 +02:00
|
|
|
|
2012-09-20 21:07:04 +02:00
|
|
|
if (!dc) return ERROR;
|
|
|
|
update_dc( dc );
|
2021-08-04 11:20:53 +02:00
|
|
|
|
|
|
|
if (dc->hClipRgn)
|
|
|
|
{
|
|
|
|
x = MulDiv( x, dc->attr->vport_ext.cx, dc->attr->wnd_ext.cx );
|
|
|
|
y = MulDiv( y, dc->attr->vport_ext.cy, dc->attr->wnd_ext.cy );
|
|
|
|
if (dc->attr->layout & LAYOUT_RTL) x = -x;
|
|
|
|
ret = NtGdiOffsetRgn( dc->hClipRgn, x, y );
|
|
|
|
update_dc_clipping( dc );
|
|
|
|
}
|
2012-09-20 21:07:04 +02:00
|
|
|
release_dc_ptr( dc );
|
1999-04-25 11:24:23 +02:00
|
|
|
return ret;
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1996-11-02 15:24:07 +01:00
|
|
|
/***********************************************************************
|
2021-08-04 11:21:13 +02:00
|
|
|
* NtGdiExcludeClipRect (win32u.@)
|
1993-09-04 12:09:32 +02:00
|
|
|
*/
|
2021-08-04 11:21:13 +02:00
|
|
|
INT WINAPI NtGdiExcludeClipRect( HDC hdc, INT left, INT top, INT right, INT bottom )
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2021-08-04 11:21:13 +02:00
|
|
|
INT ret = ERROR;
|
|
|
|
RECT rect;
|
|
|
|
HRGN rgn;
|
2007-09-17 16:46:29 +02:00
|
|
|
DC *dc = get_dc_ptr( hdc );
|
1996-09-02 18:46:30 +02:00
|
|
|
|
2011-03-09 16:21:45 +01:00
|
|
|
TRACE("%p %d,%d-%d,%d\n", hdc, left, top, right, bottom );
|
1999-04-25 11:24:23 +02:00
|
|
|
|
2012-09-20 21:07:04 +02:00
|
|
|
if (!dc) return ERROR;
|
|
|
|
update_dc( dc );
|
2021-08-04 11:21:13 +02:00
|
|
|
|
|
|
|
rect = get_clip_rect( dc, left, top, right, bottom );
|
|
|
|
|
|
|
|
if ((rgn = CreateRectRgnIndirect( &rect )))
|
|
|
|
{
|
|
|
|
if (!dc->hClipRgn) create_default_clip_region( dc );
|
|
|
|
ret = NtGdiCombineRgn( dc->hClipRgn, dc->hClipRgn, rgn, RGN_DIFF );
|
2021-09-03 14:59:52 +02:00
|
|
|
NtGdiDeleteObjectApp( rgn );
|
2021-08-04 11:21:13 +02:00
|
|
|
if (ret != ERROR) update_dc_clipping( dc );
|
|
|
|
}
|
2012-09-20 21:07:04 +02:00
|
|
|
release_dc_ptr( dc );
|
1997-08-24 18:00:30 +02:00
|
|
|
return ret;
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1996-11-02 15:24:07 +01:00
|
|
|
/***********************************************************************
|
2021-08-04 11:20:21 +02:00
|
|
|
* NtGdiIntersectClipRect (win32u.@)
|
1993-09-04 12:09:32 +02:00
|
|
|
*/
|
2021-08-04 11:20:21 +02:00
|
|
|
INT WINAPI NtGdiIntersectClipRect( HDC hdc, INT left, INT top, INT right, INT bottom )
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2021-08-04 11:20:21 +02:00
|
|
|
INT ret = ERROR;
|
|
|
|
RECT rect;
|
|
|
|
HRGN rgn;
|
|
|
|
DC *dc;
|
1999-04-25 11:24:23 +02:00
|
|
|
|
2021-08-04 11:20:21 +02:00
|
|
|
if (!(dc = get_dc_ptr( hdc ))) return ERROR;
|
2012-09-20 21:07:04 +02:00
|
|
|
update_dc( dc );
|
2021-08-04 11:20:21 +02:00
|
|
|
|
|
|
|
rect = get_clip_rect( dc, left, top, right, bottom );
|
|
|
|
if (!dc->hClipRgn)
|
|
|
|
{
|
|
|
|
if ((dc->hClipRgn = CreateRectRgnIndirect( &rect )))
|
|
|
|
ret = SIMPLEREGION;
|
|
|
|
}
|
|
|
|
else if ((rgn = CreateRectRgnIndirect( &rect )))
|
|
|
|
{
|
|
|
|
ret = NtGdiCombineRgn( dc->hClipRgn, dc->hClipRgn, rgn, RGN_AND );
|
2021-09-03 14:59:52 +02:00
|
|
|
NtGdiDeleteObjectApp( rgn );
|
2021-08-04 11:20:21 +02:00
|
|
|
}
|
|
|
|
if (ret != ERROR) update_dc_clipping( dc );
|
2012-09-20 21:07:04 +02:00
|
|
|
release_dc_ptr( dc );
|
Release 941030
Sun Oct 30 13:01:18 1994 Alexandre Julliard (julliard@lamisun.epfl.ch)
* [controls/static.c]
Bug fix for SS_ICON controls.
* [if1632/Imakefile]
Fixed call.o dependencies.
* [objects/clipping.c] [objects/dc.c]
Fixed visible region handling. hVisRgn is always non-null now.
* [windows/dce.c]
Bug fix in GetDCEx for CS_OWNDC windows.
* [windows/nonclient.c] [windows/painting.c]
Fixes to icon window drawing.
* [windows/winpos.c]
A few fixes in SetWindowPos().
Sun Oct 30 12:50:24 1994 Michael Patra <micky@marie.physik.tu-berlin.de>
* [objects/bitblt.c]
BitBlt(): BitBlt is now able to handle any raster operation. If
the request can't be passed to XWindows directly, it's quite
slow, though.
* [*/*.c]
[misc/main.c]
Improvements of the system for handling debug messages. Options are
now also loaded from /usr/lib/X11/app-defaults/Wine (insert
*debugoptions: +xxx there if you want to have turn messages xxx on).
* [controls/menu.c]
DestroyMenu(): The whole window won't be destroyed as a sideeffect
any longer.
* [misc/file.c]
OpenFile(): Fixed bug in searching in system/window-directory.
Sun Oct 30 12:25:53 1994 Jimmy Tirtawangsa <j0t2527@tam2000.tamu.edu>
* [include/windows.h]
Bug fix for window related structures.
DCB and COMSTAT are affected. They must be packed.
* [misc/comm.c]
Bug fix for COM ports:
Dial and dialog window in terminal.exe now works.
Non sequential COM assignments in wine.conf should not break now.
Baudrate can be specified in wine.conf to overcome baudrate limitation
in mswindow. See sample wine.ini
* [include/comm.h]
add baudrate field to DosDeviceStructre
* [object/font.c]
Bug fix for font assignment.
Use pairs of foundry and family fontnames in X11 to correspond with
window's fonts.
Put font assignment ini wine.ini.
* [wine.ini]
Adding optional baudrate after port name in "serialports" section
Add new section, "fonts".
"default" is special key in "fonts" to match any unmatch window font.
Oct 29, 94 (new address) wine@trgcorp.mksinfo.qc.ca (Martin Ayotte)
* [if1632/relay.c]
* [if1632/commdlg.spec] New file.
* [misc/commdlg.c] New file.
* [include/commdlg.h] New file.
Begin of an emulated COMMDLG DLL, built-in for now.
(BTW, if you want to switch between built-in & 16bits CommDlg, only
thing you need to do is to put the real/dummy name in file relay.c)
* [controls/scroll.c]
* [controls/combo.c]
* [controls/listbox.c]
Few bug fixes and/or cosmetic.
* [misc/audio.c]
* [misc/mmaux.c]
bug fixes and flags returned to emulate SB16.
* [misc/midi.c] New file.
skeleton for 'Midi' MMSYSTEM & MCI driver.
* [misc/mcianim.c] New file.
skeleton for 'Animation1' MCI driver.
* [windows/win.c]
Add new stub for GetLastActiveWindow().
Tue Oct 25 09:17:25 1994 Olaf Flebbe (flebbe@tat.physik.uni-tuebingen.de)
* [if1632/call.S] [tools/build.c]
Support for ELF format. (Not complete)
Sun Oct 23 00:51:50 1994 Paul Falstad (pf@zoof)
* [if1632/user.spec]
Add stubs for ArrangeIconicWindows(), etc.
* [if1632/kernel.spec]
Add IsBad*Ptr() functions.
* [loader/signal.c]
Add test_memory(), for use with IsBad*Ptr().
* [windows/winpos.c]
Add stubs for TileChildWindows(), etc.
* [windows/win.c]
IsWindow() shouldn't crash if it's given a bad handle.
Add stub for GetLastActivePopup().
* [memory/global.c]
Implement the IsBad*Ptr() functions.
* [controls/listbox.c]
Return the full longword of the item data in LB_GETITEMDATA.
* [controls/edit.c]
Don't let the user select an area past the end of the text.
* [objects/text.c]
In DrawText(), the code to delete crlfs also removed multiple
consecutive newlines. Also, using DT_CALCRECT didn't return
the right height, and the width wasn't returned at all.
This caused MessageBoxes to be missing much of their text.
* [windows/scroll.c]
ScrollWindow[Ex] didn't work right with null LPRECT arguments.
Fri Oct 21 21:47:19 1994 Paul Falstad (pf@zoof.cts.com)
* [miscemu/int21.c]
Fixed int21 0x42 handler to properly assemble 32-bit seek ptr.
* [misc/property.c]
Fixed inverted logic in EnumProps(), and changed CallBack16()
call to use new arg format.
* [windows/win.c]
Fixed CallBack16() call in Enum[Child]Windows to use new arg
format; this fixes crashes in enum procedures.
Wed Oct 19 21:30:00 PDT 1994 martin@cs.csufresno.edu
* [misc/clipboard.c]
[windows/event.c]
[windows/message.c]
Added cut and paste between Wine and other X clients via
the PRIMARY selection. Text only this time.
* [controls/edit.c]
EDIT_LineLength, EDIT_TextLine return 0 for lines after last one.
* [windows/defwnd.c]
Send WM_SYSCOMMAND to overlapped ancestor window,
not the receiver of WM_SYSKEYDOWN
Sat Oct 22 15:01:02 1994 Thomas Sandford <t.d.g.sandford@bradford.ac.uk>
* [controls/edit.c]
ClientWidth()/ClientHeight() macros: return 0 if size would
be negative
EDIT_StrLength(): takes unsigned char* instead of char*
* [controls/listbox.c]
ListBoxWndProc(): in "case WM_MOUSEMOVE" - set lphl at start of
case instead of in each place required (it was omitted in
some places causing problems!)
* [controls/menu.c]
MENU_CalcItemSize(): don't try to find size of a text item
if the pointer is NULL
* [include/heap.h]
added definition of HEAP_LocalInit()
* [include/msdos.h]
removed buggy pointer() macro (use SAFEMAKEPTR() from segmem.h
instead)
* [loader/selector.c]
IPCCopySelector(): added missing flags to shmget() call
? does this break linux - I added these flags in a previous
patch but they were missing in the corresponding release ?
* [loader/signal.c]
win_fault(): added missing definitions of i, dump for those
not running NetBSD or linux
* [misc/dos_fs.c]
DOS_GetCurrentDir(): made temp[] static so it can be safely
returned
* [miscemu/int21.c,int25.c,int26.c]
Changed all invocations of pointer() to SAFEMAKEPTR(). Included
segmem.h where necessary.
* [windows/dialog.c]
CreateDialogIndirectParam(): Changed HEAP_Init() call to
HEAP_LocalInit(), removed redundant variables
Sat Oct 22 00:29:41 MET 1994 Dag Asheim (dash@ifi.uio.no)
* [loader/library.c] [loader/main.c] [loader/ne_image.c]
[misc/exec.c] [miscemu/int10.c] [miscemu/int21.c]
[objects/bitblt.c] [objects/metafile.c]
Rewritten more printf's to use the new debugging system, and
made wine less verbose per default. Use "-debugmsg +module"
to get (almost) the same behavior as before.
1994-10-30 17:25:19 +01:00
|
|
|
return ret;
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
1996-11-02 15:24:07 +01:00
|
|
|
/***********************************************************************
|
2021-08-04 11:21:26 +02:00
|
|
|
* NtGdiPtVisible (win32u.@)
|
1993-09-04 12:09:32 +02:00
|
|
|
*/
|
2021-08-04 11:21:26 +02:00
|
|
|
BOOL WINAPI NtGdiPtVisible( HDC hdc, INT x, INT y )
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2004-02-13 21:26:27 +01:00
|
|
|
POINT pt;
|
2011-12-07 17:05:07 +01:00
|
|
|
RECT visrect;
|
2004-02-13 21:26:27 +01:00
|
|
|
BOOL ret;
|
2007-09-17 16:46:29 +02:00
|
|
|
DC *dc = get_dc_ptr( hdc );
|
1994-10-17 19:12:41 +01:00
|
|
|
|
2002-11-22 23:16:53 +01:00
|
|
|
TRACE("%p %d,%d\n", hdc, x, y );
|
2000-08-19 23:38:55 +02:00
|
|
|
if (!dc) return FALSE;
|
2002-06-26 01:29:51 +02:00
|
|
|
|
2004-02-13 21:26:27 +01:00
|
|
|
pt.x = x;
|
|
|
|
pt.y = y;
|
2016-07-18 12:32:56 +02:00
|
|
|
lp_to_dp( dc, &pt, 1 );
|
2007-09-17 16:46:29 +02:00
|
|
|
update_dc( dc );
|
2012-04-30 21:17:00 +02:00
|
|
|
ret = (!get_dc_device_rect( dc, &visrect ) ||
|
2012-02-13 22:09:23 +01:00
|
|
|
(pt.x >= visrect.left && pt.x < visrect.right &&
|
|
|
|
pt.y >= visrect.top && pt.y < visrect.bottom));
|
2021-07-07 15:02:59 +02:00
|
|
|
if (ret && get_dc_region( dc )) ret = NtGdiPtInRegion( get_dc_region( dc ), pt.x, pt.y );
|
2007-09-17 16:46:29 +02:00
|
|
|
release_dc_ptr( dc );
|
2000-08-19 23:38:55 +02:00
|
|
|
return ret;
|
|
|
|
}
|
1993-09-04 12:09:32 +02:00
|
|
|
|
|
|
|
|
2001-07-02 03:21:26 +02:00
|
|
|
/***********************************************************************
|
2021-08-04 11:21:26 +02:00
|
|
|
* NtGdiRectVisible (win32u.@)
|
2001-07-02 03:21:26 +02:00
|
|
|
*/
|
2021-08-04 11:21:26 +02:00
|
|
|
BOOL WINAPI NtGdiRectVisible( HDC hdc, const RECT *rect )
|
1993-09-04 12:09:32 +02:00
|
|
|
{
|
2011-12-07 17:05:07 +01:00
|
|
|
RECT tmpRect, visrect;
|
2004-02-13 21:26:27 +01:00
|
|
|
BOOL ret;
|
2007-09-17 16:46:29 +02:00
|
|
|
DC *dc = get_dc_ptr( hdc );
|
1994-10-17 19:12:41 +01:00
|
|
|
if (!dc) return FALSE;
|
2011-03-09 16:21:45 +01:00
|
|
|
TRACE("%p %s\n", hdc, wine_dbgstr_rect( rect ));
|
2002-11-22 00:45:47 +01:00
|
|
|
|
2004-02-13 21:26:27 +01:00
|
|
|
tmpRect = *rect;
|
2016-07-18 12:32:56 +02:00
|
|
|
lp_to_dp( dc, (POINT *)&tmpRect, 2 );
|
2012-12-14 16:56:28 +01:00
|
|
|
order_rect( &tmpRect );
|
2004-02-13 21:26:27 +01:00
|
|
|
|
2007-09-17 16:46:29 +02:00
|
|
|
update_dc( dc );
|
2012-04-30 21:17:00 +02:00
|
|
|
ret = (!get_dc_device_rect( dc, &visrect ) || intersect_rect( &visrect, &visrect, &tmpRect ));
|
2021-07-07 15:02:59 +02:00
|
|
|
if (ret && get_dc_region( dc )) ret = NtGdiRectInRegion( get_dc_region( dc ), &tmpRect );
|
2007-09-17 16:46:29 +02:00
|
|
|
release_dc_ptr( dc );
|
2000-08-19 23:38:55 +02:00
|
|
|
return ret;
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
Release 960516
Thu May 16 13:35:31 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [*/*.c]
Renamed RECT, POINT and SIZE structures to RECT16, POINT16 and
SIZE16. Implemented Win32 version of most functions that take
these types as parameters.
* [configure]
Patched autoconf to attempt to correctly detect -lnsl and
-lsocket. Please check this out.
* [controls/button.c]
Added support for Win32 BM_* messages.
* [controls/menu.c]
Avoid sending extra WM_MENUSELECT messages. This avoids crashes
with Excel.
* [memory.heap.c] [include/heap.h]
Added support for SEGPTRs in Win32 heaps. Added a few macros to
make using SEGPTRs easier. They are a bit slower than MAKE_SEGPTR,
but they work with Win32.
* [memory/atom.c]
Implemented Win32 atom functions.
* [memory/local.c]
Fixed LocalReAlloc() changes to avoid copying the whole block twice.
* [win32/memory.c]
Use /dev/zero instead of MAP_ANON for VirtualAlloc().
* [windows/class.c]
Properly implemented the Win32 class functions.
* [windows/winproc.c] (New file)
New file handling the message translation between Win16 and Win32.
Mon May 13 18:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/mdi.c] [windows/menu.c]
Improved WM_MDICREATE and WM_MDICASCADE handling.
* [windows/event.c] [objects/bitblt.c]
Handle GraphicsExpose event for BitBlt from screen to screen.
* [windows/event.c] [windows/win.c] [windows/nonclient.c]
Bunch of fixes for problems with -managed.
* [windows/win.c] [windows/winpos.c]
Changed conditions for WM_SIZE, WM_MOVE, and WM_GETMINMAXINFO
in CreateWindow.
* [windows/win.c] [windows/queue.c] [misc/user.c]
Do not send WM_PARENTNOTIFY when in AppExit and call WH_SHELL
on window creation/destruction.
* [objects/palette.c]
Crude RealizePalette(). At least something is visible in LviewPro.
Sun May 12 02:05:00 1996 Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>
* [if1632/gdi32.spec]
Added Rectangle (use win16 version).
* [if1632/kernel32.spec]
Added GetWindowsDirectoryA (use win16 GetWindowsDirectory).
* [if1632/user32.spec]
Added GetSubMenu, MoveWindow, SetScrollPos, SetScrollRange (use win16
versions).
Added SetWindowsHookExA (empty stub for now).
* [include/handle32.h]
Changed #include <malloc.h> to #include <stdlib.h> to prevent
hate message from FreeBSD compiler.
* [win32/newfns.c]
Added new function SetWindowsHookEx32A (empty stub for now).
* [win32/user32.c]
Removed redundant debugging printf statement.
Sun May 12 01:24:57 1996 Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>
* [memory/local.c]
Avoid creating adjacent free blocks.
Free the block in LocalReAlloc() before allocating a new one.
Fixed LocalReAlloc() for discarded blocks.
Fri May 10 23:05:12 1996 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [resources/sysres_Fi.rc]
ChooseFont and ChooseColor dialogs updated.
Fri May 10 17:19:33 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/drive.c,if1632/kernel.spec]
GetCurrentDirectory(),SetCurrentDirectory() implemented.
* [if1632/advapi32.spec] [if1632/kernel.spec] [if1632/shell.spec]
[include/windows.h] [include/winreg.h] [loader/main.c]
[misc/main.c] [misc/shell.c] [misc/registry.c]
Registry fixes:
- loads win95 registry databases,
- save only updated keys on default,
- now adhers to the new function naming standard,
- minor cleanups.
Tue May 7 22:36:13 1996 Albrecht Kleine <kleine@ak.sax.de>
* [combo.c]
Added WM_COMMAND-handling for interaction between EDIT and COMBOLBOX
and synchronized mine with Greg Kreider's works.
* [commdlg.c]
Bugfix in ChooseFont: font size handling.
1996-05-16 20:21:06 +02:00
|
|
|
/***********************************************************************
|
2021-08-30 13:56:21 +02:00
|
|
|
* NtGdiGetAppClipBox (win32u.@)
|
Release 960516
Thu May 16 13:35:31 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [*/*.c]
Renamed RECT, POINT and SIZE structures to RECT16, POINT16 and
SIZE16. Implemented Win32 version of most functions that take
these types as parameters.
* [configure]
Patched autoconf to attempt to correctly detect -lnsl and
-lsocket. Please check this out.
* [controls/button.c]
Added support for Win32 BM_* messages.
* [controls/menu.c]
Avoid sending extra WM_MENUSELECT messages. This avoids crashes
with Excel.
* [memory.heap.c] [include/heap.h]
Added support for SEGPTRs in Win32 heaps. Added a few macros to
make using SEGPTRs easier. They are a bit slower than MAKE_SEGPTR,
but they work with Win32.
* [memory/atom.c]
Implemented Win32 atom functions.
* [memory/local.c]
Fixed LocalReAlloc() changes to avoid copying the whole block twice.
* [win32/memory.c]
Use /dev/zero instead of MAP_ANON for VirtualAlloc().
* [windows/class.c]
Properly implemented the Win32 class functions.
* [windows/winproc.c] (New file)
New file handling the message translation between Win16 and Win32.
Mon May 13 18:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/mdi.c] [windows/menu.c]
Improved WM_MDICREATE and WM_MDICASCADE handling.
* [windows/event.c] [objects/bitblt.c]
Handle GraphicsExpose event for BitBlt from screen to screen.
* [windows/event.c] [windows/win.c] [windows/nonclient.c]
Bunch of fixes for problems with -managed.
* [windows/win.c] [windows/winpos.c]
Changed conditions for WM_SIZE, WM_MOVE, and WM_GETMINMAXINFO
in CreateWindow.
* [windows/win.c] [windows/queue.c] [misc/user.c]
Do not send WM_PARENTNOTIFY when in AppExit and call WH_SHELL
on window creation/destruction.
* [objects/palette.c]
Crude RealizePalette(). At least something is visible in LviewPro.
Sun May 12 02:05:00 1996 Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>
* [if1632/gdi32.spec]
Added Rectangle (use win16 version).
* [if1632/kernel32.spec]
Added GetWindowsDirectoryA (use win16 GetWindowsDirectory).
* [if1632/user32.spec]
Added GetSubMenu, MoveWindow, SetScrollPos, SetScrollRange (use win16
versions).
Added SetWindowsHookExA (empty stub for now).
* [include/handle32.h]
Changed #include <malloc.h> to #include <stdlib.h> to prevent
hate message from FreeBSD compiler.
* [win32/newfns.c]
Added new function SetWindowsHookEx32A (empty stub for now).
* [win32/user32.c]
Removed redundant debugging printf statement.
Sun May 12 01:24:57 1996 Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>
* [memory/local.c]
Avoid creating adjacent free blocks.
Free the block in LocalReAlloc() before allocating a new one.
Fixed LocalReAlloc() for discarded blocks.
Fri May 10 23:05:12 1996 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [resources/sysres_Fi.rc]
ChooseFont and ChooseColor dialogs updated.
Fri May 10 17:19:33 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/drive.c,if1632/kernel.spec]
GetCurrentDirectory(),SetCurrentDirectory() implemented.
* [if1632/advapi32.spec] [if1632/kernel.spec] [if1632/shell.spec]
[include/windows.h] [include/winreg.h] [loader/main.c]
[misc/main.c] [misc/shell.c] [misc/registry.c]
Registry fixes:
- loads win95 registry databases,
- save only updated keys on default,
- now adhers to the new function naming standard,
- minor cleanups.
Tue May 7 22:36:13 1996 Albrecht Kleine <kleine@ak.sax.de>
* [combo.c]
Added WM_COMMAND-handling for interaction between EDIT and COMBOLBOX
and synchronized mine with Greg Kreider's works.
* [commdlg.c]
Bugfix in ChooseFont: font size handling.
1996-05-16 20:21:06 +02:00
|
|
|
*/
|
2021-08-30 13:56:21 +02:00
|
|
|
INT WINAPI NtGdiGetAppClipBox( HDC hdc, RECT *rect )
|
Release 960516
Thu May 16 13:35:31 1996 Alexandre Julliard <julliard@lrc.epfl.ch>
* [*/*.c]
Renamed RECT, POINT and SIZE structures to RECT16, POINT16 and
SIZE16. Implemented Win32 version of most functions that take
these types as parameters.
* [configure]
Patched autoconf to attempt to correctly detect -lnsl and
-lsocket. Please check this out.
* [controls/button.c]
Added support for Win32 BM_* messages.
* [controls/menu.c]
Avoid sending extra WM_MENUSELECT messages. This avoids crashes
with Excel.
* [memory.heap.c] [include/heap.h]
Added support for SEGPTRs in Win32 heaps. Added a few macros to
make using SEGPTRs easier. They are a bit slower than MAKE_SEGPTR,
but they work with Win32.
* [memory/atom.c]
Implemented Win32 atom functions.
* [memory/local.c]
Fixed LocalReAlloc() changes to avoid copying the whole block twice.
* [win32/memory.c]
Use /dev/zero instead of MAP_ANON for VirtualAlloc().
* [windows/class.c]
Properly implemented the Win32 class functions.
* [windows/winproc.c] (New file)
New file handling the message translation between Win16 and Win32.
Mon May 13 18:00:00 1996 Alex Korobka <alex@phm30.pharm.sunysb.edu>
* [windows/mdi.c] [windows/menu.c]
Improved WM_MDICREATE and WM_MDICASCADE handling.
* [windows/event.c] [objects/bitblt.c]
Handle GraphicsExpose event for BitBlt from screen to screen.
* [windows/event.c] [windows/win.c] [windows/nonclient.c]
Bunch of fixes for problems with -managed.
* [windows/win.c] [windows/winpos.c]
Changed conditions for WM_SIZE, WM_MOVE, and WM_GETMINMAXINFO
in CreateWindow.
* [windows/win.c] [windows/queue.c] [misc/user.c]
Do not send WM_PARENTNOTIFY when in AppExit and call WH_SHELL
on window creation/destruction.
* [objects/palette.c]
Crude RealizePalette(). At least something is visible in LviewPro.
Sun May 12 02:05:00 1996 Thomas Sandford <t.d.g.sandford@prds-grn.demon.co.uk>
* [if1632/gdi32.spec]
Added Rectangle (use win16 version).
* [if1632/kernel32.spec]
Added GetWindowsDirectoryA (use win16 GetWindowsDirectory).
* [if1632/user32.spec]
Added GetSubMenu, MoveWindow, SetScrollPos, SetScrollRange (use win16
versions).
Added SetWindowsHookExA (empty stub for now).
* [include/handle32.h]
Changed #include <malloc.h> to #include <stdlib.h> to prevent
hate message from FreeBSD compiler.
* [win32/newfns.c]
Added new function SetWindowsHookEx32A (empty stub for now).
* [win32/user32.c]
Removed redundant debugging printf statement.
Sun May 12 01:24:57 1996 Huw D. M. Davies <h.davies1@physics.oxford.ac.uk>
* [memory/local.c]
Avoid creating adjacent free blocks.
Free the block in LocalReAlloc() before allocating a new one.
Fixed LocalReAlloc() for discarded blocks.
Fri May 10 23:05:12 1996 Jukka Iivonen <iivonen@cc.helsinki.fi>
* [resources/sysres_Fi.rc]
ChooseFont and ChooseColor dialogs updated.
Fri May 10 17:19:33 1996 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de>
* [files/drive.c,if1632/kernel.spec]
GetCurrentDirectory(),SetCurrentDirectory() implemented.
* [if1632/advapi32.spec] [if1632/kernel.spec] [if1632/shell.spec]
[include/windows.h] [include/winreg.h] [loader/main.c]
[misc/main.c] [misc/shell.c] [misc/registry.c]
Registry fixes:
- loads win95 registry databases,
- save only updated keys on default,
- now adhers to the new function naming standard,
- minor cleanups.
Tue May 7 22:36:13 1996 Albrecht Kleine <kleine@ak.sax.de>
* [combo.c]
Added WM_COMMAND-handling for interaction between EDIT and COMBOLBOX
and synchronized mine with Greg Kreider's works.
* [commdlg.c]
Bugfix in ChooseFont: font size handling.
1996-05-16 20:21:06 +02:00
|
|
|
{
|
2011-12-07 17:05:07 +01:00
|
|
|
RECT visrect;
|
1999-02-26 12:11:13 +01:00
|
|
|
INT ret;
|
2007-09-17 16:46:29 +02:00
|
|
|
DC *dc = get_dc_ptr( hdc );
|
2001-12-27 00:10:56 +01:00
|
|
|
if (!dc) return ERROR;
|
2007-09-17 16:46:29 +02:00
|
|
|
|
|
|
|
update_dc( dc );
|
2011-12-07 17:05:07 +01:00
|
|
|
if (get_dc_region( dc ))
|
|
|
|
{
|
2021-07-07 15:02:59 +02:00
|
|
|
ret = NtGdiGetRgnBox( get_dc_region( dc ), rect );
|
2011-12-07 17:05:07 +01:00
|
|
|
}
|
2012-04-09 15:13:31 +02:00
|
|
|
else
|
|
|
|
{
|
2021-08-02 10:03:33 +02:00
|
|
|
ret = is_rect_empty( &dc->attr->vis_rect ) ? ERROR : SIMPLEREGION;
|
|
|
|
*rect = dc->attr->vis_rect;
|
2012-04-09 15:13:31 +02:00
|
|
|
}
|
2011-12-07 17:05:07 +01:00
|
|
|
|
2012-09-05 19:29:29 +02:00
|
|
|
if (get_dc_device_rect( dc, &visrect ) && !intersect_rect( rect, rect, &visrect )) ret = NULLREGION;
|
|
|
|
|
2021-07-28 11:39:26 +02:00
|
|
|
if (dc->attr->layout & LAYOUT_RTL)
|
2010-09-08 13:21:18 +02:00
|
|
|
{
|
|
|
|
int tmp = rect->left;
|
|
|
|
rect->left = rect->right - 1;
|
|
|
|
rect->right = tmp - 1;
|
|
|
|
}
|
2016-07-29 16:09:32 +02:00
|
|
|
dp_to_lp( dc, (LPPOINT)rect, 2 );
|
2007-09-17 16:46:29 +02:00
|
|
|
release_dc_ptr( dc );
|
2010-09-14 09:41:44 +02:00
|
|
|
TRACE("%p => %d %s\n", hdc, ret, wine_dbgstr_rect( rect ));
|
1994-12-27 15:11:53 +01:00
|
|
|
return ret;
|
1993-09-04 12:09:32 +02:00
|
|
|
}
|
|
|
|
|
1996-12-22 19:27:48 +01:00
|
|
|
|
2003-05-19 21:03:19 +02:00
|
|
|
/***********************************************************************
|
2021-08-30 13:56:21 +02:00
|
|
|
* NtGdiGetRandomRgn (win32u.@)
|
2003-05-19 21:03:19 +02:00
|
|
|
*
|
|
|
|
* NOTES
|
|
|
|
* This function is documented in MSDN online for the case of
|
2004-08-20 21:26:28 +02:00
|
|
|
* iCode == SYSRGN (4).
|
2003-05-19 21:03:19 +02:00
|
|
|
*
|
2004-08-20 21:26:28 +02:00
|
|
|
* For iCode == 1 it should return the clip region
|
|
|
|
* 2 " " " the meta region
|
|
|
|
* 3 " " " the intersection of the clip with
|
|
|
|
* the meta region (== 'Rao' region).
|
2003-05-19 21:03:19 +02:00
|
|
|
*
|
|
|
|
* See http://www.codeproject.com/gdi/cliprgnguide.asp
|
|
|
|
*/
|
2021-08-30 13:56:21 +02:00
|
|
|
INT WINAPI NtGdiGetRandomRgn( HDC hDC, HRGN hRgn, INT iCode )
|
2003-05-19 21:03:19 +02:00
|
|
|
{
|
2011-12-07 16:50:57 +01:00
|
|
|
INT ret = 1;
|
2007-09-17 16:46:29 +02:00
|
|
|
DC *dc = get_dc_ptr( hDC );
|
2005-03-31 12:19:40 +02:00
|
|
|
|
|
|
|
if (!dc) return -1;
|
|
|
|
|
2021-09-02 14:14:00 +02:00
|
|
|
switch (iCode & ~NTGDI_RGN_MIRROR_RTL)
|
2003-05-19 21:03:19 +02:00
|
|
|
{
|
2005-03-31 12:19:40 +02:00
|
|
|
case 1:
|
2021-09-02 14:14:00 +02:00
|
|
|
if (!dc->hClipRgn) ret = 0;
|
|
|
|
else if (!NtGdiCombineRgn( hRgn, dc->hClipRgn, 0, RGN_COPY )) ret = -1;
|
2005-03-31 12:19:40 +02:00
|
|
|
break;
|
|
|
|
case 2:
|
2021-09-02 14:14:08 +02:00
|
|
|
if (!dc->hMetaRgn) ret = 0;
|
|
|
|
else if (!NtGdiCombineRgn( hRgn, dc->hMetaRgn, 0, RGN_COPY )) ret = -1;
|
2005-03-31 12:19:40 +02:00
|
|
|
break;
|
|
|
|
case 3:
|
2021-07-07 15:02:59 +02:00
|
|
|
if (dc->hClipRgn && dc->hMetaRgn) NtGdiCombineRgn( hRgn, dc->hClipRgn, dc->hMetaRgn, RGN_AND );
|
|
|
|
else if (dc->hClipRgn) NtGdiCombineRgn( hRgn, dc->hClipRgn, 0, RGN_COPY );
|
|
|
|
else if (dc->hMetaRgn) NtGdiCombineRgn( hRgn, dc->hMetaRgn, 0, RGN_COPY );
|
2011-12-07 16:50:57 +01:00
|
|
|
else ret = 0;
|
2005-03-31 12:19:40 +02:00
|
|
|
break;
|
2003-05-19 21:03:19 +02:00
|
|
|
case SYSRGN: /* == 4 */
|
2007-09-17 16:46:29 +02:00
|
|
|
update_dc( dc );
|
2011-12-07 16:50:57 +01:00
|
|
|
if (dc->hVisRgn)
|
2012-04-30 21:17:00 +02:00
|
|
|
{
|
2021-07-07 15:02:59 +02:00
|
|
|
NtGdiCombineRgn( hRgn, dc->hVisRgn, 0, RGN_COPY );
|
2012-04-30 21:17:00 +02:00
|
|
|
/* On Windows NT/2000, the SYSRGN returned is in screen coordinates */
|
2021-08-02 10:03:33 +02:00
|
|
|
if (!(GetVersion() & 0x80000000))
|
|
|
|
NtGdiOffsetRgn( hRgn, dc->attr->vis_rect.left, dc->attr->vis_rect.top );
|
2012-04-30 21:17:00 +02:00
|
|
|
}
|
|
|
|
else if (!is_rect_empty( &dc->device_rect ))
|
2021-07-07 15:02:59 +02:00
|
|
|
NtGdiSetRectRgn( hRgn, dc->device_rect.left, dc->device_rect.top,
|
|
|
|
dc->device_rect.right, dc->device_rect.bottom );
|
2011-12-07 16:50:57 +01:00
|
|
|
else
|
|
|
|
ret = 0;
|
2005-03-31 12:19:40 +02:00
|
|
|
break;
|
2003-05-19 21:03:19 +02:00
|
|
|
default:
|
2005-03-31 12:19:40 +02:00
|
|
|
WARN("Unknown code %d\n", iCode);
|
2011-12-07 16:50:57 +01:00
|
|
|
ret = -1;
|
|
|
|
break;
|
2003-05-19 21:03:19 +02:00
|
|
|
}
|
2021-09-02 14:14:00 +02:00
|
|
|
|
|
|
|
/* Wine extension */
|
|
|
|
if (ret > 0 && (iCode & NTGDI_RGN_MIRROR_RTL) && (dc->attr->layout & LAYOUT_RTL))
|
|
|
|
mirror_region( hRgn, hRgn, dc->attr->vis_rect.right - dc->attr->vis_rect.left );
|
|
|
|
|
2007-09-17 16:46:29 +02:00
|
|
|
release_dc_ptr( dc );
|
2011-12-07 16:50:57 +01:00
|
|
|
return ret;
|
2003-05-19 21:03:19 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/***********************************************************************
|
2021-08-04 11:22:19 +02:00
|
|
|
* NtGdiSetMetaRgn (win32u.@)
|
2003-05-19 21:03:19 +02:00
|
|
|
*/
|
2021-08-04 11:22:19 +02:00
|
|
|
INT WINAPI NtGdiSetMetaRgn( HDC hdc )
|
2003-05-19 21:03:19 +02:00
|
|
|
{
|
2005-03-31 12:19:40 +02:00
|
|
|
INT ret;
|
|
|
|
RECT dummy;
|
2007-09-24 18:19:14 +02:00
|
|
|
DC *dc = get_dc_ptr( hdc );
|
2003-05-19 21:03:19 +02:00
|
|
|
|
2005-03-31 12:19:40 +02:00
|
|
|
if (!dc) return ERROR;
|
2003-05-19 21:03:19 +02:00
|
|
|
|
2011-12-07 17:49:47 +01:00
|
|
|
if (dc->hClipRgn)
|
2005-03-31 12:19:40 +02:00
|
|
|
{
|
2011-12-07 17:49:47 +01:00
|
|
|
if (dc->hMetaRgn)
|
|
|
|
{
|
|
|
|
/* the intersection becomes the new meta region */
|
2021-07-07 15:02:59 +02:00
|
|
|
NtGdiCombineRgn( dc->hMetaRgn, dc->hMetaRgn, dc->hClipRgn, RGN_AND );
|
2021-09-03 14:59:52 +02:00
|
|
|
NtGdiDeleteObjectApp( dc->hClipRgn );
|
2011-12-07 17:49:47 +01:00
|
|
|
dc->hClipRgn = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
dc->hMetaRgn = dc->hClipRgn;
|
|
|
|
dc->hClipRgn = 0;
|
|
|
|
}
|
2005-03-31 12:19:40 +02:00
|
|
|
}
|
|
|
|
/* else nothing to do */
|
2003-05-19 21:03:19 +02:00
|
|
|
|
2011-12-07 17:09:11 +01:00
|
|
|
/* Note: no need to call update_dc_clipping, the overall clip region hasn't changed */
|
2003-05-19 21:03:19 +02:00
|
|
|
|
2021-07-07 15:02:59 +02:00
|
|
|
ret = NtGdiGetRgnBox( dc->hMetaRgn, &dummy );
|
2007-09-24 18:19:14 +02:00
|
|
|
release_dc_ptr( dc );
|
2005-03-31 12:19:40 +02:00
|
|
|
return ret;
|
2003-05-19 21:03:19 +02:00
|
|
|
}
|