A no-change for scroll events.
Added y-axis to wxPlot. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -33,18 +33,30 @@ class wxPlotWindow;
|
|||||||
class WXDLLEXPORT wxPlotCurve: public wxObject
|
class WXDLLEXPORT wxPlotCurve: public wxObject
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
wxPlotCurve( int offsetY );
|
wxPlotCurve( int offsetY, double startY, double endY );
|
||||||
|
|
||||||
virtual wxInt32 GetStartX() = 0;
|
virtual wxInt32 GetStartX() = 0;
|
||||||
virtual wxInt32 GetEndX() = 0;
|
virtual wxInt32 GetEndX() = 0;
|
||||||
|
|
||||||
|
virtual double GetY( wxInt32 x ) = 0;
|
||||||
|
|
||||||
|
void SetStartY( double startY )
|
||||||
|
{ m_startY = startY; }
|
||||||
|
double GetStartY()
|
||||||
|
{ return m_startY; }
|
||||||
|
void SetEndY( double endY )
|
||||||
|
{ m_endY = endY; }
|
||||||
|
double GetEndY()
|
||||||
|
{ return m_endY; }
|
||||||
|
void SetOffsetY( int offsetY )
|
||||||
|
{ m_offsetY = offsetY; }
|
||||||
int GetOffsetY()
|
int GetOffsetY()
|
||||||
{ return m_offsetY; }
|
{ return m_offsetY; }
|
||||||
|
|
||||||
virtual double GetY( wxInt32 x ) = 0;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_offsetY;
|
int m_offsetY;
|
||||||
|
double m_startY;
|
||||||
|
double m_endY;
|
||||||
|
|
||||||
DECLARE_ABSTRACT_CLASS(wxPlotCurve)
|
DECLARE_ABSTRACT_CLASS(wxPlotCurve)
|
||||||
};
|
};
|
||||||
|
@@ -87,7 +87,6 @@ public:
|
|||||||
|
|
||||||
GtkAdjustment *m_adjust;
|
GtkAdjustment *m_adjust;
|
||||||
float m_oldPos;
|
float m_oldPos;
|
||||||
bool m_isScrolling;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_DYNAMIC_CLASS(wxScrollBar)
|
DECLARE_DYNAMIC_CLASS(wxScrollBar)
|
||||||
|
@@ -185,6 +185,7 @@ public:
|
|||||||
bool m_isRadioButton:1; /* faster than IS_KIND_OF */
|
bool m_isRadioButton:1; /* faster than IS_KIND_OF */
|
||||||
bool m_isFrame:1; /* faster than IS_KIND_OF */
|
bool m_isFrame:1; /* faster than IS_KIND_OF */
|
||||||
bool m_acceptsFocus:1; /* not wxStaticBox, not wxStaticBitmap etc. */
|
bool m_acceptsFocus:1; /* not wxStaticBox, not wxStaticBitmap etc. */
|
||||||
|
bool m_isScrolling;
|
||||||
|
|
||||||
// these are true if the style were set before the widget was realized
|
// these are true if the style were set before the widget was realized
|
||||||
// (typcally in the constructor) but the actual GTK style must not be set
|
// (typcally in the constructor) but the actual GTK style must not be set
|
||||||
|
@@ -87,7 +87,6 @@ public:
|
|||||||
|
|
||||||
GtkAdjustment *m_adjust;
|
GtkAdjustment *m_adjust;
|
||||||
float m_oldPos;
|
float m_oldPos;
|
||||||
bool m_isScrolling;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
DECLARE_DYNAMIC_CLASS(wxScrollBar)
|
DECLARE_DYNAMIC_CLASS(wxScrollBar)
|
||||||
|
@@ -185,6 +185,7 @@ public:
|
|||||||
bool m_isRadioButton:1; /* faster than IS_KIND_OF */
|
bool m_isRadioButton:1; /* faster than IS_KIND_OF */
|
||||||
bool m_isFrame:1; /* faster than IS_KIND_OF */
|
bool m_isFrame:1; /* faster than IS_KIND_OF */
|
||||||
bool m_acceptsFocus:1; /* not wxStaticBox, not wxStaticBitmap etc. */
|
bool m_acceptsFocus:1; /* not wxStaticBox, not wxStaticBitmap etc. */
|
||||||
|
bool m_isScrolling;
|
||||||
|
|
||||||
// these are true if the style were set before the widget was realized
|
// these are true if the style were set before the widget was realized
|
||||||
// (typcally in the constructor) but the actual GTK style must not be set
|
// (typcally in the constructor) but the actual GTK style must not be set
|
||||||
|
@@ -749,6 +749,12 @@ void MyPanel::OnListBox( wxCommandEvent &event )
|
|||||||
{
|
{
|
||||||
// GetParent()->Move(100, 100);
|
// GetParent()->Move(100, 100);
|
||||||
|
|
||||||
|
if (event.GetInt() == -1)
|
||||||
|
{
|
||||||
|
m_text->AppendText( "ListBox has no selections anymore\n" );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
wxListBox *listbox = event.GetId() == ID_LISTBOX ? m_listbox
|
wxListBox *listbox = event.GetId() == ID_LISTBOX ? m_listbox
|
||||||
: m_listboxSorted;
|
: m_listboxSorted;
|
||||||
|
|
||||||
|
@@ -39,8 +39,8 @@ class MyApp;
|
|||||||
class MyPlotCurve: public wxPlotCurve
|
class MyPlotCurve: public wxPlotCurve
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MyPlotCurve( int offsetY ) :
|
MyPlotCurve( int offsetY, double startY, double endY ) :
|
||||||
wxPlotCurve( offsetY ) {}
|
wxPlotCurve( offsetY, startY, endY ) {}
|
||||||
|
|
||||||
virtual wxInt32 GetStartX()
|
virtual wxInt32 GetStartX()
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
@@ -51,7 +51,7 @@ public:
|
|||||||
{
|
{
|
||||||
double dx = x;
|
double dx = x;
|
||||||
dx /= 100;
|
dx /= 100;
|
||||||
return sin( dx )+1;
|
return sin( dx );
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -98,7 +98,7 @@ BEGIN_EVENT_TABLE(MyFrame,wxFrame)
|
|||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
MyFrame::MyFrame()
|
MyFrame::MyFrame()
|
||||||
: wxFrame( (wxFrame *)NULL, -1, "wxScrolledWindow sample",
|
: wxFrame( (wxFrame *)NULL, -1, "wxPlotWindow sample",
|
||||||
wxPoint(20,20), wxSize(470,500) )
|
wxPoint(20,20), wxSize(470,500) )
|
||||||
{
|
{
|
||||||
wxMenu *file_menu = new wxMenu();
|
wxMenu *file_menu = new wxMenu();
|
||||||
@@ -116,10 +116,9 @@ MyFrame::MyFrame()
|
|||||||
|
|
||||||
m_plot = new wxPlotWindow( this, -1, wxPoint(0,0), wxSize(100,100), wxSUNKEN_BORDER );
|
m_plot = new wxPlotWindow( this, -1, wxPoint(0,0), wxSize(100,100), wxSUNKEN_BORDER );
|
||||||
m_plot->SetScrollbars( 10, 10, 500, 0 );
|
m_plot->SetScrollbars( 10, 10, 500, 0 );
|
||||||
|
|
||||||
m_plot->Add( new MyPlotCurve(100) );
|
m_plot->Add( new MyPlotCurve( 0, -1.5, 1.5 ) );
|
||||||
m_plot->Add( new MyPlotCurve(40) );
|
m_plot->Add( new MyPlotCurve( 50, -1.5, 1.5 ) );
|
||||||
m_plot->Add( new MyPlotCurve(30) );
|
|
||||||
|
|
||||||
m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
|
m_log = new wxTextCtrl( this, -1, "This is the log window.\n", wxPoint(0,0), wxSize(100,100), wxTE_MULTILINE );
|
||||||
wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
|
wxLog *old_log = wxLog::SetActiveTarget( new wxLogTextCtrl( m_log ) );
|
||||||
@@ -141,9 +140,9 @@ void MyFrame::OnQuit( wxCommandEvent &WXUNUSED(event) )
|
|||||||
|
|
||||||
void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
|
void MyFrame::OnAbout( wxCommandEvent &WXUNUSED(event) )
|
||||||
{
|
{
|
||||||
(void)wxMessageBox( "wxScroll demo II\n"
|
(void)wxMessageBox( "wxPlotWindow Demo\n"
|
||||||
"Robert Roebling (c) 1998",
|
"Robert Roebling (c) 1999,2000",
|
||||||
"About wxScroll II Demo", wxICON_INFORMATION | wxOK );
|
"About wxPlotWindow Demo", wxICON_INFORMATION | wxOK );
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
@@ -48,6 +48,7 @@
|
|||||||
#elif defined(HAVE_SHL_LOAD)
|
#elif defined(HAVE_SHL_LOAD)
|
||||||
# define wxDllOpen(lib) shl_load(lib.fn_str(), BIND_DEFERRED, 0)
|
# define wxDllOpen(lib) shl_load(lib.fn_str(), BIND_DEFERRED, 0)
|
||||||
# define wxDllClose shl_unload
|
# define wxDllClose shl_unload
|
||||||
|
|
||||||
static inline void *wxDllGetSymbol(shl_t handle, const wxString& name)
|
static inline void *wxDllGetSymbol(shl_t handle, const wxString& name)
|
||||||
{
|
{
|
||||||
void *sym;
|
void *sym;
|
||||||
|
@@ -33,15 +33,19 @@
|
|||||||
|
|
||||||
#include "wx/generic/plot.h"
|
#include "wx/generic/plot.h"
|
||||||
|
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// wxPlotCurve
|
// wxPlotCurve
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
IMPLEMENT_ABSTRACT_CLASS(wxPlotCurve, wxObject)
|
IMPLEMENT_ABSTRACT_CLASS(wxPlotCurve, wxObject)
|
||||||
|
|
||||||
wxPlotCurve::wxPlotCurve( int offsetY )
|
wxPlotCurve::wxPlotCurve( int offsetY, double startY, double endY )
|
||||||
{
|
{
|
||||||
m_offsetY = offsetY;
|
m_offsetY = offsetY;
|
||||||
|
m_startY = startY;
|
||||||
|
m_endY = endY;
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -84,10 +88,14 @@ void wxPlotArea::OnMouse( wxMouseEvent &event )
|
|||||||
{
|
{
|
||||||
wxPlotCurve *curve = (wxPlotCurve*)node->Data();
|
wxPlotCurve *curve = (wxPlotCurve*)node->Data();
|
||||||
|
|
||||||
wxCoord offset_y = client_height - curve->GetOffsetY();
|
double double_client_height = (double)client_height;
|
||||||
|
double range = curve->GetEndY() - curve->GetStartY();
|
||||||
double dy = curve->GetY( x );
|
double end = curve->GetEndY();
|
||||||
int curve_y = (wxCoord)(-dy * 100) + offset_y - 1;
|
wxCoord offset_y = curve->GetOffsetY();
|
||||||
|
|
||||||
|
double dy = (end - curve->GetY( x )) / range;
|
||||||
|
wxCoord curve_y = (wxCoord)(dy * double_client_height) - offset_y - 1;
|
||||||
|
|
||||||
if ((y-curve_y < 4) && (y-curve_y > -4))
|
if ((y-curve_y < 4) && (y-curve_y > -4))
|
||||||
{
|
{
|
||||||
m_owner->SetCurrent( curve );
|
m_owner->SetCurrent( curve );
|
||||||
@@ -123,12 +131,14 @@ void wxPlotArea::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||||||
update_x += view_x;
|
update_x += view_x;
|
||||||
update_y += view_y;
|
update_y += view_y;
|
||||||
|
|
||||||
|
/*
|
||||||
if (m_owner->m_current)
|
if (m_owner->m_current)
|
||||||
{
|
{
|
||||||
dc.SetPen( *wxLIGHT_GREY_PEN );
|
dc.SetPen( *wxLIGHT_GREY_PEN );
|
||||||
int base_line = client_height - m_owner->m_current->GetOffsetY();
|
int base_line = client_height - m_owner->m_current->GetOffsetY();
|
||||||
dc.DrawLine( update_x-1, base_line-1, update_x+update_width+2, base_line-1 );
|
dc.DrawLine( update_x-1, base_line-1, update_x+update_width+2, base_line-1 );
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
wxNode *node = m_owner->m_curves.First();
|
wxNode *node = m_owner->m_curves.First();
|
||||||
while (node)
|
while (node)
|
||||||
@@ -139,16 +149,20 @@ void wxPlotArea::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||||||
dc.SetPen( *wxBLACK_PEN );
|
dc.SetPen( *wxBLACK_PEN );
|
||||||
else
|
else
|
||||||
dc.SetPen( *wxLIGHT_GREY_PEN );
|
dc.SetPen( *wxLIGHT_GREY_PEN );
|
||||||
wxCoord offset_y = client_height - curve->GetOffsetY();
|
|
||||||
|
|
||||||
int start_x = wxMax( update_x-1, curve->GetStartX() );
|
int start_x = wxMax( update_x-1, curve->GetStartX() );
|
||||||
int end_x = wxMin( update_x+update_width+2, curve->GetEndX() );
|
int end_x = wxMin( update_x+update_width+2, curve->GetEndX() );
|
||||||
|
|
||||||
|
double double_client_height = (double)client_height;
|
||||||
|
double range = curve->GetEndY() - curve->GetStartY();
|
||||||
|
double end = curve->GetEndY();
|
||||||
|
wxCoord offset_y = curve->GetOffsetY();
|
||||||
|
|
||||||
wxCoord y=0,last_y=0;
|
wxCoord y=0,last_y=0;
|
||||||
for (int x = start_x; x < end_x; x++)
|
for (int x = start_x; x < end_x; x++)
|
||||||
{
|
{
|
||||||
double dy = curve->GetY( x );
|
double dy = (end - curve->GetY( x )) / range;
|
||||||
y = (wxCoord)(-dy * 100) + offset_y - 1;
|
y = (wxCoord)(dy * double_client_height) - offset_y - 1;
|
||||||
|
|
||||||
if (x != start_x)
|
if (x != start_x)
|
||||||
dc.DrawLine( x-1, last_y, x, y );
|
dc.DrawLine( x-1, last_y, x, y );
|
||||||
@@ -238,14 +252,14 @@ wxPlotCurve *wxPlotWindow::GetAt( size_t n )
|
|||||||
void wxPlotWindow::SetCurrent( wxPlotCurve* current )
|
void wxPlotWindow::SetCurrent( wxPlotCurve* current )
|
||||||
{
|
{
|
||||||
m_current = current;
|
m_current = current;
|
||||||
m_area->Refresh( TRUE );
|
m_area->Refresh( FALSE );
|
||||||
|
|
||||||
wxPoint pos( m_area->GetPosition() );
|
wxPoint pos( m_area->GetPosition() );
|
||||||
|
|
||||||
int client_width;
|
int client_width;
|
||||||
int client_height;
|
int client_height;
|
||||||
GetClientSize( &client_width, &client_height);
|
GetClientSize( &client_width, &client_height);
|
||||||
wxRect rect(pos.x-40,0,40,client_height);
|
wxRect rect(pos.x-45,0,45,client_height);
|
||||||
Refresh(TRUE,&rect);
|
Refresh(TRUE,&rect);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,11 +282,50 @@ void wxPlotWindow::OnPaint( wxPaintEvent &WXUNUSED(event) )
|
|||||||
|
|
||||||
wxPoint pos( m_area->GetPosition() );
|
wxPoint pos( m_area->GetPosition() );
|
||||||
|
|
||||||
|
double range = m_current->GetEndY() - m_current->GetStartY();
|
||||||
|
double offset = ((double) m_current->GetOffsetY() / (double)client_height ) * range;
|
||||||
|
double start = m_current->GetStartY() - offset;
|
||||||
|
double end = m_current->GetEndY() - offset;
|
||||||
|
int int_log_range = (int)floor( log10( range ) );
|
||||||
|
double step = 1.0;
|
||||||
|
if (int_log_range > 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < int_log_range; i++)
|
||||||
|
step *= 10;
|
||||||
|
}
|
||||||
|
if (int_log_range < 0)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < -int_log_range; i++)
|
||||||
|
step /= 10;
|
||||||
|
}
|
||||||
|
double lower = ceil(start / step) * step;
|
||||||
|
double upper = floor(end / step) * step;
|
||||||
|
int steps = (int)ceil((upper-lower)/step);
|
||||||
|
if (steps < 3)
|
||||||
|
{
|
||||||
|
step /= 2;
|
||||||
|
if (lower-step > start) lower -= step;
|
||||||
|
}
|
||||||
|
|
||||||
|
double current = lower;
|
||||||
|
while (current < upper+(step/2))
|
||||||
|
{
|
||||||
|
int y = (int)((m_current->GetEndY()-current) / range * (double)client_height) - 1;
|
||||||
|
y -= m_current->GetOffsetY();
|
||||||
|
if ((y > 10) && (y < client_height-7))
|
||||||
|
{
|
||||||
|
dc.DrawLine( pos.x-15, y, pos.x-7, y );
|
||||||
|
wxString label;
|
||||||
|
label.Printf( "%.1f", current );
|
||||||
|
dc.DrawText( label, pos.x-45, y-7 );
|
||||||
|
}
|
||||||
|
|
||||||
|
current += step;
|
||||||
|
}
|
||||||
|
|
||||||
dc.DrawLine( pos.x-15, 5, pos.x-15, client_height-5 );
|
dc.DrawLine( pos.x-15, 5, pos.x-15, client_height-5 );
|
||||||
dc.DrawLine( pos.x-19, 9, pos.x-15, 5 );
|
dc.DrawLine( pos.x-19, 9, pos.x-15, 5 );
|
||||||
dc.DrawLine( pos.x-10, 10, pos.x-15, 5 );
|
dc.DrawLine( pos.x-10, 10, pos.x-15, 5 );
|
||||||
|
|
||||||
int y = client_height - m_current->GetOffsetY() - 1;
|
|
||||||
dc.DrawLine( pos.x-15, y, pos.x-7, y );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -231,7 +231,7 @@ static void gtk_listitem_select_callback( GtkWidget *WXUNUSED(widget), wxListBox
|
|||||||
|
|
||||||
if (!listbox->m_hasVMT) return;
|
if (!listbox->m_hasVMT) return;
|
||||||
if (g_blockEventsOnDrag) return;
|
if (g_blockEventsOnDrag) return;
|
||||||
|
|
||||||
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
|
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
|
||||||
event.SetEventObject( listbox );
|
event.SetEventObject( listbox );
|
||||||
|
|
||||||
|
@@ -1627,7 +1627,7 @@ static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxW
|
|||||||
|
|
||||||
static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
||||||
GdkEventButton *WXUNUSED(gdk_event),
|
GdkEventButton *WXUNUSED(gdk_event),
|
||||||
wxWindow *WXUNUSED(win))
|
wxWindow *win)
|
||||||
{
|
{
|
||||||
DEBUG_MAIN_THREAD
|
DEBUG_MAIN_THREAD
|
||||||
|
|
||||||
@@ -1640,6 +1640,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
|||||||
// if (gdk_event->window != widget->slider) return FALSE;
|
// if (gdk_event->window != widget->slider) return FALSE;
|
||||||
|
|
||||||
g_blockEventsOnScroll = TRUE;
|
g_blockEventsOnScroll = TRUE;
|
||||||
|
win->m_isScrolling = TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1650,7 +1651,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
|||||||
|
|
||||||
static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
||||||
GdkEventButton *WXUNUSED(gdk_event),
|
GdkEventButton *WXUNUSED(gdk_event),
|
||||||
wxWindow *WXUNUSED(win))
|
wxWindow *win)
|
||||||
{
|
{
|
||||||
DEBUG_MAIN_THREAD
|
DEBUG_MAIN_THREAD
|
||||||
|
|
||||||
@@ -1661,6 +1662,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
|||||||
// if (gdk_event->window != widget->slider) return FALSE;
|
// if (gdk_event->window != widget->slider) return FALSE;
|
||||||
|
|
||||||
g_blockEventsOnScroll = FALSE;
|
g_blockEventsOnScroll = FALSE;
|
||||||
|
win->m_isScrolling = FALSE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1926,6 +1928,7 @@ void wxWindow::Init()
|
|||||||
m_nativeSizeEvent = FALSE;
|
m_nativeSizeEvent = FALSE;
|
||||||
|
|
||||||
m_hasScrolling = FALSE;
|
m_hasScrolling = FALSE;
|
||||||
|
m_isScrolling = FALSE;
|
||||||
|
|
||||||
m_hAdjust = (GtkAdjustment*) NULL;
|
m_hAdjust = (GtkAdjustment*) NULL;
|
||||||
m_vAdjust = (GtkAdjustment*) NULL;
|
m_vAdjust = (GtkAdjustment*) NULL;
|
||||||
|
@@ -231,7 +231,7 @@ static void gtk_listitem_select_callback( GtkWidget *WXUNUSED(widget), wxListBox
|
|||||||
|
|
||||||
if (!listbox->m_hasVMT) return;
|
if (!listbox->m_hasVMT) return;
|
||||||
if (g_blockEventsOnDrag) return;
|
if (g_blockEventsOnDrag) return;
|
||||||
|
|
||||||
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
|
wxCommandEvent event(wxEVT_COMMAND_LISTBOX_SELECTED, listbox->GetId() );
|
||||||
event.SetEventObject( listbox );
|
event.SetEventObject( listbox );
|
||||||
|
|
||||||
|
@@ -1627,7 +1627,7 @@ static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxW
|
|||||||
|
|
||||||
static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
||||||
GdkEventButton *WXUNUSED(gdk_event),
|
GdkEventButton *WXUNUSED(gdk_event),
|
||||||
wxWindow *WXUNUSED(win))
|
wxWindow *win)
|
||||||
{
|
{
|
||||||
DEBUG_MAIN_THREAD
|
DEBUG_MAIN_THREAD
|
||||||
|
|
||||||
@@ -1640,6 +1640,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
|||||||
// if (gdk_event->window != widget->slider) return FALSE;
|
// if (gdk_event->window != widget->slider) return FALSE;
|
||||||
|
|
||||||
g_blockEventsOnScroll = TRUE;
|
g_blockEventsOnScroll = TRUE;
|
||||||
|
win->m_isScrolling = TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1650,7 +1651,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
|||||||
|
|
||||||
static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
||||||
GdkEventButton *WXUNUSED(gdk_event),
|
GdkEventButton *WXUNUSED(gdk_event),
|
||||||
wxWindow *WXUNUSED(win))
|
wxWindow *win)
|
||||||
{
|
{
|
||||||
DEBUG_MAIN_THREAD
|
DEBUG_MAIN_THREAD
|
||||||
|
|
||||||
@@ -1661,6 +1662,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
|||||||
// if (gdk_event->window != widget->slider) return FALSE;
|
// if (gdk_event->window != widget->slider) return FALSE;
|
||||||
|
|
||||||
g_blockEventsOnScroll = FALSE;
|
g_blockEventsOnScroll = FALSE;
|
||||||
|
win->m_isScrolling = FALSE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1926,6 +1928,7 @@ void wxWindow::Init()
|
|||||||
m_nativeSizeEvent = FALSE;
|
m_nativeSizeEvent = FALSE;
|
||||||
|
|
||||||
m_hasScrolling = FALSE;
|
m_hasScrolling = FALSE;
|
||||||
|
m_isScrolling = FALSE;
|
||||||
|
|
||||||
m_hAdjust = (GtkAdjustment*) NULL;
|
m_hAdjust = (GtkAdjustment*) NULL;
|
||||||
m_vAdjust = (GtkAdjustment*) NULL;
|
m_vAdjust = (GtkAdjustment*) NULL;
|
||||||
|
Reference in New Issue
Block a user