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
November 2010
----- 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
866 discussions
Start a n
N
ew thread
Alexandre Julliard : winex11: Re-dock icons when the system tray owner has changed.
by Alexandre Julliard
02 Nov '10
02 Nov '10
Module: wine Branch: master Commit: 5a4580730dfcb336738a2a29bf858c508a112728 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5a4580730dfcb336738a2a29b…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 1 19:57:12 2010 +0100 winex11: Re-dock icons when the system tray owner has changed. --- dlls/winex11.drv/event.c | 12 ++++++++++++ dlls/winex11.drv/systray.c | 15 ++++++++++++++- dlls/winex11.drv/x11drv.h | 3 +++ dlls/winex11.drv/x11drv_main.c | 1 + 4 files changed, 30 insertions(+), 1 deletions(-) diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 89d3a93..662b068 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -513,6 +513,17 @@ static void set_focus( Display *display, HWND hwnd, Time time ) /********************************************************************** + * handle_manager_message + */ +static void handle_manager_message( HWND hwnd, XClientMessageEvent *event ) +{ + if (hwnd != GetDesktopWindow()) return; + if (systray_atom && event->data.l[1] == systray_atom) + change_systray_owner( event->display, event->data.l[2] ); +} + + +/********************************************************************** * handle_wm_protocols */ static void handle_wm_protocols( HWND hwnd, XClientMessageEvent *event ) @@ -1428,6 +1439,7 @@ struct client_message_handler static const struct client_message_handler client_messages[] = { + { XATOM_MANAGER, handle_manager_message }, { XATOM_WM_PROTOCOLS, handle_wm_protocols }, { XATOM__XEMBED, handle_xembed_protocol }, { XATOM_DndProtocol, handle_dnd_protocol }, diff --git a/dlls/winex11.drv/systray.c b/dlls/winex11.drv/systray.c index 9d15396..fbbe8c2 100644 --- a/dlls/winex11.drv/systray.c +++ b/dlls/winex11.drv/systray.c @@ -73,7 +73,7 @@ static BOOL delete_icon( struct tray_icon *icon ); #define SYSTEM_TRAY_BEGIN_MESSAGE 1 #define SYSTEM_TRAY_CANCEL_MESSAGE 2 -static Atom systray_atom; +Atom systray_atom = 0; #define MIN_DISPLAYED 8 #define ICON_BORDER 2 @@ -427,6 +427,19 @@ static void dock_systray_icon( Display *display, struct tray_icon *icon, Window wine_tsx11_unlock(); } +/* dock systray windows again with the new owner */ +void change_systray_owner( Display *display, Window systray_window ) +{ + struct tray_icon *icon; + + ERR( "new owner %lx\n", systray_window ); + LIST_FOR_EACH_ENTRY( icon, &icon_list, struct tray_icon, entry ) + { + if (icon->display == -1) continue; + hide_icon( icon ); + dock_systray_icon( display, icon, systray_window ); + } +} /* hide a tray icon */ static BOOL hide_icon( struct tray_icon *icon ) diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 4308823..d6fdbf0 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -619,6 +619,7 @@ enum x11drv_atoms XATOM_CLIPBOARD = FIRST_XATOM, XATOM_COMPOUND_TEXT, XATOM_INCR, + XATOM_MANAGER, XATOM_MULTIPLE, XATOM_SELECTION_DATA, XATOM_TARGETS, @@ -691,6 +692,7 @@ enum x11drv_atoms }; extern Atom X11DRV_Atoms[NB_XATOMS - FIRST_XATOM]; +extern Atom systray_atom; #define x11drv_atom(name) (X11DRV_Atoms[XATOM_##name - FIRST_XATOM]) @@ -780,6 +782,7 @@ extern void wait_for_withdrawn_state( Display *display, struct x11drv_win_data * extern void update_user_time( Time time ); extern void update_net_wm_states( Display *display, struct x11drv_win_data *data ); extern void make_window_embedded( Display *display, struct x11drv_win_data *data ); +extern void change_systray_owner( Display *display, Window systray_window ); static inline void mirror_rect( const RECT *window_rect, RECT *rect ) { diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c index fe4a88c..0d1a7da 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -119,6 +119,7 @@ static const char * const atom_names[NB_XATOMS - FIRST_XATOM] = "CLIPBOARD", "COMPOUND_TEXT", "INCR", + "MANAGER", "MULTIPLE", "SELECTION_DATA", "TARGETS",
1
0
0
0
Alexandre Julliard : winex11: Improve management of the lifetime of embedded windows.
by Alexandre Julliard
02 Nov '10
02 Nov '10
Module: wine Branch: master Commit: 68f497bdccf395383dd0f8c56f7e75c95ba5c62a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=68f497bdccf395383dd0f8c56…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 1 19:45:12 2010 +0100 winex11: Improve management of the lifetime of embedded windows. --- dlls/winex11.drv/event.c | 68 ++++++++++++++++++++++++++++++++++++++- dlls/winex11.drv/systray.c | 9 +++++ dlls/winex11.drv/window.c | 3 +- dlls/winex11.drv/x11drv.h | 2 + dlls/winex11.drv/x11drv_main.c | 1 + 5 files changed, 80 insertions(+), 3 deletions(-) diff --git a/dlls/winex11.drv/event.c b/dlls/winex11.drv/event.c index 9fbb002..89d3a93 100644 --- a/dlls/winex11.drv/event.c +++ b/dlls/winex11.drv/event.c @@ -72,11 +72,26 @@ extern BOOL ximInComposeMode; #define DndURL 128 /* KDE drag&drop */ +#define XEMBED_EMBEDDED_NOTIFY 0 +#define XEMBED_WINDOW_ACTIVATE 1 +#define XEMBED_WINDOW_DEACTIVATE 2 +#define XEMBED_REQUEST_FOCUS 3 +#define XEMBED_FOCUS_IN 4 +#define XEMBED_FOCUS_OUT 5 +#define XEMBED_FOCUS_NEXT 6 +#define XEMBED_FOCUS_PREV 7 +#define XEMBED_MODALITY_ON 10 +#define XEMBED_MODALITY_OFF 11 +#define XEMBED_REGISTER_ACCELERATOR 12 +#define XEMBED_UNREGISTER_ACCELERATOR 13 +#define XEMBED_ACTIVATE_ACCELERATOR 14 + /* Event handlers */ static void X11DRV_FocusIn( HWND hwnd, XEvent *event ); static void X11DRV_FocusOut( HWND hwnd, XEvent *event ); static void X11DRV_Expose( HWND hwnd, XEvent *event ); static void X11DRV_MapNotify( HWND hwnd, XEvent *event ); +static void X11DRV_ReparentNotify( HWND hwnd, XEvent *event ); static void X11DRV_ConfigureNotify( HWND hwnd, XEvent *event ); static void X11DRV_PropertyNotify( HWND hwnd, XEvent *event ); static void X11DRV_ClientMessage( HWND hwnd, XEvent *event ); @@ -111,7 +126,7 @@ static struct event_handler handlers[MAX_EVENT_HANDLERS] = /* UnmapNotify */ { MapNotify, X11DRV_MapNotify }, /* MapRequest */ - /* ReparentNotify */ + { ReparentNotify, X11DRV_ReparentNotify }, { ConfigureNotify, X11DRV_ConfigureNotify }, /* ConfigureRequest */ /* GravityNotify */ @@ -127,7 +142,7 @@ static struct event_handler handlers[MAX_EVENT_HANDLERS] = { MappingNotify, X11DRV_MappingNotify }, }; -static int nb_event_handlers = 18; /* change this if you add handlers above */ +static int nb_event_handlers = 19; /* change this if you add handlers above */ /* return the name of an X event */ @@ -814,6 +829,30 @@ static BOOL is_net_wm_state_maximized( Display *display, struct x11drv_win_data /*********************************************************************** + * X11DRV_ReparentNotify + */ +static void X11DRV_ReparentNotify( HWND hwnd, XEvent *xev ) +{ + XReparentEvent *event = &xev->xreparent; + struct x11drv_win_data *data; + + if (!(data = X11DRV_get_win_data( hwnd ))) return; + if (!data->embedded) return; + if (event->parent == root_window) + { + TRACE( "%p/%lx reparented to root\n", hwnd, data->whole_window ); + data->embedder = 0; + SendMessageW( hwnd, WM_CLOSE, 0, 0 ); + } + else + { + TRACE( "%p/%lx reparented to %lx\n", hwnd, data->whole_window, event->parent ); + data->embedder = event->parent; + } +} + + +/*********************************************************************** * X11DRV_ConfigureNotify */ void X11DRV_ConfigureNotify( HWND hwnd, XEvent *xev ) @@ -1334,6 +1373,30 @@ static void EVENT_DropURLs( HWND hWnd, XClientMessageEvent *event ) } } + +/********************************************************************** + * handle_xembed_protocol + */ +static void handle_xembed_protocol( HWND hwnd, XClientMessageEvent *event ) +{ + struct x11drv_win_data *data = X11DRV_get_win_data( hwnd ); + + if (!data) return; + + switch (event->data.l[1]) + { + case XEMBED_EMBEDDED_NOTIFY: + TRACE( "win %p/%lx XEMBED_EMBEDDED_NOTIFY owner %lx\n", hwnd, event->window, event->data.l[3] ); + data->embedder = event->data.l[3]; + break; + default: + TRACE( "win %p/%lx XEMBED message %lu(%lu)\n", + hwnd, event->window, event->data.l[1], event->data.l[2] ); + break; + } +} + + /********************************************************************** * handle_dnd_protocol */ @@ -1366,6 +1429,7 @@ struct client_message_handler static const struct client_message_handler client_messages[] = { { XATOM_WM_PROTOCOLS, handle_wm_protocols }, + { XATOM__XEMBED, handle_xembed_protocol }, { XATOM_DndProtocol, handle_dnd_protocol }, { XATOM_XdndEnter, X11DRV_XDND_EnterEvent }, { XATOM_XdndPosition, X11DRV_XDND_PositionEvent }, diff --git a/dlls/winex11.drv/systray.c b/dlls/winex11.drv/systray.c index e500a33..9d15396 100644 --- a/dlls/winex11.drv/systray.c +++ b/dlls/winex11.drv/systray.c @@ -309,6 +309,15 @@ static LRESULT WINAPI tray_icon_wndproc(HWND hwnd, UINT msg, WPARAM wparam, LPAR case WM_TIMER: if (!IsWindow( icon->owner )) delete_icon( icon ); return 0; + + case WM_CLOSE: + if (icon->display == -1) + { + TRACE( "icon %u no longer embedded\n", icon->id ); + hide_icon( icon ); + add_to_standalone_tray( icon ); + } + return 0; } return DefWindowProcW( hwnd, msg, wparam, lparam ); } diff --git a/dlls/winex11.drv/window.c b/dlls/winex11.drv/window.c index dade30e..acf0b4d 100644 --- a/dlls/winex11.drv/window.c +++ b/dlls/winex11.drv/window.c @@ -1890,8 +1890,9 @@ void X11DRV_DestroyNotify( HWND hwnd, XEvent *event ) if (!(data = X11DRV_get_win_data( hwnd ))) return; - FIXME( "window %p/%lx destroyed from the outside\n", hwnd, data->whole_window ); + if (!data->embedded) FIXME( "window %p/%lx destroyed from the outside\n", hwnd, data->whole_window ); destroy_whole_window( display, data, TRUE ); + if (data->embedded) SendMessageW( hwnd, WM_CLOSE, 0, 0 ); } diff --git a/dlls/winex11.drv/x11drv.h b/dlls/winex11.drv/x11drv.h index 722ca85..4308823 100644 --- a/dlls/winex11.drv/x11drv.h +++ b/dlls/winex11.drv/x11drv.h @@ -660,6 +660,7 @@ enum x11drv_atoms XATOM__NET_WM_WINDOW_TYPE_NORMAL, XATOM__NET_WM_WINDOW_TYPE_UTILITY, XATOM__NET_WORKAREA, + XATOM__XEMBED, XATOM__XEMBED_INFO, XATOM_XdndAware, XATOM_XdndEnter, @@ -758,6 +759,7 @@ struct x11drv_win_data BOOL shaped : 1; /* is window using a custom region shape? */ int wm_state; /* current value of the WM_STATE property */ DWORD net_wm_state; /* bit mask of active x11drv_net_wm_state values */ + Window embedder; /* window id of embedder */ unsigned long configure_serial; /* serial number of last configure request */ HBITMAP hWMIconBitmap; HBITMAP hWMIconMask; diff --git a/dlls/winex11.drv/x11drv_main.c b/dlls/winex11.drv/x11drv_main.c index 8477082..fe4a88c 100644 --- a/dlls/winex11.drv/x11drv_main.c +++ b/dlls/winex11.drv/x11drv_main.c @@ -160,6 +160,7 @@ static const char * const atom_names[NB_XATOMS - FIRST_XATOM] = "_NET_WM_WINDOW_TYPE_NORMAL", "_NET_WM_WINDOW_TYPE_UTILITY", "_NET_WORKAREA", + "_XEMBED", "_XEMBED_INFO", "XdndAware", "XdndEnter",
1
0
0
0
Alexandre Julliard : explorer: Make the systray window look more like a real taskbar in desktop mode.
by Alexandre Julliard
02 Nov '10
02 Nov '10
Module: wine Branch: master Commit: 8c963852f8dc201ca9a5cef724f5319ffe1b25c5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=8c963852f8dc201ca9a5cef72…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 1 19:38:28 2010 +0100 explorer: Make the systray window look more like a real taskbar in desktop mode. --- dlls/user32/tests/win.c | 1 - programs/explorer/desktop.c | 2 +- programs/explorer/explorer_private.h | 2 +- programs/explorer/systray.c | 112 +++++++++------------------------- 4 files changed, 32 insertions(+), 85 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=8c963852f8dc201ca9a5c…
1
0
0
0
Alexandre Julliard : winex11: Manage the system tray stand-alone window in x11drv for non-desktop mode.
by Alexandre Julliard
02 Nov '10
02 Nov '10
Module: wine Branch: master Commit: 757845c7c6a652a3bd3c292456831c4ddb09f1ef URL:
http://source.winehq.org/git/wine.git/?a=commit;h=757845c7c6a652a3bd3c29245…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 1 19:19:58 2010 +0100 winex11: Manage the system tray stand-alone window in x11drv for non-desktop mode. --- dlls/winex11.drv/systray.c | 264 ++++++++++++++++++++++++++++++---------- dlls/winex11.drv/x11drv.h | 1 + dlls/winex11.drv/x11drv_main.c | 4 + 3 files changed, 202 insertions(+), 67 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=757845c7c6a652a3bd3c2…
1
0
0
0
Alexandre Julliard : wineps: Remove unnecessary use of wownt32.h.
by Alexandre Julliard
01 Nov '10
01 Nov '10
Module: wine Branch: master Commit: 645a65f46d45f24e9cc150d2fdfdd9564e7d73b9 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=645a65f46d45f24e9cc150d2f…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 1 16:44:39 2010 +0100 wineps: Remove unnecessary use of wownt32.h. --- dlls/wineps.drv/driver.c | 3 +-- 1 files changed, 1 insertions(+), 2 deletions(-) diff --git a/dlls/wineps.drv/driver.c b/dlls/wineps.drv/driver.c index b5d1e90..7b30f3f 100644 --- a/dlls/wineps.drv/driver.c +++ b/dlls/wineps.drv/driver.c @@ -34,7 +34,6 @@ #include "winuser.h" #include "wine/wingdi16.h" -#include "wownt32.h" #include "prsht.h" #include "psdlg.h" @@ -375,7 +374,7 @@ INT CDECL PSDRV_ExtDeviceMode(LPSTR lpszDriver, HWND hwnd, LPDEVMODEA lpdmOutput psh.dwSize = sizeof(psh); psh.pszCaption = SetupW; psh.nPages = 1; - psh.hwndParent = HWND_32(hwnd); + psh.hwndParent = hwnd; psh.u3.phpage = hpsp; pPropertySheet(&psh);
1
0
0
0
Alexandre Julliard : gdi32: Remove unnecessary uses of wownt32.h.
by Alexandre Julliard
01 Nov '10
01 Nov '10
Module: wine Branch: master Commit: f91481135954e0940e7e1cfaa127d18b45c61588 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=f91481135954e0940e7e1cfaa…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 1 16:44:34 2010 +0100 gdi32: Remove unnecessary uses of wownt32.h. --- dlls/gdi32/dc.c | 1 - dlls/gdi32/dib.c | 1 - dlls/gdi32/font.c | 1 - dlls/gdi32/mapping.c | 1 - dlls/gdi32/mfdrv/objects.c | 1 - 5 files changed, 0 insertions(+), 5 deletions(-) diff --git a/dlls/gdi32/dc.c b/dlls/gdi32/dc.c index a23413d..04f02be 100644 --- a/dlls/gdi32/dc.c +++ b/dlls/gdi32/dc.c @@ -30,7 +30,6 @@ #include "winreg.h" #include "winternl.h" #include "winerror.h" -#include "wownt32.h" #include "gdi_private.h" #include "wine/unicode.h" #include "wine/debug.h" diff --git a/dlls/gdi32/dib.c b/dlls/gdi32/dib.c index c799ea3..5067e49 100644 --- a/dlls/gdi32/dib.c +++ b/dlls/gdi32/dib.c @@ -66,7 +66,6 @@ #include "windef.h" #include "winbase.h" -#include "wownt32.h" #include "gdi_private.h" #include "wine/debug.h" diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index b247722..fe68893 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -31,7 +31,6 @@ #include "windef.h" #include "winbase.h" #include "winnls.h" -#include "wownt32.h" #include "gdi_private.h" #include "wine/exception.h" #include "wine/unicode.h" diff --git a/dlls/gdi32/mapping.c b/dlls/gdi32/mapping.c index 8010b3d..667c83b 100644 --- a/dlls/gdi32/mapping.c +++ b/dlls/gdi32/mapping.c @@ -23,7 +23,6 @@ #include "windef.h" #include "winbase.h" #include "wingdi.h" -#include "wownt32.h" #include "gdi_private.h" #include "wine/debug.h" diff --git a/dlls/gdi32/mfdrv/objects.c b/dlls/gdi32/mfdrv/objects.c index c6a68ca..c4b1602 100644 --- a/dlls/gdi32/mfdrv/objects.c +++ b/dlls/gdi32/mfdrv/objects.c @@ -26,7 +26,6 @@ #include "windef.h" #include "winbase.h" #include "wingdi.h" -#include "wownt32.h" #include "wine/wingdi16.h" #include "mfdrv/metafiledrv.h" #include "gdi_private.h"
1
0
0
0
Alexandre Julliard : kernel32: Remove unnecessary use of wownt32.h.
by Alexandre Julliard
01 Nov '10
01 Nov '10
Module: wine Branch: master Commit: 5559ac4a89e152e1bee51d2cb164a502ea3b41fb URL:
http://source.winehq.org/git/wine.git/?a=commit;h=5559ac4a89e152e1bee51d2cb…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Mon Nov 1 16:44:24 2010 +0100 kernel32: Remove unnecessary use of wownt32.h. --- dlls/kernel32/kernel_main.c | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/dlls/kernel32/kernel_main.c b/dlls/kernel32/kernel_main.c index 8bdd1d3..cf06765 100644 --- a/dlls/kernel32/kernel_main.c +++ b/dlls/kernel32/kernel_main.c @@ -31,7 +31,6 @@ #include "winbase.h" #include "wincon.h" #include "winternl.h" -#include "wownt32.h" #include "wine/library.h" #include "kernel_private.h"
1
0
0
0
Huw Davies : ole32: Implement OnRun and OnStop.
by Alexandre Julliard
01 Nov '10
01 Nov '10
Module: wine Branch: master Commit: abf8da6727406d10148ea5b97f83bcf57412599a URL:
http://source.winehq.org/git/wine.git/?a=commit;h=abf8da6727406d10148ea5b97…
Author: Huw Davies <huw(a)codeweavers.com> Date: Mon Nov 1 14:08:45 2010 +0000 ole32: Implement OnRun and OnStop. --- dlls/ole32/datacache.c | 98 ++++++++++++++++++++++++++++++++++++++++------ dlls/ole32/tests/ole2.c | 7 --- 2 files changed, 85 insertions(+), 20 deletions(-) diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c index a2e33a3..768dec7 100644 --- a/dlls/ole32/datacache.c +++ b/dlls/ole32/datacache.c @@ -109,6 +109,10 @@ typedef struct DataCacheEntry BOOL dirty; /* stream number (-1 if not set ) */ unsigned short stream_number; + /* sink id set when object is running */ + DWORD sink_id; + /* Advise sink flags */ + DWORD advise_flags; } DataCacheEntry; /**************************************************************************** @@ -156,6 +160,8 @@ struct DataCache DWORD last_cache_id; /* dirty flag */ BOOL dirty; + /* running object set by OnRun */ + IDataObject *running_object; }; typedef struct DataCache DataCache; @@ -209,13 +215,16 @@ static const char * debugstr_formatetc(const FORMATETC *formatetc) formatetc->lindex, formatetc->tymed); } -static void DataCacheEntry_Destroy(DataCacheEntry *cache_entry) +static void DataCacheEntry_Destroy(DataCache *cache, DataCacheEntry *cache_entry) { list_remove(&cache_entry->entry); if (cache_entry->storage) IStorage_Release(cache_entry->storage); HeapFree(GetProcessHeap(), 0, cache_entry->fmtetc.ptd); ReleaseStgMedium(&cache_entry->stgmedium); + if(cache_entry->sink_id) + IDataObject_DUnadvise(cache->running_object, cache_entry->sink_id); + HeapFree(GetProcessHeap(), 0, cache_entry); } @@ -233,7 +242,7 @@ static void DataCache_Destroy( } LIST_FOR_EACH_ENTRY_SAFE(cache_entry, next_cache_entry, &ptrToDestroy->cache_list, DataCacheEntry, entry) - DataCacheEntry_Destroy(cache_entry); + DataCacheEntry_Destroy(ptrToDestroy, cache_entry); if (ptrToDestroy->presentationStorage != NULL) { @@ -309,6 +318,8 @@ static HRESULT DataCache_CreateEntry(DataCache *This, const FORMATETC *formatetc (*cache_entry)->id = This->last_cache_id++; (*cache_entry)->dirty = TRUE; (*cache_entry)->stream_number = -1; + (*cache_entry)->sink_id = 0; + (*cache_entry)->advise_flags = 0; list_add_tail(&This->cache_list, &(*cache_entry)->entry); return hr; } @@ -1855,6 +1866,26 @@ static ULONG WINAPI DataCache_IOleCache2_Release( return IUnknown_Release(this->outerUnknown); } +/***************************************************************************** + * setup_sink + * + * Set up the sink connection to the running object. + */ +static HRESULT setup_sink(DataCache *This, DataCacheEntry *cache_entry) +{ + HRESULT hr = S_FALSE; + DWORD flags; + + /* Clear the ADVFCACHE_* bits. Native also sets the two highest bits for some reason. */ + flags = cache_entry->advise_flags & ~(ADVFCACHE_NOHANDLER | ADVFCACHE_FORCEBUILTIN | ADVFCACHE_ONSAVE); + + if(This->running_object) + if(!(flags & ADVF_NODATA)) + hr = IDataObject_DAdvise(This->running_object, &cache_entry->fmtetc, flags, + (IAdviseSink *)&This->lpvtblIAdviseSink, &cache_entry->sink_id); + return hr; +} + static HRESULT WINAPI DataCache_Cache( IOleCache2* iface, FORMATETC* pformatetc, @@ -1885,7 +1916,11 @@ static HRESULT WINAPI DataCache_Cache( hr = DataCache_CreateEntry(This, pformatetc, &cache_entry); if (SUCCEEDED(hr)) + { *pdwConnection = cache_entry->id; + cache_entry->advise_flags = advf; + setup_sink(This, cache_entry); + } return hr; } @@ -1902,7 +1937,7 @@ static HRESULT WINAPI DataCache_Uncache( LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) if (cache_entry->id == dwConnection) { - DataCacheEntry_Destroy(cache_entry); + DataCacheEntry_Destroy(This, cache_entry); return S_OK; } @@ -2031,19 +2066,53 @@ static ULONG WINAPI DataCache_IOleCacheControl_Release( return IUnknown_Release(this->outerUnknown); } -static HRESULT WINAPI DataCache_OnRun( - IOleCacheControl* iface, - LPDATAOBJECT pDataObject) +/************************************************************************ + * DataCache_OnRun (IOleCacheControl) + */ +static HRESULT WINAPI DataCache_OnRun(IOleCacheControl* iface, IDataObject *data_obj) { - FIXME("stub\n"); - return E_NOTIMPL; + DataCache *This = impl_from_IOleCacheControl(iface); + DataCacheEntry *cache_entry; + + TRACE("(%p)->(%p)\n", iface, data_obj); + + if(This->running_object) return S_OK; + + /* No reference is taken on the data object */ + This->running_object = data_obj; + + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + { + setup_sink(This, cache_entry); + } + + return S_OK; } -static HRESULT WINAPI DataCache_OnStop( - IOleCacheControl* iface) +/************************************************************************ + * DataCache_OnStop (IOleCacheControl) + */ +static HRESULT WINAPI DataCache_OnStop(IOleCacheControl* iface) { - FIXME("stub\n"); - return E_NOTIMPL; + DataCache *This = impl_from_IOleCacheControl(iface); + DataCacheEntry *cache_entry; + + TRACE("(%p)\n", iface); + + if(!This->running_object) return S_OK; + + LIST_FOR_EACH_ENTRY(cache_entry, &This->cache_list, DataCacheEntry, entry) + { + if(cache_entry->sink_id) + { + IDataObject_DUnadvise(This->running_object, cache_entry->sink_id); + cache_entry->sink_id = 0; + } + } + + /* No ref taken in OnRun, so no Release call here */ + This->running_object = NULL; + return S_OK; } /************************************************************************ @@ -2081,7 +2150,9 @@ static ULONG WINAPI DataCache_IAdviseSink_Release(IAdviseSink *iface) static void WINAPI DataCache_OnDataChange(IAdviseSink *iface, FORMATETC *fmt, STGMEDIUM *med) { - FIXME("stub\n"); + DataCache *This = impl_from_IAdviseSink(iface); + TRACE("(%p)->(%s, %p)\n", This, debugstr_formatetc(fmt), med); + IOleCache_SetData((IOleCache2*)&This->lpvtblIOleCache2, fmt, med, FALSE); } static void WINAPI DataCache_OnViewChange(IAdviseSink *iface, DWORD aspect, LONG index) @@ -2248,6 +2319,7 @@ static DataCache* DataCache_Construct( list_init(&newObject->cache_list); newObject->last_cache_id = 1; newObject->dirty = FALSE; + newObject->running_object = NULL; return newObject; } diff --git a/dlls/ole32/tests/ole2.c b/dlls/ole32/tests/ole2.c index 460a08f..6de8cd1 100644 --- a/dlls/ole32/tests/ole2.c +++ b/dlls/ole32/tests/ole2.c @@ -1406,9 +1406,7 @@ static void test_data_cache(void) DeleteDC(hdcMem); hr = IOleCacheControl_OnRun(pOleCacheControl, &DataObject); - todo_wine { ok_ole_success(hr, "IOleCacheControl_OnRun"); - } hr = IPersistStorage_Save(pPS, pStorage, TRUE); ok_ole_success(hr, "IPersistStorage_Save"); @@ -1424,9 +1422,7 @@ static void test_data_cache(void) IOleCache_Release(pOleCache); IOleCacheControl_Release(pOleCacheControl); - todo_wine { CHECK_NO_EXTRA_METHODS(); - } /* Test with loaded data */ trace("Testing loaded data with CreateDataCache:\n"); @@ -1538,7 +1534,6 @@ static void test_data_cache(void) ok(hr == OLE_E_BLANK, "got %08x\n", hr); hr = IOleCacheControl_OnRun(pOleCacheControl, &DataObject); -todo_wine ok_ole_success(hr, "IOleCacheControl_OnRun"); fmtetc.cfFormat = cf_test_3; @@ -1551,7 +1546,6 @@ todo_wine fmtetc.cfFormat = cf_test_2; hr = IDataObject_GetData(pCacheDataObject, &fmtetc, &stgmedium); -todo_wine ok(hr == S_OK, "got %08x\n", hr); ReleaseStgMedium(&stgmedium); @@ -1563,7 +1557,6 @@ todo_wine IDataObject_Release(pCacheDataObject); IOleCache_Release(pOleCache); -todo_wine CHECK_NO_EXTRA_METHODS(); IStorage_Release(pStorage);
1
0
0
0
Huw Davies : ole32: Remove some useless comments.
by Alexandre Julliard
01 Nov '10
01 Nov '10
Module: wine Branch: master Commit: 6b05b2a927132bc1199383df0e7d195d4c4a8db5 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6b05b2a927132bc1199383df0…
Author: Huw Davies <huw(a)codeweavers.com> Date: Mon Nov 1 13:11:37 2010 +0000 ole32: Remove some useless comments. --- dlls/ole32/datacache.c | 123 ++---------------------------------------------- 1 files changed, 5 insertions(+), 118 deletions(-) Diff:
http://source.winehq.org/git/wine.git/?a=commitdiff;h=6b05b2a927132bc119938…
1
0
0
0
Huw Davies : ole32: Re-order some functions.
by Alexandre Julliard
01 Nov '10
01 Nov '10
Module: wine Branch: master Commit: 96ab42728ddf867818eb4e1856eae5d8965c8c40 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=96ab42728ddf867818eb4e185…
Author: Huw Davies <huw(a)codeweavers.com> Date: Mon Nov 1 12:11:14 2010 +0000 ole32: Re-order some functions. --- dlls/ole32/datacache.c | 125 ++++++++++++++++++++++-------------------------- 1 files changed, 58 insertions(+), 67 deletions(-) diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c index 9209fd6..26ba434 100644 --- a/dlls/ole32/datacache.c +++ b/dlls/ole32/datacache.c @@ -209,14 +209,6 @@ static const char * debugstr_formatetc(const FORMATETC *formatetc) formatetc->lindex, formatetc->tymed); } -/* - * Prototypes for the methods of the DataCache class. - */ -static DataCache* DataCache_Construct(REFCLSID clsid, - LPUNKNOWN pUnkOuter); -static HRESULT DataCacheEntry_OpenPresStream(DataCacheEntry *cache_entry, - IStream **pStm); - static void DataCacheEntry_Destroy(DataCacheEntry *cache_entry) { list_remove(&cache_entry->entry); @@ -2314,6 +2306,64 @@ static const IAdviseSinkVtbl DataCache_IAdviseSink_VTable = DataCache_OnClose }; +/********************************************************* + * Method implementation for DataCache class. + */ +static DataCache* DataCache_Construct( + REFCLSID clsid, + LPUNKNOWN pUnkOuter) +{ + DataCache* newObject = 0; + + /* + * Allocate space for the object. + */ + newObject = HeapAlloc(GetProcessHeap(), 0, sizeof(DataCache)); + + if (newObject==0) + return newObject; + + /* + * Initialize the virtual function table. + */ + newObject->lpVtbl = &DataCache_IDataObject_VTable; + newObject->lpvtblNDIUnknown = &DataCache_NDIUnknown_VTable; + newObject->lpvtblIPersistStorage = &DataCache_IPersistStorage_VTable; + newObject->lpvtblIViewObject = &DataCache_IViewObject2_VTable; + newObject->lpvtblIOleCache2 = &DataCache_IOleCache2_VTable; + newObject->lpvtblIOleCacheControl = &DataCache_IOleCacheControl_VTable; + newObject->lpvtblIAdviseSink = &DataCache_IAdviseSink_VTable; + + /* + * Start with one reference count. The caller of this function + * must release the interface pointer when it is done. + */ + newObject->ref = 1; + + /* + * Initialize the outer unknown + * We don't keep a reference on the outer unknown since, the way + * aggregation works, our lifetime is at least as large as its + * lifetime. + */ + if (pUnkOuter==NULL) + pUnkOuter = (IUnknown*)&(newObject->lpvtblNDIUnknown); + + newObject->outerUnknown = pUnkOuter; + + /* + * Initialize the other members of the structure. + */ + newObject->sinkAspects = 0; + newObject->sinkAdviseFlag = 0; + newObject->sinkInterface = 0; + newObject->presentationStorage = NULL; + list_init(&newObject->cache_list); + newObject->last_cache_id = 1; + newObject->dirty = FALSE; + + return newObject; +} /****************************************************************************** * CreateDataCache [OLE32.@] @@ -2386,62 +2436,3 @@ HRESULT WINAPI CreateDataCache( return hr; } - -/********************************************************* - * Method implementation for DataCache class. - */ -static DataCache* DataCache_Construct( - REFCLSID clsid, - LPUNKNOWN pUnkOuter) -{ - DataCache* newObject = 0; - - /* - * Allocate space for the object. - */ - newObject = HeapAlloc(GetProcessHeap(), 0, sizeof(DataCache)); - - if (newObject==0) - return newObject; - - /* - * Initialize the virtual function table. - */ - newObject->lpVtbl = &DataCache_IDataObject_VTable; - newObject->lpvtblNDIUnknown = &DataCache_NDIUnknown_VTable; - newObject->lpvtblIPersistStorage = &DataCache_IPersistStorage_VTable; - newObject->lpvtblIViewObject = &DataCache_IViewObject2_VTable; - newObject->lpvtblIOleCache2 = &DataCache_IOleCache2_VTable; - newObject->lpvtblIOleCacheControl = &DataCache_IOleCacheControl_VTable; - newObject->lpvtblIAdviseSink = &DataCache_IAdviseSink_VTable; - - /* - * Start with one reference count. The caller of this function - * must release the interface pointer when it is done. - */ - newObject->ref = 1; - - /* - * Initialize the outer unknown - * We don't keep a reference on the outer unknown since, the way - * aggregation works, our lifetime is at least as large as its - * lifetime. - */ - if (pUnkOuter==NULL) - pUnkOuter = (IUnknown*)&(newObject->lpvtblNDIUnknown); - - newObject->outerUnknown = pUnkOuter; - - /* - * Initialize the other members of the structure. - */ - newObject->sinkAspects = 0; - newObject->sinkAdviseFlag = 0; - newObject->sinkInterface = 0; - newObject->presentationStorage = NULL; - list_init(&newObject->cache_list); - newObject->last_cache_id = 1; - newObject->dirty = FALSE; - - return newObject; -}
1
0
0
0
← Newer
1
...
77
78
79
80
81
82
83
...
87
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
75
76
77
78
79
80
81
82
83
84
85
86
87
Results per page:
10
25
50
100
200