Fixes to wxMotif scrolling and colours (wxTreeCtrl/wxListCtrl now seem to work

well, ta-ra!); fixes to thread.cpp since constants were changed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1275 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1998-12-28 21:32:10 +00:00
parent cffee23b4f
commit 88150e6073
14 changed files with 239 additions and 180 deletions

View File

@@ -42,7 +42,7 @@ samples/mfc/make_cw.mcp
samples/minimal/make_cw.mcp
samples/minimal/make_cw.mcp
samples/minifram/make_cw.mcp
samples/nativdlg/make_cw.mcp

View File

@@ -64,8 +64,8 @@ samples/mfc/MfcVC.dsw
samples/minimal/MinimalVC.dsp
samples/minimal/MinimalVC.dsw
samples/minimal/MiniframVC.dsp
samples/minimal/MiniframVC.dsw
samples/minifram/MiniframVC.dsp
samples/minifram/MiniframVC.dsw
samples/nativdlg/NativdlgVC.dsp
samples/nativdlg/NativdlgVC.dsw

View File

@@ -14,6 +14,7 @@ erase %dest\wx200*.zip
cd %src
echo Zipping...
zip32 -@ %dest\wx200gen.zip < %src\distrib\msw\generic.rsp
zip32 -@ %dest\wx200msw.zip < %src\distrib\msw\msw.rsp
zip32 -@ %dest\wx200gtk.zip < %src\distrib\msw\gtk.rsp
@@ -28,6 +29,7 @@ zip32 -@ %dest\wx200wrd.zip < %src\distrib\msw\wx_word.rsp
rem VC++ project files
zip32 -@ %dest\wx200vc.zip < %src\distrib\msw\vc.rsp
rem CodeWarrior project files
zip32 -@ %dest\wx200cw.zip < %src\distrib\msw\cw.rsp

View File

@@ -90,3 +90,13 @@ More recently:
- Controls sample runs, though wxRadioBox doesn't appear and
the notebook flickers for a while.
- Cured wxTreeCtrl bug: now works pretty well!
28/12/98
--------
- Cured scrolling problem: scrollbars now show/hide themselves
without (permanently) resizing the window.
- Removed some commented-out lines in wxScrolledWindow::AdjustScrollbars
that disabled scrollbar paging.
- Set background colour of drawing area in wxWindow, so e.g. wxListCtrl
colours correctly.

View File

@@ -1,7 +1,7 @@
wxMotif TODO
------------
Updated: 12/11/98
Updated: 28/12/98
-------------------------------o-------------------------
@@ -40,33 +40,10 @@ High Priority
- wxSpinButton
- Tidy dialogs such as the colour and font selectors.
- Use generic wxTreeCtrl, wxListCtrl: debug and enhance these.
We're close to having these working: mostly scrolling to work out.
- Find out why modal dialogs give a grab warning.
- wxSystemSettings. Eventually, should have control panel-like utility
to change colours/fonts but meanwhile should maybe read them
from a file.
- wxThread (hopefully, similar to wxGTK)
- wxGrid: scrollbars don't hide; problem with cell selection.
- MDI: seems to be broken for a more complex application I'm testing.
Frame decorations don't draw properly, and a child window doesn't
process events properly. So probably we should have an alternative
implementation that uses tabs, a la wxGTK. The system menu could
be implemented using a pop-up menu that applies to the currently
active window.
- Controls in a wxToolBar don't work. Probably due to form layout
problems; the workaround is to use a separate panel for controls.
- Miscellaneous events.
- Thread classes (copy wxGTK's).
- Write makefiles for all samples and utilities.
- Create some samples for testing.
@@ -75,14 +52,11 @@ Low Priority
------------
- Better makefile system that can put objects in different dirs.
Use wxGTK config system? It's really complex to debug and
doesn't offer a way of compiling apps outside the wxWin
hierarchy.
- Extra wxBitmap formats: PNG, BMP. Could use old wxWin 1.68
wxImage code (derived from XV) for BMP/GIF but it's very bloated. However,
when implemented as extra bitmap handlers, the code won't be linked
unless needed.
unless needed. Update: see if wxImage can handle these formats.
- Print/preview framework in print.cpp (see wxGTK).
@@ -107,10 +81,6 @@ Low Priority
- add the driver code to src/motif/helphtml.cpp (a frame, toolbar,
history list).
- Optimize screen refresh for non-native widgets, e.g. wxWindow
created with Create(), using technique in flicker patch for 1.68
(see JACS for latest patch).
- Copy and paste, drag and drop. Use a standard X drag
and drop standard - see http://www.cco.caltech.edu/~jafl/xdnd/
or use Motif drag and drop as described here:
@@ -130,19 +100,11 @@ Low Priority
- Reimplement combobox using Lesstif's widget (avoiding GPL'ed
widget currently used).
- Write generic wxDirDialog (directory selector)
- Use native Motif dialogs for wxMessageBox
- Miscellaneous classes e.g. wxJoystick (identical to GTK's one for
Linux)
- Blit scaling
- Could eventually alter the MDI widgets to be more Windows-like
-- currently it's half-hearted (menus are on children, whereas
they should replace the main parent frame menu).
- Get ODBC classes and sample working.
- Work out why wxTextCtrl doesn't work as a stream buffer under

View File

@@ -275,6 +275,10 @@ public:
virtual void SetScrollbar(int orient, int pos, int thumbVisible,
int range, bool refresh = TRUE);
// Helper functions for Motif
void CreateScrollbar(int orientation);
void DestroyScrollbar(int orientation);
virtual void SetScrollPos(int orient, int pos, bool refresh = TRUE);
virtual int GetScrollPos(int orient) const;
virtual int GetScrollRange(int orient) const;
@@ -686,5 +690,19 @@ wxWindow* WXDLLEXPORT wxGetActiveWindow();
WXDLLEXPORT_DATA(extern wxList) wxTopLevelWindows;
// A little class to switch off size optimization while an instance of the object
// exists
class WXDLLEXPORT wxNoOptimize: public wxObject
{
public:
wxNoOptimize();
~wxNoOptimize();
static bool CanOptimize();
protected:
static int m_count;
};
#endif
// _WX_WINDOW_H_

View File

@@ -73,6 +73,8 @@
*/
// ---------------------------------------------------------------------------
WXDLLEXPORT_DATA(extern const char*) wxEmptyString;
/// checks whether the passed in pointer is NULL and if the string is empty
inline bool WXDLLEXPORT IsEmpty(const char *p) { return !p || !*p; }

View File

@@ -469,22 +469,13 @@ void wxSocketBase::Discard()
bool wxSocketBase::GetPeer(wxSockAddress& addr_man) const
{
struct sockaddr my_addr;
#ifdef __WXMSW__
int len_addr = sizeof(my_addr);
#else
size_t len_addr = sizeof(my_addr);
#endif
if (m_fd < 0)
return FALSE;
if (getpeername(m_fd, (struct sockaddr *)&my_addr,
#ifdef __WXMSW__
&len_addr)
#else
(socklen_t *)&len_addr)
#endif
< 0)
&len_addr) < 0)
return FALSE;
addr_man.Disassemble(&my_addr, len_addr);
@@ -494,22 +485,13 @@ bool wxSocketBase::GetPeer(wxSockAddress& addr_man) const
bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const
{
struct sockaddr my_addr;
#ifdef __WXMSW__
int len_addr = sizeof(my_addr);
#else
size_t len_addr = sizeof(my_addr);
#endif
if (m_fd < 0)
return FALSE;
if (getsockname(m_fd, (struct sockaddr *)&my_addr,
#ifdef __WXMSW__
&len_addr)
#else
(socklen_t *)&len_addr)
#endif
< 0)
&len_addr) < 0)
return FALSE;

View File

@@ -121,7 +121,6 @@ void wxScrolledWindow::OnScroll(wxScrollEvent& event)
int nScrollInc = CalcScrollInc(event);
if (nScrollInc == 0) return;
// TODO: should we store the scroll position here as well as in wxWindow?
if (orient == wxHORIZONTAL)
{
int newPos = m_xScrollPosition + nScrollInc;
@@ -133,19 +132,6 @@ void wxScrolledWindow::OnScroll(wxScrollEvent& event)
SetScrollPos(wxVERTICAL, newPos, TRUE );
}
/*
// TODO We need to multiply the ScrollWindow amount by the scaling
// factor, but how do we know what this is in wxWin 2.0???
float scaleX = 1.0;
float scaleY = 1.0;
if ( this->IsKindOf(CLASSINFO(wxCanvas)) )
{
wxDC* dc = ((wxCanvas *)this)->GetDC();
dc->GetUserScale(&scaleX, &scaleY);
}
*/
if (orient == wxHORIZONTAL)
{
m_xScrollPosition += nScrollInc;
@@ -234,6 +220,7 @@ int wxScrolledWindow::CalcScrollInc(wxScrollEvent& event)
break;
}
}
if (orient == wxHORIZONTAL)
{
if (m_xScrollPixelsPerLine > 0) {
@@ -295,7 +282,8 @@ void wxScrolledWindow::AdjustScrollbars(void)
m_xScrollPosition = wxMax( 0, m_xScrollPosition );
SetScrollbar(wxHORIZONTAL, m_xScrollPosition, noPagePositions, m_xScrollLines);
// SetScrollPageSize(wxHORIZONTAL, noPagePositions);
// The amount by which we scroll when paging
SetScrollPageSize(wxHORIZONTAL, noPagePositions);
}
else
{
@@ -316,7 +304,8 @@ void wxScrolledWindow::AdjustScrollbars(void)
m_yScrollPosition = wxMax( 0, m_yScrollPosition );
SetScrollbar(wxVERTICAL, m_yScrollPosition, noPagePositions, m_yScrollLines);
// SetScrollPageSize(wxVERTICAL, noPagePositions);
// The amount by which we scroll when paging
SetScrollPageSize(wxVERTICAL, noPagePositions);
}
else
{

Binary file not shown.

View File

@@ -515,7 +515,8 @@ void wxDialog::EndModal(int retCode)
SetReturnCode(retCode);
XtRemoveGrab((Widget) m_mainWidget);
// Strangely, we don't seem to need this now.
// XtRemoveGrab((Widget) m_mainWidget);
Show(FALSE);

View File

@@ -57,14 +57,14 @@ wxMutexError wxMutex::Lock()
{
// TODO
m_locked++;
return MUTEX_NO_ERROR;
return wxMUTEX_NO_ERROR;
}
wxMutexError wxMutex::TryLock()
{
// TODO
m_locked++;
return MUTEX_NO_ERROR;
return wxMUTEX_NO_ERROR;
}
wxMutexError wxMutex::Unlock()
@@ -73,7 +73,7 @@ wxMutexError wxMutex::Unlock()
m_locked--;
// TODO
return MUTEX_NO_ERROR;
return wxMUTEX_NO_ERROR;
}
class wxConditionInternal {
@@ -134,25 +134,25 @@ public:
wxThreadError wxThread::Create()
{
// TODO
return THREAD_NO_ERROR;
return wxTHREAD_NO_ERROR;
}
wxThreadError wxThread::Destroy()
{
// TODO
return THREAD_NO_ERROR;
return wxTHREAD_NO_ERROR;
}
wxThreadError wxThread::Pause()
{
// TODO
return THREAD_NO_ERROR;
return wxTHREAD_NO_ERROR;
}
wxThreadError wxThread::Resume()
{
// TODO
return THREAD_NO_ERROR;
return wxTHREAD_NO_ERROR;
}
void wxThread::Exit(void *status)
@@ -193,11 +193,13 @@ unsigned long wxThread::GetID() const
return 0;
}
/*
wxThread *wxThread::GetThreadFromID(unsigned long id)
{
// TODO
return NULL;
}
*/
bool wxThread::IsAlive() const
{

View File

@@ -368,6 +368,7 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
m_scrolledWindow = (WXWidget) XtVaCreateManagedWidget ("scrolledWindow",
xmScrolledWindowWidgetClass, m_borderWidget ? (Widget) m_borderWidget : parentWidget,
XmNresizePolicy, XmRESIZE_NONE,
XmNspacing, 0,
XmNscrollingPolicy, XmAPPLICATION_DEFINED,
// XmNscrollBarDisplayPolicy, XmAS_NEEDED,
@@ -420,8 +421,40 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
XtAddEventHandler ((Widget) m_drawingArea, PointerMotionHintMask | EnterWindowMask | LeaveWindowMask | FocusChangeMask,
False, (XtEventHandler) wxCanvasEnterLeave, (XtPointer) this);
// Scrolled widget needs to have its colour changed or we get
// a little blue square where the scrollbars abutt
wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
DoChangeBackgroundColour(m_scrolledWindow, backgroundColour, TRUE);
DoChangeBackgroundColour(m_drawingArea, backgroundColour, TRUE);
XmScrolledWindowSetAreas ((Widget) m_scrolledWindow, (Widget) 0, (Widget) 0, (Widget) m_drawingArea);
/*
if (m_hScrollBar)
XtRealizeWidget ((Widget) m_hScrollBar);
if (m_vScrollBar)
XtRealizeWidget ((Widget) m_vScrollBar);
*/
// Without this, the cursor may not be restored properly
// (e.g. in splitter sample).
SetCursor(*wxSTANDARD_CURSOR);
SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
SetSize(pos.x, pos.y, size.x, size.y);
return TRUE;
}
// Helper function
void wxWindow::CreateScrollbar(int orientation)
{
if (!m_drawingArea)
return;
XtVaSetValues((Widget) m_scrolledWindow, XmNresizePolicy, XmRESIZE_NONE, NULL);
// Add scrollbars if required
if (m_windowStyle & wxHSCROLL)
if (orientation == wxHORIZONTAL)
{
Widget hScrollBar = XtVaCreateManagedWidget ("hsb",
xmScrollBarWidgetClass, (Widget) m_scrolledWindow,
@@ -446,9 +479,16 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
DoChangeBackgroundColour(m_hScrollBar, backgroundColour, TRUE);
XtRealizeWidget(hScrollBar);
XtVaSetValues((Widget) m_scrolledWindow,
XmNhorizontalScrollBar, (Widget) m_hScrollBar,
NULL);
m_hScroll = TRUE;
}
if (m_windowStyle & wxVSCROLL)
if (orientation == wxVERTICAL)
{
Widget vScrollBar = XtVaCreateManagedWidget ("vsb",
xmScrollBarWidgetClass, (Widget) m_scrolledWindow,
@@ -472,29 +512,54 @@ bool wxWindow::Create(wxWindow *parent, wxWindowID id,
wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
DoChangeBackgroundColour(m_vScrollBar, backgroundColour, TRUE);
XtRealizeWidget(vScrollBar);
XtVaSetValues((Widget) m_scrolledWindow,
XmNverticalScrollBar, (Widget) m_vScrollBar,
NULL);
m_vScroll = TRUE;
}
// Scrolled widget needs to have its colour changed or we get
// a little blue square where the scrollbars abutt
wxColour backgroundColour = wxSystemSettings::GetSystemColour(wxSYS_COLOUR_3DFACE);
DoChangeBackgroundColour(m_scrolledWindow, backgroundColour, TRUE);
if (m_hScrollBar || m_vScrollBar)
XmScrolledWindowSetAreas ((Widget) m_scrolledWindow, (Widget) m_hScrollBar, (Widget) m_vScrollBar, (Widget) m_drawingArea);
XtVaSetValues((Widget) m_scrolledWindow, XmNresizePolicy, XmRESIZE_ANY, NULL);
}
void wxWindow::DestroyScrollbar(int orientation)
{
if (!m_drawingArea)
return;
XtVaSetValues((Widget) m_scrolledWindow, XmNresizePolicy, XmRESIZE_NONE, NULL);
// Add scrollbars if required
if (orientation == wxHORIZONTAL)
{
if (m_hScrollBar)
XtRealizeWidget ((Widget) m_hScrollBar);
{
XtDestroyWidget((Widget) m_hScrollBar);
}
m_hScrollBar = (WXWidget) 0;
m_hScroll = FALSE;
XtVaSetValues((Widget) m_scrolledWindow,
XmNhorizontalScrollBar, (Widget) 0,
NULL);
}
if (orientation == wxVERTICAL)
{
if (m_vScrollBar)
XtRealizeWidget ((Widget) m_vScrollBar);
{
XtDestroyWidget((Widget) m_vScrollBar);
}
m_vScrollBar = (WXWidget) 0;
m_vScroll = TRUE;
// Without this, the cursor may not be restored properly
// (e.g. in splitter sample).
SetCursor(*wxSTANDARD_CURSOR);
SetFont(wxSystemSettings::GetSystemFont(wxSYS_DEFAULT_GUI_FONT));
SetSize(pos.x, pos.y, size.x, size.y);
XtVaSetValues((Widget) m_scrolledWindow,
XmNverticalScrollBar, (Widget) 0,
NULL);
return TRUE;
}
XtVaSetValues((Widget) m_scrolledWindow, XmNresizePolicy, XmRESIZE_ANY, NULL);
}
void wxWindow::SetFocus()
@@ -693,6 +758,11 @@ void wxWindow::SetSize(int x, int y, int width, int height, int sizeFlags)
else if (width == oldW && height == oldH)
useOldSize = TRUE;
if (!wxNoOptimize::CanOptimize())
{
useOldSize = FALSE; useOldPos = FALSE;
}
if (useOldPos && useOldSize)
return;
@@ -1166,9 +1236,8 @@ void wxWindow::SetScrollPos(int orient, int pos, bool WXUNUSED(refresh))
void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
int range, bool WXUNUSED(refresh))
{
Widget scrollBar = (Widget) ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar );
if (!scrollBar)
return;
int oldW, oldH;
GetSize(& oldW, & oldH);
if (range == 0)
range = 1;
@@ -1178,7 +1247,49 @@ void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
if (thumbVisible > range)
thumbVisible = range;
XtVaSetValues(scrollBar,
// Save the old state to see if it changed
WXWidget oldScrollBar = ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar );
if (orient == wxHORIZONTAL)
{
if (thumbVisible == range)
{
if (m_hScrollBar)
DestroyScrollbar(wxHORIZONTAL);
}
else
{
if (!m_hScrollBar)
CreateScrollbar(wxHORIZONTAL);
}
}
if (orient == wxVERTICAL)
{
if (thumbVisible == range)
{
if (m_vScrollBar)
DestroyScrollbar(wxVERTICAL);
}
else
{
if (!m_vScrollBar)
CreateScrollbar(wxVERTICAL);
}
}
WXWidget newScrollBar = ((orient == wxHORIZONTAL) ? m_hScrollBar : m_vScrollBar );
if (oldScrollBar != newScrollBar)
{
// This is important! Without it, scrollbars misbehave
// badly.
XtUnrealizeWidget((Widget) m_scrolledWindow);
XmScrolledWindowSetAreas ((Widget) m_scrolledWindow, (Widget) m_hScrollBar, (Widget) m_vScrollBar, (Widget) m_drawingArea);
XtRealizeWidget((Widget) m_scrolledWindow);
XtManageChild((Widget) m_scrolledWindow);
}
if (newScrollBar)
XtVaSetValues((Widget) newScrollBar,
XmNvalue, pos,
XmNminimum, 0,
XmNmaximum, range,
@@ -1190,65 +1301,12 @@ void wxWindow::SetScrollbar(int orient, int pos, int thumbVisible,
else
m_scrollPosY = pos;
// See notes below. If the scrollbars didn't leave a ghost presence,
// this would be OK.
#if 0
if (range == thumbVisible)
{
XtUnmanageChild(scrollBar);
if (orient == wxHORIZONTAL)
XtVaSetValues((Widget) m_scrolledWindow,
XmNhorizontalScrollBar, (Widget) 0,
NULL);
else
XtVaSetValues((Widget) m_scrolledWindow,
XmNverticalScrollBar, (Widget) 0,
NULL);
}
else
{
XtManageChild(scrollBar);
if (orient == wxHORIZONTAL)
XtVaSetValues((Widget) m_scrolledWindow,
XmNhorizontalScrollBar, (Widget) m_hScrollBar,
NULL);
else
XtVaSetValues((Widget) m_scrolledWindow,
XmNverticalScrollBar, (Widget) m_vScrollBar,
NULL);
}
#else
// Either both scrollbars are on, or they are off,
// otherwise you get a gap where one scrollbar
// isn't shown. TODO: try to eliminate this problem.
if ((GetScrollThumb(wxHORIZONTAL) >= GetScrollRange(wxHORIZONTAL)) &&
(GetScrollThumb(wxVERTICAL) >= GetScrollRange(wxVERTICAL)))
{
if (m_hScrollBar)
XtUnmanageChild((Widget) m_hScrollBar);
if (m_vScrollBar)
XtUnmanageChild((Widget) m_vScrollBar);
XtVaSetValues((Widget) m_scrolledWindow,
XmNhorizontalScrollBar, (Widget) 0,
XmNverticalScrollBar, (Widget) 0,
NULL);
// XmScrolledWindowSetAreas((Widget) m_scrolledWindow,
// (Widget) 0, (Widget) 0, (Widget) m_drawingArea);
}
else
{
if (m_hScrollBar)
XtManageChild((Widget) m_hScrollBar);
if (m_vScrollBar)
XtManageChild((Widget) m_vScrollBar);
XtVaSetValues((Widget) m_scrolledWindow,
XmNhorizontalScrollBar, (Widget) m_hScrollBar,
XmNverticalScrollBar, (Widget) m_vScrollBar,
NULL);
// XmScrolledWindowSetAreas((Widget) m_scrolledWindow,
// (Widget) m_hScrollBar, (Widget) m_vScrollBar, (Widget) m_drawingArea);
}
#endif
int newW, newH;
GetSize(& newW, & newH);
// Adjusting scrollbars can resize the canvas accidentally
if (newW != oldW || newH != oldH)
SetSize(-1, -1, oldW, oldH);
}
// Does a physical scroll
@@ -2644,6 +2702,11 @@ void wxWindow::CanvasSetSize (int x, int y, int w, int h, int sizeFlags)
else if (w == oldW && h == oldH)
useOldSize = TRUE;
if (!wxNoOptimize::CanOptimize())
{
useOldSize = FALSE; useOldPos = FALSE;
}
if (useOldPos && useOldSize)
return;
@@ -2704,7 +2767,7 @@ void wxWindow::CanvasSetSize (int x, int y, int w, int h, int sizeFlags)
w -= (spacing + wsbar);
XtVaSetValues ((Widget) m_drawingArea, XmNwidth, w, NULL);
// XtVaSetValues ((Widget) m_drawingArea, XmNwidth, w, NULL);
}
if (h > -1)
{
@@ -2735,7 +2798,8 @@ void wxWindow::CanvasSetSize (int x, int y, int w, int h, int sizeFlags)
h -= (spacing + wsbar);
XtVaSetValues ((Widget) m_drawingArea, XmNheight, h, NULL);
// XtVaSetValues ((Widget) m_drawingArea, XmNheight, h, NULL);
}
}
@@ -3202,12 +3266,16 @@ void wxWindow::ChangeBackgroundColour()
{
if (GetMainWidget())
DoChangeBackgroundColour(GetMainWidget(), m_backgroundColour);
if (m_scrolledWindow && (GetMainWidget() != m_scrolledWindow))
DoChangeBackgroundColour(m_scrolledWindow, m_backgroundColour);
}
void wxWindow::ChangeForegroundColour()
{
if (GetMainWidget())
DoChangeForegroundColour(GetMainWidget(), m_foregroundColour);
if (m_scrolledWindow && (GetMainWidget() != m_scrolledWindow))
DoChangeForegroundColour(m_scrolledWindow, m_foregroundColour);
}
// Change a widget's foreground and background colours.
@@ -3370,3 +3438,24 @@ bool wxWindow::ProcessAccelerator(wxKeyEvent& event)
return FALSE;
}
/*
* wxNoOptimize: switch off size optimization
*/
int wxNoOptimize::m_count = 0;
wxNoOptimize::wxNoOptimize()
{
m_count ++;
}
wxNoOptimize::~wxNoOptimize()
{
m_count --;
}
bool wxNoOptimize::CanOptimize()
{
return (m_count == 0);
}

View File

@@ -57,14 +57,14 @@ wxMutexError wxMutex::Lock()
{
// TODO
m_locked++;
return MUTEX_NO_ERROR;
return wxMUTEX_NO_ERROR;
}
wxMutexError wxMutex::TryLock()
{
// TODO
m_locked++;
return MUTEX_NO_ERROR;
return wxMUTEX_NO_ERROR;
}
wxMutexError wxMutex::Unlock()
@@ -73,7 +73,7 @@ wxMutexError wxMutex::Unlock()
m_locked--;
// TODO
return MUTEX_NO_ERROR;
return wxMUTEX_NO_ERROR;
}
class wxConditionInternal {
@@ -134,25 +134,25 @@ public:
wxThreadError wxThread::Create()
{
// TODO
return THREAD_NO_ERROR;
return wxTHREAD_NO_ERROR;
}
wxThreadError wxThread::Destroy()
{
// TODO
return THREAD_NO_ERROR;
return wxTHREAD_NO_ERROR;
}
wxThreadError wxThread::Pause()
{
// TODO
return THREAD_NO_ERROR;
return wxTHREAD_NO_ERROR;
}
wxThreadError wxThread::Resume()
{
// TODO
return THREAD_NO_ERROR;
return wxTHREAD_NO_ERROR;
}
void wxThread::Exit(void *status)
@@ -193,11 +193,13 @@ unsigned long wxThread::GetID() const
return 0;
}
/*
wxThread *wxThread::GetThreadFromID(unsigned long id)
{
// TODO
return NULL;
}
*/
bool wxThread::IsAlive() const
{