Skip to content

Commit

Permalink
Fix keyboard shortcuts not working in events editor with wxGTK
Browse files Browse the repository at this point in the history
  • Loading branch information
4ian committed Oct 5, 2014
1 parent 1c084c4 commit 5ccff94
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 6 deletions.
15 changes: 11 additions & 4 deletions IDE/EventsEditor.cpp
Expand Up @@ -155,7 +155,7 @@ void EventsEditor::Init(wxWindow* parent)
FlexGridSizer1 = new wxFlexGridSizer(0, 2, 0, 0);
FlexGridSizer1->AddGrowableCol(0);
FlexGridSizer1->AddGrowableRow(0);
eventsPanel = new wxPanel(this, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, _T("ID_PANEL1"));
eventsPanel = new wxControl(this, ID_PANEL1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxDefaultValidator, _T("ID_PANEL1"));
eventsPanel->SetBackgroundColour(wxColour(255,255,255));
liveEditingPanel = new wxPanel(eventsPanel, ID_PANEL2, wxPoint(100,100), wxDefaultSize, wxSIMPLE_BORDER, _T("ID_PANEL2"));
FlexGridSizer2 = new wxFlexGridSizer(0, 3, 0, 0);
Expand Down Expand Up @@ -298,6 +298,13 @@ void EventsEditor::Init(wxWindow* parent)
addInstrBt->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(EventsEditor::OnaddInstrIconPnlMouseLeave), NULL, this);
addInstrIcon->Connect(wxEVT_LEAVE_WINDOW, wxMouseEventHandler(EventsEditor::OnaddInstrIconPnlMouseLeave), NULL, this);

//Ensure that the eventsPanel is a wxControl: if declared as a wxPanel, it
//won't be able to catch keyboard input.
if (dynamic_cast<wxPanel*>(eventsPanel))
{
std::cout << "ERROR: eventsPanel was declared as a wxPanel instead of wxControl! Keyboards shortcut won't work with wxGTK.";
}

//Load configuration
wxConfigBase * config = wxConfigBase::Get();
conditionColumnWidth = config->ReadDouble("EventsEditor/ConditionColumnWidth", 350);
Expand Down Expand Up @@ -751,7 +758,7 @@ void EventsEditor::OneventsPanelLeftUp(wxMouseEvent& event)

void EventsEditor::OneventsPanelLeftDown(wxMouseEvent& event)
{
eventsPanel->SetFocusIgnoringChildren();
eventsPanel->SetFocus();

//Want to resize conditions column ?
if ( event.GetX() >= conditionColumnWidth-2 && event.GetX() <= conditionColumnWidth+2 )
Expand Down Expand Up @@ -945,7 +952,7 @@ void EventsEditor::OneventsPanelLeftDClick(wxMouseEvent& event)
void EventsEditor::OneventsPanelMouseMove(wxMouseEvent& event)
{
if (!liveEditingPanel->IsShown())
eventsPanel->SetFocusIgnoringChildren();
eventsPanel->SetFocus();

//Column resizing
if ( (event.GetX() >= conditionColumnWidth-2 && event.GetX() <= conditionColumnWidth+2) || isResizingColumns)
Expand Down Expand Up @@ -1180,7 +1187,7 @@ void EventsEditor::EndLiveEditing()
return;
}

eventsPanel->SetFocusIgnoringChildren();
eventsPanel->SetFocus();
*liveEditedParameter.parameter = gd::Expression(ToString(liveEdit->GetValue()));
liveEditedParameter.event->eventHeightNeedUpdate = true;
liveEditingPanel->Show(false);
Expand Down
2 changes: 1 addition & 1 deletion IDE/EventsEditor.h
Expand Up @@ -144,7 +144,7 @@ class EventsEditor: public wxPanel
wxPanel* listContextPanel;
wxMenuItem* MenuItem6;
wxMenu eventTypesMenu;
wxPanel* eventsPanel;
wxControl* eventsPanel;
wxStaticText* addInstrBt;
wxMenuItem* eventCopyMenu;
wxMenu multipleContextMenu;
Expand Down
2 changes: 1 addition & 1 deletion IDE/wxsmith/EventsEditor.wxs
Expand Up @@ -9,7 +9,7 @@
<growablecols>0</growablecols>
<growablerows>0</growablerows>
<object class="sizeritem">
<object class="wxPanel" name="ID_PANEL1" variable="eventsPanel" member="yes">
<object class="wxControl" name="ID_PANEL1" variable="eventsPanel" member="yes">
<bg>#FFFFFF</bg>
<handler function="OneventsPanelPaint" entry="EVT_PAINT" />
<handler function="OneventsPanelEraseBackground" entry="EVT_ERASE_BACKGROUND" />
Expand Down

0 comments on commit 5ccff94

Please sign in to comment.