Каретка или сетка курсора исчезает при взаимодействии со страницей ленты - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть один основной кадр, полученный из wxMDIParentFrame, и соответствующие дочерние кадры, полученные из wxMDIChildFrame.

Основная рама имеет полосу ленты, которая включена следующим образом:

auto clientWindow = GetClientWindow();
bSizer1->Add(m_ribbonBar, 0, wxEXPAND);
bSizer1->Add(clientWindow, 1, wxEXPAND);

Дочерние фреймы содержат элементы управления, например, один имеет wxRichTextCtrl, а другой - wxGrid.

Например, элемент управления расширенным текстом добавляется в дочерний фрейм следующим образом:

m_OutputWindow = new wxRichTextCtrl( this, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, 
        wxTE_AUTO_URL|wxTE_PROCESS_ENTER|wxTE_PROCESS_TAB|wxVSCROLL|wxHSCROLL|wxNO_BORDER|wxWANTS_CHARS );

auto bSizer1 = new wxBoxSizer(wxHORIZONTAL);
bSizer1->Add( m_OutputWindow, 7, wxEXPAND | wxALL, 5 );

SetSizer( bSizer1 );

Layout();

Как показано на рисунке (для расширенного текста ctrl), проблема, с которой я сталкиваюсь, заключается в том, что курсор на wxRichTextCtrl или курсор сетки на wxGrid исчезают.

enter image description here

Это происходит, когда:

1) Пользователь меняет страницы ленты,

2) Пользователь нажимает на элемент управления (например, wxButton или wxComboBox), который находится на панели ленты. Проблема не возникает с элементами управления, "родными" для RibbonBar,

3) Пользователь нажимает на пустую область (без элементов управления) на RibbonBar.

Недостатком является то, когда это происходит, пользователь теряет местонахождение каретки или курсора сетки.

Когда происходит один из трех случаев, дочерний фрейм все еще активен, и я предполагаю, что элементы управления (т.е. wxRichTextCtrl или wxGrid) на дочернем фрейме становятся неактивными. Даже если пользователь снова нажимает на дочерний фрейм (не непосредственно на элементе управления), курсор или сетка не отображаются. Пользователь должен щелкнуть по другому дочернему кадру, а затем к целевому кадру, чтобы возможность снова показать курсор или сетку.

Как сделать так, чтобы курсор каретки или сетка были видны, когда происходят вышеупомянутые случаи?

Я использую wxWidgets 3.1.0 в Windows 10. Компилятор VS 2015.

...