//
void OnSpinChange(wxSpinEvent& rEvent);
void OnChar(wxKeyEvent& rEvent);
+ void OnSetFocus(wxFocusEvent& rEvent);
WXHWND m_hWndBuddy;
static wxArraySpins m_svAllSpins;
);
break;
}
+ //
+ // No need to destroy the stock cursors
+ //
+ ((wxCursorRefData *)m_refData)->m_bDestroyCursor = FALSE;
} // end of wxCursor::wxCursor
// Global cursor setting
rd ..\common\$D
rd ..\html\$D
rd ..\os2\$D
- del $(LIBTARGET)
+ del ..\lib\wx.lib
!if "$(WXMAKINGDLL)" == "1"
- erase /N ..\..\lib\wx25.lib
+ del ..\lib\wx25.lib
!endif
cleanall: clean
wxCHECK_RET(pNodeThis, _T("radio button not a child of its parent?"));
- //
- // Turn off all radio buttons before this one
//
- for ( wxWindowList::Node* pNodeBefore = pNodeThis->GetPrevious();
- pNodeBefore;
- pNodeBefore = pNodeBefore->GetPrevious() )
+ // If it's not the first item of the group ...
+ //
+ if ( !HasFlag(wxRB_GROUP) )
{
- wxRadioButton* pBtn = wxDynamicCast( pNodeBefore->GetData()
+ //
+ // ...turn off all radio buttons before this one
+ //
+ for ( wxWindowList::Node* pNodeBefore = pNodeThis->GetPrevious();
+ pNodeBefore;
+ pNodeBefore = pNodeBefore->GetPrevious() )
+ {
+ wxRadioButton* pBtn = wxDynamicCast( pNodeBefore->GetData()
,wxRadioButton
);
- if (!pBtn)
- {
- //
- // The radio buttons in a group must be consecutive, so there
- // are no more of them
- //
- break;
- }
- pBtn->SetValue(FALSE);
- if (pBtn->HasFlag(wxRB_GROUP))
- {
- //
- // Even if there are other radio buttons before this one,
- // they're not in the same group with us
- //
- break;
+ if (!pBtn)
+ {
+ //
+ // The radio buttons in a group must be consecutive, so there
+ // are no more of them
+ //
+ break;
+ }
+ pBtn->SetValue(FALSE);
+ if (pBtn->HasFlag(wxRB_GROUP))
+ {
+ //
+ // Even if there are other radio buttons before this one,
+ // they're not in the same group with us
+ //
+ break;
+ }
}
}
- //
+ //
// ... and all after this one
//
for (wxWindowList::Node* pNodeAfter = pNodeThis->GetNext();
if (!pBtn || pBtn->HasFlag(wxRB_GROUP) )
{
- //
+ //
// No more buttons or the first button of the next group
//
break;
,m_windowId
);
+ vEvent.SetOrientation(IsVertical() ? wxVERTICAL : wxHORIZONTAL);
vEvent.SetPosition(nPosition);
vEvent.SetEventObject(this);
return GetEventHandler()->ProcessEvent(vEvent);
IMPLEMENT_DYNAMIC_CLASS(wxSpinCtrl, wxControl)
BEGIN_EVENT_TABLE(wxSpinCtrl, wxSpinButton)
+ EVT_CHAR(wxSpinCtrl::OnChar)
EVT_SPIN(-1, wxSpinCtrl::OnSpinChange)
+ EVT_SET_FOCUS(wxSpinCtrl::OnSetFocus)
END_EVENT_TABLE()
// ----------------------------------------------------------------------------
// constants
}
} // end of wxSpinCtrl::OnSpinChange
+void wxSpinCtrl::OnSetFocus (
+ wxFocusEvent& rEvent
+)
+{
+ //
+ // When we get focus, give it to our buddy window as it needs it more than
+ // we do
+ //
+ ::WinSetFocus(HWND_DESKTOP, (HWND)m_hWndBuddy);
+ rEvent.Skip();
+} // end of wxSpinCtrl::OnSetFocus
+
bool wxSpinCtrl::ProcessTextCommand(
WXWORD wCmd
, WXWORD wId
int nHeightLineDefault = 0;
int nHeightLine = 0;
wxString sCurLine;
+ bool bLastWasAmpersand = FALSE;
for (const wxChar *pc = sText; ; pc++)
{
}
else
{
+ //
+ // We shouldn't take into account the '&' which just introduces the
+ // mnemonic characters and so are not shown on the screen -- except
+ // when it is preceded by another '&' in which case it stands for a
+ // literal ampersand
+ //
+ if (*pc == _T('&'))
+ {
+ if (!bLastWasAmpersand)
+ {
+ bLastWasAmpersand = TRUE;
+
+ //
+ // Skip the statement adding pc to curLine below
+ //
+ continue;
+ }
+
+ //
+ // It is a literal ampersand
+ //
+ bLastWasAmpersand = FALSE;
+ }
sCurLine += *pc;
}
}
{
long lPos = GetLastPosition();
+ //
+ // We must not do anything if the caret is already there because calling
+ // SetInsertionPoint() thaws the controls if Freeze() had been called even
+ // if it doesn't actually move the caret anywhere and so the simple fact of
+ // doing it results in horrible flicker when appending big amounts of text
+ // to the control in a few chunks (see DoAddText() test in the text sample)
+ //
+ if (GetInsertionPoint() == GetLastPosition())
+ return;
SetInsertionPoint(lPos);
} // end of wxTextCtrl::SetInsertionPointEnd
// We can't maximize the hidden frame because it shows it as well, so
// just remember that we should do it later in this case
//
- m_bMaximizeOnShow = TRUE;
+ m_bMaximizeOnShow = bMaximize;
}
} // end of wxTopLevelWindowOS2::Maximize
bool wxWindowOS2::HandleDestroy()
{
- SendDestroyEvent();
+ wxWindowDestroyEvent vEvent((wxWindow*)this);
+ vEvent.SetId(GetId());
+ (void)GetEventHandler()->ProcessEvent(vEvent);
//
// Delete our drop target if we've got one
CODE LOADONCALL
EXPORTS
-;From library: H:\DEV\WX2\WXWINDOWS\lib\wx.lib
+;From library: H:\DEV\WX2\WXWINDOWS\LIB\wx.lib
;From object file: dummy.cpp
;PUBDEFs (Symbols available from object file):
wxDummyChar
SetFocus__10wxSpinCtrlFv
;wxSpinCtrl::SetValue(const wxString&)
SetValue__10wxSpinCtrlFRC8wxString
+ ;wxSpinCtrl::OnSetFocus(wxFocusEvent&)
+ OnSetFocus__10wxSpinCtrlFR12wxFocusEvent
;wxSpinCtrl::sm_classwxSpinCtrl
sm_classwxSpinCtrl__10wxSpinCtrl
;wxSpinCtrl::m_svAllSpins