Changed instal path for setup.h
changed socket stream inheritance to virtual removed a few more warnings from the samples corrected thread habdling in configure.in removed dancing sliders from scrollbars corrected notebook send event bug and added it the controls sample git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@729 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -53,6 +53,7 @@ install::
|
||||
$(includedir)/wx/common \
|
||||
$(includedir)/wx/generic \
|
||||
$(includedir)/wx/protocol \
|
||||
$(libdir)/wx/include/wx/gtk \
|
||||
$(libdir) \
|
||||
$(bindir)
|
||||
@echo " Copying headers from /include/wx"
|
||||
@@ -82,6 +83,9 @@ install::
|
||||
rm -f $(includedir)/wx/protocol/$$f ; \
|
||||
$(INSTALL_DATA) $$f $(includedir)/wx/protocol/$$f ; \
|
||||
done
|
||||
@echo " Moving setup.h to library path"
|
||||
@$(INSTALL) -d $(libdir)/wx/include/wx/gtk ;\
|
||||
mv $(includedir)/wx/gtk/setup.h $(libdir)/wx/include/wx/gtk/setup.h ;
|
||||
@echo " Copying wx-config"
|
||||
@cd $(WXBASEDIR) ; \
|
||||
$(INSTALL) -d $(bindir) ;\
|
||||
@@ -91,16 +95,19 @@ install::
|
||||
@cd $(WXBASEDIR)/lib/$(OS) ; \
|
||||
rm -f $(libdir)/$(STATIC_LIBRARY) ; \
|
||||
$(INSTALL_DATA) $(STATIC_LIBRARY) $(libdir)/$(STATIC_LIBRARY)
|
||||
@if test -d $(SHARED_LIBRARY); then \
|
||||
echo " Copying shared library" \
|
||||
@if test $(WXBASEDIR)/lib/$(OS)/$(SHARED_LIBRARY) ; then \
|
||||
echo " Copying shared library" ; \
|
||||
cd $(WXBASEDIR)/lib/$(OS) ; \
|
||||
rm -f $(libdir)/$(SHARED_LIBRARY) ; \
|
||||
rm -f $(libdir)/lib$(LIB_TARGET).so* ; \
|
||||
$(INSTALL_PROGRAM) $(SHARED_LIBRARY) $(libdir)/$(SHARED_LIBRARY) ; \
|
||||
$(LN_S) $(SHARED_LIBRARY) $(libdir)/lib$(LIB_TARGET).so.$(LIB_MAJOR) ; \
|
||||
$(LN_S) $(SHARED_LIBRARY) $(libdir)/lib$(LIB_TARGET).so ; \
|
||||
echo " " ; \
|
||||
echo " You may have to run ldconfig!" ; \
|
||||
echo " " ; \
|
||||
fi
|
||||
@echo " "
|
||||
@echo "Installation complete. You may have to run ldconfig!"
|
||||
@echo "Installation complete."
|
||||
@echo " "
|
||||
|
||||
clean::
|
||||
|
@@ -194,7 +194,7 @@ wxTCPConnection::~wxTCPConnection (void)
|
||||
wxDELETE(m_sockstrm);
|
||||
}
|
||||
|
||||
void wxTCPConnection::Compress(bool on)
|
||||
void wxTCPConnection::Compress(bool WXUNUSED(on))
|
||||
{
|
||||
// Use wxLZWStream
|
||||
}
|
||||
|
@@ -458,11 +458,7 @@ bool wxSocketBase::GetPeer(wxSockAddress& addr_man) const
|
||||
if (m_fd < 0)
|
||||
return FALSE;
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
if (getpeername(m_fd, (struct sockaddr *)&my_addr, (int *)&len_addr) < 0)
|
||||
#else
|
||||
if (getpeername(m_fd, (struct sockaddr *)&my_addr, (unsigned int *)&len_addr) < 0)
|
||||
#endif
|
||||
return FALSE;
|
||||
|
||||
addr_man.Disassemble(&my_addr, len_addr);
|
||||
@@ -477,11 +473,7 @@ bool wxSocketBase::GetLocal(wxSockAddress& addr_man) const
|
||||
if (m_fd < 0)
|
||||
return FALSE;
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
if (getsockname(m_fd, (struct sockaddr *)&my_addr, (int *)&len_addr) < 0)
|
||||
#else
|
||||
if (getsockname(m_fd, (struct sockaddr *)&my_addr, (unsigned int *)&len_addr) < 0)
|
||||
#endif
|
||||
return FALSE;
|
||||
|
||||
addr_man.Disassemble(&my_addr, len_addr);
|
||||
|
@@ -4,7 +4,7 @@ NONE =
|
||||
# define library name
|
||||
LIB_TARGET=wx_gtk
|
||||
LIB_MAJOR=1
|
||||
LIB_MINOR=93
|
||||
LIB_MINOR=94
|
||||
|
||||
# define library sources
|
||||
|
||||
|
@@ -62,12 +62,11 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget),
|
||||
int old = notebook->GetSelection();
|
||||
|
||||
// TODO: emulate PAGE_CHANGING event
|
||||
wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
|
||||
notebook->GetId(),
|
||||
nPage,
|
||||
old);
|
||||
|
||||
wxNotebookEvent event( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
|
||||
notebook->GetId(), nPage, old );
|
||||
event.SetEventObject( notebook );
|
||||
notebook->ProcessEvent( event );
|
||||
notebook->GetEventHandler()->ProcessEvent( event );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@@ -61,6 +61,34 @@ static void gtk_scrollbar_callback( GtkWidget *WXUNUSED(widget), wxScrollBar *wi
|
||||
*/
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "button_press_event" from slider
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint gtk_scrollbar_button_press_callback( GtkRange *widget, GdkEventButton *gdk_event, wxScrollBar *win )
|
||||
{
|
||||
if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
win->m_isScrolling = TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "button_release_event" from slider
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint gtk_scrollbar_button_release_callback( GtkRange *widget, GdkEventButton *gdk_event, wxScrollBar *win )
|
||||
{
|
||||
if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
|
||||
|
||||
win->m_isScrolling = FALSE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxScrollBar
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -93,6 +121,12 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id,
|
||||
gtk_signal_connect (GTK_OBJECT (m_adjust), "value_changed",
|
||||
(GtkSignalFunc) gtk_scrollbar_callback, (gpointer) this );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(m_widget), "button_press_event",
|
||||
(GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(m_widget), "button_release_event",
|
||||
(GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this );
|
||||
|
||||
PostCreation();
|
||||
|
||||
Show( TRUE );
|
||||
@@ -126,25 +160,29 @@ void wxScrollBar::SetPosition( int viewStart )
|
||||
m_oldPos = fpos;
|
||||
if (fabs(fpos-m_adjust->value) < 0.2) return;
|
||||
m_adjust->value = fpos;
|
||||
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" );
|
||||
|
||||
if (!m_isScrolling)
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" );
|
||||
}
|
||||
|
||||
void wxScrollBar::SetScrollbar( int position, int thumbSize, int range, int pageSize,
|
||||
bool WXUNUSED(refresh) )
|
||||
{
|
||||
float fpos = (float)position;
|
||||
m_oldPos = fpos;
|
||||
float frange = (float)range;
|
||||
float fthumb = (float)thumbSize;
|
||||
float fpage = (float)pageSize;
|
||||
|
||||
if ((fabs(fpos-m_adjust->value) < 0.2) &&
|
||||
(fabs(frange-m_adjust->upper) < 0.2) &&
|
||||
if ((fabs(frange-m_adjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_adjust->page_size) < 0.2) &&
|
||||
(fabs(fpage-m_adjust->page_increment) < 0.2))
|
||||
return;
|
||||
{
|
||||
SetPosition( position );
|
||||
return;
|
||||
}
|
||||
|
||||
m_oldPos = fpos;
|
||||
|
||||
m_adjust->lower = 0.0;
|
||||
m_adjust->upper = frange;
|
||||
m_adjust->value = fpos;
|
||||
|
@@ -799,6 +799,39 @@ static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxW
|
||||
win->GetEventHandler()->ProcessEvent( event );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "button_press_event" from scrollbar
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint gtk_scrollbar_button_press_callback( GtkRange *widget, GdkEventButton *gdk_event, wxWindow *win )
|
||||
{
|
||||
if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
win->m_isScrolling = TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "button_release_event" from scrollbar
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint gtk_scrollbar_button_release_callback( GtkRange *widget, GdkEventButton *gdk_event, wxWindow *win )
|
||||
{
|
||||
if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(win->m_widget);
|
||||
|
||||
if (widget == GTK_RANGE(s_window->vscrollbar))
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_hAdjust), "value_changed" );
|
||||
else
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_vAdjust), "value_changed" );
|
||||
|
||||
win->m_isScrolling = FALSE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "drop_data_available_event"
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -865,6 +898,7 @@ wxWindow::wxWindow()
|
||||
m_hasVMT = FALSE;
|
||||
m_needParent = TRUE;
|
||||
m_hasScrolling = FALSE;
|
||||
m_isScrolling = FALSE;
|
||||
m_hAdjust = (GtkAdjustment *) NULL;
|
||||
m_vAdjust = (GtkAdjustment *) NULL;
|
||||
m_oldHorizontalPos = 0.0;
|
||||
@@ -891,9 +925,14 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
|
||||
m_hasScrolling = TRUE;
|
||||
|
||||
GtkScrolledWindow *s_window;
|
||||
s_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||
|
||||
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(s_window->vscrollbar), "button_press_event",
|
||||
(GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(s_window->hscrollbar), "button_release_event",
|
||||
(GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this );
|
||||
|
||||
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
||||
scroll_class->scrollbar_spacing = 0;
|
||||
|
||||
@@ -905,18 +944,17 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
m_hAdjust = gtk_range_get_adjustment( GTK_RANGE(s_window->hscrollbar) );
|
||||
m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(s_window->vscrollbar) );
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (m_hAdjust), "value_changed",
|
||||
gtk_signal_connect( GTK_OBJECT(m_hAdjust), "value_changed",
|
||||
(GtkSignalFunc) gtk_window_hscroll_callback, (gpointer) this );
|
||||
gtk_signal_connect (GTK_OBJECT (m_vAdjust), "value_changed",
|
||||
gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed",
|
||||
(GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this );
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (m_hAdjust), "changed",
|
||||
gtk_signal_connect( GTK_OBJECT(m_hAdjust), "changed",
|
||||
(GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this );
|
||||
gtk_signal_connect (GTK_OBJECT (m_vAdjust), "changed",
|
||||
gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed",
|
||||
(GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this );
|
||||
|
||||
GtkViewport *viewport;
|
||||
viewport = GTK_VIEWPORT(s_window->viewport);
|
||||
GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport);
|
||||
|
||||
if (m_windowStyle & wxRAISED_BORDER)
|
||||
{
|
||||
@@ -1055,6 +1093,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
|
||||
m_windowSizer = (wxSizer *) NULL;
|
||||
m_sizerParent = (wxWindow *) NULL;
|
||||
m_autoLayout = FALSE;
|
||||
m_hasScrolling = FALSE;
|
||||
m_isScrolling = FALSE;
|
||||
m_pDropTarget = (wxDropTarget *) NULL;
|
||||
m_resizing = FALSE;
|
||||
m_windowValidator = (wxValidator *) NULL;
|
||||
@@ -2197,7 +2237,7 @@ wxWindow *wxWindow::FindWindow( const wxString& name )
|
||||
}
|
||||
|
||||
void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
int range, bool WXUNUSED(refresh) )
|
||||
int range, bool refresh )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
|
||||
@@ -2208,15 +2248,18 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
if (orient == wxHORIZONTAL)
|
||||
{
|
||||
float fpos = (float)pos;
|
||||
m_oldHorizontalPos = fpos;
|
||||
float frange = (float)range;
|
||||
float fthumb = (float)thumbVisible;
|
||||
|
||||
if ((fabs(fpos-m_hAdjust->value) < 0.2) &&
|
||||
(fabs(frange-m_hAdjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_hAdjust->page_size) < 0.2))
|
||||
if ((fabs(frange-m_hAdjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_hAdjust->page_size) < 0.2))
|
||||
{
|
||||
SetScrollPos( orient, pos, refresh );
|
||||
return;
|
||||
}
|
||||
|
||||
m_oldHorizontalPos = fpos;
|
||||
|
||||
m_hAdjust->lower = 0.0;
|
||||
m_hAdjust->upper = frange;
|
||||
m_hAdjust->value = fpos;
|
||||
@@ -2227,14 +2270,17 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
else
|
||||
{
|
||||
float fpos = (float)pos;
|
||||
m_oldVerticalPos = fpos;
|
||||
float frange = (float)range;
|
||||
float fthumb = (float)thumbVisible;
|
||||
|
||||
if ((fabs(fpos-m_vAdjust->value) < 0.2) &&
|
||||
(fabs(frange-m_vAdjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_vAdjust->page_size) < 0.2))
|
||||
if ((fabs(frange-m_vAdjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_vAdjust->page_size) < 0.2))
|
||||
{
|
||||
SetScrollPos( orient, pos, refresh );
|
||||
return;
|
||||
}
|
||||
|
||||
m_oldVerticalPos = fpos;
|
||||
|
||||
m_vAdjust->lower = 0.0;
|
||||
m_vAdjust->upper = frange;
|
||||
@@ -2279,12 +2325,15 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
||||
m_vAdjust->value = fpos;
|
||||
}
|
||||
|
||||
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 (!m_isScrolling)
|
||||
{
|
||||
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" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -62,12 +62,11 @@ static void gtk_notebook_page_change_callback(GtkNotebook *WXUNUSED(widget),
|
||||
int old = notebook->GetSelection();
|
||||
|
||||
// TODO: emulate PAGE_CHANGING event
|
||||
wxNotebookEvent event(wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
|
||||
notebook->GetId(),
|
||||
nPage,
|
||||
old);
|
||||
|
||||
wxNotebookEvent event( wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED,
|
||||
notebook->GetId(), nPage, old );
|
||||
event.SetEventObject( notebook );
|
||||
notebook->ProcessEvent( event );
|
||||
notebook->GetEventHandler()->ProcessEvent( event );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@@ -61,6 +61,34 @@ static void gtk_scrollbar_callback( GtkWidget *WXUNUSED(widget), wxScrollBar *wi
|
||||
*/
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "button_press_event" from slider
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint gtk_scrollbar_button_press_callback( GtkRange *widget, GdkEventButton *gdk_event, wxScrollBar *win )
|
||||
{
|
||||
if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
win->m_isScrolling = TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "button_release_event" from slider
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint gtk_scrollbar_button_release_callback( GtkRange *widget, GdkEventButton *gdk_event, wxScrollBar *win )
|
||||
{
|
||||
if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_adjust), "value_changed" );
|
||||
|
||||
win->m_isScrolling = FALSE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// wxScrollBar
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -93,6 +121,12 @@ bool wxScrollBar::Create(wxWindow *parent, wxWindowID id,
|
||||
gtk_signal_connect (GTK_OBJECT (m_adjust), "value_changed",
|
||||
(GtkSignalFunc) gtk_scrollbar_callback, (gpointer) this );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(m_widget), "button_press_event",
|
||||
(GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(m_widget), "button_release_event",
|
||||
(GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this );
|
||||
|
||||
PostCreation();
|
||||
|
||||
Show( TRUE );
|
||||
@@ -126,25 +160,29 @@ void wxScrollBar::SetPosition( int viewStart )
|
||||
m_oldPos = fpos;
|
||||
if (fabs(fpos-m_adjust->value) < 0.2) return;
|
||||
m_adjust->value = fpos;
|
||||
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" );
|
||||
|
||||
if (!m_isScrolling)
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(m_adjust), "value_changed" );
|
||||
}
|
||||
|
||||
void wxScrollBar::SetScrollbar( int position, int thumbSize, int range, int pageSize,
|
||||
bool WXUNUSED(refresh) )
|
||||
{
|
||||
float fpos = (float)position;
|
||||
m_oldPos = fpos;
|
||||
float frange = (float)range;
|
||||
float fthumb = (float)thumbSize;
|
||||
float fpage = (float)pageSize;
|
||||
|
||||
if ((fabs(fpos-m_adjust->value) < 0.2) &&
|
||||
(fabs(frange-m_adjust->upper) < 0.2) &&
|
||||
if ((fabs(frange-m_adjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_adjust->page_size) < 0.2) &&
|
||||
(fabs(fpage-m_adjust->page_increment) < 0.2))
|
||||
return;
|
||||
{
|
||||
SetPosition( position );
|
||||
return;
|
||||
}
|
||||
|
||||
m_oldPos = fpos;
|
||||
|
||||
m_adjust->lower = 0.0;
|
||||
m_adjust->upper = frange;
|
||||
m_adjust->value = fpos;
|
||||
|
@@ -799,6 +799,39 @@ static void gtk_window_hscroll_change_callback( GtkWidget *WXUNUSED(widget), wxW
|
||||
win->GetEventHandler()->ProcessEvent( event );
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "button_press_event" from scrollbar
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint gtk_scrollbar_button_press_callback( GtkRange *widget, GdkEventButton *gdk_event, wxWindow *win )
|
||||
{
|
||||
if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
win->m_isScrolling = TRUE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "button_release_event" from scrollbar
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
static gint gtk_scrollbar_button_release_callback( GtkRange *widget, GdkEventButton *gdk_event, wxWindow *win )
|
||||
{
|
||||
if (gdk_event->window != widget->slider) return FALSE;
|
||||
|
||||
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(win->m_widget);
|
||||
|
||||
if (widget == GTK_RANGE(s_window->vscrollbar))
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_hAdjust), "value_changed" );
|
||||
else
|
||||
gtk_signal_emit_by_name( GTK_OBJECT(win->m_vAdjust), "value_changed" );
|
||||
|
||||
win->m_isScrolling = FALSE;
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// "drop_data_available_event"
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -865,6 +898,7 @@ wxWindow::wxWindow()
|
||||
m_hasVMT = FALSE;
|
||||
m_needParent = TRUE;
|
||||
m_hasScrolling = FALSE;
|
||||
m_isScrolling = FALSE;
|
||||
m_hAdjust = (GtkAdjustment *) NULL;
|
||||
m_vAdjust = (GtkAdjustment *) NULL;
|
||||
m_oldHorizontalPos = 0.0;
|
||||
@@ -891,9 +925,14 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
m_widget = gtk_scrolled_window_new( (GtkAdjustment *) NULL, (GtkAdjustment *) NULL );
|
||||
m_hasScrolling = TRUE;
|
||||
|
||||
GtkScrolledWindow *s_window;
|
||||
s_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||
|
||||
GtkScrolledWindow *s_window = GTK_SCROLLED_WINDOW(m_widget);
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(s_window->vscrollbar), "button_press_event",
|
||||
(GtkSignalFunc)gtk_scrollbar_button_press_callback, (gpointer) this );
|
||||
|
||||
gtk_signal_connect( GTK_OBJECT(s_window->hscrollbar), "button_release_event",
|
||||
(GtkSignalFunc)gtk_scrollbar_button_release_callback, (gpointer) this );
|
||||
|
||||
GtkScrolledWindowClass *scroll_class = GTK_SCROLLED_WINDOW_CLASS( GTK_OBJECT(m_widget)->klass );
|
||||
scroll_class->scrollbar_spacing = 0;
|
||||
|
||||
@@ -905,18 +944,17 @@ bool wxWindow::Create( wxWindow *parent, wxWindowID id,
|
||||
m_hAdjust = gtk_range_get_adjustment( GTK_RANGE(s_window->hscrollbar) );
|
||||
m_vAdjust = gtk_range_get_adjustment( GTK_RANGE(s_window->vscrollbar) );
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (m_hAdjust), "value_changed",
|
||||
gtk_signal_connect( GTK_OBJECT(m_hAdjust), "value_changed",
|
||||
(GtkSignalFunc) gtk_window_hscroll_callback, (gpointer) this );
|
||||
gtk_signal_connect (GTK_OBJECT (m_vAdjust), "value_changed",
|
||||
gtk_signal_connect( GTK_OBJECT(m_vAdjust), "value_changed",
|
||||
(GtkSignalFunc) gtk_window_vscroll_callback, (gpointer) this );
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (m_hAdjust), "changed",
|
||||
gtk_signal_connect( GTK_OBJECT(m_hAdjust), "changed",
|
||||
(GtkSignalFunc) gtk_window_hscroll_change_callback, (gpointer) this );
|
||||
gtk_signal_connect (GTK_OBJECT (m_vAdjust), "changed",
|
||||
gtk_signal_connect(GTK_OBJECT(m_vAdjust), "changed",
|
||||
(GtkSignalFunc) gtk_window_vscroll_change_callback, (gpointer) this );
|
||||
|
||||
GtkViewport *viewport;
|
||||
viewport = GTK_VIEWPORT(s_window->viewport);
|
||||
GtkViewport *viewport = GTK_VIEWPORT(s_window->viewport);
|
||||
|
||||
if (m_windowStyle & wxRAISED_BORDER)
|
||||
{
|
||||
@@ -1055,6 +1093,8 @@ void wxWindow::PreCreation( wxWindow *parent, wxWindowID id,
|
||||
m_windowSizer = (wxSizer *) NULL;
|
||||
m_sizerParent = (wxWindow *) NULL;
|
||||
m_autoLayout = FALSE;
|
||||
m_hasScrolling = FALSE;
|
||||
m_isScrolling = FALSE;
|
||||
m_pDropTarget = (wxDropTarget *) NULL;
|
||||
m_resizing = FALSE;
|
||||
m_windowValidator = (wxValidator *) NULL;
|
||||
@@ -2197,7 +2237,7 @@ wxWindow *wxWindow::FindWindow( const wxString& name )
|
||||
}
|
||||
|
||||
void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
int range, bool WXUNUSED(refresh) )
|
||||
int range, bool refresh )
|
||||
{
|
||||
wxASSERT_MSG( (m_widget != NULL), "invalid window" );
|
||||
|
||||
@@ -2208,15 +2248,18 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
if (orient == wxHORIZONTAL)
|
||||
{
|
||||
float fpos = (float)pos;
|
||||
m_oldHorizontalPos = fpos;
|
||||
float frange = (float)range;
|
||||
float fthumb = (float)thumbVisible;
|
||||
|
||||
if ((fabs(fpos-m_hAdjust->value) < 0.2) &&
|
||||
(fabs(frange-m_hAdjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_hAdjust->page_size) < 0.2))
|
||||
if ((fabs(frange-m_hAdjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_hAdjust->page_size) < 0.2))
|
||||
{
|
||||
SetScrollPos( orient, pos, refresh );
|
||||
return;
|
||||
}
|
||||
|
||||
m_oldHorizontalPos = fpos;
|
||||
|
||||
m_hAdjust->lower = 0.0;
|
||||
m_hAdjust->upper = frange;
|
||||
m_hAdjust->value = fpos;
|
||||
@@ -2227,14 +2270,17 @@ void wxWindow::SetScrollbar( int orient, int pos, int thumbVisible,
|
||||
else
|
||||
{
|
||||
float fpos = (float)pos;
|
||||
m_oldVerticalPos = fpos;
|
||||
float frange = (float)range;
|
||||
float fthumb = (float)thumbVisible;
|
||||
|
||||
if ((fabs(fpos-m_vAdjust->value) < 0.2) &&
|
||||
(fabs(frange-m_vAdjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_vAdjust->page_size) < 0.2))
|
||||
if ((fabs(frange-m_vAdjust->upper) < 0.2) &&
|
||||
(fabs(fthumb-m_vAdjust->page_size) < 0.2))
|
||||
{
|
||||
SetScrollPos( orient, pos, refresh );
|
||||
return;
|
||||
}
|
||||
|
||||
m_oldVerticalPos = fpos;
|
||||
|
||||
m_vAdjust->lower = 0.0;
|
||||
m_vAdjust->upper = frange;
|
||||
@@ -2279,12 +2325,15 @@ void wxWindow::SetScrollPos( int orient, int pos, bool WXUNUSED(refresh) )
|
||||
m_vAdjust->value = fpos;
|
||||
}
|
||||
|
||||
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 (!m_isScrolling)
|
||||
{
|
||||
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" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user