added selecting-while-dragging

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20922 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2003-06-04 18:17:04 +00:00
parent 8ca3dfcdfa
commit 1338c59a02
4 changed files with 252 additions and 33 deletions

View File

@@ -41,9 +41,9 @@ public:
m_fromPrivPos(wxDefaultPosition), m_toPrivPos(wxDefaultPosition),
m_fromCell(NULL), m_toCell(NULL) {}
void Set(const wxPoint& fromPos, wxHtmlCell *fromCell,
const wxPoint& toPos, wxHtmlCell *toCell);
void Set(wxHtmlCell *fromCell, wxHtmlCell *toCell);
void Set(const wxPoint& fromPos, const wxHtmlCell *fromCell,
const wxPoint& toPos, const wxHtmlCell *toCell);
void Set(const wxHtmlCell *fromCell, const wxHtmlCell *toCell);
const wxHtmlCell *GetFromCell() const { return m_fromCell; }
const wxHtmlCell *GetToCell() const { return m_toCell; }
@@ -57,6 +57,7 @@ public:
const wxPoint& GetToPrivPos() const { return m_toPrivPos; }
void SetFromPrivPos(const wxPoint& pos) { m_fromPrivPos = pos; }
void SetToPrivPos(const wxPoint& pos) { m_toPrivPos = pos; }
void ClearPrivPos() { m_toPrivPos = m_fromPrivPos = wxDefaultPosition; }
const bool IsEmpty() const
{ return m_fromPos == wxDefaultPosition &&
@@ -65,7 +66,7 @@ public:
private:
wxPoint m_fromPos, m_toPos;
wxPoint m_fromPrivPos, m_toPrivPos;
wxHtmlCell *m_fromCell, *m_toCell;
const wxHtmlCell *m_fromCell, *m_toCell;
};
@@ -144,7 +145,7 @@ enum
{
wxHTML_FIND_EXACT = 1,
wxHTML_FIND_NEAREST_BEFORE = 2,
wxHTML_FIND_NEAREST_AFTER = 4,
wxHTML_FIND_NEAREST_AFTER = 4
};
@@ -283,10 +284,7 @@ public:
// cells (= as they are read). If cell A is (grand)parent of cell B,
// then both A.IsBefore(B) and B.IsBefore(A) always return true.
bool IsBefore(wxHtmlCell *cell) const;
// Sets cell's private position values in wxHtmlSelection
virtual void SetSelectionPrivPos(wxDC& dc, wxHtmlSelection *s) const {}
// Converts the cell into text representation. If sel != NULL then
// only part of the cell inside the selection is converted.
virtual wxString ConvertToText(wxHtmlSelection *WXUNUSED(sel)) const
@@ -332,9 +330,9 @@ public:
void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2,
wxHtmlRenderingInfo& info);
wxString ConvertToText(wxHtmlSelection *sel) const;
void SetSelectionPrivPos(wxDC& dc, wxHtmlSelection *s) const;
protected:
void SetSelectionPrivPos(wxDC& dc, wxHtmlSelection *s) const;
void Split(wxDC& dc,
const wxPoint& selFrom, const wxPoint& selTo,
unsigned& pos1, unsigned& pos2) const;

View File

@@ -32,6 +32,7 @@ class wxHtmlProcessor;
class wxHtmlWinModule;
class wxHtmlHistoryArray;
class wxHtmlProcessorList;
class WXDLLEXPORT wxHtmlWinAutoScrollTimer;
// wxHtmlWindow flags:
@@ -207,7 +208,8 @@ protected:
// actual size of window. This method also setup scrollbars
void CreateLayout();
void OnDraw(wxDC& dc);
void OnEraseBackground(wxEraseEvent& event);
void OnPaint(wxPaintEvent& event);
void OnSize(wxSizeEvent& event);
void OnMouseMove(wxMouseEvent& event);
void OnMouseDown(wxMouseEvent& event);
@@ -216,6 +218,8 @@ protected:
#if wxUSE_CLIPBOARD
void OnKeyUp(wxKeyEvent& event);
void OnCopy(wxCommandEvent& event);
void OnMouseEnter(wxMouseEvent& event);
void OnMouseLeave(wxMouseEvent& event);
#endif
// Returns new filter (will be stored into m_DefaultFilter variable)
@@ -228,6 +232,7 @@ protected:
// and wxHW_NO_SELECTION not used)
bool IsSelectionEnabled() const;
#if wxUSE_CLIPBOARD
// Convert selection to text:
wxString SelectionToText();
@@ -239,10 +244,12 @@ protected:
// Copies selection to clipboard:
void CopySelection(ClipboardType t = Secondary);
void StopAutoScrolling();
#endif
protected:
// This is pointer to the first cell in parsed data.
// (Note: the first cell is usually top one = all other cells are sub-cells of this one)
// This is pointer to the first cell in parsed data. (Note: the first cell
// is usually top one = all other cells are sub-cells of this one)
wxHtmlContainerCell *m_Cell;
// parser which is used to parse HTML input.
// Each wxHtmlWindow has it's own parser because sharing one global
@@ -275,7 +282,14 @@ protected:
// true if the user is dragging mouse to select text
bool m_makingSelection;
#if wxUSE_CLIPBOARD
wxHtmlWinAutoScrollTimer *m_timerAutoScroll;
#endif
private:
// window content for double buffered rendering:
wxBitmap *m_backBuffer;
// variables used when user is selecting text
wxPoint m_tmpSelFromPos;
wxHtmlCell *m_tmpSelFromCell;