projects
/
wxWidgets.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Further Wince fixes
[wxWidgets.git]
/
src
/
gtk1
/
scrolwin.cpp
diff --git
a/src/gtk1/scrolwin.cpp
b/src/gtk1/scrolwin.cpp
index efdafd7d07a1eb5cbece0a5cee7f4985ccc828b5..fd31b4e024c25b015742fc1c5eff5604422661b3 100644
(file)
--- a/
src/gtk1/scrolwin.cpp
+++ b/
src/gtk1/scrolwin.cpp
@@
-1,11
+1,11
@@
/////////////////////////////////////////////////////////////////////////////
// Name: gtk/scrolwin.cpp
// Purpose: wxScrolledWindow implementation
/////////////////////////////////////////////////////////////////////////////
// Name: gtk/scrolwin.cpp
// Purpose: wxScrolledWindow implementation
-// Author:
Julian Smart
+// Author:
Robert Roebling
// Modified by: Ron Lee
// Created: 01/02/97
// RCS-ID: $Id$
// Modified by: Ron Lee
// Created: 01/02/97
// RCS-ID: $Id$
-// Copyright: (c)
Julian Smart
+// Copyright: (c)
Robert Roebling
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
@@
-17,7
+17,7
@@
// headers
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
-#if
def __GNUG__
+#if
defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
#pragma implementation "scrolwin.h"
#endif
#pragma implementation "scrolwin.h"
#endif
@@
-28,10
+28,9
@@
#pragma hdrstop
#endif
#pragma hdrstop
#endif
+#include "wx/scrolwin.h"
#include "wx/utils.h"
#include "wx/dcclient.h"
#include "wx/utils.h"
#include "wx/dcclient.h"
-
-#include "wx/scrolwin.h"
#include "wx/panel.h"
#include "wx/sizer.h"
#include "wx/panel.h"
#include "wx/sizer.h"
@@
-83,7
+82,7
@@
static void gtk_scrolled_window_vscroll_callback( GtkAdjustment *adjust,
if (g_blockEventsOnDrag) return;
if (!win->m_hasVMT) return;
if (g_blockEventsOnDrag) return;
if (!win->m_hasVMT) return;
-
+
win->GtkVScroll( adjust->value,
GET_SCROLL_TYPE(GTK_SCROLLED_WINDOW(win->m_widget)->vscrollbar) );
}
win->GtkVScroll( adjust->value,
GET_SCROLL_TYPE(GTK_SCROLLED_WINDOW(win->m_widget)->vscrollbar) );
}
@@
-288,7
+287,7
@@
bool wxScrolledWindow::Create(wxWindow *parent,
GtkHConnectEvent();
// these handlers block mouse events to any window during scrolling such as
GtkHConnectEvent();
// these handlers block mouse events to any window during scrolling such as
- // motion events and prevent GTK and wxWi
ndow
s from fighting over where the
+ // motion events and prevent GTK and wxWi
dget
s from fighting over where the
// slider should be
gtk_signal_connect( GTK_OBJECT(scrolledWindow->vscrollbar), "button_press_event",
// slider should be
gtk_signal_connect( GTK_OBJECT(scrolledWindow->vscrollbar), "button_press_event",
@@
-340,8
+339,11
@@
void wxScrolledWindow::SetScrollbars( int pixelsPerUnitX, int pixelsPerUnitY,
int noUnitsX, int noUnitsY,
int xPos, int yPos, bool noRefresh )
{
int noUnitsX, int noUnitsY,
int xPos, int yPos, bool noRefresh )
{
- int old_x = m_xScrollPixelsPerLine * m_xScrollPosition;
- int old_y = m_yScrollPixelsPerLine * m_yScrollPosition;
+ int xs, ys;
+ GetViewStart (& xs, & ys);
+
+ int old_x = m_xScrollPixelsPerLine * xs;
+ int old_y = m_yScrollPixelsPerLine * ys;
m_xScrollPixelsPerLine = pixelsPerUnitX;
m_yScrollPixelsPerLine = pixelsPerUnitY;
m_xScrollPixelsPerLine = pixelsPerUnitX;
m_yScrollPixelsPerLine = pixelsPerUnitY;
@@
-375,12
+377,14
@@
void wxScrolledWindow::AdjustScrollbars()
if (m_xScrollPixelsPerLine == 0)
{
m_hAdjust->upper = 1.0;
if (m_xScrollPixelsPerLine == 0)
{
m_hAdjust->upper = 1.0;
+ m_hAdjust->page_increment = 1.0;
m_hAdjust->page_size = 1.0;
}
else
{
m_hAdjust->upper = vw / m_xScrollPixelsPerLine;
m_hAdjust->page_size = 1.0;
}
else
{
m_hAdjust->upper = vw / m_xScrollPixelsPerLine;
- m_hAdjust->page_size = (w / m_xScrollPixelsPerLine);
+ m_hAdjust->page_increment = (w / m_xScrollPixelsPerLine);
+ m_hAdjust->page_size = m_hAdjust->page_increment;
// If the scrollbar hits the right side, move the window
// right to keep it from over extending.
// If the scrollbar hits the right side, move the window
// right to keep it from over extending.
@@
-401,12
+405,14
@@
void wxScrolledWindow::AdjustScrollbars()
if (m_yScrollPixelsPerLine == 0)
{
m_vAdjust->upper = 1.0;
if (m_yScrollPixelsPerLine == 0)
{
m_vAdjust->upper = 1.0;
+ m_vAdjust->page_increment = 1.0;
m_vAdjust->page_size = 1.0;
}
else
{
m_vAdjust->upper = vh / m_yScrollPixelsPerLine;
m_vAdjust->page_size = 1.0;
}
else
{
m_vAdjust->upper = vh / m_yScrollPixelsPerLine;
- m_vAdjust->page_size = (h / m_yScrollPixelsPerLine);
+ m_vAdjust->page_increment = (h / m_yScrollPixelsPerLine);
+ m_vAdjust->page_size = m_vAdjust->page_increment;
if ((m_vAdjust->value != 0.0) && (m_vAdjust->value + m_vAdjust->page_size > m_vAdjust->upper))
{
if ((m_vAdjust->value != 0.0) && (m_vAdjust->value + m_vAdjust->page_size > m_vAdjust->upper))
{
@@
-421,8
+427,8
@@
void wxScrolledWindow::AdjustScrollbars()
}
}
}
}
- m_xScrollLinesPerPage = (int)(m_hAdjust->page_
size
+ 0.5);
- m_yScrollLinesPerPage = (int)(m_vAdjust->page_
size
+ 0.5);
+ m_xScrollLinesPerPage = (int)(m_hAdjust->page_
increment
+ 0.5);
+ m_yScrollLinesPerPage = (int)(m_vAdjust->page_
increment
+ 0.5);
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" );
gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" );
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "changed" );
gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "changed" );
@@
-439,14
+445,14
@@
void wxScrolledWindow::SetTargetWindow( wxWindow *target, bool WXUNUSED(pushEven
m_targetWindow = target;
}
m_targetWindow = target;
}
-wxWindow *wxScrolledWindow::GetTargetWindow()
+wxWindow *wxScrolledWindow::GetTargetWindow()
const
{
return m_targetWindow;
}
// Override this function if you don't want to have wxScrolledWindow
// automatically change the origin according to the scroll position.
{
return m_targetWindow;
}
// Override this function if you don't want to have wxScrolledWindow
// automatically change the origin according to the scroll position.
-void wxScrolledWindow::PrepareDC(wxDC& dc)
+void wxScrolledWindow::
Do
PrepareDC(wxDC& dc)
{
dc.SetDeviceOrigin( -m_xScrollPosition * m_xScrollPixelsPerLine,
-m_yScrollPosition * m_yScrollPixelsPerLine );
{
dc.SetDeviceOrigin( -m_xScrollPosition * m_xScrollPixelsPerLine,
-m_yScrollPosition * m_yScrollPixelsPerLine );
@@
-555,7
+561,7
@@
void wxScrolledWindow::Scroll( int x_pos, int y_pos )
m_targetWindow->ScrollWindow( (old_x-m_xScrollPosition)*m_xScrollPixelsPerLine, 0 );
m_targetWindow->ScrollWindow( (old_x-m_xScrollPosition)*m_xScrollPixelsPerLine, 0 );
- // Just update the scrollbar, don't send any wxWi
ndow
s event
+ // Just update the scrollbar, don't send any wxWi
dget
s event
GtkHDisconnectEvent();
gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
GtkHConnectEvent();
GtkHDisconnectEvent();
gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
GtkHConnectEvent();
@@
-574,7
+580,7
@@
void wxScrolledWindow::Scroll( int x_pos, int y_pos )
m_targetWindow->ScrollWindow( 0, (old_y-m_yScrollPosition)*m_yScrollPixelsPerLine );
m_targetWindow->ScrollWindow( 0, (old_y-m_yScrollPosition)*m_yScrollPixelsPerLine );
- // Just update the scrollbar, don't send any wxWi
ndow
s event
+ // Just update the scrollbar, don't send any wxWi
dget
s event
GtkVDisconnectEvent();
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
GtkVConnectEvent();
GtkVDisconnectEvent();
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
GtkVConnectEvent();
@@
-638,18
+644,24
@@
void wxScrolledWindow::GetViewStart (int *x, int *y) const
void wxScrolledWindow::DoCalcScrolledPosition(int x, int y, int *xx, int *yy) const
{
void wxScrolledWindow::DoCalcScrolledPosition(int x, int y, int *xx, int *yy) const
{
+ int xs, ys;
+ GetViewStart (& xs, & ys);
+
if ( xx )
if ( xx )
- *xx = x -
m_xScrollPosition
* m_xScrollPixelsPerLine;
+ *xx = x -
xs
* m_xScrollPixelsPerLine;
if ( yy )
if ( yy )
- *yy = y -
m_yScrollPosition
* m_yScrollPixelsPerLine;
+ *yy = y -
ys
* m_yScrollPixelsPerLine;
}
void wxScrolledWindow::DoCalcUnscrolledPosition(int x, int y, int *xx, int *yy) const
{
}
void wxScrolledWindow::DoCalcUnscrolledPosition(int x, int y, int *xx, int *yy) const
{
+ int xs, ys;
+ GetViewStart (& xs, & ys);
+
if ( xx )
if ( xx )
- *xx = x +
m_xScrollPosition
* m_xScrollPixelsPerLine;
+ *xx = x +
xs
* m_xScrollPixelsPerLine;
if ( yy )
if ( yy )
- *yy = y +
m_yScrollPosition
* m_yScrollPixelsPerLine;
+ *yy = y +
ys
* m_yScrollPixelsPerLine;
}
int wxScrolledWindow::CalcScrollInc(wxScrollWinEvent& event)
}
int wxScrolledWindow::CalcScrollInc(wxScrollWinEvent& event)
@@
-770,14
+782,14
@@
void wxScrolledWindow::SetScrollPos( int orient, int pos, bool refresh )
{
if (orient == wxHORIZONTAL)
{
{
if (orient == wxHORIZONTAL)
{
- // Just update the scrollbar, don't send any wxWi
ndow
s event
+ // Just update the scrollbar, don't send any wxWi
dget
s event
GtkHDisconnectEvent();
gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
GtkHConnectEvent();
}
else
{
GtkHDisconnectEvent();
gtk_signal_emit_by_name( GTK_OBJECT(m_hAdjust), "value_changed" );
GtkHConnectEvent();
}
else
{
- // Just update the scrollbar, don't send any wxWi
ndow
s event
+ // Just update the scrollbar, don't send any wxWi
dget
s event
GtkVDisconnectEvent();
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
GtkVConnectEvent();
GtkVDisconnectEvent();
gtk_signal_emit_by_name( GTK_OBJECT(m_vAdjust), "value_changed" );
GtkVConnectEvent();