- Link oleacc.lib conditionally.
- Drag and drop now works inside static boxes.
- Fall back to unthemed wxNotebook if specified orientation not available.
+- wxListCtrl and wxTreeCtrl now resize their standard font if the user
+ changes the system font.
wxGTK:
virtual bool MSWShouldPreProcessMessage(WXMSG* pMsg);
#endif // __SMARTPHONE__ && __WXWINCE__
-#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
- // Soft Input Panel (SIP) change notification
- virtual bool HandleSettingChange(WXWPARAM wParam, WXLPARAM lParam);
-#endif
-
// translate wxWidgets flags to Windows ones
virtual WXDWORD MSWGetStyle(long flags, WXDWORD *exstyle) const;
bool HandleSysColorChange();
bool HandleDisplayChange();
bool HandleCaptureChanged(WXHWND gainedCapture);
+ bool HandleSettingChange(WXWPARAM wParam, WXLPARAM lParam);
bool HandleQueryEndSession(long logOff, bool *mayEnd);
bool HandleEndSession(bool endSession, long logOff);
#include "wx/control.h"
-#if wxUSE_NOTEBOOK
- #include "wx/notebook.h"
-#endif // wxUSE_NOTEBOOK
+#if wxUSE_LISTCTRL
+ #include "wx/listctrl.h"
+#endif // wxUSE_LISTCTRL
+
+#if wxUSE_TREECTRL
+ #include "wx/treectrl.h"
+#endif // wxUSE_TREECTRL
#include "wx/msw/private.h"
#include "wx/msw/uxtheme.h"
// set up fonts and colours
InheritAttributes();
- if (!m_hasFont)
- SetFont(GetDefaultAttributes().font);
+ if ( !m_hasFont )
+ {
+#if wxUSE_LISTCTRL || wxUSE_TREECTRL
+ // if we set a font for {list,tree}ctrls and the font size is changed in
+ // the display properties then the font size for these controls doesn't
+ // automatically adjust when they receive WM_SETTINGCHANGE
+ if ( wxDynamicCastThis(wxListCtrl) || wxDynamicCastThis(wxTreeCtrl) )
+ {
+ // not sure if we need to explicitly set the font here for Win95/NT4
+ // but we definitely can't do it for any newer version
+ // see wxGetCCDefaultFont() in src/msw/settings.cpp for explanation
+ // of why this test works
+
+ // TODO: test Win95/NT4 to see if this is needed or breaks the
+ // font resizing as it does on newer versions
+ wxFont font = GetDefaultAttributes().font;
+ if ( font == wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT) )
+ {
+ SetFont(font);
+ }
+ }
+ else
+#endif // wxUSE_LISTCTRL || wxUSE_TREECTRL
+ {
+ SetFont(GetDefaultAttributes().font);
+ }
+ }
// set the size now if no initial size specified
SetInitialBestSize(size);
return (WXHWND)hwndParent;
}
-#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
-bool wxTopLevelWindowMSW::HandleSettingChange(WXWPARAM wParam, WXLPARAM lParam)
-{
- SHACTIVATEINFO* info = (SHACTIVATEINFO*) m_activateInfo;
- if (!info) return false;
- return SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info) == TRUE;
-}
-#endif
-
WXLRESULT wxTopLevelWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam)
{
WXLRESULT rc = 0;
break;
}
- case WM_SETTINGCHANGE:
- {
- processed = HandleSettingChange(wParam,lParam);
- break;
- }
case WM_HIBERNATE:
{
if (wxTheApp)
LONG APIENTRY _EXPORT
wxDlgProc(HWND hDlg,
UINT message,
- WPARAM wParam,
- LPARAM lParam)
+ WPARAM WXUNUSED(wParam),
+ LPARAM WXUNUSED(lParam))
{
switch ( message )
{
// ourselves, we return FALSE for it as well
return FALSE;
}
-
- case WM_SETTINGCHANGE:
- {
-#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
- wxTopLevelWindow *tlw = wxDynamicCast(wxGetWindowFromHWND(hDlg), wxTopLevelWindow);
- if(tlw) return tlw->HandleSettingChange(wParam,lParam) ? TRUE : FALSE;
-#else
- wxUnusedVar(wParam);
- wxUnusedVar(lParam);
-#endif
- break;
- }
}
// for almost all messages, returning FALSE means that we didn't process
processed = HandleCaptureChanged((WXHWND) (HWND) lParam);
break;
+ case WM_SETTINGCHANGE:
+ processed = HandleSettingChange(wParam, lParam);
+ break;
+
case WM_QUERYNEWPALETTE:
processed = HandleQueryNewPalette();
break;
return GetEventHandler()->ProcessEvent(event);
}
+bool wxWindowMSW::HandleSettingChange(WXWPARAM wParam, WXLPARAM lParam)
+{
+ // despite MSDN saying "(This message cannot be sent directly to a window.)"
+ // we need to send this to child windows (it is only sent to top-level
+ // windows) so {list,tree}ctrls can adjust their font size if necessary
+ // this is exactly how explorer does it to enable the font size changes
+
+ wxWindowList::compatibility_iterator node = GetChildren().GetFirst();
+ while ( node )
+ {
+ // top-level windows already get this message from the system
+ wxWindow *win = node->GetData();
+ if ( !win->IsTopLevel() )
+ {
+ ::SendMessage(GetHwndOf(win), WM_SETTINGCHANGE, wParam, lParam);
+ }
+
+ node = node->GetNext();
+ }
+
+#if defined(__SMARTPHONE__) || defined(__POCKETPC__)
+ if ( IsTopLevel() )
+ {
+ SHACTIVATEINFO *info = (SHACTIVATEINFO*) m_activateInfo;
+ if ( info )
+ {
+ return SHHandleWMSettingChange(GetHwnd(), wParam, lParam, info) == TRUE;
+ }
+ }
+#endif // defined(__SMARTPHONE__) || defined(__POCKETPC__)
+
+ // let the system handle it
+ return false;
+}
+
bool wxWindowMSW::HandleQueryNewPalette()
{