projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix discrepancy between different ways of measuring text extents under Mac.
[wxWidgets.git]
/
src
/
common
/
containr.cpp
diff --git
a/src/common/containr.cpp
b/src/common/containr.cpp
index d441b5c7c469e30d08e690437f460c9889359af4..d5425032164a85a27e56edc40588bdb8187b3c5d 100644
(file)
--- a/
src/common/containr.cpp
+++ b/
src/common/containr.cpp
@@
-37,7
+37,7
@@
#endif //WX_PRECOMP
// trace mask for focus messages
#endif //WX_PRECOMP
// trace mask for focus messages
-#define TRACE_FOCUS
_
T("focus")
+#define TRACE_FOCUS
wx
T("focus")
// ============================================================================
// implementation
// ============================================================================
// implementation
@@
-79,7
+79,7
@@
bool wxControlContainerBase::HasAnyFocusableChildren() const
bool wxControlContainerBase::DoSetFocus()
{
bool wxControlContainerBase::DoSetFocus()
{
- wxLogTrace(TRACE_FOCUS,
_
T("SetFocus on wxPanel 0x%p."),
+ wxLogTrace(TRACE_FOCUS,
wx
T("SetFocus on wxPanel 0x%p."),
m_winParent->GetHandle());
if (m_inSetFocus)
m_winParent->GetHandle());
if (m_inSetFocus)
@@
-157,7
+157,7
@@
void wxControlContainer::SetLastFocus(wxWindow *win)
// (under wxGTK)
wxASSERT_MSG( winParent,
// (under wxGTK)
wxASSERT_MSG( winParent,
-
_
T("Setting last focus for a window that is not our child?") );
+
wx
T("Setting last focus for a window that is not our child?") );
}
}
}
}
@@
-165,13
+165,13
@@
void wxControlContainer::SetLastFocus(wxWindow *win)
if ( win )
{
if ( win )
{
- wxLogTrace(TRACE_FOCUS,
_
T("Set last focus to %s(%s)"),
+ wxLogTrace(TRACE_FOCUS,
wx
T("Set last focus to %s(%s)"),
win->GetClassInfo()->GetClassName(),
win->GetLabel().c_str());
}
else
{
win->GetClassInfo()->GetClassName(),
win->GetLabel().c_str());
}
else
{
- wxLogTrace(TRACE_FOCUS,
_
T("No more last focus"));
+ wxLogTrace(TRACE_FOCUS,
wx
T("No more last focus"));
}
}
}
}
@@
-203,7
+203,7
@@
wxRadioButton* wxGetPreviousButtonInGroup(wxRadioButton *btn)
const wxWindowList& siblings = btn->GetParent()->GetChildren();
wxWindowList::compatibility_iterator nodeThis = siblings.Find(btn);
const wxWindowList& siblings = btn->GetParent()->GetChildren();
wxWindowList::compatibility_iterator nodeThis = siblings.Find(btn);
- wxCHECK_MSG( nodeThis, NULL,
_
T("radio button not a child of its parent?") );
+ wxCHECK_MSG( nodeThis, NULL,
wx
T("radio button not a child of its parent?") );
// Iterate over all previous siblings until we find the next radio button
wxWindowList::compatibility_iterator nodeBefore = nodeThis->GetPrevious();
// Iterate over all previous siblings until we find the next radio button
wxWindowList::compatibility_iterator nodeBefore = nodeThis->GetPrevious();
@@
-233,7
+233,7
@@
wxRadioButton* wxGetNextButtonInGroup(wxRadioButton *btn)
const wxWindowList& siblings = btn->GetParent()->GetChildren();
wxWindowList::compatibility_iterator nodeThis = siblings.Find(btn);
const wxWindowList& siblings = btn->GetParent()->GetChildren();
wxWindowList::compatibility_iterator nodeThis = siblings.Find(btn);
- wxCHECK_MSG( nodeThis, NULL,
_
T("radio button not a child of its parent?") );
+ wxCHECK_MSG( nodeThis, NULL,
wx
T("radio button not a child of its parent?") );
// Iterate over all previous siblings until we find the next radio button
wxWindowList::compatibility_iterator nodeNext = nodeThis->GetNext();
// Iterate over all previous siblings until we find the next radio button
wxWindowList::compatibility_iterator nodeNext = nodeThis->GetNext();
@@
-316,7
+316,10
@@
wxRadioButton* wxGetSelectedButtonInGroup(wxRadioButton *btn)
void wxControlContainer::HandleOnNavigationKey( wxNavigationKeyEvent& event )
{
void wxControlContainer::HandleOnNavigationKey( wxNavigationKeyEvent& event )
{
- wxWindow *parent = m_winParent->GetParent();
+ // for a TLW we shouldn't involve the parent window, it has nothing to do
+ // with keyboard navigation inside this TLW
+ wxWindow *parent = m_winParent->IsTopLevel() ? NULL
+ : m_winParent->GetParent();
// the event is propagated downwards if the event emitter was our parent
bool goingDown = event.GetEventObject() == parent;
// the event is propagated downwards if the event emitter was our parent
bool goingDown = event.GetEventObject() == parent;
@@
-395,7
+398,7
@@
void wxControlContainer::HandleOnNavigationKey( wxNavigationKeyEvent& event )
{
// just to be sure it's not used (normally this is not necessary, but
// doesn't hurt neither)
{
// just to be sure it's not used (normally this is not necessary, but
// doesn't hurt neither)
- m_winLastFocused =
(wxWindow *)
NULL;
+ m_winLastFocused = NULL;
// start from first or last depending on where we're going
node = forward ? children.GetFirst() : children.GetLast();
// start from first or last depending on where we're going
node = forward ? children.GetFirst() : children.GetLast();
@@
-529,24
+532,27
@@
void wxControlContainer::HandleOnNavigationKey( wxNavigationKeyEvent& event )
wxIsKindOf(m_winLastFocused, wxRadioButton) &&
!m_winLastFocused->HasFlag(wxRB_SINGLE) )
{
wxIsKindOf(m_winLastFocused, wxRadioButton) &&
!m_winLastFocused->HasFlag(wxRB_SINGLE) )
{
+ wxRadioButton * const
+ lastBtn = static_cast<wxRadioButton *>(m_winLastFocused);
+
// cursor keys don't navigate out of a radio button group so
// find the correct radio button to focus
if ( forward )
{
// cursor keys don't navigate out of a radio button group so
// find the correct radio button to focus
if ( forward )
{
- child = wxGetNextButtonInGroup(
(wxRadioButton*)m_winLastFocused
);
+ child = wxGetNextButtonInGroup(
lastBtn
);
if ( !child )
{
// no next button in group, set it to the first button
if ( !child )
{
// no next button in group, set it to the first button
- child = wxGetFirstButtonInGroup(
(wxRadioButton*)m_winLastFocused
);
+ child = wxGetFirstButtonInGroup(
lastBtn
);
}
}
else
{
}
}
else
{
- child = wxGetPreviousButtonInGroup(
(wxRadioButton*)m_winLastFocused
);
+ child = wxGetPreviousButtonInGroup(
lastBtn
);
if ( !child )
{
// no previous button in group, set it to the last button
if ( !child )
{
// no previous button in group, set it to the last button
- child = wxGetLastButtonInGroup(
(wxRadioButton*)m_winLastFocused
);
+ child = wxGetLastButtonInGroup(
lastBtn
);
}
}
}
}
@@
-607,7
+613,7
@@
void wxControlContainer::HandleOnWindowDestroy(wxWindowBase *child)
void wxControlContainer::HandleOnFocus(wxFocusEvent& event)
{
void wxControlContainer::HandleOnFocus(wxFocusEvent& event)
{
- wxLogTrace(TRACE_FOCUS,
_
T("OnFocus on wxPanel 0x%p, name: %s"),
+ wxLogTrace(TRACE_FOCUS,
wx
T("OnFocus on wxPanel 0x%p, name: %s"),
m_winParent->GetHandle(),
m_winParent->GetName().c_str() );
m_winParent->GetHandle(),
m_winParent->GetName().c_str() );
@@
-635,9
+641,9
@@
bool wxControlContainer::SetFocusToChild()
bool wxSetFocusToChild(wxWindow *win, wxWindow **childLastFocused)
{
bool wxSetFocusToChild(wxWindow *win, wxWindow **childLastFocused)
{
- wxCHECK_MSG( win, false,
_
T("wxSetFocusToChild(): invalid window") );
+ wxCHECK_MSG( win, false,
wx
T("wxSetFocusToChild(): invalid window") );
// wxCHECK_MSG( childLastFocused, false,
// wxCHECK_MSG( childLastFocused, false,
- //
_
T("wxSetFocusToChild(): NULL child poonter") );
+ //
wx
T("wxSetFocusToChild(): NULL child poonter") );
if ( childLastFocused && *childLastFocused )
{
if ( childLastFocused && *childLastFocused )
{
@@
-645,7
+651,7
@@
bool wxSetFocusToChild(wxWindow *win, wxWindow **childLastFocused)
if ( (*childLastFocused)->GetParent() == win )
{
wxLogTrace(TRACE_FOCUS,
if ( (*childLastFocused)->GetParent() == win )
{
wxLogTrace(TRACE_FOCUS,
-
_
T("SetFocusToChild() => last child (0x%p)."),
+
wx
T("SetFocusToChild() => last child (0x%p)."),
(*childLastFocused)->GetHandle());
// not SetFocusFromKbd(): we're restoring focus back to the old
(*childLastFocused)->GetHandle());
// not SetFocusFromKbd(): we're restoring focus back to the old
@@
-656,7
+662,7
@@
bool wxSetFocusToChild(wxWindow *win, wxWindow **childLastFocused)
else
{
// it doesn't count as such any more
else
{
// it doesn't count as such any more
- *childLastFocused =
(wxWindow *)
NULL;
+ *childLastFocused = NULL;
}
}
}
}
@@
-686,7
+692,7
@@
bool wxSetFocusToChild(wxWindow *win, wxWindow **childLastFocused)
#endif // __WXMSW__
wxLogTrace(TRACE_FOCUS,
#endif // __WXMSW__
wxLogTrace(TRACE_FOCUS,
-
_
T("SetFocusToChild() => first child (0x%p)."),
+
wx
T("SetFocusToChild() => first child (0x%p)."),
child->GetHandle());
if (childLastFocused)
child->GetHandle());
if (childLastFocused)