mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-27 18:33:33 +08:00
NxWM: Fix detection of touch events in the tool bar; Start window should not have a stop icon
git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@4729 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
@@ -66,13 +66,13 @@ using namespace NXWidgets;
|
||||
* @param widgetControl Controlling widget for this window.
|
||||
*/
|
||||
|
||||
CNxTkWindow::CNxTkWindow(NXHANDLE hNxServer, CWidgetControl *pWidgetControl)
|
||||
: CCallback(pWidgetControl)
|
||||
CNxTkWindow::CNxTkWindow(NXHANDLE hNxServer, CWidgetControl *widgetControl)
|
||||
: CCallback(widgetControl)
|
||||
{
|
||||
// Save construction values
|
||||
|
||||
m_hNxServer = hNxServer;
|
||||
m_widgetControl = pWidgetControl;
|
||||
m_widgetControl = widgetControl;
|
||||
|
||||
// Nullify uninitilized pointers
|
||||
|
||||
@@ -138,14 +138,38 @@ CWidgetControl *CNxTkWindow::getWidgetControl(void) const
|
||||
* the toolbar object AND calls the INxWindow::open() method to
|
||||
* create the toolbar. The toolbar is ready for use upon return.
|
||||
*
|
||||
* @param height. The height in rows of the tool bar
|
||||
* @param widgetControl. The controlling widget for this window. If
|
||||
* none is provided, then a new, vanilla CWidgetControl will be created
|
||||
* for the tool bar.
|
||||
* @param height Height of the toolbar
|
||||
*/
|
||||
|
||||
CNxToolbar *CNxTkWindow::openToolbar(nxgl_coord_t height)
|
||||
CNxToolbar *CNxTkWindow::openToolbar(nxgl_coord_t height, CWidgetControl *widgetControl)
|
||||
{
|
||||
if (m_hNxTkWindow && !m_toolbar)
|
||||
{
|
||||
// Get current window style from the widget control
|
||||
// Create a new widget control if none was provided
|
||||
|
||||
CWidgetControl *allocControl = (CWidgetControl *)0;
|
||||
if (!widgetControl)
|
||||
{
|
||||
// NOTE: This constructor would accept the toolbar "style" as a argument.
|
||||
// However, we will explicitly set the style below to handle the case
|
||||
// where the user has provided a custom widget control
|
||||
|
||||
allocControl = new CWidgetControl();
|
||||
if (!allocControl)
|
||||
{
|
||||
return (CNxToolbar *)0;
|
||||
}
|
||||
|
||||
// Use the allocated widget control
|
||||
|
||||
widgetControl = allocControl;
|
||||
}
|
||||
|
||||
// Get current window style from the NXTK window's widget control
|
||||
|
||||
CWidgetStyle style;
|
||||
m_widgetControl->getWidgetStyle(&style);
|
||||
@@ -155,9 +179,7 @@ CNxToolbar *CNxTkWindow::openToolbar(nxgl_coord_t height)
|
||||
style.colors.background = CONFIG_NXTK_BORDERCOLOR1;
|
||||
style.colors.selectedBackground = CONFIG_NXTK_BORDERCOLOR1;
|
||||
|
||||
// Create a new controlling widget for the window using these colors
|
||||
|
||||
CWidgetControl *widgetControl = new CWidgetControl(&style);
|
||||
widgetControl->setWidgetStyle(&style);
|
||||
|
||||
// And create the toolbar
|
||||
|
||||
@@ -165,7 +187,10 @@ CNxToolbar *CNxTkWindow::openToolbar(nxgl_coord_t height)
|
||||
widgetControl, height);
|
||||
if (!m_toolbar)
|
||||
{
|
||||
delete widgetControl;
|
||||
if (allocControl)
|
||||
{
|
||||
delete allocControl;
|
||||
}
|
||||
return (CNxToolbar *)0;
|
||||
}
|
||||
|
||||
@@ -177,7 +202,10 @@ CNxToolbar *CNxTkWindow::openToolbar(nxgl_coord_t height)
|
||||
// Failed to create the toolbar. Clean-up and return NULL
|
||||
|
||||
delete m_toolbar;
|
||||
delete widgetControl;
|
||||
if (allocControl)
|
||||
{
|
||||
delete allocControl;
|
||||
}
|
||||
return (CNxToolbar *)0;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user