mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-18 17:10:05 +02:00
Refer to bug #294 for details.
This commit is contained in:
parent
e1923bc07f
commit
d1d5a1e3a9
@ -1728,6 +1728,31 @@ void AudacityProject::OnUpdateUI(wxUpdateUIEvent & event)
|
|||||||
UpdateMenus();
|
UpdateMenus();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(__WXGTK__)
|
||||||
|
// Under wxGTK, we seem to experience focus issues related to improper "buffering" of active focus. This causes
|
||||||
|
// the normal SetFocus() to be ignored if it thinks the target window already has focus, even though it may not
|
||||||
|
// really have it.
|
||||||
|
//
|
||||||
|
// Thus the reason for this hackage. It basically, forces focus to another, known to exist, window before
|
||||||
|
// forcing focus to the TrackPanel. This is not at all a perfect solution, but until wxGTK is fixed, this
|
||||||
|
// may provide some relief from focus not returning to the TrackPanel after modal dialogs are closed.
|
||||||
|
//
|
||||||
|
// This also means that it may not work the same way on different versions of wxGTK other than 2.8.11, which
|
||||||
|
// is the version this was tested on.
|
||||||
|
void AudacityProject::SetFocus()
|
||||||
|
{
|
||||||
|
if (mTrackPanel) {
|
||||||
|
wxWindow *w = GetSelectionBar();
|
||||||
|
if (w)
|
||||||
|
{
|
||||||
|
w->SetFocus();
|
||||||
|
OnInternalIdle();
|
||||||
|
}
|
||||||
|
mTrackPanel->SetFocus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void AudacityProject::OnActivate(wxActivateEvent & event)
|
void AudacityProject::OnActivate(wxActivateEvent & event)
|
||||||
{
|
{
|
||||||
// Activate events can fire during window teardown, so just
|
// Activate events can fire during window teardown, so just
|
||||||
@ -1738,6 +1763,12 @@ void AudacityProject::OnActivate(wxActivateEvent & event)
|
|||||||
|
|
||||||
mActive = event.GetActive();
|
mActive = event.GetActive();
|
||||||
|
|
||||||
|
#if defined(__WXGTK__)
|
||||||
|
// See AudacityProject::SetFocus() above for further wxGTK handling
|
||||||
|
event.Skip();
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Under Windows, focus can be "lost" when returning to
|
// Under Windows, focus can be "lost" when returning to
|
||||||
// Audacity from a different application.
|
// Audacity from a different application.
|
||||||
//
|
//
|
||||||
|
@ -127,6 +127,11 @@ class AUDACITY_DLL_API AudacityProject: public wxFrame,
|
|||||||
const wxPoint & pos, const wxSize & size);
|
const wxPoint & pos, const wxSize & size);
|
||||||
virtual ~AudacityProject();
|
virtual ~AudacityProject();
|
||||||
|
|
||||||
|
#if defined(__WXGTK__)
|
||||||
|
// See comments in Project.cpp/AudacityProject::SetFocus()
|
||||||
|
virtual void SetFocus();
|
||||||
|
#endif
|
||||||
|
|
||||||
TrackList *GetTracks() { return mTracks; };
|
TrackList *GetTracks() { return mTracks; };
|
||||||
UndoManager *GetUndoManager() { return &mUndoManager; }
|
UndoManager *GetUndoManager() { return &mUndoManager; }
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user