MSW compilation fixes - widgets sample runs!

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin 2001-06-27 00:27:24 +00:00
parent 29149a6491
commit e421922f90
19 changed files with 422 additions and 291 deletions

View File

@ -192,6 +192,7 @@ prntbase.cpp C
process.cpp C 32,B
protocol.cpp C S,B
quantize.cpp C
radiocmn.cpp C
resource.cpp C
sckaddr.cpp C S,B
sckfile.cpp C S,B

View File

@ -181,6 +181,14 @@
# endif
#endif /* !defined(wxUSE_LISTCTRL) */
#ifndef wxUSE_MSGDLG
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_MSGDLG must be defined."
# else
# define wxUSE_MSGDLG 0
# endif
#endif /* !defined(wxUSE_MSGDLG) */
#ifndef wxUSE_MDI_ARCHITECTURE
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_MDI_ARCHITECTURE must be defined."
@ -457,7 +465,7 @@
# define wxUSE_FILEDLG 1
# endif
# endif
#endif /* !wxUSE_FILEDLG */
#endif /* wxUSE_FILEDLG */
#if !wxUSE_FONTDLG
# if defined(wxUSE_FONTMAP)
@ -481,6 +489,16 @@
# endif
#endif /* !wxUSE_IMAGLIST */
#if !wxUSE_MSGDLG
# ifdef wxABORT_ON_CONFIG_ERROR
/* FIXME: should compile without it, of course, but doesn't */
# error "wxMessageBox is always needed"
# else
# undef wxUSE_MSGDLG
# define wxUSE_MSGDLG 1
# endif
#endif
#if wxUSE_RADIOBTN
# if defined(__WXUNIVERSAL__) && !wxUSE_CHECKBOX
# ifdef wxABORT_ON_CONFIG_ERROR

View File

@ -17,6 +17,8 @@
#pragma interface "datetime.h"
#endif
#if wxUSE_DATETIME
#include <time.h>
#include <limits.h> // for INT_MIN
@ -1570,4 +1572,6 @@ inline WXDLLEXPORT void wxPrevWDay(wxDateTime::WeekDay& wd)
: (wxDateTime::WeekDay)(wd - 1);
}
#endif // wxUSE_DATETIME
#endif // _WX_DATETIME_H

View File

@ -45,15 +45,6 @@ private:
#if !defined( __WXMSW__ ) && !defined( __WXMAC__) && !defined(__WXPM__)
#define wxMessageDialog wxGenericMessageDialog
int wxMessageBox( const wxString& message
,const wxString& caption = wxMessageBoxCaptionStr
,long style = wxOK|wxCENTRE
,wxWindow *parent = (wxWindow *) NULL
,int x = -1
,int y = -1
);
#endif
#endif

View File

@ -1,6 +1,8 @@
#ifndef _WX_MSGDLG_H_BASE_
#define _WX_MSGDLG_H_BASE_
#if wxUSE_MSGDLG
#if defined(__WXMSW__)
#include "wx/msw/msgdlg.h"
#elif defined(__WXMOTIF__)
@ -17,5 +19,17 @@
#include "wx/generic/msgdlgg.h"
#endif
// ----------------------------------------------------------------------------
// wxMessageBox: the simplest way to use wxMessageDialog
// ----------------------------------------------------------------------------
int WXDLLEXPORT wxMessageBox(const wxString& message,
const wxString& caption = wxMessageBoxCaptionStr,
long style = wxOK | wxCENTRE,
wxWindow *parent = NULL,
int x = -1, int y = -1);
#endif // wxUSE_MSGDLG
#endif
// _WX_MSGDLG_H_BASE_

View File

@ -41,9 +41,5 @@ public:
};
int WXDLLEXPORT wxMessageBox(const wxString& message, const wxString& caption = wxMessageBoxCaptionStr,
long style = wxOK|wxCENTRE,
wxWindow *parent = NULL, int x = -1, int y = -1);
#endif
// _WX_MSGBOXDLG_H_

View File

@ -232,7 +232,7 @@
// i18n support: _() macro, wxLocale class. Requires wxTextFile.
#define wxUSE_INTL 1
// Set wxUSE_TIMEDATE to 1 to compile the wxDateTime and related classes which
// Set wxUSE_DATETIME to 1 to compile the wxDateTime and related classes which
// allow to manipulate dates, times and time intervals. wxDateTime replaces the
// old wxTime and wxDate classes which are still provided for backwards
// compatibility (and implemented in terms of wxDateTime).
@ -244,8 +244,19 @@
//
// Requires: wxUSE_LONGLONG
//
// Default is 1
//
// Recommended setting: 1
#define wxUSE_TIMEDATE 1
#define wxUSE_DATETIME 1
// wxUSE_TIMEDATE enables compilation of the old wxDate and wxTime classes (not
// the same as wxDateTime!). These classes are obsolete and shouldn't be used
// in new code
//
// Default is 0
//
// Recommended setting: 0 unless you have legacy code which uses these classes
#define wxUSE_TIMEDATE 0
// Set wxUSE_TIMER to 1 to compile wxTimer class
//
@ -539,6 +550,22 @@
// Recommended setting: 1 (unless it really doesn't work)
#define wxUSE_COMMON_DIALOGS 1
// wxBusyInfo displays window with message when app is busy. Works in same way
// as wxBusyCursor
#define wxUSE_BUSYINFO 1
// Use single/multiple choice dialogs.
//
// Default is 1
//
// Recommended setting: 1 (used in the library itself)
#define wxUSE_CHOICEDLG 1
// wxDirDlg class for getting a directory name from user
#define wxUSE_DIRDLG 1
// TODO: setting to choose the generic or native one
// Use file open/save dialogs.
//
// Default is 1
@ -553,29 +580,22 @@
// Recommended setting: 1 (used in the library itself)
#define wxUSE_FONTDLG 1
// Use single/multiple choice dialogs.
// Use wxMessageDialog and wxMessageBox.
//
// Default is 1
//
// Recommended setting: 1 (used in the library itself)
#define wxUSE_CHOICEDLG 1
// text entry dialog and wxGetTextFromUser function
#define wxUSE_TEXTDLG 1
#define wxUSE_MSGDLG 1
// progress dialog class for lengthy operations
#define wxUSE_PROGRESSDLG 1
// wxBusyInfo displays window with message when app is busy. Works in same way
// as wxBusyCursor
#define wxUSE_BUSYINFO 1
// wxDirDlg class for getting a directory name from user
#define wxUSE_DIRDLG 1
// support for startup tips (wxShowTip &c)
#define wxUSE_STARTUP_TIPS 1
// text entry dialog and wxGetTextFromUser function
#define wxUSE_TEXTDLG 1
// ----------------------------------------------------------------------------
// Metafiles support
// ----------------------------------------------------------------------------
@ -1073,7 +1093,7 @@
// you need to modify setup.h and rebuild everything
// ----------------------------------------------------------------------------
#if wxUSE_TIMEDATE && !wxUSE_LONGLONG
#if wxUSE_DATETIME && !wxUSE_LONGLONG
#error wxDateTime requires wxLongLong
#endif

View File

@ -112,7 +112,9 @@ public:
void HandleOnChar(wxKeyEvent& event);
void HandleOnMouseEnter(wxMouseEvent& event);
void HandleOnMouseLeave(wxMouseEvent& event);
#if wxUSE_MOUSEWHEEL
void HandleOnMouseWheel(wxMouseEvent& event);
#endif // wxUSE_MOUSEWHEEL
protected:
// get pointer to our scroll rect if we use it or NULL
@ -158,6 +160,10 @@ protected:
double m_scaleX;
double m_scaleY;
#if wxUSE_MOUSEWHEEL
int m_wheelRotation;
#endif // wxUSE_MOUSEWHEEL
};
// ----------------------------------------------------------------------------

View File

@ -25,8 +25,11 @@
#endif
#ifndef WX_PRECOMP
#include <wx/wx.h>
#include <wx/app.h>
#include <wx/frame.h>
#include <wx/menu.h>
#include <wx/log.h>
#include <wx/textctrl.h>
#endif
#if !wxUSE_MENUS
@ -41,9 +44,6 @@
WX_USE_THEME(win32);
WX_USE_THEME(gtk);
// not implemented yet
#define wxMessageBox
#endif // __WXUNIVERSAL__
// ----------------------------------------------------------------------------
@ -67,7 +67,10 @@ public:
void LogMenuEvent(const wxCommandEvent& event);
protected:
void OnQuit(wxCommandEvent& event);
void OnClearLog(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
void OnDummy(wxCommandEvent& event);
@ -90,19 +93,29 @@ public:
void OnGetLabelMenu(wxCommandEvent& event);
void OnSetLabelMenu(wxCommandEvent& event);
void OnRightDown(wxMouseEvent& event);
void OnRightUp(wxMouseEvent& event);
void OnUpdateCheckMenuItemUI(wxUpdateUIEvent& event);
void OnSize(wxSizeEvent& event);
private:
wxMenu *CreateDummyMenu(wxString *title);
wxMenuItem *GetLastMenuItem() const;
wxMenu *m_menu;
// the menu previously detached from the menubar (may be NULL)
wxMenu *m_menu;
// the count of dummy menus already created
size_t m_countDummy;
// the control used for logging
wxTextCtrl *m_textctrl;
// the previous log target
wxLog *m_logOld;
DECLARE_EVENT_TABLE()
};
@ -132,6 +145,7 @@ private:
enum
{
Menu_File_Quit = 100,
Menu_File_ClearLog,
Menu_MenuBar_Toggle = 200,
Menu_MenuBar_Append,
@ -172,7 +186,8 @@ enum
// ----------------------------------------------------------------------------
BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Menu_File_Quit, MyFrame::OnQuit)
EVT_MENU(Menu_File_Quit, MyFrame::OnQuit)
EVT_MENU(Menu_File_ClearLog, MyFrame::OnClearLog)
EVT_MENU(Menu_Help_About, MyFrame::OnAbout)
@ -198,7 +213,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_UPDATE_UI(Menu_Menu_Check, MyFrame::OnUpdateCheckMenuItemUI)
EVT_RIGHT_DOWN(MyFrame::OnRightDown)
EVT_RIGHT_UP(MyFrame::OnRightUp)
EVT_SIZE(MyFrame::OnSize)
END_EVENT_TABLE()
BEGIN_EVENT_TABLE(MyEvtHandler, wxEvtHandler)
@ -225,7 +242,7 @@ bool MyApp::OnInit()
frame->Show(TRUE);
#if wxUSE_STATUSBAR
frame->SetStatusText("Hello, wxWindows");
frame->SetStatusText("Welcome to wxWindows menu sample");
#endif // wxUSE_STATUSBAR
SetTopWindow(frame);
@ -244,19 +261,21 @@ MyFrame::MyFrame()
{
m_menu = NULL;
m_countDummy = 0;
m_logOld = NULL;
#if wxUSE_STATUSBAR
CreateStatusBar(2);
CreateStatusBar();
#endif // wxUSE_STATUSBAR
// create the menubar
wxMenu *fileMenu = new wxMenu;
fileMenu->Append(Menu_File_Quit, "E&xit\tAlt-X", "Quit toolbar sample");
wxMenuItem *itemBitmap = new wxMenuItem(fileMenu, Menu_File_Quit,
"Quit with &bitmap\tAlt-Q");
itemBitmap->SetBitmap(wxBitmap(copy_xpm));
fileMenu->Append(itemBitmap);
wxMenuItem *item = new wxMenuItem(fileMenu, Menu_File_ClearLog,
"Clear &log\tCtrl-L");
item->SetBitmap(copy_xpm);
fileMenu->Append(item);
fileMenu->AppendSeparator();
fileMenu->Append(Menu_File_Quit, "E&xit\tAlt-X", "Quit menu sample");
wxMenu *menubarMenu = new wxMenu;
menubarMenu->Append(Menu_MenuBar_Append, "&Append menu\tCtrl-A",
@ -320,6 +339,19 @@ MyFrame::MyFrame()
// intercept all menu events and log them in this custom event handler
PushEventHandler(new MyEvtHandler(this));
// create the log text window
m_textctrl = new wxTextCtrl(this, -1, _T(""),
wxDefaultPosition, wxDefaultSize,
wxTE_MULTILINE);
m_textctrl->SetEditable(FALSE);
m_logOld = wxLog::SetActiveTarget(new wxLogTextCtrl(m_textctrl));
wxLogMessage(_T("Brief explanations: the commands or the \"Menu\" menu\n")
_T("append/insert/delete items to/from the last menu.\n")
_T("The commands from \"Menubar\" menu work with the\n")
_T("menubar itself.\n")
_T("Right click the band below to test popup menus.\n"));
}
MyFrame::~MyFrame()
@ -328,14 +360,17 @@ MyFrame::~MyFrame()
// delete the event handler installed in ctor
PopEventHandler(TRUE);
// restore old logger
delete wxLog::SetActiveTarget(m_logOld);
}
wxMenu *MyFrame::CreateDummyMenu(wxString *title)
{
wxMenu *menu = new wxMenu;
menu->Append(Menu_Dummy_First, "First item\tCtrl-F1");
menu->Append(Menu_Dummy_First, "&First item\tCtrl-F1");
menu->AppendSeparator();
menu->Append(Menu_Dummy_Second, "Second item\tCtrl-F2", "", TRUE);
menu->Append(Menu_Dummy_Second, "&Second item\tCtrl-F2", "", TRUE);
if ( title )
{
@ -366,8 +401,9 @@ wxMenuItem *MyFrame::GetLastMenuItem() const
void MyFrame::LogMenuEvent(const wxCommandEvent& event)
{
int id = event.GetId();
if (!GetMenuBar()->FindItem(id))
if ( !GetMenuBar()->FindItem(id) )
return;
wxString msg = wxString::Format("Menu command %d", id);
if ( GetMenuBar()->FindItem(id)->IsCheckable() )
{
@ -375,9 +411,7 @@ void MyFrame::LogMenuEvent(const wxCommandEvent& event)
event.IsChecked() ? "" : "not ");
}
#if wxUSE_STATUSBAR
SetStatusText(msg, 1);
#endif // wxUSE_STATUSBAR
wxLogMessage(msg);
}
// ----------------------------------------------------------------------------
@ -389,11 +423,21 @@ void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event))
Close(TRUE);
}
void MyFrame::OnClearLog(wxCommandEvent& WXUNUSED(event))
{
m_textctrl->Clear();
}
void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
{
(void)wxMessageBox("wxWindows toolbar sample",
#ifdef __WXUNIVERSAL__
// wxMessageBox not implemented yet
wxLogMessage("wxWindows menu sample\n© 1999-2001 Vadim Zeitlin");
#else
(void)wxMessageBox("wxWindows menu sample\n© 1999-2001 Vadim Zeitlin",
"About wxWindows menu sample",
wxICON_INFORMATION);
#endif
}
void MyFrame::OnDeleteMenu(wxCommandEvent& WXUNUSED(event))
@ -442,15 +486,12 @@ void MyFrame::OnToggleMenu(wxCommandEvent& WXUNUSED(event))
}
}
void MyFrame::OnEnableMenu(wxCommandEvent& WXUNUSED(event))
void MyFrame::OnEnableMenu(wxCommandEvent& event)
{
wxMenuBar *mbar = GetMenuBar();
size_t count = mbar->GetMenuCount();
static bool s_enabled = TRUE;
s_enabled = !s_enabled;
mbar->EnableTop(count - 1, s_enabled);
mbar->EnableTop(count - 1, event.IsChecked());
}
void MyFrame::OnGetLabelMenu(wxCommandEvent& WXUNUSED(event))
@ -472,9 +513,7 @@ void MyFrame::OnSetLabelMenu(wxCommandEvent& WXUNUSED(event))
void MyFrame::OnDummy(wxCommandEvent& event)
{
wxString s;
s.Printf("Dummy item #%d", event.GetId() - Menu_Dummy_First + 1);
wxMessageBox(s, "Menu sample", wxICON_INFORMATION);
wxLogMessage("Dummy item #%d", event.GetId() - Menu_Dummy_First + 1);
}
void MyFrame::OnAppendMenuItem(wxCommandEvent& WXUNUSED(event))
@ -483,7 +522,7 @@ void MyFrame::OnAppendMenuItem(wxCommandEvent& WXUNUSED(event))
wxMenu *menu = menubar->GetMenu(menubar->GetMenuCount() - 1);
menu->AppendSeparator();
menu->Append(Menu_Dummy_Third, "Third dummy item\tCtrl-F3",
menu->Append(Menu_Dummy_Third, "&Third dummy item\tCtrl-F3",
"Checkable item", TRUE);
}
@ -493,7 +532,7 @@ void MyFrame::OnAppendSubMenu(wxCommandEvent& WXUNUSED(event))
wxMenu *menu = menubar->GetMenu(menubar->GetMenuCount() - 1);
menu->Append(Menu_Dummy_Last, "Dummy sub menu",
menu->Append(Menu_Dummy_Last, "&Dummy sub menu",
CreateDummyMenu(NULL), "Dummy sub menu help");
}
@ -645,15 +684,15 @@ void MyFrame::OnGetMenuItemInfo(wxCommandEvent& WXUNUSED(event))
}
}
void MyFrame::OnRightDown(wxMouseEvent &event )
void MyFrame::OnRightUp(wxMouseEvent &event)
{
wxMenu menu("Test popup");
menu.Append(Menu_Help_About, "&About");
menu.Append(Menu_Popup_Submenu, "Submenu", CreateDummyMenu(NULL));
menu.Append(Menu_Popup_ToBeDeleted, "To be deleted");
menu.Append(Menu_Popup_ToBeChecked, "To be checked", "", TRUE);
menu.Append(Menu_Popup_ToBeGreyed, "To be greyed");
menu.Append(Menu_Popup_Submenu, "&Submenu", CreateDummyMenu(NULL));
menu.Append(Menu_Popup_ToBeDeleted, "To be &deleted");
menu.Append(Menu_Popup_ToBeChecked, "To be &checked", "", TRUE);
menu.Append(Menu_Popup_ToBeGreyed, "To be &greyed");
menu.AppendSeparator();
menu.Append(Menu_File_Quit, "E&xit");
@ -661,12 +700,27 @@ void MyFrame::OnRightDown(wxMouseEvent &event )
menu.Check(Menu_Popup_ToBeChecked, TRUE);
menu.Enable(Menu_Popup_ToBeGreyed, FALSE);
PopupMenu( &menu, event.GetX(), event.GetY() );
PopupMenu(&menu, event.GetX(), event.GetY());
// test for destroying items in popup menus
#if 0
#if 0 // doesn't work in wxGTK!
menu.Destroy(Menu_Popup_Submenu);
PopupMenu( &menu, event.GetX(), event.GetY() );
#endif // 0
}
void MyFrame::OnSize(wxSizeEvent& event)
{
// leave a band below for popup menu testing
wxSize size = GetClientSize();
m_textctrl->SetSize(0, 0, size.x, (3*size.y)/4);
// this is really ugly but we have to do it as we can't just call
// event.Skip() because wxFrameBase would make the text control fill the
// entire frame then
#ifdef __WXUNIVERSAL__
PositionMenuBar();
#endif // __WXUNIVERSAL__
}

138
src/common/radiocmn.cpp Normal file
View File

@ -0,0 +1,138 @@
///////////////////////////////////////////////////////////////////////////////
// Name: src/common/radiocmn.cpp
// Purpose: wxRadioBox methods common to all ports
// Author: Vadim Zeitlin
// Modified by:
// Created: 03.06.01
// RCS-ID: $Id$
// Copyright: (c) 2001 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
// License: wxWindows license
///////////////////////////////////////////////////////////////////////////////
// ============================================================================
// declarations
// ============================================================================
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
#ifdef __GNUG__
#pragma implementation "radioboxbase.h"
#endif
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
#ifdef __BORLANDC__
#pragma hdrstop
#endif
#if wxUSE_RADIOBOX
#ifndef WX_PRECOMP
#include "wx/radiobox.h"
#endif //WX_PRECOMP
// ============================================================================
// implementation
// ============================================================================
int wxRadioBoxBase::GetNextItem(int item, wxDirection dir, long style) const
{
int count = GetCount(),
numCols = GetColumnCount(),
numRows = GetRowCount();
bool horz = (style & wxRA_SPECIFY_COLS) != 0;
switch ( dir )
{
case wxUP:
if ( horz )
{
item -= numCols;
}
else // vertical layout
{
if ( !item-- )
item = count - 1;
}
break;
case wxLEFT:
if ( horz )
{
if ( !item-- )
item = count - 1;
}
else // vertical layout
{
item -= numRows;
}
break;
case wxDOWN:
if ( horz )
{
item += numCols;
}
else // vertical layout
{
if ( ++item == count )
item = 0;
}
break;
case wxRIGHT:
if ( horz )
{
if ( ++item == count )
item = 0;
}
else // vertical layout
{
item += numRows;
}
break;
default:
wxFAIL_MSG( _T("unexpected wxDirection value") );
return -1;
}
// ensure that the item is in range [0..count)
if ( item < 0 )
{
// first map the item to the one in the same column but in the last row
item += count;
// now there are 2 cases: either it is the first item of the last row
// in which case we need to wrap again and get to the last item or we
// can just go to the previous item
if ( item % (horz ? numCols : numRows) )
item--;
else
item = count - 1;
}
else if ( item >= count )
{
// same logic as above
item -= count;
// ... except that we need to check if this is not the last item, not
// the first one
if ( (item + 1) % (horz ? numCols : numRows) )
item++;
else
item = 0;
}
wxASSERT_MSG( item < count && item >= 0,
_T("logic error in wxRadioBox::GetNextItem()") );
return item;
}
#endif // wxUSE_RADIOBOX

View File

@ -174,42 +174,49 @@ bool wxScrollHelperEvtHandler::ProcessEvent(wxEvent& event)
// ProcessEvent() above
event.Skip(FALSE);
switch ( event.GetEventType() )
wxEventType evType = event.GetEventType();
if ( evType == wxEVT_PAINT )
{
m_scrollHelper->HandleOnPaint((wxPaintEvent &)event);
return TRUE;
}
if ( evType == wxEVT_SCROLLWIN_TOP ||
evType == wxEVT_SCROLLWIN_BOTTOM ||
evType == wxEVT_SCROLLWIN_LINEUP ||
evType == wxEVT_SCROLLWIN_LINEDOWN ||
evType == wxEVT_SCROLLWIN_PAGEUP ||
evType == wxEVT_SCROLLWIN_PAGEDOWN ||
evType == wxEVT_SCROLLWIN_THUMBTRACK ||
evType == wxEVT_SCROLLWIN_THUMBRELEASE )
{
case wxEVT_SCROLLWIN_TOP:
case wxEVT_SCROLLWIN_BOTTOM:
case wxEVT_SCROLLWIN_LINEUP:
case wxEVT_SCROLLWIN_LINEDOWN:
case wxEVT_SCROLLWIN_PAGEUP:
case wxEVT_SCROLLWIN_PAGEDOWN:
case wxEVT_SCROLLWIN_THUMBTRACK:
case wxEVT_SCROLLWIN_THUMBRELEASE:
m_scrollHelper->HandleOnScroll((wxScrollWinEvent &)event);
return !event.GetSkipped();
}
case wxEVT_PAINT:
m_scrollHelper->HandleOnPaint((wxPaintEvent &)event);
return TRUE;
case wxEVT_SIZE:
m_scrollHelper->HandleOnSize((wxSizeEvent &)event);
return FALSE;
case wxEVT_CHAR:
m_scrollHelper->HandleOnChar((wxKeyEvent &)event);
return !event.GetSkipped();
case wxEVT_ENTER_WINDOW:
m_scrollHelper->HandleOnMouseEnter((wxMouseEvent &)event);
break;
case wxEVT_LEAVE_WINDOW:
m_scrollHelper->HandleOnMouseLeave((wxMouseEvent &)event);
break;
case wxEVT_MOUSEWHEEL:
m_scrollHelper->HandleOnMouseWheel((wxMouseEvent &)event);
break;
if ( evType == wxEVT_ENTER_WINDOW )
{
m_scrollHelper->HandleOnMouseEnter((wxMouseEvent &)event);
}
else if ( evType == wxEVT_LEAVE_WINDOW )
{
m_scrollHelper->HandleOnMouseLeave((wxMouseEvent &)event);
}
#if wxUSE_MOUSEWHEEL
else if ( evType == wxEVT_MOUSEWHEEL )
{
m_scrollHelper->HandleOnMouseWheel((wxMouseEvent &)event);
}
#endif // wxUSE_MOUSEWHEEL
else if ( evType == wxEVT_SIZE )
{
m_scrollHelper->HandleOnSize((wxSizeEvent &)event);
}
else if ( evType == wxEVT_CHAR )
{
m_scrollHelper->HandleOnChar((wxKeyEvent &)event);
return !event.GetSkipped();
}
return FALSE;
@ -937,6 +944,8 @@ void wxScrollHelper::HandleOnMouseLeave(wxMouseEvent& event)
}
}
#if wxUSE_MOUSEWHEEL
void wxScrollHelper::HandleOnMouseWheel(wxMouseEvent& event)
{
m_wheelRotation += event.GetWheelRotation();
@ -953,6 +962,8 @@ void wxScrollHelper::HandleOnMouseWheel(wxMouseEvent& event)
}
}
#endif // wxUSE_MOUSEWHEEL
// ----------------------------------------------------------------------------
// wxGenericScrolledWindow implementation
// ----------------------------------------------------------------------------

View File

@ -784,7 +784,7 @@ void wxHtmlWidgetCell::Draw(wxDC& dc, int x, int y, int view_y1, int view_y2)
c = c->GetParent();
}
((wxScrolledWindow*)(m_Wnd->GetParent()))->ViewStart(&stx, &sty);
((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty);
m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height);
wxHtmlCell::Draw(dc, x, y, view_y1, view_y2);
@ -804,7 +804,7 @@ void wxHtmlWidgetCell::DrawInvisible(wxDC& dc, int x, int y)
c = c->GetParent();
}
((wxScrolledWindow*)(m_Wnd->GetParent()))->ViewStart(&stx, &sty);
((wxScrolledWindow*)(m_Wnd->GetParent()))->GetViewStart(&stx, &sty);
m_Wnd->SetSize(absx - wxHTML_SCROLL_STEP * stx, absy - wxHTML_SCROLL_STEP * sty, m_Width, m_Height);
wxHtmlCell::DrawInvisible(dc, x, y);

View File

@ -150,7 +150,7 @@ bool wxHtmlWindow::SetPage(const wxString& source)
nodeG = (m_GlobalProcessors) ? m_GlobalProcessors->GetFirst() : NULL;
// VS: there are two lists, global and local, both of them sorted by
// priority. Since we have to go through _both_ lists with
// priority. Since we have to go through _both_ lists with
// decreasing priority, we "merge-sort" the lists on-line by
// processing that one of the two heads that has higher priority
// in every iteration
@ -205,15 +205,15 @@ bool wxHtmlWindow::LoadPage(const wxString& location)
wxYield(); Refresh(FALSE);
m_tmpCanDrawLocks++;
if (m_HistoryOn && (m_HistoryPos != -1))
if (m_HistoryOn && (m_HistoryPos != -1))
{
// store scroll position into history item:
int x, y;
ViewStart(&x, &y);
GetViewStart(&x, &y);
(*m_History)[m_HistoryPos].SetPos(y);
}
if (location[0] == wxT('#'))
if (location[0] == wxT('#'))
{
// local anchor:
wxString anch = location.Mid(1) /*1 to end*/;
@ -230,7 +230,7 @@ bool wxHtmlWindow::LoadPage(const wxString& location)
}
else if (location.Find(wxT('#')) != wxNOT_FOUND &&
(m_FS->GetPath() + location.BeforeFirst(wxT('#'))) == m_OpenedPage)
{
{
wxString anch = location.AfterFirst(wxT('#'));
m_tmpCanDrawLocks--;
rt_val = ScrollToAnchor(anch);
@ -242,7 +242,7 @@ bool wxHtmlWindow::LoadPage(const wxString& location)
needs_refresh = TRUE;
// load&display it:
if (m_RelatedStatusBar != -1)
{
{
m_RelatedFrame->SetStatusText(_("Connecting..."), m_RelatedStatusBar);
Refresh(FALSE);
}
@ -250,9 +250,7 @@ bool wxHtmlWindow::LoadPage(const wxString& location)
f = m_FS->OpenFile(location);
if (f == NULL)
{
wxString err;
{
wxLogError(_("Unable to open requested HTML document: %s"), location.c_str());
m_tmpCanDrawLocks--;
@ -261,12 +259,12 @@ bool wxHtmlWindow::LoadPage(const wxString& location)
}
else
{
{
wxNode *node;
wxString src = wxEmptyString;
if (m_RelatedStatusBar != -1)
{
{
wxString msg = _("Loading : ") + location;
m_RelatedFrame->SetStatusText(msg, m_RelatedStatusBar);
Refresh(FALSE);
@ -274,17 +272,17 @@ bool wxHtmlWindow::LoadPage(const wxString& location)
node = m_Filters.GetFirst();
while (node)
{
{
wxHtmlFilter *h = (wxHtmlFilter*) node->GetData();
if (h->CanRead(*f))
{
{
src = h->ReadFile(*f);
break;
}
node = node->GetNext();
}
if (src == wxEmptyString)
{
{
if (m_DefaultFilter == NULL) m_DefaultFilter = GetDefaultFilter();
src = m_DefaultFilter->ReadFile(*f);
}
@ -293,7 +291,7 @@ bool wxHtmlWindow::LoadPage(const wxString& location)
rt_val = SetPage(src);
m_OpenedPage = f->GetLocation();
if (f->GetAnchor() != wxEmptyString)
{
{
wxYield();
ScrollToAnchor(f->GetAnchor());
}
@ -384,7 +382,7 @@ void wxHtmlWindow::CreateLayout()
GetClientSize(&ClientWidth, &ClientHeight);
m_Cell->Layout(ClientWidth);
if (ClientHeight < m_Cell->GetHeight() + GetCharHeight())
{
{
SetScrollbars(
wxHTML_SCROLL_STEP, wxHTML_SCROLL_STEP,
m_Cell->GetWidth() / wxHTML_SCROLL_STEP,
@ -392,7 +390,7 @@ void wxHtmlWindow::CreateLayout()
/*cheat: top-level frag is always container*/);
}
else /* we fit into window, no need for scrollbars */
{
{
SetScrollbars(wxHTML_SCROLL_STEP, 1, m_Cell->GetWidth() / wxHTML_SCROLL_STEP, 0); // disable...
GetClientSize(&ClientWidth, &ClientHeight);
m_Cell->Layout(ClientWidth); // ...and relayout
@ -465,7 +463,7 @@ bool wxHtmlWindow::HistoryBack()
// store scroll position into history item:
int x, y;
ViewStart(&x, &y);
GetViewStart(&x, &y);
(*m_History)[m_HistoryPos].SetPos(y);
// go to previous position:
@ -558,7 +556,7 @@ void wxHtmlWindow::AddProcessor(wxHtmlProcessor *processor)
m_GlobalProcessors->DeleteContents(TRUE);
}
wxHtmlProcessorList::Node *node;
for (node = m_GlobalProcessors->GetFirst(); node; node = node->GetNext())
{
if (processor->GetPriority() > node->GetData()->GetPriority())
@ -624,7 +622,7 @@ void wxHtmlWindow::OnDraw(wxDC& dc)
#endif
#endif
dc.SetBackgroundMode(wxTRANSPARENT);
ViewStart(&x, &y);
GetViewStart(&x, &y);
while (upd)
{
@ -656,7 +654,7 @@ void wxHtmlWindow::OnMouseEvent(wxMouseEvent& event)
wxPoint pos;
wxString lnk;
ViewStart(&sx, &sy); sx *= wxHTML_SCROLL_STEP; sy *= wxHTML_SCROLL_STEP;
GetViewStart(&sx, &sy); sx *= wxHTML_SCROLL_STEP; sy *= wxHTML_SCROLL_STEP;
pos = event.GetPosition();
if (m_Cell)
@ -680,20 +678,20 @@ void wxHtmlWindow::OnIdle(wxIdleEvent& WXUNUSED(event))
int x, y;
wxHtmlLinkInfo *lnk;
ViewStart(&sx, &sy); sx *= wxHTML_SCROLL_STEP; sy *= wxHTML_SCROLL_STEP;
GetViewStart(&sx, &sy); sx *= wxHTML_SCROLL_STEP; sy *= wxHTML_SCROLL_STEP;
wxGetMousePosition(&x, &y);
ScreenToClient(&x, &y);
lnk = m_Cell->GetLink(sx + x, sy + y);
if (lnk != m_tmpLastLink)
{
{
if (lnk == NULL)
{
{
SetCursor(*s_cur_arrow);
if (m_RelatedStatusBar != -1) m_RelatedFrame->SetStatusText(wxEmptyString, m_RelatedStatusBar);
}
else
{
{
SetCursor(*s_cur_hand);
if (m_RelatedStatusBar != -1)
m_RelatedFrame->SetStatusText(lnk->GetHref(), m_RelatedStatusBar);

View File

@ -645,115 +645,11 @@ wxFontEncoding wxFont::GetEncoding() const
return M_FONTDATA->m_encoding;
}
// ----------------------------------------------------------------------------
// wxNativeFontInfo
// ----------------------------------------------------------------------------
bool wxNativeFontInfo::FromString(const wxString& s)
wxNativeFontInfo *wxFont::GetNativeFontInfo() const
{
long l;
if( M_FONTDATA->m_nativeFontInfoOk )
return new wxNativeFontInfo(M_FONTDATA->m_nativeFontInfo);
wxStringTokenizer tokenizer(s, _T(";"));
wxString token = tokenizer.GetNextToken();
//
// Ignore the version for now
//
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfHeight = l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfWidth = l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfEscapement = l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfOrientation = l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfWeight = l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfItalic = (BYTE)l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfUnderline = (BYTE)l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfStrikeOut = (BYTE)l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfCharSet = (BYTE)l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfOutPrecision = (BYTE)l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfClipPrecision = (BYTE)l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfQuality = (BYTE)l;
token = tokenizer.GetNextToken();
if ( !token.ToLong(&l) )
return FALSE;
lf.lfPitchAndFamily = (BYTE)l;
token = tokenizer.GetNextToken();
if(!token)
return FALSE;
wxStrcpy(lf.lfFaceName, token.c_str());
return TRUE;
}
wxString wxNativeFontInfo::ToString() const
{
wxString s;
s.Printf(_T("%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%d;%s"),
0, // version, in case we want to change the format later
lf.lfHeight,
lf.lfWidth,
lf.lfEscapement,
lf.lfOrientation,
lf.lfWeight,
lf.lfItalic,
lf.lfUnderline,
lf.lfStrikeOut,
lf.lfCharSet,
lf.lfOutPrecision,
lf.lfClipPrecision,
lf.lfQuality,
lf.lfPitchAndFamily,
lf.lfFaceName);
return s;
return 0;
}

View File

@ -1992,7 +1992,8 @@ static void wxConvertToMSWListItem(const wxListCtrl *ctrl, wxListItem& info, LV_
}
else
{
lvItem.pszText = info.m_text;
// pszText is not const, hence the cast
lvItem.pszText = (wxChar *)info.m_text.c_str();
if ( lvItem.pszText )
lvItem.cchTextMax = info.m_text.Length();
else

View File

@ -196,7 +196,8 @@ bool wxNotebook::Create(wxWindow *parent,
// dtor
wxNotebook::~wxNotebook()
{
if (m_bOwnsImageList) delete m_pImageList;
if (m_bOwnsImageList)
delete m_imageList;
}
// ----------------------------------------------------------------------------

View File

@ -85,9 +85,11 @@ static wxString ConvertStringFromOle(BSTR bStr);
static int rgMonthDays[13] =
{0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365};
#if wxUSE_TIMEDATE
static BOOL OleDateFromTm(WORD wYear, WORD wMonth, WORD wDay,
WORD wHour, WORD wMinute, WORD wSecond, DATE& dtDest);
static BOOL TmFromOleDate(DATE dtSrc, struct tm& tmDest);
#endif // wxUSE_TIMEDATE
static void ClearVariant(VARIANTARG *pvarg) ;
static void ReleaseVariant(VARIANTARG *pvarg) ;

View File

@ -905,14 +905,7 @@ LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd,
bool processed = TRUE;
bool horz = (radiobox->GetWindowStyle() & wxRA_SPECIFY_COLS) != 0;
int num = radiobox->Number(),
rows = radiobox->GetNumVer(),
cols = radiobox->GetNumHor();
int selOld = radiobox->GetSelection();
int selNew = selOld;
wxDirection dir;
switch ( wParam )
{
case VK_UP:
@ -948,17 +941,6 @@ LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd,
radiobox->GetWindowStyle()
);
int dim = horz ? cols : rows;
if ( selNew % dim == 0 )
{
selNew -= dim - 1;
}
else
{
selNew++;
}
}
if ( selNew != selOld )
{
radiobox->SetSelection(selNew);
@ -974,45 +956,45 @@ LRESULT APIENTRY _EXPORT wxRadioBtnWndProc(HWND hwnd,
#ifdef __WIN32__
case WM_HELP:
{
wxRadioBox *radiobox = (wxRadioBox *)
::GetWindowLong(hwnd, GWL_USERDATA);
wxCHECK_MSG( radiobox, 0, wxT("radio button without radio box?") );
bool processed = TRUE;
HELPINFO* info = (HELPINFO*) lParam;
// Don't yet process menu help events, just windows
if (info->iContextType == HELPINFO_WINDOW)
{
wxWindow* subjectOfHelp = radiobox;
bool eventProcessed = FALSE;
while (subjectOfHelp && !eventProcessed)
wxRadioBox *radiobox = (wxRadioBox *)
::GetWindowLong(hwnd, GWL_USERDATA);
wxCHECK_MSG( radiobox, 0, wxT("radio button without radio box?") );
bool processed = TRUE;
HELPINFO* info = (HELPINFO*) lParam;
// Don't yet process menu help events, just windows
if (info->iContextType == HELPINFO_WINDOW)
{
wxHelpEvent helpEvent(wxEVT_HELP, subjectOfHelp->GetId(), wxPoint(info->MousePos.x, info->MousePos.y) ) ; // info->iCtrlId);
helpEvent.SetEventObject(radiobox);
eventProcessed = radiobox->GetEventHandler()->ProcessEvent(helpEvent);
wxWindow* subjectOfHelp = radiobox;
bool eventProcessed = FALSE;
while (subjectOfHelp && !eventProcessed)
{
wxHelpEvent helpEvent(wxEVT_HELP, subjectOfHelp->GetId(), wxPoint(info->MousePos.x, info->MousePos.y) ) ; // info->iCtrlId);
helpEvent.SetEventObject(radiobox);
eventProcessed = radiobox->GetEventHandler()->ProcessEvent(helpEvent);
// Go up the window hierarchy until the event is handled (or not)
subjectOfHelp = subjectOfHelp->GetParent();
// Go up the window hierarchy until the event is handled (or not)
subjectOfHelp = subjectOfHelp->GetParent();
}
processed = eventProcessed;
}
processed = eventProcessed;
}
else if (info->iContextType == HELPINFO_MENUITEM)
{
wxHelpEvent helpEvent(wxEVT_HELP, info->iCtrlId) ;
helpEvent.SetEventObject(radiobox);
processed = radiobox->GetEventHandler()->ProcessEvent(helpEvent);
}
else processed = FALSE;
else if (info->iContextType == HELPINFO_MENUITEM)
{
wxHelpEvent helpEvent(wxEVT_HELP, info->iCtrlId) ;
helpEvent.SetEventObject(radiobox);
processed = radiobox->GetEventHandler()->ProcessEvent(helpEvent);
}
else processed = FALSE;
if (processed)
return 0;
if (processed)
return 0;
break;
}
#endif
break;
}
#endif // __WIN32__
}
return ::CallWindowProc(CASTWNDPROC s_wndprocRadioBtn, hwnd, message, wParam, lParam);

View File

@ -166,8 +166,6 @@ static bool IsMouseInWindow(HWND hwnd);
// event tables
// ---------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxWindow, wxWindowBase)
// in wxUniv/MSW this class is abstract because it doesn't have DoPopupMenu()
// method
#ifdef __WXUNIVERSAL__