headers: Update to Wine master

'include/windows.foundation.collections.idl' contains an error at the
moment, so I have restored it by hand.

Signed-off-by: LIU Hao <lh_mouse@126.com>
diff --git a/mingw-w64-headers/include/fontsub.h b/mingw-w64-headers/include/fontsub.h
new file mode 100644
index 0000000..aa83f03
--- /dev/null
+++ b/mingw-w64-headers/include/fontsub.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2016 Nikolay Sivov for CodeWeavers
+ *
+ * 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
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifndef __WINE_FONTSUB_H
+#define __WINE_FONTSUB_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef void *(__cdecl *CFP_ALLOCPROC)(size_t);
+typedef void *(__cdecl *CFP_REALLOCPROC)(void *, size_t);
+typedef void (__cdecl *CFP_FREEPROC)(void *);
+
+#define TTFCFP_SUBSET  0
+#define TTFCFP_SUBSET1 1
+#define TTFCFP_DELTA   2
+
+#define TTFCFP_UNICODE_PLATFORMID 0
+#define TTFCFP_APPLE_PLATFORMID   1
+#define TTFCFP_ISO_PLATFORMID     2
+#define TTFCFP_MS_PLATFORMID      3
+
+#define TTFCFP_STD_MAC_CHAR_SET   0
+#define TTFCFP_SYMBOL_CHAR_SET    0
+#define TTFCFP_UNICODE_CHAR_SET   1
+#define TTFCFP_DONT_CARE          0xffff
+
+#define TTFCFP_LANG_KEEP_ALL      0
+
+#define TTFCFP_FLAGS_SUBSET       0x0001
+#define TTFCFP_FLAGS_COMPRESS     0x0002
+#define TTFCFP_FLAGS_TTC          0x0004
+#define TTFCFP_FLAGS_GLYPHLIST    0x0008
+
+#define ERR_GENERIC 1000
+#define ERR_MEM     1005
+
+ULONG __cdecl CreateFontPackage(const unsigned char *src, const ULONG src_len, unsigned char **dest,
+    ULONG *dest_len, ULONG *written, const unsigned short flags, const unsigned short face_index,
+    const unsigned short format, const unsigned short lang, const unsigned short platform,
+    const unsigned short encoding, const unsigned short *keep_list, const unsigned short keep_len,
+    CFP_ALLOCPROC allocproc, CFP_REALLOCPROC reallocproc, CFP_FREEPROC freeproc, void *reserved);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/mingw-w64-headers/include/uiautomationclient.h b/mingw-w64-headers/include/uiautomationclient.h
index b981187..bd626de 100644
--- a/mingw-w64-headers/include/uiautomationclient.h
+++ b/mingw-w64-headers/include/uiautomationclient.h
@@ -31,6 +31,74 @@
 
 DEFINE_GUID(LIBID_UIAutomationClient, 0x944de083, 0x8fb8, 0x45cf, 0xbc,0xb7, 0xc4,0x77,0xac,0xb2,0xf8,0x97);
 
+#define UIA_InvokePatternId (10000)
+
+#define UIA_SelectionPatternId (10001)
+
+#define UIA_ValuePatternId (10002)
+
+#define UIA_RangeValuePatternId (10003)
+
+#define UIA_ScrollPatternId (10004)
+
+#define UIA_ExpandCollapsePatternId (10005)
+
+#define UIA_GridPatternId (10006)
+
+#define UIA_GridItemPatternId (10007)
+
+#define UIA_MultipleViewPatternId (10008)
+
+#define UIA_WindowPatternId (10009)
+
+#define UIA_SelectionItemPatternId (10010)
+
+#define UIA_DockPatternId (10011)
+
+#define UIA_TablePatternId (10012)
+
+#define UIA_TableItemPatternId (10013)
+
+#define UIA_TextPatternId (10014)
+
+#define UIA_TogglePatternId (10015)
+
+#define UIA_TransformPatternId (10016)
+
+#define UIA_ScrollItemPatternId (10017)
+
+#define UIA_LegacyIAccessiblePatternId (10018)
+
+#define UIA_ItemContainerPatternId (10019)
+
+#define UIA_VirtualizedItemPatternId (10020)
+
+#define UIA_SynchronizedInputPatternId (10021)
+
+#define UIA_ObjectModelPatternId (10022)
+
+#define UIA_AnnotationPatternId (10023)
+
+#define UIA_TextPattern2Id (10024)
+
+#define UIA_StylesPatternId (10025)
+
+#define UIA_SpreadsheetPatternId (10026)
+
+#define UIA_SpreadsheetItemPatternId (10027)
+
+#define UIA_TransformPattern2Id (10028)
+
+#define UIA_TextChildPatternId (10029)
+
+#define UIA_DragPatternId (10030)
+
+#define UIA_DropTargetPatternId (10031)
+
+#define UIA_TextEditPatternId (10032)
+
+#define UIA_CustomNavigationPatternId (10033)
+
 #define UIA_RuntimeIdPropertyId (30000)
 
 #define UIA_BoundingRectanglePropertyId (30001)
@@ -253,6 +321,134 @@
 
 #define UIA_IsSynchronizedInputPatternAvailablePropertyId (30110)
 
+#define UIA_OptimizeForVisualContentPropertyId (30111)
+
+#define UIA_IsObjectModelPatternAvailablePropertyId (30112)
+
+#define UIA_AnnotationAnnotationTypeIdPropertyId (30113)
+
+#define UIA_AnnotationAnnotationTypeNamePropertyId (30114)
+
+#define UIA_AnnotationAuthorPropertyId (30115)
+
+#define UIA_AnnotationDateTimePropertyId (30116)
+
+#define UIA_AnnotationTargetPropertyId (30117)
+
+#define UIA_IsAnnotationPatternAvailablePropertyId (30118)
+
+#define UIA_IsTextPattern2AvailablePropertyId (30119)
+
+#define UIA_StylesStyleIdPropertyId (30120)
+
+#define UIA_StylesStyleNamePropertyId (30121)
+
+#define UIA_StylesFillColorPropertyId (30122)
+
+#define UIA_StylesFillPatternStylePropertyId (30123)
+
+#define UIA_StylesShapePropertyId (30124)
+
+#define UIA_StylesFillPatternColorPropertyId (30125)
+
+#define UIA_StylesExtendedPropertiesPropertyId (30126)
+
+#define UIA_IsStylesPatternAvailablePropertyId (30127)
+
+#define UIA_IsSpreadsheetPatternAvailablePropertyId (30128)
+
+#define UIA_SpreadsheetItemFormulaPropertyId (30129)
+
+#define UIA_SpreadsheetItemAnnotationObjectsPropertyId (30130)
+
+#define UIA_SpreadsheetItemAnnotationTypesPropertyId (30131)
+
+#define UIA_IsSpreadsheetItemPatternAvailablePropertyId (30132)
+
+#define UIA_Transform2CanZoomPropertyId (30133)
+
+#define UIA_IsTransformPattern2AvailablePropertyId (30134)
+
+#define UIA_LiveSettingPropertyId (30135)
+
+#define UIA_IsTextChildPatternAvailablePropertyId (30136)
+
+#define UIA_IsDragPatternAvailablePropertyId (30137)
+
+#define UIA_DragIsGrabbedPropertyId (30138)
+
+#define UIA_DragDropEffectPropertyId (30139)
+
+#define UIA_DragDropEffectsPropertyId (30140)
+
+#define UIA_IsDropTargetPatternAvailablePropertyId (30141)
+
+#define UIA_DropTargetDropTargetEffectPropertyId (30142)
+
+#define UIA_DropTargetDropTargetEffectsPropertyId (30143)
+
+#define UIA_DragGrabbedItemsPropertyId (30144)
+
+#define UIA_Transform2ZoomLevelPropertyId (30145)
+
+#define UIA_Transform2ZoomMinimumPropertyId (30146)
+
+#define UIA_Transform2ZoomMaximumPropertyId (30147)
+
+#define UIA_FlowsFromPropertyId (30148)
+
+#define UIA_IsTextEditPatternAvailablePropertyId (30149)
+
+#define UIA_IsPeripheralPropertyId (30150)
+
+#define UIA_IsCustomNavigationPatternAvailablePropertyId (30151)
+
+#define UIA_PositionInSetPropertyId (30152)
+
+#define UIA_SizeOfSetPropertyId (30153)
+
+#define UIA_LevelPropertyId (30154)
+
+#define UIA_AnnotationTypesPropertyId (30155)
+
+#define UIA_AnnotationObjectsPropertyId (30156)
+
+#define UIA_LandmarkTypePropertyId (30157)
+
+#define UIA_LocalizedLandmarkTypePropertyId (30158)
+
+#define UIA_FullDescriptionPropertyId (30159)
+
+#define UIA_FillColorPropertyId (30160)
+
+#define UIA_OutlineColorPropertyId (30161)
+
+#define UIA_FillTypePropertyId (30162)
+
+#define UIA_VisualEffectsPropertyId (30163)
+
+#define UIA_OutlineThicknessPropertyId (30164)
+
+#define UIA_CenterPointPropertyId (30165)
+
+#define UIA_RotationPropertyId (30166)
+
+#define UIA_SizePropertyId (30167)
+
+#define UIA_IsSelectionPattern2AvailablePropertyId (30168)
+
+#define UIA_Selection2FirstSelectedItemPropertyId (30169)
+
+#define UIA_Selection2LastSelectedItemPropertyId (30170)
+
+#define UIA_Selection2CurrentSelectedItemPropertyId (30171)
+
+#define UIA_Selection2ItemCountPropertyId (30172)
+
+#define UIA_HeadingLevelPropertyId (30173)
+
+#define UIA_IsDialogPropertyId (30174)
+
 #endif /* __UIAutomationClient_LIBRARY_DEFINED__ */
 /* Begin additional prototypes for all interfaces */
 
diff --git a/mingw-w64-headers/include/uiautomationclient.idl b/mingw-w64-headers/include/uiautomationclient.idl
index ca768ba..917d345 100644
--- a/mingw-w64-headers/include/uiautomationclient.idl
+++ b/mingw-w64-headers/include/uiautomationclient.idl
@@ -29,6 +29,49 @@
 
     /* FIXME: Uncomment when properly supported in widl
     [dllname("<no entry points>")]
+    module UIA_PatternIds
+    {
+    */
+        const long UIA_InvokePatternId         = 10000;
+        const long UIA_SelectionPatternId      = 10001;
+        const long UIA_ValuePatternId          = 10002;
+        const long UIA_RangeValuePatternId     = 10003;
+        const long UIA_ScrollPatternId         = 10004;
+        const long UIA_ExpandCollapsePatternId = 10005;
+        const long UIA_GridPatternId           = 10006;
+        const long UIA_GridItemPatternId       = 10007;
+        const long UIA_MultipleViewPatternId   = 10008;
+        const long UIA_WindowPatternId         = 10009;
+        const long UIA_SelectionItemPatternId  = 10010;
+        const long UIA_DockPatternId           = 10011;
+        const long UIA_TablePatternId          = 10012;
+        const long UIA_TableItemPatternId      = 10013;
+        const long UIA_TextPatternId           = 10014;
+        const long UIA_TogglePatternId         = 10015;
+        const long UIA_TransformPatternId      = 10016;
+        const long UIA_ScrollItemPatternId     = 10017;
+        const long UIA_LegacyIAccessiblePatternId = 10018;
+        const long UIA_ItemContainerPatternId     = 10019;
+        const long UIA_VirtualizedItemPatternId   = 10020;
+        const long UIA_SynchronizedInputPatternId = 10021;
+        const long UIA_ObjectModelPatternId = 10022;
+        const long UIA_AnnotationPatternId  = 10023;
+        const long UIA_TextPattern2Id       = 10024;
+        const long UIA_StylesPatternId      = 10025;
+        const long UIA_SpreadsheetPatternId = 10026;
+        const long UIA_SpreadsheetItemPatternId  = 10027;
+        const long UIA_TransformPattern2Id       = 10028;
+        const long UIA_TextChildPatternId        = 10029;
+        const long UIA_DragPatternId             = 10030;
+        const long UIA_DropTargetPatternId       = 10031;
+        const long UIA_TextEditPatternId         = 10032;
+        const long UIA_CustomNavigationPatternId = 10033;
+    /*
+    }
+    */
+
+    /* FIXME: Uncomment when properly supported in widl
+    [dllname("<no entry points>")]
     module UIA_PropertyIds
     {
     */
@@ -143,6 +186,70 @@
         const long UIA_IsItemContainerPatternAvailablePropertyId   = 30108;
         const long UIA_IsVirtualizedItemPatternAvailablePropertyId = 30109;
         const long UIA_IsSynchronizedInputPatternAvailablePropertyId  = 30110;
+        const long UIA_OptimizeForVisualContentPropertyId      = 30111;
+        const long UIA_IsObjectModelPatternAvailablePropertyId = 30112;
+        const long UIA_AnnotationAnnotationTypeIdPropertyId    = 30113;
+        const long UIA_AnnotationAnnotationTypeNamePropertyId  = 30114;
+        const long UIA_AnnotationAuthorPropertyId              = 30115;
+        const long UIA_AnnotationDateTimePropertyId            = 30116;
+        const long UIA_AnnotationTargetPropertyId              = 30117;
+        const long UIA_IsAnnotationPatternAvailablePropertyId  = 30118;
+        const long UIA_IsTextPattern2AvailablePropertyId       = 30119;
+        const long UIA_StylesStyleIdPropertyId                 = 30120;
+        const long UIA_StylesStyleNamePropertyId               = 30121;
+        const long UIA_StylesFillColorPropertyId               = 30122;
+        const long UIA_StylesFillPatternStylePropertyId        = 30123;
+        const long UIA_StylesShapePropertyId                   = 30124;
+        const long UIA_StylesFillPatternColorPropertyId        = 30125;
+        const long UIA_StylesExtendedPropertiesPropertyId      = 30126;
+        const long UIA_IsStylesPatternAvailablePropertyId      = 30127;
+        const long UIA_IsSpreadsheetPatternAvailablePropertyId     = 30128;
+        const long UIA_SpreadsheetItemFormulaPropertyId            = 30129;
+        const long UIA_SpreadsheetItemAnnotationObjectsPropertyId  = 30130;
+        const long UIA_SpreadsheetItemAnnotationTypesPropertyId    = 30131;
+        const long UIA_IsSpreadsheetItemPatternAvailablePropertyId = 30132;
+        const long UIA_Transform2CanZoomPropertyId                 = 30133;
+        const long UIA_IsTransformPattern2AvailablePropertyId      = 30134;
+        const long UIA_LiveSettingPropertyId                       = 30135;
+        const long UIA_IsTextChildPatternAvailablePropertyId       = 30136;
+        const long UIA_IsDragPatternAvailablePropertyId            = 30137;
+        const long UIA_DragIsGrabbedPropertyId                     = 30138;
+        const long UIA_DragDropEffectPropertyId                    = 30139;
+        const long UIA_DragDropEffectsPropertyId                   = 30140;
+        const long UIA_IsDropTargetPatternAvailablePropertyId      = 30141;
+        const long UIA_DropTargetDropTargetEffectPropertyId        = 30142;
+        const long UIA_DropTargetDropTargetEffectsPropertyId       = 30143;
+        const long UIA_DragGrabbedItemsPropertyId                  = 30144;
+        const long UIA_Transform2ZoomLevelPropertyId               = 30145;
+        const long UIA_Transform2ZoomMinimumPropertyId             = 30146;
+        const long UIA_Transform2ZoomMaximumPropertyId             = 30147;
+        const long UIA_FlowsFromPropertyId                         = 30148;
+        const long UIA_IsTextEditPatternAvailablePropertyId        = 30149;
+        const long UIA_IsPeripheralPropertyId                      = 30150;
+        const long UIA_IsCustomNavigationPatternAvailablePropertyId = 30151;
+        const long UIA_PositionInSetPropertyId         = 30152;
+        const long UIA_SizeOfSetPropertyId             = 30153;
+        const long UIA_LevelPropertyId                 = 30154;
+        const long UIA_AnnotationTypesPropertyId       = 30155;
+        const long UIA_AnnotationObjectsPropertyId     = 30156;
+        const long UIA_LandmarkTypePropertyId          = 30157;
+        const long UIA_LocalizedLandmarkTypePropertyId = 30158;
+        const long UIA_FullDescriptionPropertyId       = 30159;
+        const long UIA_FillColorPropertyId             = 30160;
+        const long UIA_OutlineColorPropertyId          = 30161;
+        const long UIA_FillTypePropertyId              = 30162;
+        const long UIA_VisualEffectsPropertyId         = 30163;
+        const long UIA_OutlineThicknessPropertyId      = 30164;
+        const long UIA_CenterPointPropertyId           = 30165;
+        const long UIA_RotationPropertyId              = 30166;
+        const long UIA_SizePropertyId                  = 30167;
+        const long UIA_IsSelectionPattern2AvailablePropertyId  = 30168;
+        const long UIA_Selection2FirstSelectedItemPropertyId   = 30169;
+        const long UIA_Selection2LastSelectedItemPropertyId    = 30170;
+        const long UIA_Selection2CurrentSelectedItemPropertyId = 30171;
+        const long UIA_Selection2ItemCountPropertyId           = 30172;
+        const long UIA_HeadingLevelPropertyId                  = 30173;
+        const long UIA_IsDialogPropertyId                      = 30174;
     /*
     }
     */
diff --git a/mingw-w64-headers/include/uiautomationcore.h b/mingw-w64-headers/include/uiautomationcore.h
index 36d2f26..dccdade 100644
--- a/mingw-w64-headers/include/uiautomationcore.h
+++ b/mingw-w64-headers/include/uiautomationcore.h
@@ -34,6 +34,22 @@
 #endif /* __cplusplus */
 #endif
 
+#ifndef __IRawElementProviderFragment_FWD_DEFINED__
+#define __IRawElementProviderFragment_FWD_DEFINED__
+typedef interface IRawElementProviderFragment IRawElementProviderFragment;
+#ifdef __cplusplus
+interface IRawElementProviderFragment;
+#endif /* __cplusplus */
+#endif
+
+#ifndef __IRawElementProviderFragmentRoot_FWD_DEFINED__
+#define __IRawElementProviderFragmentRoot_FWD_DEFINED__
+typedef interface IRawElementProviderFragmentRoot IRawElementProviderFragmentRoot;
+#ifdef __cplusplus
+interface IRawElementProviderFragmentRoot;
+#endif /* __cplusplus */
+#endif
+
 /* Headers for imported files */
 
 #include <oaidl.h>
@@ -43,19 +59,35 @@
 extern "C" {
 #endif
 
+enum NavigateDirection {
+    NavigateDirection_Parent = 0x0,
+    NavigateDirection_NextSibling = 0x1,
+    NavigateDirection_PreviousSibling = 0x2,
+    NavigateDirection_FirstChild = 0x3,
+    NavigateDirection_LastChild = 0x4
+};
 enum ProviderOptions {
     ProviderOptions_ClientSideProvider = 0x1,
     ProviderOptions_ServerSideProvider = 0x2,
     ProviderOptions_NonClientAreaProvider = 0x4,
     ProviderOptions_OverrideProvider = 0x8,
     ProviderOptions_ProviderOwnsSetFocus = 0x10,
-    ProviderOptions_UseComThreading = 0x20
+    ProviderOptions_UseComThreading = 0x20,
+    ProviderOptions_RefuseNonClientSupport = 0x40,
+    ProviderOptions_HasNativeIAccessible = 0x80,
+    ProviderOptions_UseClientCoordinates = 0x100
 };
 typedef int PROPERTYID;
 typedef int PATTERNID;
 typedef int EVENTID;
 typedef int TEXTATTRIBUTEID;
 typedef int CONTROLTYPEID;
+struct UiaRect {
+    double left;
+    double top;
+    double width;
+    double height;
+};
 #ifndef __UIA_LIBRARY_DEFINED__
 #define __UIA_LIBRARY_DEFINED__
 
@@ -291,6 +323,239 @@
 
 #endif  /* __IAccessibleEx_INTERFACE_DEFINED__ */
 
+#ifndef __IRawElementProviderFragmentRoot_FWD_DEFINED__
+#define __IRawElementProviderFragmentRoot_FWD_DEFINED__
+typedef interface IRawElementProviderFragmentRoot IRawElementProviderFragmentRoot;
+#ifdef __cplusplus
+interface IRawElementProviderFragmentRoot;
+#endif /* __cplusplus */
+#endif
+
+/*****************************************************************************
+ * IRawElementProviderFragment interface
+ */
+#ifndef __IRawElementProviderFragment_INTERFACE_DEFINED__
+#define __IRawElementProviderFragment_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRawElementProviderFragment, 0xf7063da8, 0x8359, 0x439c, 0x92,0x97, 0xbb,0xc5,0x29,0x9a,0x7d,0x87);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("f7063da8-8359-439c-9297-bbc5299a7d87")
+IRawElementProviderFragment : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE Navigate(
+        enum NavigateDirection direction,
+        IRawElementProviderFragment **pRetVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRuntimeId(
+        SAFEARRAY **pRetVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_BoundingRectangle(
+        struct UiaRect *pRetVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetEmbeddedFragmentRoots(
+        SAFEARRAY **pRetVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFocus(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE get_FragmentRoot(
+        IRawElementProviderFragmentRoot **pRetVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IRawElementProviderFragment, 0xf7063da8, 0x8359, 0x439c, 0x92,0x97, 0xbb,0xc5,0x29,0x9a,0x7d,0x87)
+#endif
+#else
+typedef struct IRawElementProviderFragmentVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRawElementProviderFragment *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRawElementProviderFragment *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRawElementProviderFragment *This);
+
+    /*** IRawElementProviderFragment methods ***/
+    HRESULT (STDMETHODCALLTYPE *Navigate)(
+        IRawElementProviderFragment *This,
+        enum NavigateDirection direction,
+        IRawElementProviderFragment **pRetVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetRuntimeId)(
+        IRawElementProviderFragment *This,
+        SAFEARRAY **pRetVal);
+
+    HRESULT (STDMETHODCALLTYPE *get_BoundingRectangle)(
+        IRawElementProviderFragment *This,
+        struct UiaRect *pRetVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetEmbeddedFragmentRoots)(
+        IRawElementProviderFragment *This,
+        SAFEARRAY **pRetVal);
+
+    HRESULT (STDMETHODCALLTYPE *SetFocus)(
+        IRawElementProviderFragment *This);
+
+    HRESULT (STDMETHODCALLTYPE *get_FragmentRoot)(
+        IRawElementProviderFragment *This,
+        IRawElementProviderFragmentRoot **pRetVal);
+
+    END_INTERFACE
+} IRawElementProviderFragmentVtbl;
+
+interface IRawElementProviderFragment {
+    CONST_VTBL IRawElementProviderFragmentVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IRawElementProviderFragment_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRawElementProviderFragment_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRawElementProviderFragment_Release(This) (This)->lpVtbl->Release(This)
+/*** IRawElementProviderFragment methods ***/
+#define IRawElementProviderFragment_Navigate(This,direction,pRetVal) (This)->lpVtbl->Navigate(This,direction,pRetVal)
+#define IRawElementProviderFragment_GetRuntimeId(This,pRetVal) (This)->lpVtbl->GetRuntimeId(This,pRetVal)
+#define IRawElementProviderFragment_get_BoundingRectangle(This,pRetVal) (This)->lpVtbl->get_BoundingRectangle(This,pRetVal)
+#define IRawElementProviderFragment_GetEmbeddedFragmentRoots(This,pRetVal) (This)->lpVtbl->GetEmbeddedFragmentRoots(This,pRetVal)
+#define IRawElementProviderFragment_SetFocus(This) (This)->lpVtbl->SetFocus(This)
+#define IRawElementProviderFragment_get_FragmentRoot(This,pRetVal) (This)->lpVtbl->get_FragmentRoot(This,pRetVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IRawElementProviderFragment_QueryInterface(IRawElementProviderFragment* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IRawElementProviderFragment_AddRef(IRawElementProviderFragment* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IRawElementProviderFragment_Release(IRawElementProviderFragment* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IRawElementProviderFragment methods ***/
+static FORCEINLINE HRESULT IRawElementProviderFragment_Navigate(IRawElementProviderFragment* This,enum NavigateDirection direction,IRawElementProviderFragment **pRetVal) {
+    return This->lpVtbl->Navigate(This,direction,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_GetRuntimeId(IRawElementProviderFragment* This,SAFEARRAY **pRetVal) {
+    return This->lpVtbl->GetRuntimeId(This,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_get_BoundingRectangle(IRawElementProviderFragment* This,struct UiaRect *pRetVal) {
+    return This->lpVtbl->get_BoundingRectangle(This,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_GetEmbeddedFragmentRoots(IRawElementProviderFragment* This,SAFEARRAY **pRetVal) {
+    return This->lpVtbl->GetEmbeddedFragmentRoots(This,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_SetFocus(IRawElementProviderFragment* This) {
+    return This->lpVtbl->SetFocus(This);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragment_get_FragmentRoot(IRawElementProviderFragment* This,IRawElementProviderFragmentRoot **pRetVal) {
+    return This->lpVtbl->get_FragmentRoot(This,pRetVal);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IRawElementProviderFragment_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IRawElementProviderFragmentRoot interface
+ */
+#ifndef __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__
+#define __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IRawElementProviderFragmentRoot, 0x620ce2a5, 0xab8f, 0x40a9, 0x86,0xcb, 0xde,0x3c,0x75,0x59,0x9b,0x58);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("620ce2a5-ab8f-40a9-86cb-de3c75599b58")
+IRawElementProviderFragmentRoot : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE ElementProviderFromPoint(
+        double x,
+        double y,
+        IRawElementProviderFragment **pRetVal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFocus(
+        IRawElementProviderFragment **pRetVal) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IRawElementProviderFragmentRoot, 0x620ce2a5, 0xab8f, 0x40a9, 0x86,0xcb, 0xde,0x3c,0x75,0x59,0x9b,0x58)
+#endif
+#else
+typedef struct IRawElementProviderFragmentRootVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IRawElementProviderFragmentRoot *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IRawElementProviderFragmentRoot *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IRawElementProviderFragmentRoot *This);
+
+    /*** IRawElementProviderFragmentRoot methods ***/
+    HRESULT (STDMETHODCALLTYPE *ElementProviderFromPoint)(
+        IRawElementProviderFragmentRoot *This,
+        double x,
+        double y,
+        IRawElementProviderFragment **pRetVal);
+
+    HRESULT (STDMETHODCALLTYPE *GetFocus)(
+        IRawElementProviderFragmentRoot *This,
+        IRawElementProviderFragment **pRetVal);
+
+    END_INTERFACE
+} IRawElementProviderFragmentRootVtbl;
+
+interface IRawElementProviderFragmentRoot {
+    CONST_VTBL IRawElementProviderFragmentRootVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IRawElementProviderFragmentRoot_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRawElementProviderFragmentRoot_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRawElementProviderFragmentRoot_Release(This) (This)->lpVtbl->Release(This)
+/*** IRawElementProviderFragmentRoot methods ***/
+#define IRawElementProviderFragmentRoot_ElementProviderFromPoint(This,x,y,pRetVal) (This)->lpVtbl->ElementProviderFromPoint(This,x,y,pRetVal)
+#define IRawElementProviderFragmentRoot_GetFocus(This,pRetVal) (This)->lpVtbl->GetFocus(This,pRetVal)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IRawElementProviderFragmentRoot_QueryInterface(IRawElementProviderFragmentRoot* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IRawElementProviderFragmentRoot_AddRef(IRawElementProviderFragmentRoot* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IRawElementProviderFragmentRoot_Release(IRawElementProviderFragmentRoot* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IRawElementProviderFragmentRoot methods ***/
+static FORCEINLINE HRESULT IRawElementProviderFragmentRoot_ElementProviderFromPoint(IRawElementProviderFragmentRoot* This,double x,double y,IRawElementProviderFragment **pRetVal) {
+    return This->lpVtbl->ElementProviderFromPoint(This,x,y,pRetVal);
+}
+static FORCEINLINE HRESULT IRawElementProviderFragmentRoot_GetFocus(IRawElementProviderFragmentRoot* This,IRawElementProviderFragment **pRetVal) {
+    return This->lpVtbl->GetFocus(This,pRetVal);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IRawElementProviderFragmentRoot_INTERFACE_DEFINED__ */
+
 #endif /* __UIA_LIBRARY_DEFINED__ */
 /* Begin additional prototypes for all interfaces */
 
diff --git a/mingw-w64-headers/include/uiautomationcore.idl b/mingw-w64-headers/include/uiautomationcore.idl
index 3ae6dac..170b0c7 100644
--- a/mingw-w64-headers/include/uiautomationcore.idl
+++ b/mingw-w64-headers/include/uiautomationcore.idl
@@ -20,13 +20,24 @@
 import "oaidl.idl";
 import "oleacc.idl";
 
+enum NavigateDirection {
+    NavigateDirection_Parent          = 0x0000,
+    NavigateDirection_NextSibling     = 0x0001,
+    NavigateDirection_PreviousSibling = 0x0002,
+    NavigateDirection_FirstChild      = 0x0003,
+    NavigateDirection_LastChild       = 0x0004,
+};
+
 enum ProviderOptions {
     ProviderOptions_ClientSideProvider    = 0x0001,
     ProviderOptions_ServerSideProvider    = 0x0002,
     ProviderOptions_NonClientAreaProvider = 0x0004,
     ProviderOptions_OverrideProvider      = 0x0008,
     ProviderOptions_ProviderOwnsSetFocus  = 0x0010,
-    ProviderOptions_UseComThreading       = 0x0020
+    ProviderOptions_UseComThreading       = 0x0020,
+    ProviderOptions_RefuseNonClientSupport = 0x0040,
+    ProviderOptions_HasNativeIAccessible   = 0x0080,
+    ProviderOptions_UseClientCoordinates   = 0x0100,
 };
 
 typedef int PROPERTYID;
@@ -35,6 +46,13 @@
 typedef int TEXTATTRIBUTEID;
 typedef int CONTROLTYPEID;
 
+struct UiaRect {
+    double left;
+    double top;
+    double width;
+    double height;
+};
+
 [
     version(1.0),
     uuid(930299ce-9965-4dec-b0f4-a54848d4b667),
@@ -48,7 +66,8 @@
     [
         object,
         uuid(d6dd68d1-86fd-4332-8666-9abedea2d24c),
-        pointer_default(unique)
+        pointer_default(unique),
+        oleautomation
     ]
     interface IRawElementProviderSimple : IUnknown
     {
@@ -88,4 +107,48 @@
                 [in] IRawElementProviderSimple *pIn,
                 [out] IAccessibleEx **ppRetValOut);
     }
+
+    interface IRawElementProviderFragmentRoot;
+
+    [
+        object,
+        uuid(f7063da8-8359-439c-9297-bbc5299a7d87),
+        pointer_default(unique),
+        oleautomation
+    ]
+    interface IRawElementProviderFragment : IUnknown
+    {
+        HRESULT Navigate(
+                [in] enum NavigateDirection direction,
+                [out, retval] IRawElementProviderFragment **pRetVal);
+
+        HRESULT GetRuntimeId([out, retval] SAFEARRAY(int) *pRetVal);
+        HRESULT get_BoundingRectangle([out, retval] struct UiaRect *pRetVal);
+        /*
+         * FIXME: Current versions of Windows SDK use
+         * SAFEARRAY(IRawElementProviderFragmentRoot *) instead of
+         * SAFEARRAY(VARIANT). The new type is currently unsupported
+         * in widl, we should switch to it when it is.
+         */
+        HRESULT GetEmbeddedFragmentRoots([out, retval] SAFEARRAY(VARIANT) *pRetVal);
+        HRESULT SetFocus();
+
+        [propget] HRESULT FragmentRoot([out, retval] IRawElementProviderFragmentRoot **pRetVal);
+    }
+
+    [
+        object,
+        uuid(620ce2a5-ab8f-40a9-86cb-de3c75599b58),
+        pointer_default(unique),
+        oleautomation
+    ]
+    interface IRawElementProviderFragmentRoot : IUnknown
+    {
+        HRESULT ElementProviderFromPoint(
+                [in] double x,
+                [in] double y,
+                [out, retval] IRawElementProviderFragment **pRetVal);
+
+        HRESULT GetFocus([out, retval] IRawElementProviderFragment **pRetVal);
+    }
 }