GtkAdjustment *m_adjust;
float m_oldPos;
+ bool m_isScrolling;
private:
DECLARE_DYNAMIC_CLASS(wxScrollBar)
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
has to be done in idle time in order for wxGTK to work is done in
OnInternalIdle */
// called from GTK signales handlers. it indicates that
// the layouting functions have to be called later on
// (i.e. in idle time, implemented in OnInternalIdle() ).
- void UpdateSize() { m_sizeSet = FALSE; }
+ void GtkUpdateSize() { m_sizeSet = FALSE; }
// position and size of the window
int m_x, m_y;
int m_width, m_height;
+ int m_oldClientWidth,m_oldClientHeight;
/* see the docs in src/gtk/window.cpp */
GtkWidget *m_widget;
bool m_noExpose:1; /* wxGLCanvas has its own redrawing */
bool m_nativeSizeEvent:1; /* wxGLCanvas sends wxSizeEvent upon "alloc_size" */
bool m_hasScrolling:1;
- bool m_isScrolling:1;
bool m_hasVMT:1;
bool m_sizeSet:1;
bool m_resizing:1;
// 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
// before the widget has been "realized"
- bool m_delayedFont:1;
bool m_delayedForegroundColour:1;
bool m_delayedBackgroundColour:1;
GtkAdjustment *m_adjust;
float m_oldPos;
+ bool m_isScrolling;
private:
DECLARE_DYNAMIC_CLASS(wxScrollBar)
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
has to be done in idle time in order for wxGTK to work is done in
OnInternalIdle */
// called from GTK signales handlers. it indicates that
// the layouting functions have to be called later on
// (i.e. in idle time, implemented in OnInternalIdle() ).
- void UpdateSize() { m_sizeSet = FALSE; }
+ void GtkUpdateSize() { m_sizeSet = FALSE; }
// position and size of the window
int m_x, m_y;
int m_width, m_height;
+ int m_oldClientWidth,m_oldClientHeight;
/* see the docs in src/gtk/window.cpp */
GtkWidget *m_widget;
bool m_noExpose:1; /* wxGLCanvas has its own redrawing */
bool m_nativeSizeEvent:1; /* wxGLCanvas sends wxSizeEvent upon "alloc_size" */
bool m_hasScrolling:1;
- bool m_isScrolling:1;
bool m_hasVMT:1;
bool m_sizeSet:1;
bool m_resizing:1;
// 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
// before the widget has been "realized"
- bool m_delayedFont:1;
bool m_delayedForegroundColour:1;
bool m_delayedBackgroundColour:1;
{
win->m_width = alloc->width;
win->m_height = alloc->height;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
}
win->m_width = alloc->width;
win->m_height = alloc->height;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
}
if (!win->m_hasVMT) return;
win->m_menuBarDetached = FALSE;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
//-----------------------------------------------------------------------------
if (!win->m_hasVMT) return;
win->m_menuBarDetached = TRUE;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
#if wxUSE_TOOLBAR
win->m_toolBarDetached = FALSE;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
//-----------------------------------------------------------------------------
if (!win->m_hasVMT) return;
win->m_toolBarDetached = TRUE;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
#endif // wxUSE_TOOLBAR
}
/* resize on OnInternalIdle */
- parent->UpdateSize();
+ parent->GtkUpdateSize();
}
// ----------------------------------------------------------------------------
GetChildren().DeleteObject( m_frameToolBar );
gtk_widget_reparent( m_frameToolBar->m_widget, m_mainWidget );
- UpdateSize();
+ GtkUpdateSize();
}
}
}
{
if (g_isIdle) wxapp_install_idle_handler();
- win->SetScrolling(TRUE);
+ win->m_isScrolling = TRUE;
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
return FALSE;
{
if (g_isIdle) wxapp_install_idle_handler();
- win->SetScrolling(FALSE);
+ win->m_isScrolling = FALSE;
// g_blockEventsOnScroll = FALSE;
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
!CreateBase( parent, id, pos, size, style, validator, name ))
{
wxFAIL_MSG( wxT("wxSlider creation failed") );
- return FALSE;
+ return FALSE;
}
m_oldPos = 0.0;
int dw = 0;
int dh = 0;
- if (win->HasScrolling())
+ if (win->m_hasScrolling)
{
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(widget);
//
// if (gdk_event->window != widget->slider) return FALSE;
- win->SetScrolling( TRUE );
+ g_blockEventsOnScroll = TRUE;
return FALSE;
}
//
// if (gdk_event->window != widget->slider) return FALSE;
- win->SetScrolling( FALSE );
+ g_blockEventsOnScroll = FALSE;
return FALSE;
}
if (g_isIdle)
wxapp_install_idle_handler();
-#if wxUSE_CONSTRAINTS
- if (win->GetAutoLayout())
- win->Layout();
-#endif
+ if (!win->m_hasScrolling) return;
+
+ int client_width = 0;
+ 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 );
+ }
}
m_nativeSizeEvent = FALSE;
m_hasScrolling = FALSE;
- m_isScrolling = FALSE;
m_hAdjust = (GtkAdjustment*) NULL;
m_vAdjust = (GtkAdjustment*) NULL;
m_height+border+bottom_border );
}
+ if (m_hasScrolling)
+ {
+ GetClientSize( &m_oldClientWidth, &m_oldClientHeight );
+ }
+
/*
wxPrintf( "OnSize sent from " );
if (GetClassInfo() && GetClassInfo()->GetClassName())
dh += 1 * 2;
}
- if (HasScrolling())
+ if (m_hasScrolling)
{
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
dh += 1 * 2;
}
- if (HasScrolling())
+ if (m_hasScrolling)
{
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
m_vAdjust->value = fpos;
}
-/*
- if (!m_isScrolling)
+ if (m_wxwindow->window)
{
-*/
- if (m_wxwindow->window)
- {
- if (orient == wxHORIZONTAL)
- gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
- else
- gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
- }
-/*
+ if (orient == wxHORIZONTAL)
+ gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
+ else
+ gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
}
-*/
}
int wxWindow::GetScrollThumb( int orient ) const
}
*/
}
-
-void wxWindow::SetScrolling(bool scroll)
-{
- m_isScrolling = g_blockEventsOnScroll = scroll;
-}
{
win->m_width = alloc->width;
win->m_height = alloc->height;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
}
win->m_width = alloc->width;
win->m_height = alloc->height;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
}
if (!win->m_hasVMT) return;
win->m_menuBarDetached = FALSE;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
//-----------------------------------------------------------------------------
if (!win->m_hasVMT) return;
win->m_menuBarDetached = TRUE;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
#if wxUSE_TOOLBAR
win->m_toolBarDetached = FALSE;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
//-----------------------------------------------------------------------------
if (!win->m_hasVMT) return;
win->m_toolBarDetached = TRUE;
- win->UpdateSize();
+ win->GtkUpdateSize();
}
#endif // wxUSE_TOOLBAR
}
/* resize on OnInternalIdle */
- parent->UpdateSize();
+ parent->GtkUpdateSize();
}
// ----------------------------------------------------------------------------
GetChildren().DeleteObject( m_frameToolBar );
gtk_widget_reparent( m_frameToolBar->m_widget, m_mainWidget );
- UpdateSize();
+ GtkUpdateSize();
}
}
}
{
if (g_isIdle) wxapp_install_idle_handler();
- win->SetScrolling(TRUE);
+ win->m_isScrolling = TRUE;
// g_blockEventsOnScroll = TRUE; doesn't work in DialogEd
return FALSE;
{
if (g_isIdle) wxapp_install_idle_handler();
- win->SetScrolling(FALSE);
+ win->m_isScrolling = FALSE;
// g_blockEventsOnScroll = FALSE;
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
!CreateBase( parent, id, pos, size, style, validator, name ))
{
wxFAIL_MSG( wxT("wxSlider creation failed") );
- return FALSE;
+ return FALSE;
}
m_oldPos = 0.0;
int dw = 0;
int dh = 0;
- if (win->HasScrolling())
+ if (win->m_hasScrolling)
{
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(widget);
//
// if (gdk_event->window != widget->slider) return FALSE;
- win->SetScrolling( TRUE );
+ g_blockEventsOnScroll = TRUE;
return FALSE;
}
//
// if (gdk_event->window != widget->slider) return FALSE;
- win->SetScrolling( FALSE );
+ g_blockEventsOnScroll = FALSE;
return FALSE;
}
if (g_isIdle)
wxapp_install_idle_handler();
-#if wxUSE_CONSTRAINTS
- if (win->GetAutoLayout())
- win->Layout();
-#endif
+ if (!win->m_hasScrolling) return;
+
+ int client_width = 0;
+ 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 );
+ }
}
m_nativeSizeEvent = FALSE;
m_hasScrolling = FALSE;
- m_isScrolling = FALSE;
m_hAdjust = (GtkAdjustment*) NULL;
m_vAdjust = (GtkAdjustment*) NULL;
m_height+border+bottom_border );
}
+ if (m_hasScrolling)
+ {
+ GetClientSize( &m_oldClientWidth, &m_oldClientHeight );
+ }
+
/*
wxPrintf( "OnSize sent from " );
if (GetClassInfo() && GetClassInfo()->GetClassName())
dh += 1 * 2;
}
- if (HasScrolling())
+ if (m_hasScrolling)
{
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
dh += 1 * 2;
}
- if (HasScrolling())
+ if (m_hasScrolling)
{
GtkScrolledWindow *scroll_window = GTK_SCROLLED_WINDOW(m_widget);
m_vAdjust->value = fpos;
}
-/*
- if (!m_isScrolling)
+ if (m_wxwindow->window)
{
-*/
- if (m_wxwindow->window)
- {
- if (orient == wxHORIZONTAL)
- gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
- else
- gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
- }
-/*
+ if (orient == wxHORIZONTAL)
+ gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
+ else
+ gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
}
-*/
}
int wxWindow::GetScrollThumb( int orient ) const
}
*/
}
-
-void wxWindow::SetScrolling(bool scroll)
-{
- m_isScrolling = g_blockEventsOnScroll = scroll;
-}