winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
January 2013
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
736 discussions
Start a n
N
ew thread
Detlef Riekenberg : include: Add definitions for SHGetStockIconInfo.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: b81eb2ee8bb3a3c7dd3bb545d1fa020ee4ca4ffb URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b81eb2ee8bb3a3c7dd3bb545d…
Author: Detlef Riekenberg <wine.dev(a)web.de> Date: Fri Jan 11 00:49:22 2013 +0100 include: Add definitions for SHGetStockIconInfo. --- include/shellapi.h | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 127 insertions(+), 0 deletions(-) diff --git a/include/shellapi.h b/include/shellapi.h index 23457f2..d2b4081 100644 --- a/include/shellapi.h +++ b/include/shellapi.h @@ -495,6 +495,133 @@ HRESULT WINAPI SHQueryRecycleBinW(LPCWSTR,LPSHQUERYRBINFO); * Misc */ +typedef enum SHSTOCKICONID +{ + SIID_INVALID=-1, + SIID_DOCNOASSOC, + SIID_DOCASSOC, + SIID_APPLICATION, + SIID_FOLDER, + SIID_FOLDEROPEN, + SIID_DRIVE525, + SIID_DRIVE35, + SIID_DRIVERREMOVE, + SIID_DRIVERFIXED, + SIID_DRIVERNET, + SIID_DRIVERNETDISABLE, + SIID_DRIVERCD, + SIID_DRIVERRAM, + SIID_WORLD, + /* Missing: 14 */ + SIID_SERVER = 15, + SIID_PRINTER, + SIID_MYNETWORK, + /* Missing: 18 - 21 */ + SIID_FIND = 22, + SIID_HELP, + /* Missing: 24 - 27 */ + SIID_SHARE = 28, + SIID_LINK, + SIID_SLOWFILE, + SIID_RECYCLER, + SIID_RECYCLERFULL, + /* Missing: 33 - 39 */ + SIID_MEDIACDAUDIO = 40, + /* Missing: 41 - 46 */ + SIID_LOCK = 47, + /* Missing: 48 */ + SIID_AUTOLIST = 49, + SIID_PRINTERNET, + SIID_SERVERSHARE, + SIID_PRINTERFAX, + SIID_PRINTERFAXNET, + SIID_PRINTERFILE, + SIID_STACK, + SIID_MEDIASVCD, + SIID_STUFFEDFOLDER, + SIID_DRIVEUNKNOWN, + SIID_DRIVEDVD, + SIID_MEDIADVD, + SIID_MEDIADVDRAM, + SIID_MEDIADVDRW, + SIID_MEDIADVDR, + SIID_MEDIADVDROM, + SIID_MEDIACDAUDIOPLUS, + SIID_MEDIACDRW, + SIID_MEDIACDR, + SIID_MEDIACDBURN, + SIID_MEDIABLANKCD, + SIID_MEDIACDROM, + SIID_AUDIOFILES, + SIID_IMAGEFILES, + SIID_VIDEOFILES, + SIID_MIXEDFILES, + SIID_FOLDERBACK, + SIID_FOLDERFRONT, + SIID_SHIELD, + SIID_WARNING, + SIID_INFO, + SIID_ERROR, + SIID_KEY, + SIID_SOFTWARE, + SIID_RENAME, + SIID_DELETE, + SIID_MEDIAAUDIODVD, + SIID_MEDIAMOVIEDVD, + SIID_MEDIAENHANCEDCD, + SIID_MEDIAENHANCEDDVD, + SIID_MEDIAHDDVD, + SIID_MEDIABLUERAY, + SIID_MEDIAVCD, + SIID_MEDIADVDPLUSR, + SIID_MEDIADVDPLUSRW, + SIID_DESKTOPPC, + SIID_MOBILEPC, + SIID_USERS, + SIID_MEDIASMARTMEDIA, + SIID_MEDIACOMPACTFLASH, + SIID_DEVICECELLPHONE, + SIID_DEVICECAMERA, + SIID_DEVICEVIDEOCAMERA, + SIID_DEVICEAUDIOPLAYER, + SIID_NETWORKCONNECT, + SIID_INTERNET, + SIID_ZIPFILE, + SIID_SETTINGS, + /* Missing: 107 - 131 */ + SIID_DRIVEHDDVD = 132, + SIID_DRIVEBD, + SIID_MEDIAHDDVDROM, + SIID_MEDIAHDDVDR, + SIID_MEDIAHDDVDRAM, + SIID_MEDIABDROM, + SIID_MEDIABDR, + SIID_MEDIABDRE, + SIID_CLUSTEREDDRIVE, + /* Missing: 141 - 174 */ + SIID_MAX_ICONS = 175 +}SHSTOCKICONID; + +typedef struct _SHSTOCKICONINFO +{ + DWORD cbSize; + HICON hIcon; + INT iSysImageIndex; + INT iIcon; + WCHAR szPath[MAX_PATH]; +} SHSTOCKICONINFO; + +/* flags for SHGetStockIconInfo */ +#define SHGSI_ICONLOCATION 0 +#define SHGSI_ICON SHGFI_ICON +#define SHGSI_SYSICONINDEX SHGFI_SYSICONINDEX +#define SHGSI_LINKOVERLAY SHGFI_LINKOVERLAY +#define SHGSI_SELECTED SHGFI_SELECTED +#define SHGSI_LARGEICON SHGFI_LARGEICON +#define SHGSI_SMALLICON SHGFI_SMALLICON +#define SHGSI_SHELLICONSIZE SHGFI_SHELLICONSIZE + +HRESULT WINAPI SHGetStockIconInfo(SHSTOCKICONID, UINT, SHSTOCKICONINFO*); LPWSTR* WINAPI CommandLineToArgvW(LPCWSTR,int*); HICON WINAPI ExtractIconA(HINSTANCE,LPCSTR,UINT); HICON WINAPI ExtractIconW(HINSTANCE,LPCWSTR,UINT);
1
0
0
0
Ken Thomases : winemac: Implement the Mac "Window" menu.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: b3f71fdeb101945ce6d971016278e1d8248035c1 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b3f71fdeb101945ce6d971016…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Fri Jan 11 06:21:06 2013 -0600 winemac: Implement the Mac "Window" menu. --- dlls/winemac.drv/cocoa_app.m | 11 +++++++++++ dlls/winemac.drv/cocoa_window.m | 26 ++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 0 deletions(-) diff --git a/dlls/winemac.drv/cocoa_app.m b/dlls/winemac.drv/cocoa_app.m index 28d2ad2..d869a05 100644 --- a/dlls/winemac.drv/cocoa_app.m +++ b/dlls/winemac.drv/cocoa_app.m @@ -51,7 +51,18 @@ [item setSubmenu:submenu]; [mainMenu addItem:item]; + submenu = [[[NSMenu alloc] initWithTitle:@"Window"] autorelease]; + [submenu addItemWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@""]; + [submenu addItemWithTitle:@"Zoom" action:@selector(performZoom:) keyEquivalent:@""]; + [submenu addItem:[NSMenuItem separatorItem]]; + [submenu addItemWithTitle:@"Bring All to Front" action:@selector(arrangeInFront:) keyEquivalent:@""]; + item = [[[NSMenuItem alloc] init] autorelease]; + [item setTitle:@"Window"]; + [item setSubmenu:submenu]; + [mainMenu addItem:item]; + [self setMainMenu:mainMenu]; + [self setWindowsMenu:submenu]; } } diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index 9d359ff..49dd31b 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -172,9 +172,17 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) else behavior |= NSWindowCollectionBehaviorManaged; if (state->excluded_by_cycle) + { behavior |= NSWindowCollectionBehaviorIgnoresCycle; + if ([self isVisible]) + [NSApp removeWindowsItem:self]; + } else + { behavior |= NSWindowCollectionBehaviorParticipatesInCycle; + if ([self isVisible]) + [NSApp addWindowsItem:self title:[self title] filename:NO]; + } [self setCollectionBehavior:behavior]; } @@ -196,6 +204,9 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) [latentParentWindow addChildWindow:self ordered:NSWindowAbove]; self.latentParentWindow = nil; } + + if (![self isExcludedFromWindowsMenu]) + [NSApp addWindowsItem:self title:[self title] filename:NO]; } return on_screen; @@ -206,6 +217,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) self.latentParentWindow = [self parentWindow]; [latentParentWindow removeChildWindow:self]; [self orderOut:nil]; + [NSApp removeWindowsItem:self]; } - (BOOL) setFrameIfOnScreen:(NSRect)contentRect @@ -277,6 +289,18 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) return [self canBecomeKeyWindow]; } + - (BOOL) isExcludedFromWindowsMenu + { + return !([self collectionBehavior] & NSWindowCollectionBehaviorParticipatesInCycle); + } + + - (BOOL) validateMenuItem:(NSMenuItem *)menuItem + { + if ([menuItem action] == @selector(makeKeyAndOrderFront:)) + return [self isKeyWindow] || (!self.disabled && !self.noActivate); + return [super validateMenuItem:menuItem]; + } + /* * ---------- NSWindowDelegate methods ---------- @@ -372,6 +396,8 @@ void macdrv_set_cocoa_window_title(macdrv_window w, const unsigned short* title, titleString = @""; OnMainThreadAsync(^{ [window setTitle:titleString]; + if ([window isVisible] && ![window isExcludedFromWindowsMenu]) + [NSApp changeWindowsItem:window title:titleString filename:NO]; }); [pool release];
1
0
0
0
Ken Thomases : winemac:=?UTF-8?Q?=20Translate=20presence=20i?= n Windows task bar to participation in Exposé and window cycling.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: 15d4b2ab51a6b0c34334a95b98a36fd6e4fea2e0 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=15d4b2ab51a6b0c34334a95b9…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Fri Jan 11 06:20:40 2013 -0600 winemac: Translate presence in Windows task bar to participation in Exposé and window cycling. --- dlls/winemac.drv/cocoa_window.m | 12 ++++++++++++ dlls/winemac.drv/macdrv_cocoa.h | 2 ++ dlls/winemac.drv/window.c | 3 +++ 3 files changed, 17 insertions(+), 0 deletions(-) diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index e6ae103..9d359ff 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -156,6 +156,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) - (void) setMacDrvState:(const struct macdrv_window_state*)state { NSInteger level; + NSWindowCollectionBehavior behavior; self.disabled = state->disabled; self.noActivate = state->no_activate; @@ -164,6 +165,17 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) level = state->floating ? NSFloatingWindowLevel : NSNormalWindowLevel; if (level != [self level]) [self setLevel:level]; + + behavior = NSWindowCollectionBehaviorDefault; + if (state->excluded_by_expose) + behavior |= NSWindowCollectionBehaviorTransient; + else + behavior |= NSWindowCollectionBehaviorManaged; + if (state->excluded_by_cycle) + behavior |= NSWindowCollectionBehaviorIgnoresCycle; + else + behavior |= NSWindowCollectionBehaviorParticipatesInCycle; + [self setCollectionBehavior:behavior]; } /* Returns whether or not the window was ordered in, which depends on if diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h index 86a49ce..fc2b0ac 100644 --- a/dlls/winemac.drv/macdrv_cocoa.h +++ b/dlls/winemac.drv/macdrv_cocoa.h @@ -129,6 +129,8 @@ struct macdrv_window_state { unsigned int disabled:1; unsigned int no_activate:1; unsigned int floating:1; + unsigned int excluded_by_expose:1; + unsigned int excluded_by_cycle:1; }; extern macdrv_window macdrv_create_cocoa_window(const struct macdrv_window_features* wf, diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c index 21c9e59..4344da5 100644 --- a/dlls/winemac.drv/window.c +++ b/dlls/winemac.drv/window.c @@ -104,6 +104,9 @@ static void get_cocoa_window_state(struct macdrv_win_data *data, state->disabled = (style & WS_DISABLED) != 0; state->no_activate = !can_activate_window(data->hwnd); state->floating = (ex_style & WS_EX_TOPMOST) != 0; + state->excluded_by_expose = state->excluded_by_cycle = + !(ex_style & WS_EX_APPWINDOW) && + (GetWindow(data->hwnd, GW_OWNER) || (ex_style & (WS_EX_TOOLWINDOW | WS_EX_NOACTIVATE))); }
1
0
0
0
Ken Thomases : winemac: Implement support for owned windows.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: b6544d19ddd1e4d5af2cef69ec14bb414b179573 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=b6544d19ddd1e4d5af2cef69e…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Fri Jan 11 06:19:36 2013 -0600 winemac: Implement support for owned windows. --- dlls/winemac.drv/cocoa_window.h | 1 + dlls/winemac.drv/cocoa_window.m | 53 ++++++++++++++++++++++++++++++++++++-- dlls/winemac.drv/macdrv_cocoa.h | 1 + dlls/winemac.drv/window.c | 6 ++++ 4 files changed, 58 insertions(+), 3 deletions(-) diff --git a/dlls/winemac.drv/cocoa_window.h b/dlls/winemac.drv/cocoa_window.h index 41e0b90..8533e2a 100644 --- a/dlls/winemac.drv/cocoa_window.h +++ b/dlls/winemac.drv/cocoa_window.h @@ -27,6 +27,7 @@ BOOL disabled; BOOL noActivate; BOOL floating; + WineWindow* latentParentWindow; } @end diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index 16217c2..e6ae103 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -63,6 +63,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) @property (nonatomic) BOOL disabled; @property (nonatomic) BOOL noActivate; @property (nonatomic) BOOL floating; +@property (retain, nonatomic) NSWindow* latentParentWindow; + (void) flipRect:(NSRect*)rect; @@ -81,7 +82,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) @implementation WineWindow - @synthesize disabled, noActivate, floating; + @synthesize disabled, noActivate, floating, latentParentWindow; + (WineWindow*) createWindowWithFeatures:(const struct macdrv_window_features*)wf windowFrame:(NSRect)window_frame @@ -119,6 +120,12 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) return window; } + - (void) dealloc + { + [latentParentWindow release]; + [super dealloc]; + } + + (void) flipRect:(NSRect*)rect { rect->origin.y = NSMaxY([[[NSScreen screens] objectAtIndex:0] frame]) - NSMaxY(*rect); @@ -172,11 +179,23 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) [self orderWindow:NSWindowBelow relativeTo:[prev windowNumber]]; else [self orderWindow:NSWindowAbove relativeTo:[next windowNumber]]; + if (latentParentWindow) + { + [latentParentWindow addChildWindow:self ordered:NSWindowAbove]; + self.latentParentWindow = nil; + } } return on_screen; } + - (void) doOrderOut + { + self.latentParentWindow = [self parentWindow]; + [latentParentWindow removeChildWindow:self]; + [self orderOut:nil]; + } + - (BOOL) setFrameIfOnScreen:(NSRect)contentRect { NSArray* screens = [NSScreen screens]; @@ -193,7 +212,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) { on_screen = frame_intersects_screens(contentRect, screens); if (!on_screen) - [self orderOut:nil]; + [self doOrderOut]; } oldFrame = [self frame]; @@ -209,6 +228,19 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) return on_screen; } + - (void) setMacDrvParentWindow:(WineWindow*)parent + { + if ([self parentWindow] != parent) + { + [[self parentWindow] removeChildWindow:self]; + self.latentParentWindow = nil; + if ([self isVisible] && parent) + [parent addChildWindow:self ordered:NSWindowAbove]; + else + self.latentParentWindow = parent; + } + } + - (void) setDisabled:(BOOL)newValue { if (disabled != newValue) @@ -368,7 +400,7 @@ void macdrv_hide_cocoa_window(macdrv_window w) WineWindow* window = (WineWindow*)w; OnMainThread(^{ - [window orderOut:nil]; + [window doOrderOut]; }); } @@ -392,3 +424,18 @@ int macdrv_set_cocoa_window_frame(macdrv_window w, const CGRect* new_frame) return on_screen; } + +/*********************************************************************** + * macdrv_set_cocoa_parent_window + * + * Sets the parent window for a Cocoa window. If parent is NULL, clears + * the parent window. + */ +void macdrv_set_cocoa_parent_window(macdrv_window w, macdrv_window parent) +{ + WineWindow* window = (WineWindow*)w; + + OnMainThread(^{ + [window setMacDrvParentWindow:(WineWindow*)parent]; + }); +} diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h index fa2e083..86a49ce 100644 --- a/dlls/winemac.drv/macdrv_cocoa.h +++ b/dlls/winemac.drv/macdrv_cocoa.h @@ -144,5 +144,6 @@ extern int macdrv_order_cocoa_window(macdrv_window w, macdrv_window prev, macdrv_window next) DECLSPEC_HIDDEN; extern void macdrv_hide_cocoa_window(macdrv_window w) DECLSPEC_HIDDEN; extern int macdrv_set_cocoa_window_frame(macdrv_window w, const CGRect* new_frame) DECLSPEC_HIDDEN; +extern void macdrv_set_cocoa_parent_window(macdrv_window w, macdrv_window parent) DECLSPEC_HIDDEN; #endif /* __WINE_MACDRV_COCOA_H */ diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c index 232c60a..21c9e59 100644 --- a/dlls/winemac.drv/window.c +++ b/dlls/winemac.drv/window.c @@ -301,12 +301,18 @@ static macdrv_window macdrv_get_cocoa_window(HWND hwnd) static void set_cocoa_window_properties(struct macdrv_win_data *data) { DWORD style, ex_style; + HWND owner; + macdrv_window owner_win; struct macdrv_window_features wf; struct macdrv_window_state state; style = GetWindowLongW(data->hwnd, GWL_STYLE); ex_style = GetWindowLongW(data->hwnd, GWL_EXSTYLE); + owner = GetWindow(data->hwnd, GW_OWNER); + owner_win = macdrv_get_cocoa_window(owner); + macdrv_set_cocoa_parent_window(data->cocoa_window, owner_win); + get_cocoa_window_features(data, style, ex_style, &wf); macdrv_set_cocoa_window_features(data->cocoa_window, &wf);
1
0
0
0
Ken Thomases : winemac: Implement support for WS_EX_TOPMOST windows.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: 429732ce1a4db12cfd9149bbc1c630bd9509508b URL:
http://source.winehq.org/git/wine.git/?a=commit;h=429732ce1a4db12cfd9149bbc…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Fri Jan 11 06:18:55 2013 -0600 winemac: Implement support for WS_EX_TOPMOST windows. --- dlls/winemac.drv/cocoa_window.h | 1 + dlls/winemac.drv/cocoa_window.m | 10 +++++++++- dlls/winemac.drv/macdrv_cocoa.h | 1 + dlls/winemac.drv/window.c | 1 + 4 files changed, 12 insertions(+), 1 deletions(-) diff --git a/dlls/winemac.drv/cocoa_window.h b/dlls/winemac.drv/cocoa_window.h index 86211dd..41e0b90 100644 --- a/dlls/winemac.drv/cocoa_window.h +++ b/dlls/winemac.drv/cocoa_window.h @@ -26,6 +26,7 @@ NSUInteger normalStyleMask; BOOL disabled; BOOL noActivate; + BOOL floating; } @end diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index dde77b3..16217c2 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -62,6 +62,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) @property (nonatomic) BOOL disabled; @property (nonatomic) BOOL noActivate; +@property (nonatomic) BOOL floating; + (void) flipRect:(NSRect*)rect; @@ -80,7 +81,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) @implementation WineWindow - @synthesize disabled, noActivate; + @synthesize disabled, noActivate, floating; + (WineWindow*) createWindowWithFeatures:(const struct macdrv_window_features*)wf windowFrame:(NSRect)window_frame @@ -147,8 +148,15 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) - (void) setMacDrvState:(const struct macdrv_window_state*)state { + NSInteger level; + self.disabled = state->disabled; self.noActivate = state->no_activate; + + self.floating = state->floating; + level = state->floating ? NSFloatingWindowLevel : NSNormalWindowLevel; + if (level != [self level]) + [self setLevel:level]; } /* Returns whether or not the window was ordered in, which depends on if diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h index d91cd1a..fa2e083 100644 --- a/dlls/winemac.drv/macdrv_cocoa.h +++ b/dlls/winemac.drv/macdrv_cocoa.h @@ -128,6 +128,7 @@ struct macdrv_window_features { struct macdrv_window_state { unsigned int disabled:1; unsigned int no_activate:1; + unsigned int floating:1; }; extern macdrv_window macdrv_create_cocoa_window(const struct macdrv_window_features* wf, diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c index b813cdc..232c60a 100644 --- a/dlls/winemac.drv/window.c +++ b/dlls/winemac.drv/window.c @@ -103,6 +103,7 @@ static void get_cocoa_window_state(struct macdrv_win_data *data, memset(state, 0, sizeof(*state)); state->disabled = (style & WS_DISABLED) != 0; state->no_activate = !can_activate_window(data->hwnd); + state->floating = (ex_style & WS_EX_TOPMOST) != 0; }
1
0
0
0
Ken Thomases : winemac: Implement support for no-activate windows.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: 9d29ea42e135001a92179cd5cda2fcff3a306304 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=9d29ea42e135001a92179cd5c…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Fri Jan 11 06:18:36 2013 -0600 winemac: Implement support for no-activate windows. --- dlls/winemac.drv/cocoa_window.h | 1 + dlls/winemac.drv/cocoa_window.m | 7 +++++-- dlls/winemac.drv/macdrv_cocoa.h | 1 + dlls/winemac.drv/window.c | 21 +++++++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/dlls/winemac.drv/cocoa_window.h b/dlls/winemac.drv/cocoa_window.h index 1edcd9c..86211dd 100644 --- a/dlls/winemac.drv/cocoa_window.h +++ b/dlls/winemac.drv/cocoa_window.h @@ -25,6 +25,7 @@ { NSUInteger normalStyleMask; BOOL disabled; + BOOL noActivate; } @end diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index 848e49e..dde77b3 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -61,6 +61,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) @interface WineWindow () @property (nonatomic) BOOL disabled; +@property (nonatomic) BOOL noActivate; + (void) flipRect:(NSRect*)rect; @@ -79,7 +80,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) @implementation WineWindow - @synthesize disabled; + @synthesize disabled, noActivate; + (WineWindow*) createWindowWithFeatures:(const struct macdrv_window_features*)wf windowFrame:(NSRect)window_frame @@ -147,6 +148,7 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) - (void) setMacDrvState:(const struct macdrv_window_state*)state { self.disabled = state->disabled; + self.noActivate = state->no_activate; } /* Returns whether or not the window was ordered in, which depends on if @@ -214,7 +216,8 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) */ - (BOOL) canBecomeKeyWindow { - return !self.disabled; + if (self.disabled || self.noActivate) return NO; + return YES; } - (BOOL) canBecomeMainWindow diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h index e2a735b..d91cd1a 100644 --- a/dlls/winemac.drv/macdrv_cocoa.h +++ b/dlls/winemac.drv/macdrv_cocoa.h @@ -127,6 +127,7 @@ struct macdrv_window_features { struct macdrv_window_state { unsigned int disabled:1; + unsigned int no_activate:1; }; extern macdrv_window macdrv_create_cocoa_window(const struct macdrv_window_features* wf, diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c index 8520afa..b813cdc 100644 --- a/dlls/winemac.drv/window.c +++ b/dlls/winemac.drv/window.c @@ -73,6 +73,26 @@ static void get_cocoa_window_features(struct macdrv_win_data *data, } +/******************************************************************* + * can_activate_window + * + * Check if we can activate the specified window. + */ +static inline BOOL can_activate_window(HWND hwnd) +{ + LONG style = GetWindowLongW(hwnd, GWL_STYLE); + RECT rect; + + if (!(style & WS_VISIBLE)) return FALSE; + if ((style & (WS_POPUP|WS_CHILD)) == WS_CHILD) return FALSE; + if (style & WS_MINIMIZE) return FALSE; + if (GetWindowLongW(hwnd, GWL_EXSTYLE) & WS_EX_NOACTIVATE) return FALSE; + if (hwnd == GetDesktopWindow()) return FALSE; + if (GetWindowRect(hwnd, &rect) && IsRectEmpty(&rect)) return FALSE; + return !(style & WS_DISABLED); +} + + /*********************************************************************** * get_cocoa_window_state */ @@ -82,6 +102,7 @@ static void get_cocoa_window_state(struct macdrv_win_data *data, { memset(state, 0, sizeof(*state)); state->disabled = (style & WS_DISABLED) != 0; + state->no_activate = !can_activate_window(data->hwnd); }
1
0
0
0
Ken Thomases : winemac: Implement support for WS_DISABLED windows.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: 064186e7394ff3070ca13101b974847a67c9e4d1 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=064186e7394ff3070ca13101b…
Author: Ken Thomases <ken(a)codeweavers.com> Date: Fri Jan 11 06:18:05 2013 -0600 winemac: Implement support for WS_DISABLED windows. --- dlls/winemac.drv/cocoa_window.h | 5 +++ dlls/winemac.drv/cocoa_window.m | 56 +++++++++++++++++++++++++++++++++++++- dlls/winemac.drv/macdrv_cocoa.h | 6 ++++ dlls/winemac.drv/window.c | 16 +++++++++++ 4 files changed, 81 insertions(+), 2 deletions(-) diff --git a/dlls/winemac.drv/cocoa_window.h b/dlls/winemac.drv/cocoa_window.h index 3b9dc90..1edcd9c 100644 --- a/dlls/winemac.drv/cocoa_window.h +++ b/dlls/winemac.drv/cocoa_window.h @@ -22,4 +22,9 @@ @interface WineWindow : NSPanel <NSWindowDelegate> +{ + NSUInteger normalStyleMask; + BOOL disabled; +} + @end diff --git a/dlls/winemac.drv/cocoa_window.m b/dlls/winemac.drv/cocoa_window.m index 608f750..848e49e 100644 --- a/dlls/winemac.drv/cocoa_window.m +++ b/dlls/winemac.drv/cocoa_window.m @@ -60,6 +60,8 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) @interface WineWindow () +@property (nonatomic) BOOL disabled; + + (void) flipRect:(NSRect*)rect; @end @@ -77,6 +79,8 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) @implementation WineWindow + @synthesize disabled; + + (WineWindow*) createWindowWithFeatures:(const struct macdrv_window_features*)wf windowFrame:(NSRect)window_frame { @@ -90,6 +94,9 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) backing:NSBackingStoreBuffered defer:YES] autorelease]; + if (!window) return nil; + window->normalStyleMask = [window styleMask]; + /* Standardize windows to eliminate differences between titled and borderless windows and between NSWindow and NSPanel. */ [window setHidesOnDeactivate:NO]; @@ -115,12 +122,33 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) rect->origin.y = NSMaxY([[[NSScreen screens] objectAtIndex:0] frame]) - NSMaxY(*rect); } + - (void) adjustFeaturesForState + { + NSUInteger style = normalStyleMask; + + if (self.disabled) + style &= ~NSResizableWindowMask; + if (style != [self styleMask]) + [self setStyleMask:style]; + + if (style & NSClosableWindowMask) + [[self standardWindowButton:NSWindowCloseButton] setEnabled:!self.disabled]; + if (style & NSMiniaturizableWindowMask) + [[self standardWindowButton:NSWindowMiniaturizeButton] setEnabled:!self.disabled]; + } + - (void) setWindowFeatures:(const struct macdrv_window_features*)wf { - [self setStyleMask:style_mask_for_features(wf)]; + normalStyleMask = style_mask_for_features(wf); + [self adjustFeaturesForState]; [self setHasShadow:wf->shadow]; } + - (void) setMacDrvState:(const struct macdrv_window_state*)state + { + self.disabled = state->disabled; + } + /* Returns whether or not the window was ordered in, which depends on if its frame intersects any screen. */ - (BOOL) orderBelow:(WineWindow*)prev orAbove:(WineWindow*)next @@ -171,13 +199,22 @@ static BOOL frame_intersects_screens(NSRect frame, NSArray* screens) return on_screen; } + - (void) setDisabled:(BOOL)newValue + { + if (disabled != newValue) + { + disabled = newValue; + [self adjustFeaturesForState]; + } + } + /* * ---------- NSWindow method overrides ---------- */ - (BOOL) canBecomeKeyWindow { - return YES; + return !self.disabled; } - (BOOL) canBecomeMainWindow @@ -248,6 +285,21 @@ void macdrv_set_cocoa_window_features(macdrv_window w, } /*********************************************************************** + * macdrv_set_cocoa_window_state + * + * Update a Cocoa window's state. + */ +void macdrv_set_cocoa_window_state(macdrv_window w, + const struct macdrv_window_state* state) +{ + WineWindow* window = (WineWindow*)w; + + OnMainThread(^{ + [window setMacDrvState:state]; + }); +} + +/*********************************************************************** * macdrv_set_cocoa_window_title * * Set a Cocoa window's title. diff --git a/dlls/winemac.drv/macdrv_cocoa.h b/dlls/winemac.drv/macdrv_cocoa.h index 4cebcef..e2a735b 100644 --- a/dlls/winemac.drv/macdrv_cocoa.h +++ b/dlls/winemac.drv/macdrv_cocoa.h @@ -125,11 +125,17 @@ struct macdrv_window_features { unsigned int shadow:1; }; +struct macdrv_window_state { + unsigned int disabled:1; +}; + extern macdrv_window macdrv_create_cocoa_window(const struct macdrv_window_features* wf, CGRect frame) DECLSPEC_HIDDEN; extern void macdrv_destroy_cocoa_window(macdrv_window w) DECLSPEC_HIDDEN; extern void macdrv_set_cocoa_window_features(macdrv_window w, const struct macdrv_window_features* wf) DECLSPEC_HIDDEN; +extern void macdrv_set_cocoa_window_state(macdrv_window w, + const struct macdrv_window_state* state) DECLSPEC_HIDDEN; extern void macdrv_set_cocoa_window_title(macdrv_window w, const UniChar* title, size_t length) DECLSPEC_HIDDEN; extern int macdrv_order_cocoa_window(macdrv_window w, macdrv_window prev, diff --git a/dlls/winemac.drv/window.c b/dlls/winemac.drv/window.c index 696941c..8520afa 100644 --- a/dlls/winemac.drv/window.c +++ b/dlls/winemac.drv/window.c @@ -74,6 +74,18 @@ static void get_cocoa_window_features(struct macdrv_win_data *data, /*********************************************************************** + * get_cocoa_window_state + */ +static void get_cocoa_window_state(struct macdrv_win_data *data, + DWORD style, DWORD ex_style, + struct macdrv_window_state* state) +{ + memset(state, 0, sizeof(*state)); + state->disabled = (style & WS_DISABLED) != 0; +} + + +/*********************************************************************** * get_mac_rect_offset * * Helper for macdrv_window_to_mac_rect and macdrv_mac_to_window_rect. @@ -268,12 +280,16 @@ static void set_cocoa_window_properties(struct macdrv_win_data *data) { DWORD style, ex_style; struct macdrv_window_features wf; + struct macdrv_window_state state; style = GetWindowLongW(data->hwnd, GWL_STYLE); ex_style = GetWindowLongW(data->hwnd, GWL_EXSTYLE); get_cocoa_window_features(data, style, ex_style, &wf); macdrv_set_cocoa_window_features(data->cocoa_window, &wf); + + get_cocoa_window_state(data, style, ex_style, &state); + macdrv_set_cocoa_window_state(data->cocoa_window, &state); }
1
0
0
0
Huw Davies : usp10: Fix the offset calculations for rtl display.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: bd08cecbb6e3e8c9fb900881120691ecae7082fd URL:
http://source.winehq.org/git/wine.git/?a=commit;h=bd08cecbb6e3e8c9fb9008811…
Author: Huw Davies <huw(a)codeweavers.com> Date: Fri Jan 11 11:09:21 2013 +0000 usp10: Fix the offset calculations for rtl display. --- dlls/usp10/usp10.c | 18 ++++++++++-------- 1 files changed, 10 insertions(+), 8 deletions(-) diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index 850c486..b25e956 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -3237,7 +3237,7 @@ HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UIN const int *piJustify, const GOFFSET *pGoffset) { HRESULT hr = S_OK; - INT i; + INT i, dir = 1; INT *lpDx; WORD *reordered_glyphs = (WORD *)pwGlyphs; @@ -3268,27 +3268,29 @@ HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UIN for (i = 0; i < cGlyphs; i++) reordered_glyphs[i] = pwGlyphs[cGlyphs - 1 - i]; + dir = -1; } for (i = 0; i < cGlyphs; i++) { - lpDx[i * 2] = piAdvance[i]; + int orig_index = (dir > 0) ? i : cGlyphs - 1 - i; + lpDx[i * 2] = piAdvance[orig_index]; lpDx[i * 2 + 1] = 0; if (pGoffset) { if (i == 0) { - x += pGoffset[i].du; - y += pGoffset[i].dv; + x += pGoffset[orig_index].du * dir; + y += pGoffset[orig_index].dv * dir; } else { - lpDx[(i - 1) * 2] += pGoffset[i].du; - lpDx[(i - 1) * 2 + 1] += pGoffset[i].dv; + lpDx[(i - 1) * 2] += pGoffset[orig_index].du * dir; + lpDx[(i - 1) * 2 + 1] += pGoffset[orig_index].dv * dir; } - lpDx[i * 2] -= pGoffset[i].du; - lpDx[i * 2 + 1] -= pGoffset[i].dv; + lpDx[i * 2] -= pGoffset[orig_index].du * dir; + lpDx[i * 2 + 1] -= pGoffset[orig_index].dv * dir; } }
1
0
0
0
Huw Davies : usp10: Handle an offset of the first glyph.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: f5ab208ce81a177e50607064c0b2acf0432fae32 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f5ab208ce81a177e50607064c…
Author: Huw Davies <huw(a)codeweavers.com> Date: Fri Jan 11 11:09:20 2013 +0000 usp10: Handle an offset of the first glyph. --- dlls/usp10/usp10.c | 18 +++++++++++++----- 1 files changed, 13 insertions(+), 5 deletions(-) diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index b77c251..850c486 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -3275,12 +3275,20 @@ HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UIN lpDx[i * 2] = piAdvance[i]; lpDx[i * 2 + 1] = 0; - if (pGoffset && i > 0) + if (pGoffset) { - lpDx[(i - 1) * 2] += pGoffset[i].du; - lpDx[(i - 1) * 2 + 1] += pGoffset[i].dv; - lpDx[i * 2] -= pGoffset[i].du; - lpDx[i * 2 + 1] -= pGoffset[i].dv; + if (i == 0) + { + x += pGoffset[i].du; + y += pGoffset[i].dv; + } + else + { + lpDx[(i - 1) * 2] += pGoffset[i].du; + lpDx[(i - 1) * 2 + 1] += pGoffset[i].dv; + } + lpDx[i * 2] -= pGoffset[i].du; + lpDx[i * 2 + 1] -= pGoffset[i].dv; } }
1
0
0
0
Huw Davies : usp10: Simplify the reordering of glyphs.
by Alexandre Julliard
11 Jan '13
11 Jan '13
Module: wine Branch: master Commit: 83cbc07141daba31ab93141e7f14c61798b9a5a9 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=83cbc07141daba31ab93141e7…
Author: Huw Davies <huw(a)codeweavers.com> Date: Fri Jan 11 11:09:19 2013 +0000 usp10: Simplify the reordering of glyphs. --- dlls/usp10/usp10.c | 40 ++++++++++++++++++---------------------- 1 files changed, 18 insertions(+), 22 deletions(-) diff --git a/dlls/usp10/usp10.c b/dlls/usp10/usp10.c index 75fe597..b77c251 100644 --- a/dlls/usp10/usp10.c +++ b/dlls/usp10/usp10.c @@ -3239,6 +3239,7 @@ HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UIN HRESULT hr = S_OK; INT i; INT *lpDx; + WORD *reordered_glyphs = (WORD *)pwGlyphs; TRACE("(%p, %p, %d, %d, %04x, %p, %p, %p, %d, %p, %d, %p, %p, %p)\n", hdc, psc, x, y, fuOptions, lprc, psa, pwcReserved, iReserved, pwGlyphs, cGlyphs, @@ -3253,8 +3254,22 @@ HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UIN fuOptions |= ETO_GLYPH_INDEX; /* Say don't do translation to glyph */ lpDx = heap_alloc(cGlyphs * sizeof(INT) * 2); + if (!lpDx) return E_OUTOFMEMORY; fuOptions |= ETO_PDY; + if (psa->fRTL && psa->fLogicalOrder) + { + reordered_glyphs = heap_alloc( cGlyphs * sizeof(WORD) ); + if (!reordered_glyphs) + { + heap_free( lpDx ); + return E_OUTOFMEMORY; + } + + for (i = 0; i < cGlyphs; i++) + reordered_glyphs[i] = pwGlyphs[cGlyphs - 1 - i]; + } + for (i = 0; i < cGlyphs; i++) { lpDx[i * 2] = piAdvance[i]; @@ -3269,29 +3284,10 @@ HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UIN } } - if (psa->fRTL && psa->fLogicalOrder) - { - int i; - WORD *rtlGlyphs; - - rtlGlyphs = heap_alloc(cGlyphs * sizeof(WORD)); - if (!rtlGlyphs) - { - heap_free(lpDx); - return E_OUTOFMEMORY; - } - - for (i = 0; i < cGlyphs; i++) - rtlGlyphs[i] = pwGlyphs[cGlyphs-1-i]; - - if (!ExtTextOutW(hdc, x, y, fuOptions, lprc, rtlGlyphs, cGlyphs, lpDx)) - hr = S_FALSE; - heap_free(rtlGlyphs); - } - else - if (!ExtTextOutW(hdc, x, y, fuOptions, lprc, pwGlyphs, cGlyphs, lpDx)) - hr = S_FALSE; + if (!ExtTextOutW(hdc, x, y, fuOptions, lprc, reordered_glyphs, cGlyphs, lpDx)) + hr = S_FALSE; + if (reordered_glyphs != pwGlyphs) heap_free( reordered_glyphs ); heap_free(lpDx); return hr;
1
0
0
0
← Newer
1
...
45
46
47
48
49
50
51
...
74
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Results per page:
10
25
50
100
200