Next try at avoiding too few or too many size events.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@5424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -87,6 +87,7 @@ 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)
|
||||||
|
@@ -106,12 +106,6 @@ public:
|
|||||||
|
|
||||||
virtual WXWidget GetHandle() const { return m_widget; }
|
virtual WXWidget GetHandle() const { return m_widget; }
|
||||||
|
|
||||||
// also sets the global flag
|
|
||||||
void SetScrolling(bool scroll);
|
|
||||||
|
|
||||||
bool HasScrolling() const { return m_hasScrolling; }
|
|
||||||
bool IsScrolling() const { return m_isScrolling; }
|
|
||||||
|
|
||||||
/* I don't want users to override what's done in idle so everything that
|
/* I don't want users to override what's done in idle so everything that
|
||||||
has to be done in idle time in order for wxGTK to work is done in
|
has to be done in idle time in order for wxGTK to work is done in
|
||||||
OnInternalIdle */
|
OnInternalIdle */
|
||||||
@@ -157,11 +151,12 @@ public:
|
|||||||
// called from GTK signales handlers. it indicates that
|
// called from GTK signales handlers. it indicates that
|
||||||
// the layouting functions have to be called later on
|
// the layouting functions have to be called later on
|
||||||
// (i.e. in idle time, implemented in OnInternalIdle() ).
|
// (i.e. in idle time, implemented in OnInternalIdle() ).
|
||||||
void UpdateSize() { m_sizeSet = FALSE; }
|
void GtkUpdateSize() { m_sizeSet = FALSE; }
|
||||||
|
|
||||||
// position and size of the window
|
// position and size of the window
|
||||||
int m_x, m_y;
|
int m_x, m_y;
|
||||||
int m_width, m_height;
|
int m_width, m_height;
|
||||||
|
int m_oldClientWidth,m_oldClientHeight;
|
||||||
|
|
||||||
/* see the docs in src/gtk/window.cpp */
|
/* see the docs in src/gtk/window.cpp */
|
||||||
GtkWidget *m_widget;
|
GtkWidget *m_widget;
|
||||||
@@ -183,7 +178,6 @@ public:
|
|||||||
bool m_noExpose:1; /* wxGLCanvas has its own redrawing */
|
bool m_noExpose:1; /* wxGLCanvas has its own redrawing */
|
||||||
bool m_nativeSizeEvent:1; /* wxGLCanvas sends wxSizeEvent upon "alloc_size" */
|
bool m_nativeSizeEvent:1; /* wxGLCanvas sends wxSizeEvent upon "alloc_size" */
|
||||||
bool m_hasScrolling:1;
|
bool m_hasScrolling:1;
|
||||||
bool m_isScrolling:1;
|
|
||||||
bool m_hasVMT:1;
|
bool m_hasVMT:1;
|
||||||
bool m_sizeSet:1;
|
bool m_sizeSet:1;
|
||||||
bool m_resizing:1;
|
bool m_resizing:1;
|
||||||
@@ -195,7 +189,6 @@ public:
|
|||||||
// 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
|
||||||
// before the widget has been "realized"
|
// before the widget has been "realized"
|
||||||
bool m_delayedFont:1;
|
|
||||||
bool m_delayedForegroundColour:1;
|
bool m_delayedForegroundColour:1;
|
||||||
bool m_delayedBackgroundColour:1;
|
bool m_delayedBackgroundColour:1;
|
||||||
|
|
||||||
|
@@ -87,6 +87,7 @@ 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)
|
||||||
|
@@ -106,12 +106,6 @@ public:
|
|||||||
|
|
||||||
virtual WXWidget GetHandle() const { return m_widget; }
|
virtual WXWidget GetHandle() const { return m_widget; }
|
||||||
|
|
||||||
// also sets the global flag
|
|
||||||
void SetScrolling(bool scroll);
|
|
||||||
|
|
||||||
bool HasScrolling() const { return m_hasScrolling; }
|
|
||||||
bool IsScrolling() const { return m_isScrolling; }
|
|
||||||
|
|
||||||
/* I don't want users to override what's done in idle so everything that
|
/* I don't want users to override what's done in idle so everything that
|
||||||
has to be done in idle time in order for wxGTK to work is done in
|
has to be done in idle time in order for wxGTK to work is done in
|
||||||
OnInternalIdle */
|
OnInternalIdle */
|
||||||
@@ -157,11 +151,12 @@ public:
|
|||||||
// called from GTK signales handlers. it indicates that
|
// called from GTK signales handlers. it indicates that
|
||||||
// the layouting functions have to be called later on
|
// the layouting functions have to be called later on
|
||||||
// (i.e. in idle time, implemented in OnInternalIdle() ).
|
// (i.e. in idle time, implemented in OnInternalIdle() ).
|
||||||
void UpdateSize() { m_sizeSet = FALSE; }
|
void GtkUpdateSize() { m_sizeSet = FALSE; }
|
||||||
|
|
||||||
// position and size of the window
|
// position and size of the window
|
||||||
int m_x, m_y;
|
int m_x, m_y;
|
||||||
int m_width, m_height;
|
int m_width, m_height;
|
||||||
|
int m_oldClientWidth,m_oldClientHeight;
|
||||||
|
|
||||||
/* see the docs in src/gtk/window.cpp */
|
/* see the docs in src/gtk/window.cpp */
|
||||||
GtkWidget *m_widget;
|
GtkWidget *m_widget;
|
||||||
@@ -183,7 +178,6 @@ public:
|
|||||||
bool m_noExpose:1; /* wxGLCanvas has its own redrawing */
|
bool m_noExpose:1; /* wxGLCanvas has its own redrawing */
|
||||||
bool m_nativeSizeEvent:1; /* wxGLCanvas sends wxSizeEvent upon "alloc_size" */
|
bool m_nativeSizeEvent:1; /* wxGLCanvas sends wxSizeEvent upon "alloc_size" */
|
||||||
bool m_hasScrolling:1;
|
bool m_hasScrolling:1;
|
||||||
bool m_isScrolling:1;
|
|
||||||
bool m_hasVMT:1;
|
bool m_hasVMT:1;
|
||||||
bool m_sizeSet:1;
|
bool m_sizeSet:1;
|
||||||
bool m_resizing:1;
|
bool m_resizing:1;
|
||||||
@@ -195,7 +189,6 @@ public:
|
|||||||
// 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
|
||||||
// before the widget has been "realized"
|
// before the widget has been "realized"
|
||||||
bool m_delayedFont:1;
|
|
||||||
bool m_delayedForegroundColour:1;
|
bool m_delayedForegroundColour:1;
|
||||||
bool m_delayedBackgroundColour:1;
|
bool m_delayedBackgroundColour:1;
|
||||||
|
|
||||||
|
@@ -79,7 +79,7 @@ static void gtk_dialog_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation
|
|||||||
{
|
{
|
||||||
win->m_width = alloc->width;
|
win->m_width = alloc->width;
|
||||||
win->m_height = alloc->height;
|
win->m_height = alloc->height;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -126,7 +126,7 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
|
|||||||
|
|
||||||
win->m_width = alloc->width;
|
win->m_width = alloc->width;
|
||||||
win->m_height = alloc->height;
|
win->m_height = alloc->height;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ static void gtk_menu_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidget *
|
|||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
win->m_menuBarDetached = FALSE;
|
win->m_menuBarDetached = FALSE;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -166,7 +166,7 @@ static void gtk_menu_detached_callback( GtkWidget *WXUNUSED(widget), GtkWidget *
|
|||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
win->m_menuBarDetached = TRUE;
|
win->m_menuBarDetached = TRUE;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_TOOLBAR
|
#if wxUSE_TOOLBAR
|
||||||
@@ -180,7 +180,7 @@ static void gtk_toolbar_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidge
|
|||||||
|
|
||||||
win->m_toolBarDetached = FALSE;
|
win->m_toolBarDetached = FALSE;
|
||||||
|
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -195,7 +195,7 @@ static void gtk_toolbar_detached_callback( GtkWidget *WXUNUSED(widget), GtkWidge
|
|||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
win->m_toolBarDetached = TRUE;
|
win->m_toolBarDetached = TRUE;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
#endif // wxUSE_TOOLBAR
|
#endif // wxUSE_TOOLBAR
|
||||||
|
|
||||||
@@ -386,7 +386,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* resize on OnInternalIdle */
|
/* resize on OnInternalIdle */
|
||||||
parent->UpdateSize();
|
parent->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -963,7 +963,7 @@ void wxFrame::SetToolBar(wxToolBar *toolbar)
|
|||||||
GetChildren().DeleteObject( m_frameToolBar );
|
GetChildren().DeleteObject( m_frameToolBar );
|
||||||
|
|
||||||
gtk_widget_reparent( m_frameToolBar->m_widget, m_mainWidget );
|
gtk_widget_reparent( m_frameToolBar->m_widget, m_mainWidget );
|
||||||
UpdateSize();
|
GtkUpdateSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -88,7 +88,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
win->SetScrolling(TRUE);
|
win->m_isScrolling = TRUE;
|
||||||
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
|
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -104,7 +104,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
win->SetScrolling(FALSE);
|
win->m_isScrolling = FALSE;
|
||||||
// g_blockEventsOnScroll = FALSE;
|
// g_blockEventsOnScroll = FALSE;
|
||||||
|
|
||||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
|
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
|
||||||
|
@@ -301,7 +301,7 @@ static void draw_frame( GtkWidget *widget, wxWindow *win )
|
|||||||
int dw = 0;
|
int dw = 0;
|
||||||
int dh = 0;
|
int dh = 0;
|
||||||
|
|
||||||
if (win->HasScrolling())
|
if (win->m_hasScrolling)
|
||||||
{
|
{
|
||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(widget);
|
||||||
|
|
||||||
@@ -1639,7 +1639,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;
|
||||||
|
|
||||||
win->SetScrolling( TRUE );
|
g_blockEventsOnScroll = TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1660,7 +1660,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;
|
||||||
|
|
||||||
win->SetScrolling( FALSE );
|
g_blockEventsOnScroll = FALSE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1715,10 +1715,23 @@ void gtk_window_size_callback( GtkWidget *WXUNUSED(widget),
|
|||||||
if (g_isIdle)
|
if (g_isIdle)
|
||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
#if wxUSE_CONSTRAINTS
|
if (!win->m_hasScrolling) return;
|
||||||
if (win->GetAutoLayout())
|
|
||||||
win->Layout();
|
int client_width = 0;
|
||||||
#endif
|
int client_height = 0;
|
||||||
|
win->GetClientSize( &client_width, &client_height );
|
||||||
|
if ((client_width == win->m_oldClientWidth) && (client_height == win->m_oldClientHeight))
|
||||||
|
return;
|
||||||
|
|
||||||
|
win->m_oldClientWidth = client_width;
|
||||||
|
win->m_oldClientHeight = client_height;
|
||||||
|
|
||||||
|
if (!win->m_nativeSizeEvent)
|
||||||
|
{
|
||||||
|
wxSizeEvent event( win->GetSize(), win->GetId() );
|
||||||
|
event.SetEventObject( win );
|
||||||
|
win->GetEventHandler()->ProcessEvent( event );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1913,7 +1926,6 @@ 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;
|
||||||
@@ -2346,6 +2358,11 @@ void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
|
|||||||
m_height+border+bottom_border );
|
m_height+border+bottom_border );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_hasScrolling)
|
||||||
|
{
|
||||||
|
GetClientSize( &m_oldClientWidth, &m_oldClientHeight );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
wxPrintf( "OnSize sent from " );
|
wxPrintf( "OnSize sent from " );
|
||||||
if (GetClassInfo() && GetClassInfo()->GetClassName())
|
if (GetClassInfo() && GetClassInfo()->GetClassName())
|
||||||
@@ -2449,7 +2466,7 @@ void wxWindow::DoSetClientSize( int width, int height )
|
|||||||
dh += 1 * 2;
|
dh += 1 * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasScrolling())
|
if (m_hasScrolling)
|
||||||
{
|
{
|
||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
|
|
||||||
@@ -2511,7 +2528,7 @@ void wxWindow::DoGetClientSize( int *width, int *height ) const
|
|||||||
dh += 1 * 2;
|
dh += 1 * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasScrolling())
|
if (m_hasScrolling)
|
||||||
{
|
{
|
||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
|
|
||||||
@@ -3317,10 +3334,6 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
|||||||
m_vAdjust->value = fpos;
|
m_vAdjust->value = fpos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
if (!m_isScrolling)
|
|
||||||
{
|
|
||||||
*/
|
|
||||||
if (m_wxwindow->window)
|
if (m_wxwindow->window)
|
||||||
{
|
{
|
||||||
if (orient == wxHORIZONTAL)
|
if (orient == wxHORIZONTAL)
|
||||||
@@ -3328,9 +3341,6 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
|||||||
else
|
else
|
||||||
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
|
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxWindow::GetScrollThumb( int orient ) const
|
int wxWindow::GetScrollThumb( int orient ) const
|
||||||
@@ -3433,8 +3443,3 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindow::SetScrolling(bool scroll)
|
|
||||||
{
|
|
||||||
m_isScrolling = g_blockEventsOnScroll = scroll;
|
|
||||||
}
|
|
||||||
|
@@ -79,7 +79,7 @@ static void gtk_dialog_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation
|
|||||||
{
|
{
|
||||||
win->m_width = alloc->width;
|
win->m_width = alloc->width;
|
||||||
win->m_height = alloc->height;
|
win->m_height = alloc->height;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -126,7 +126,7 @@ static void gtk_frame_size_callback( GtkWidget *WXUNUSED(widget), GtkAllocation*
|
|||||||
|
|
||||||
win->m_width = alloc->width;
|
win->m_width = alloc->width;
|
||||||
win->m_height = alloc->height;
|
win->m_height = alloc->height;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -154,7 +154,7 @@ static void gtk_menu_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidget *
|
|||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
win->m_menuBarDetached = FALSE;
|
win->m_menuBarDetached = FALSE;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -166,7 +166,7 @@ static void gtk_menu_detached_callback( GtkWidget *WXUNUSED(widget), GtkWidget *
|
|||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
win->m_menuBarDetached = TRUE;
|
win->m_menuBarDetached = TRUE;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_TOOLBAR
|
#if wxUSE_TOOLBAR
|
||||||
@@ -180,7 +180,7 @@ static void gtk_toolbar_attached_callback( GtkWidget *WXUNUSED(widget), GtkWidge
|
|||||||
|
|
||||||
win->m_toolBarDetached = FALSE;
|
win->m_toolBarDetached = FALSE;
|
||||||
|
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -195,7 +195,7 @@ static void gtk_toolbar_detached_callback( GtkWidget *WXUNUSED(widget), GtkWidge
|
|||||||
if (!win->m_hasVMT) return;
|
if (!win->m_hasVMT) return;
|
||||||
|
|
||||||
win->m_toolBarDetached = TRUE;
|
win->m_toolBarDetached = TRUE;
|
||||||
win->UpdateSize();
|
win->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
#endif // wxUSE_TOOLBAR
|
#endif // wxUSE_TOOLBAR
|
||||||
|
|
||||||
@@ -386,7 +386,7 @@ static void wxInsertChildInFrame( wxFrame* parent, wxWindow* child )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* resize on OnInternalIdle */
|
/* resize on OnInternalIdle */
|
||||||
parent->UpdateSize();
|
parent->GtkUpdateSize();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -963,7 +963,7 @@ void wxFrame::SetToolBar(wxToolBar *toolbar)
|
|||||||
GetChildren().DeleteObject( m_frameToolBar );
|
GetChildren().DeleteObject( m_frameToolBar );
|
||||||
|
|
||||||
gtk_widget_reparent( m_frameToolBar->m_widget, m_mainWidget );
|
gtk_widget_reparent( m_frameToolBar->m_widget, m_mainWidget );
|
||||||
UpdateSize();
|
GtkUpdateSize();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -88,7 +88,7 @@ static gint gtk_scrollbar_button_press_callback( GtkRange *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
win->SetScrolling(TRUE);
|
win->m_isScrolling = TRUE;
|
||||||
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
|
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
@@ -104,7 +104,7 @@ static gint gtk_scrollbar_button_release_callback( GtkRange *WXUNUSED(widget),
|
|||||||
{
|
{
|
||||||
if (g_isIdle) wxapp_install_idle_handler();
|
if (g_isIdle) wxapp_install_idle_handler();
|
||||||
|
|
||||||
win->SetScrolling(FALSE);
|
win->m_isScrolling = FALSE;
|
||||||
// g_blockEventsOnScroll = FALSE;
|
// g_blockEventsOnScroll = FALSE;
|
||||||
|
|
||||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
|
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
|
||||||
|
@@ -301,7 +301,7 @@ static void draw_frame( GtkWidget *widget, wxWindow *win )
|
|||||||
int dw = 0;
|
int dw = 0;
|
||||||
int dh = 0;
|
int dh = 0;
|
||||||
|
|
||||||
if (win->HasScrolling())
|
if (win->m_hasScrolling)
|
||||||
{
|
{
|
||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(widget);
|
||||||
|
|
||||||
@@ -1639,7 +1639,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;
|
||||||
|
|
||||||
win->SetScrolling( TRUE );
|
g_blockEventsOnScroll = TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1660,7 +1660,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;
|
||||||
|
|
||||||
win->SetScrolling( FALSE );
|
g_blockEventsOnScroll = FALSE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
@@ -1715,10 +1715,23 @@ void gtk_window_size_callback( GtkWidget *WXUNUSED(widget),
|
|||||||
if (g_isIdle)
|
if (g_isIdle)
|
||||||
wxapp_install_idle_handler();
|
wxapp_install_idle_handler();
|
||||||
|
|
||||||
#if wxUSE_CONSTRAINTS
|
if (!win->m_hasScrolling) return;
|
||||||
if (win->GetAutoLayout())
|
|
||||||
win->Layout();
|
int client_width = 0;
|
||||||
#endif
|
int client_height = 0;
|
||||||
|
win->GetClientSize( &client_width, &client_height );
|
||||||
|
if ((client_width == win->m_oldClientWidth) && (client_height == win->m_oldClientHeight))
|
||||||
|
return;
|
||||||
|
|
||||||
|
win->m_oldClientWidth = client_width;
|
||||||
|
win->m_oldClientHeight = client_height;
|
||||||
|
|
||||||
|
if (!win->m_nativeSizeEvent)
|
||||||
|
{
|
||||||
|
wxSizeEvent event( win->GetSize(), win->GetId() );
|
||||||
|
event.SetEventObject( win );
|
||||||
|
win->GetEventHandler()->ProcessEvent( event );
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1913,7 +1926,6 @@ 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;
|
||||||
@@ -2346,6 +2358,11 @@ void wxWindow::DoSetSize( int x, int y, int width, int height, int sizeFlags )
|
|||||||
m_height+border+bottom_border );
|
m_height+border+bottom_border );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_hasScrolling)
|
||||||
|
{
|
||||||
|
GetClientSize( &m_oldClientWidth, &m_oldClientHeight );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
wxPrintf( "OnSize sent from " );
|
wxPrintf( "OnSize sent from " );
|
||||||
if (GetClassInfo() && GetClassInfo()->GetClassName())
|
if (GetClassInfo() && GetClassInfo()->GetClassName())
|
||||||
@@ -2449,7 +2466,7 @@ void wxWindow::DoSetClientSize( int width, int height )
|
|||||||
dh += 1 * 2;
|
dh += 1 * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasScrolling())
|
if (m_hasScrolling)
|
||||||
{
|
{
|
||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
|
|
||||||
@@ -2511,7 +2528,7 @@ void wxWindow::DoGetClientSize( int *width, int *height ) const
|
|||||||
dh += 1 * 2;
|
dh += 1 * 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasScrolling())
|
if (m_hasScrolling)
|
||||||
{
|
{
|
||||||
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||||
|
|
||||||
@@ -3317,10 +3334,6 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
|||||||
m_vAdjust->value = fpos;
|
m_vAdjust->value = fpos;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
if (!m_isScrolling)
|
|
||||||
{
|
|
||||||
*/
|
|
||||||
if (m_wxwindow->window)
|
if (m_wxwindow->window)
|
||||||
{
|
{
|
||||||
if (orient == wxHORIZONTAL)
|
if (orient == wxHORIZONTAL)
|
||||||
@@ -3328,9 +3341,6 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
|||||||
else
|
else
|
||||||
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
|
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int wxWindow::GetScrollThumb( int orient ) const
|
int wxWindow::GetScrollThumb( int orient ) const
|
||||||
@@ -3433,8 +3443,3 @@ void wxWindow::ScrollWindow( int dx, int dy, const wxRect* WXUNUSED(rect) )
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWindow::SetScrolling(bool scroll)
|
|
||||||
{
|
|
||||||
m_isScrolling = g_blockEventsOnScroll = scroll;
|
|
||||||
}
|
|
||||||
|
Reference in New Issue
Block a user