linuxdcpp-team team mailing list archive
-
linuxdcpp-team team
-
Mailing list archive
-
Message #02275
[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2274: fixes for MinGW
------------------------------------------------------------
revno: 2274
committer: poy <poy@xxxxxxxxxx>
branch nick: trunk
timestamp: Fri 2010-10-29 17:30:05 +0200
message:
fixes for MinGW
modified:
SConstruct
dwt/include/dwt/dwt_shlobj.h
dwt/src/Taskbar.cpp
dwt/src/widgets/RichTextBox.cpp
win32/RichTextBox.cpp
win32/StatsFrame.cpp
--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk
Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'SConstruct'
--- SConstruct 2010-10-28 20:32:29 +0000
+++ SConstruct 2010-10-29 15:30:05 +0000
@@ -147,6 +147,11 @@
else:
env.Append(CCFLAGS = ['-pipe'])
+# MinGW seems to choke on member function calls from lambdas, one has to add "this->".
+# TODO When versions of GCC for MinGW that don't need this workaround are available, remove any
+# mention of "GCC_WTF". Until then, use it to facilitate search & replace.
+env.Append(CPPDEFINES = ['GCC_WTF="this"'])
+
if env['unicode']:
env.Append(CPPDEFINES = ['UNICODE', '_UNICODE'])
=== modified file 'dwt/include/dwt/dwt_shlobj.h'
--- dwt/include/dwt/dwt_shlobj.h 2010-10-28 22:43:23 +0000
+++ dwt/include/dwt/dwt_shlobj.h 2010-10-29 15:30:05 +0000
@@ -49,9 +49,13 @@
typedef struct ITaskbarList2 ITaskbarList2;
#endif
+#ifndef __ITaskbarList3_FWD_DEFINED__
+#define __ITaskbarList3_FWD_DEFINED__
+typedef struct ITaskbarList3 ITaskbarList3;
+#endif
+
#ifndef __ITaskbarList_INTERFACE_DEFINED__
#define __ITaskbarList_INTERFACE_DEFINED__
- EXTERN_C const IID IID_ITaskbarList;
#if defined(__cplusplus) && !defined(CINTERFACE)
struct ITaskbarList : public IUnknown {
public:
@@ -62,37 +66,32 @@
virtual HRESULT WINAPI SetActiveAlt(HWND hwnd) = 0;
};
#endif
- HRESULT WINAPI ITaskbarList_HrInit_Proxy(ITaskbarList *This);
- void __RPC_STUB ITaskbarList_HrInit_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI ITaskbarList_AddTab_Proxy(ITaskbarList *This,HWND hwnd);
- void __RPC_STUB ITaskbarList_AddTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI ITaskbarList_DeleteTab_Proxy(ITaskbarList *This,HWND hwnd);
- void __RPC_STUB ITaskbarList_DeleteTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI ITaskbarList_ActivateTab_Proxy(ITaskbarList *This,HWND hwnd);
- void __RPC_STUB ITaskbarList_ActivateTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI ITaskbarList_SetActiveAlt_Proxy(ITaskbarList *This,HWND hwnd);
- void __RPC_STUB ITaskbarList_SetActiveAlt_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif
#ifndef __ITaskbarList2_INTERFACE_DEFINED__
#define __ITaskbarList2_INTERFACE_DEFINED__
- EXTERN_C const IID IID_ITaskbarList2;
#if defined(__cplusplus) && !defined(CINTERFACE)
struct ITaskbarList2 : public ITaskbarList {
public:
virtual HRESULT WINAPI MarkFullscreenWindow(HWND hwnd,WINBOOL fFullscreen) = 0;
};
#endif
- HRESULT WINAPI ITaskbarList2_MarkFullscreenWindow_Proxy(ITaskbarList2 *This,HWND hwnd,WINBOOL fFullscreen);
- void __RPC_STUB ITaskbarList2_MarkFullscreenWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif
#ifndef __ITaskbarList3_INTERFACE_DEFINED__
#define __ITaskbarList3_INTERFACE_DEFINED__
- EXTERN_C const IID IID_ITaskbarList3;
#if defined(__cplusplus) && !defined(CINTERFACE)
struct ITaskbarList3 : public ITaskbarList2 {
public:
+ virtual HRESULT WINAPI SetProgressValue(
+ /* [in] */ HWND hwnd,
+ /* [in] */ ULONGLONG ullCompleted,
+ /* [in] */ ULONGLONG ullTotal) = 0;
+
+ virtual HRESULT WINAPI SetProgressState(
+ /* [in] */ HWND hwnd,
+ /* [in] */ /*TBPFLAG*/int tbpFlags) = 0;
+
virtual HRESULT WINAPI RegisterTab(
/* [in] */ HWND hwndTab,
/* [in] */ HWND hwndMDI) = 0;
@@ -108,16 +107,35 @@
/* [in] */ HWND hwndTab,
/* [in] */ HWND hwndMDI,
/* [in] */ DWORD dwReserved) = 0;
+
+ virtual HRESULT WINAPI ThumbBarAddButtons(
+ /* [in] */ HWND hwnd,
+ /* [in] */ UINT cButtons,
+ /* [size_is][in] */ /*LPTHUMBBUTTON*/void* pButton) = 0;
+
+ virtual HRESULT WINAPI ThumbBarUpdateButtons(
+ /* [in] */ HWND hwnd,
+ /* [in] */ UINT cButtons,
+ /* [size_is][in] */ /*LPTHUMBBUTTON*/void* pButton) = 0;
+
+ virtual HRESULT WINAPI ThumbBarSetImageList(
+ /* [in] */ HWND hwnd,
+ /* [in] */ /*HIMAGELIST*/void* himl) = 0;
+
+ virtual HRESULT WINAPI SetOverlayIcon(
+ /* [in] */ HWND hwnd,
+ /* [in] */ HICON hIcon,
+ /* [string][unique][in] */ LPCWSTR pszDescription) = 0;
+
+ virtual HRESULT WINAPI SetThumbnailTooltip(
+ /* [in] */ HWND hwnd,
+ /* [string][unique][in] */ LPCWSTR pszTip) = 0;
+
+ virtual HRESULT WINAPI SetThumbnailClip(
+ /* [in] */ HWND hwnd,
+ /* [in] */ RECT *prcClip) = 0;
};
#endif
- HRESULT WINAPI ITaskbarList3_RegisterTab_Proxy(ITaskbarList3 *This,HWND hwnd,HWND hwndMDI);
- void __RPC_STUB ITaskbarList3_RegisterTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI ITaskbarList3_UnregisterTab_Proxy(ITaskbarList3 *This,HWND hwnd);
- void __RPC_STUB ITaskbarList3_UnregisterTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI ITaskbarList3_SetTabOrder_Proxy(ITaskbarList3 *This,HWND hwnd,HWND hwndInsertBefore);
- void __RPC_STUB ITaskbarList3_SetTabOrder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
- HRESULT WINAPI ITaskbarList3_SetTabActive_Proxy(ITaskbarList3 *This,HWND hwnd,HWND hwndMDI,DWORD dwReserved);
- void __RPC_STUB ITaskbarList3_SetTabActive_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
#endif
#endif
=== modified file 'dwt/src/Taskbar.cpp'
--- dwt/src/Taskbar.cpp 2010-10-28 22:43:23 +0000
+++ dwt/src/Taskbar.cpp 2010-10-29 15:30:05 +0000
@@ -70,8 +70,6 @@
if(!util::win32::ensureVersion(util::win32::SEVEN))
return;
- /// @todo call ChangeWindowMessageFilterEx on WM_DWMSENDICONICTHUMBNAIL & WM_DWMSENDICONICLIVEPREVIEWBITMAP
-
static LibraryLoader lib(_T("dwmapi"), true);
if(lib.loaded()) {
@@ -88,9 +86,28 @@
// init the COM pointer on reception of the "TaskbarButtonCreated" message.
window->onRaw([this](WPARAM, LPARAM) -> LRESULT {
if(!taskbar) {
+#ifdef __GNUC__
+ /// @todo remove when GCC knows about ITaskbarList
+ CLSID CLSID_TaskbarList;
+ OLECHAR tbl[] = L"{56FDF344-FD6D-11d0-958A-006097C9A090}";
+ CLSIDFromString(tbl, &CLSID_TaskbarList);
+ IID IID_ITaskbarList;
+ OLECHAR itbl[] = L"{56FDF342-FD6D-11d0-958A-006097C9A090}";
+ CLSIDFromString(itbl, &IID_ITaskbarList);
+#endif
if(::CoCreateInstance(CLSID_TaskbarList, 0, CLSCTX_INPROC_SERVER, IID_ITaskbarList,
reinterpret_cast<LPVOID*>(&taskbar)) != S_OK) { taskbar = 0; }
- if(taskbar && taskbar->HrInit() != S_OK) {
+ if(taskbar && taskbar->HrInit() == S_OK) {
+ LibraryLoader lib_user32(_T("user32"));
+ typedef BOOL (WINAPI *t_ChangeWindowMessageFilterEx)(HWND, UINT, DWORD, void*);
+ t_ChangeWindowMessageFilterEx ChangeWindowMessageFilterEx;
+ if(ChangeWindowMessageFilterEx = reinterpret_cast<t_ChangeWindowMessageFilterEx>(
+ lib_user32.getProcAddress(_T("ChangeWindowMessageFilterEx"))))
+ {
+ ChangeWindowMessageFilterEx(window->handle(), WM_DWMSENDICONICTHUMBNAIL, 1/*MSGFLT_ALLOW*/, 0);
+ ChangeWindowMessageFilterEx(window->handle(), WM_DWMSENDICONICLIVEPREVIEWBITMAP, 1/*MSGFLT_ALLOW*/, 0);
+ }
+ } else {
taskbar->Release();
taskbar = 0;
}
=== modified file 'dwt/src/widgets/RichTextBox.cpp'
--- dwt/src/widgets/RichTextBox.cpp 2010-10-29 13:05:05 +0000
+++ dwt/src/widgets/RichTextBox.cpp 2010-10-29 15:30:05 +0000
@@ -86,7 +86,7 @@
<http://msdn.microsoft.com/en-us/library/bb787875(VS.85).aspx>, we have to handle the printing
by ourselves. this is crucial for taskbar thumbnails and "Aero Peek" previews. */
onPrinting([this, cs](Canvas& canvas) {
- Rectangle rect(getClientSize());
+ Rectangle rect(GCC_WTF->getClientSize());
// paint a background in case the text doesn't span the whole box.
canvas.fill(rect, Brush(cs.backgroundColor));
@@ -98,8 +98,8 @@
format.rcPage = format.rc;
format.chrg.cpMin = 0;
format.chrg.cpMax = -1;
- sendMessage(EM_FORMATRANGE, 1, reinterpret_cast<LPARAM>(&format));
- sendMessage(EM_FORMATRANGE); // "free the cached information" as MSDN recommends.
+ GCC_WTF->sendMessage(EM_FORMATRANGE, 1, reinterpret_cast<LPARAM>(&format));
+ GCC_WTF->sendMessage(EM_FORMATRANGE); // "free the cached information" as MSDN recommends.
});
}
=== modified file 'win32/RichTextBox.cpp'
--- win32/RichTextBox.cpp 2010-10-10 09:26:48 +0000
+++ win32/RichTextBox.cpp 2010-10-29 15:30:05 +0000
@@ -62,7 +62,7 @@
MenuPtr menu = BaseType::getMenu();
menu->appendSeparator();
- menu->appendItem(T_("&Find...\tF3"), [this]() { this->findText(this->findTextPopup()); }, dwt::IconPtr(), !getText().empty());
+ menu->appendItem(T_("&Find...\tF3"), [this]() { GCC_WTF->findText(this->findTextPopup()); }, dwt::IconPtr(), !getText().empty());
return menu;
}
=== modified file 'win32/StatsFrame.cpp'
--- win32/StatsFrame.cpp 2010-10-28 20:21:23 +0000
+++ win32/StatsFrame.cpp 2010-10-29 15:30:05 +0000
@@ -48,7 +48,7 @@
return;
draw(canvas, rect);
});
- onPrinting([this](dwt::Canvas& canvas) { draw(canvas, dwt::Rectangle(getClientSize())); });
+ onPrinting([this](dwt::Canvas& canvas) { draw(canvas, dwt::Rectangle(GCC_WTF->getClientSize())); });
initStatus();