~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Wine Cross Reference
wine/dlls/ieframe/taskbarlist.c

Version: ~ [ wine-1.5.4 ] ~ [ wine-1.5.3 ] ~ [ wine-1.5.2 ] ~ [ wine-1.5.1 ] ~ [ wine-1.5.0 ] ~ [ wine-1.4 ] ~ [ wine-1.4-rc6 ] ~ [ wine-1.4-rc5 ] ~ [ wine-1.4-rc4 ] ~ [ wine-1.4-rc3 ] ~ [ wine-1.4-rc2 ] ~ [ wine-1.4-rc1 ] ~ [ wine-1.3.37 ] ~ [ wine-1.3.36 ] ~ [ wine-1.3.35 ] ~ [ wine-1.3.34 ] ~ [ wine-1.3.33 ] ~ [ wine-1.3.32 ] ~ [ wine-1.3.31 ] ~ [ wine-1.3.30 ] ~ [ wine-1.3.29 ] ~ [ wine-1.3.28 ] ~ [ wine-1.3.27 ] ~ [ wine-1.3.26 ] ~ [ wine-1.3.25 ] ~ [ wine-1.3.24 ] ~ [ wine-1.3.23 ] ~ [ wine-1.3.22 ] ~ [ wine-1.3.21 ] ~ [ wine-1.3.20 ] ~ [ wine-1.3.19 ] ~ [ wine-1.3.18 ] ~ [ wine-1.2.3 ] ~ [ wine-1.3.17 ] ~ [ wine-1.3.16 ] ~ [ wine-1.3.15 ] ~ [ wine-1.3.14 ] ~ [ wine-1.3.13 ] ~ [ wine-1.3.12 ] ~ [ wine-1.3.11 ] ~ [ wine-1.3.10 ] ~ [ wine-1.3.9 ] ~ [ wine-1.2.2 ] ~ [ wine-1.3.8 ] ~ [ wine-1.3.7 ] ~ [ wine-1.3.6 ] ~ [ wine-1.3.5 ] ~ [ wine-1.2.1 ] ~ [ wine-1.3.4 ] ~ [ wine-1.3.3 ] ~ [ wine-1.3.2 ] ~ [ wine-1.3.1 ] ~ [ wine-1.3.0 ] ~ [ wine-1.2 ] ~ [ wine-1.2-rc7 ] ~ [ wine-1.2-rc6 ] ~ [ wine-1.2-rc5 ] ~ [ wine-1.2-rc4 ] ~ [ wine-1.2-rc3 ] ~ [ wine-1.2-rc2 ] ~ [ wine-1.2-rc1 ] ~ [ wine-1.1.44 ] ~ [ wine-1.1.43 ] ~ [ wine-1.1.42 ] ~ [ wine-1.1.41 ] ~ [ wine-1.1.40 ] ~ [ wine-1.1.39 ] ~ [ wine-1.1.38 ] ~ [ wine-1.1.37 ] ~ [ wine-1.1.36 ] ~ [ wine-1.1.35 ] ~ [ wine-1.1.34 ] ~ [ wine-1.1.33 ] ~ [ wine-1.1.32 ] ~ [ wine-1.1.31 ] ~ [ wine-1.1.30 ] ~ [ wine-1.1.29 ] ~ [ wine-1.1.28 ] ~ [ wine-1.1.27 ] ~ [ wine-1.1.26 ] ~ [ wine-1.1.25 ] ~ [ wine-1.1.24 ] ~ [ wine-1.1.23 ] ~ [ wine-1.1.22 ] ~ [ wine-1.1.21 ] ~ [ wine-1.1.20 ] ~ [ wine-1.1.19 ] ~ [ wine-1.1.18 ] ~ [ wine-1.1.17 ] ~ [ wine-1.1.16 ] ~ [ wine-1.1.15 ] ~ [ wine-1.1.14 ] ~ [ wine-1.1.13 ] ~ [ wine-1.1.12 ] ~ [ wine-1.1.11 ] ~ [ wine-1.1.10 ] ~ [ wine-1.1.9 ] ~ [ wine-1.1.8 ] ~ [ wine-1.1.7 ] ~ [ wine-1.0.1 ] ~ [ wine-1.1.6 ] ~ [ wine-1.1.5 ] ~ [ wine-1.1.4 ] ~ [ wine-1.1.3 ] ~ [ wine-1.1.2 ] ~ [ wine-1.1.1 ] ~ [ wine-1.1.0 ] ~ [ wine-1.0 ] ~

  1 /*
  2  * Copyright 2009 Henri Verbeet for CodeWeavers
  3  * Copyright 2011 André Hentschel
  4  *
  5  * This library is free software; you can redistribute it and/or
  6  * modify it under the terms of the GNU Lesser General Public
  7  * License as published by the Free Software Foundation; either
  8  * version 2.1 of the License, or (at your option) any later version.
  9  *
 10  * This library is distributed in the hope that it will be useful,
 11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 13  * Lesser General Public License for more details.
 14  *
 15  * You should have received a copy of the GNU Lesser General Public
 16  * License along with this library; if not, write to the Free Software
 17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
 18  *
 19  */
 20 
 21 #include "ieframe.h"
 22 
 23 #include "wine/debug.h"
 24 
 25 WINE_DEFAULT_DEBUG_CHANNEL(ieframe);
 26 
 27 struct taskbar_list
 28 {
 29     ITaskbarList4 ITaskbarList4_iface;
 30     LONG refcount;
 31 };
 32 
 33 static inline struct taskbar_list *impl_from_ITaskbarList4(ITaskbarList4 *iface)
 34 {
 35     return CONTAINING_RECORD(iface, struct taskbar_list, ITaskbarList4_iface);
 36 }
 37 
 38 /* IUnknown methods */
 39 
 40 static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList4 *iface, REFIID riid, void **object)
 41 {
 42     TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object);
 43 
 44     if (IsEqualGUID(riid, &IID_ITaskbarList) ||
 45         IsEqualGUID(riid, &IID_ITaskbarList2) ||
 46         IsEqualGUID(riid, &IID_ITaskbarList3) ||
 47         IsEqualGUID(riid, &IID_ITaskbarList4) ||
 48         IsEqualGUID(riid, &IID_IUnknown))
 49     {
 50         IUnknown_AddRef(iface);
 51         *object = iface;
 52         return S_OK;
 53     }
 54 
 55     WARN("%s not implemented, returning E_NOINTERFACE\n", debugstr_guid(riid));
 56 
 57     *object = NULL;
 58     return E_NOINTERFACE;
 59 }
 60 
 61 static ULONG STDMETHODCALLTYPE taskbar_list_AddRef(ITaskbarList4 *iface)
 62 {
 63     struct taskbar_list *This = impl_from_ITaskbarList4(iface);
 64     ULONG refcount = InterlockedIncrement(&This->refcount);
 65 
 66     TRACE("%p increasing refcount to %u\n", This, refcount);
 67 
 68     return refcount;
 69 }
 70 
 71 static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList4 *iface)
 72 {
 73     struct taskbar_list *This = impl_from_ITaskbarList4(iface);
 74     ULONG refcount = InterlockedDecrement(&This->refcount);
 75 
 76     TRACE("%p decreasing refcount to %u\n", This, refcount);
 77 
 78     if (!refcount)
 79     {
 80         heap_free(This);
 81         unlock_module();
 82     }
 83 
 84     return refcount;
 85 }
 86 
 87 /* ITaskbarList methods */
 88 
 89 static HRESULT STDMETHODCALLTYPE taskbar_list_HrInit(ITaskbarList4 *iface)
 90 {
 91     TRACE("iface %p\n", iface);
 92 
 93     return S_OK;
 94 }
 95 
 96 static HRESULT STDMETHODCALLTYPE taskbar_list_AddTab(ITaskbarList4 *iface, HWND hwnd)
 97 {
 98     FIXME("iface %p, hwnd %p stub!\n", iface, hwnd);
 99 
100     return E_NOTIMPL;
101 }
102 
103 static HRESULT STDMETHODCALLTYPE taskbar_list_DeleteTab(ITaskbarList4 *iface, HWND hwnd)
104 {
105     FIXME("iface %p, hwnd %p stub!\n", iface, hwnd);
106 
107     return E_NOTIMPL;
108 }
109 
110 static HRESULT STDMETHODCALLTYPE taskbar_list_ActivateTab(ITaskbarList4 *iface, HWND hwnd)
111 {
112     FIXME("iface %p, hwnd %p stub!\n", iface, hwnd);
113 
114     return E_NOTIMPL;
115 }
116 
117 static HRESULT STDMETHODCALLTYPE taskbar_list_SetActiveAlt(ITaskbarList4 *iface, HWND hwnd)
118 {
119     FIXME("iface %p, hwnd %p stub!\n", iface, hwnd);
120 
121     return E_NOTIMPL;
122 }
123 
124 /* ITaskbarList2 method */
125 
126 static HRESULT STDMETHODCALLTYPE taskbar_list_MarkFullscreenWindow(ITaskbarList4 *iface,
127                                                                    HWND hwnd,
128                                                                    BOOL fullscreen)
129 {
130     FIXME("iface %p, hwnd %p, fullscreen %s stub!\n", iface, hwnd, (fullscreen)?"true":"false");
131 
132     return E_NOTIMPL;
133 }
134 
135 /* ITaskbarList3 methods */
136 
137 static HRESULT STDMETHODCALLTYPE taskbar_list_SetProgressValue(ITaskbarList4 *iface,
138                                                                HWND hwnd,
139                                                                ULONGLONG ullCompleted,
140                                                                ULONGLONG ullTotal)
141 {
142     static BOOL fixme_once;
143     if(!fixme_once++) FIXME("iface %p, hwnd %p, ullCompleted %s, ullTotal %s stub!\n", iface, hwnd,
144                             wine_dbgstr_longlong(ullCompleted), wine_dbgstr_longlong(ullTotal));
145 
146     return S_OK;
147 }
148 
149 static HRESULT STDMETHODCALLTYPE taskbar_list_SetProgressState(ITaskbarList4 *iface,
150                                                                HWND hwnd,
151                                                                TBPFLAG tbpFlags)
152 {
153     static BOOL fixme_once;
154     if(!fixme_once++) FIXME("iface %p, hwnd %p, flags %x stub!\n", iface, hwnd, tbpFlags);
155 
156     return S_OK;
157 }
158 
159 static HRESULT STDMETHODCALLTYPE taskbar_list_RegisterTab(ITaskbarList4 *iface, HWND hwndTab, HWND hwndMDI)
160 {
161     FIXME("iface %p, hwndTab %p, hwndMDI %p stub!\n", iface, hwndTab, hwndMDI);
162 
163     return E_NOTIMPL;
164 }
165 
166 static HRESULT STDMETHODCALLTYPE taskbar_list_UnregisterTab(ITaskbarList4 *iface, HWND hwndTab)
167 {
168     FIXME("iface %p, hwndTab %p stub!\n", iface, hwndTab);
169 
170     return E_NOTIMPL;
171 }
172 
173 static HRESULT STDMETHODCALLTYPE taskbar_list_SetTabOrder(ITaskbarList4 *iface,
174                                                           HWND hwndTab,
175                                                           HWND hwndInsertBefore)
176 {
177     FIXME("iface %p, hwndTab %p, hwndInsertBefore %p stub!\n", iface, hwndTab, hwndInsertBefore);
178 
179     return E_NOTIMPL;
180 }
181 
182 static HRESULT STDMETHODCALLTYPE taskbar_list_SetTabActive(ITaskbarList4 *iface,
183                                                           HWND hwndTab,
184                                                           HWND hwndMDI,
185                                                           DWORD dwReserved)
186 {
187     FIXME("iface %p, hwndTab %p, hwndMDI %p, dwReserved %x stub!\n", iface, hwndTab, hwndMDI, dwReserved);
188 
189     return E_NOTIMPL;
190 }
191 
192 static HRESULT STDMETHODCALLTYPE taskbar_list_ThumbBarAddButtons(ITaskbarList4 *iface,
193                                                                  HWND hwnd,
194                                                                  UINT cButtons,
195                                                                  LPTHUMBBUTTON pButton)
196 {
197     FIXME("iface %p, hwnd %p, cButtons %u, pButton %p stub!\n", iface, hwnd, cButtons, pButton);
198 
199     return E_NOTIMPL;
200 }
201 
202 static HRESULT STDMETHODCALLTYPE taskbar_list_ThumbBarUpdateButtons(ITaskbarList4 *iface,
203                                                                    HWND hwnd,
204                                                                    UINT cButtons,
205                                                                    LPTHUMBBUTTON pButton)
206 {
207     FIXME("iface %p, hwnd %p, cButtons %u, pButton %p stub!\n", iface, hwnd, cButtons, pButton);
208 
209     return E_NOTIMPL;
210 }
211 
212 static HRESULT STDMETHODCALLTYPE taskbar_list_ThumbBarSetImageList(ITaskbarList4 *iface,
213                                                                    HWND hwnd,
214                                                                    HIMAGELIST himl)
215 {
216     FIXME("iface %p, hwnd %p, himl %p stub!\n", iface, hwnd, himl);
217 
218     return E_NOTIMPL;
219 }
220 
221 static HRESULT STDMETHODCALLTYPE taskbar_list_SetOverlayIcon(ITaskbarList4 *iface,
222                                                              HWND hwnd,
223                                                              HICON hIcon,
224                                                              LPCWSTR pszDescription)
225 {
226     FIXME("iface %p, hwnd %p, hIcon %p, pszDescription %s stub!\n", iface, hwnd, hIcon,
227           debugstr_w(pszDescription));
228 
229     return E_NOTIMPL;
230 }
231 
232 static HRESULT STDMETHODCALLTYPE taskbar_list_SetThumbnailTooltip(ITaskbarList4 *iface,
233                                                                   HWND hwnd,
234                                                                   LPCWSTR pszTip)
235 {
236     FIXME("iface %p, hwnd %p, pszTip %s stub!\n", iface, hwnd, debugstr_w(pszTip));
237 
238     return E_NOTIMPL;
239 }
240 
241 static HRESULT STDMETHODCALLTYPE taskbar_list_SetThumbnailClip(ITaskbarList4 *iface,
242                                                                HWND hwnd,
243                                                                RECT *prcClip)
244 {
245     FIXME("iface %p, hwnd %p, prcClip %s stub!\n", iface, hwnd, wine_dbgstr_rect(prcClip));
246 
247     return E_NOTIMPL;
248 }
249 
250 /* ITaskbarList4 method */
251 
252 static HRESULT STDMETHODCALLTYPE taskbar_list_SetTabProperties(ITaskbarList4 *iface,
253                                                                HWND hwndTab,
254                                                                STPFLAG stpFlags)
255 {
256     FIXME("iface %p, hwndTab %p, stpFlags %u stub!\n", iface, hwndTab, stpFlags);
257 
258     return E_NOTIMPL;
259 }
260 
261 static const struct ITaskbarList4Vtbl taskbar_list_vtbl =
262 {
263     /* IUnknown methods */
264     taskbar_list_QueryInterface,
265     taskbar_list_AddRef,
266     taskbar_list_Release,
267     /* ITaskbarList methods */
268     taskbar_list_HrInit,
269     taskbar_list_AddTab,
270     taskbar_list_DeleteTab,
271     taskbar_list_ActivateTab,
272     taskbar_list_SetActiveAlt,
273     /* ITaskbarList2 method */
274     taskbar_list_MarkFullscreenWindow,
275     /* ITaskbarList3 methods */
276     taskbar_list_SetProgressValue,
277     taskbar_list_SetProgressState,
278     taskbar_list_RegisterTab,
279     taskbar_list_UnregisterTab,
280     taskbar_list_SetTabOrder,
281     taskbar_list_SetTabActive,
282     taskbar_list_ThumbBarAddButtons,
283     taskbar_list_ThumbBarUpdateButtons,
284     taskbar_list_ThumbBarSetImageList,
285     taskbar_list_SetOverlayIcon,
286     taskbar_list_SetThumbnailTooltip,
287     taskbar_list_SetThumbnailClip,
288     /* ITaskbarList4 method */
289     taskbar_list_SetTabProperties,
290 };
291 
292 HRESULT WINAPI TaskbarList_Create(IClassFactory *iface, IUnknown *outer, REFIID riid, void **taskbar_list)
293 {
294     struct taskbar_list *object;
295     HRESULT hres;
296 
297     TRACE("outer %p, riid %s, taskbar_list %p\n", outer, debugstr_guid(riid), taskbar_list);
298 
299     if (outer)
300     {
301         WARN("Aggregation not supported\n");
302         *taskbar_list = NULL;
303         return CLASS_E_NOAGGREGATION;
304     }
305 
306     object = heap_alloc_zero(sizeof(*object));
307     if (!object)
308     {
309         ERR("Failed to allocate taskbar list object memory\n");
310         *taskbar_list = NULL;
311         return E_OUTOFMEMORY;
312     }
313 
314     object->ITaskbarList4_iface.lpVtbl = &taskbar_list_vtbl;
315     object->refcount = 1;
316     lock_module();
317 
318     TRACE("Created ITaskbarList4 %p\n", object);
319 
320     hres = ITaskbarList4_QueryInterface(&object->ITaskbarList4_iface, riid, taskbar_list);
321     ITaskbarList4_Release(&object->ITaskbarList4_iface);
322     return hres;
323 }
324 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.