-
-// Coordinates relative to the window
-void wxWindowX11::WarpPointer (int x, int y)
-{
- Window wClient = (Window) GetClientWindow();
-
- XWarpPointer((Display*) wxGetDisplay(), None, wClient, 0, 0, 0, 0, x, y);
-}
-
-// ---------------------------------------------------------------------------
-// scrolling stuff
-// ---------------------------------------------------------------------------
-
-int wxWindowX11::GetScrollPos(int orient) const
-{
- if (orient == wxHORIZONTAL)
- return m_scrollPosX;
- else
- return m_scrollPosY;
-}
-
-// This now returns the whole range, not just the number of positions that we
-// can scroll.
-int wxWindowX11::GetScrollRange(int WXUNUSED(orient)) const
-{
- // TODO
- return 0;
-#if 0
- Widget scrollBar = (Widget)GetScrollbar((wxOrientation)orient);
- wxCHECK_MSG( scrollBar, 0, "no such scrollbar" );
-
- int range;
- XtVaGetValues(scrollBar, XmNmaximum, &range, NULL);
- return range;
-#endif
-}
-
-int wxWindowX11::GetScrollThumb(int orient) const
-{
- // TODO
- return 0;
-
-#if 0
- Widget scrollBar = (Widget)GetScrollbar((wxOrientation)orient);
- wxCHECK_MSG( scrollBar, 0, "no such scrollbar" );
-
- int thumb;
- XtVaGetValues(scrollBar, XmNsliderSize, &thumb, NULL);
- return thumb;
-#endif
-}
-
-void wxWindowX11::SetScrollPos(int orient, int pos, bool WXUNUSED(refresh))
-{
- // TODO
-
-#if 0
- Widget scrollBar = (Widget)GetScrollbar((wxOrientation)orient);
-
- if ( scrollBar )
- {
- XtVaSetValues (scrollBar, XmNvalue, pos, NULL);
- }
-#endif
- SetInternalScrollPos((wxOrientation)orient, pos);
-}
-
-// New function that will replace some of the above.
-void wxWindowX11::SetScrollbar(int WXUNUSED(orient), int WXUNUSED(pos), int WXUNUSED(thumbVisible),
- int WXUNUSED(range), bool WXUNUSED(refresh))
-{
- // TODO
-#if 0
- int oldW, oldH;
- GetSize(& oldW, & oldH);
-
- if (range == 0)
- range = 1;
- if (thumbVisible == 0)
- thumbVisible = 1;
-
- if (thumbVisible > range)
- thumbVisible = range;
-
- // Save the old state to see if it changed
- WXWidget oldScrollBar = GetScrollbar((wxOrientation)orient);
-
- if (orient == wxHORIZONTAL)
- {
- if (thumbVisible == range)
- {
- if (m_hScrollBar)
- DestroyScrollbar(wxHORIZONTAL);
- }
- else
- {
- if (!m_hScrollBar)
- CreateScrollbar(wxHORIZONTAL);
- }
- }
- if (orient == wxVERTICAL)
- {
- if (thumbVisible == range)
- {
- if (m_vScrollBar)
- DestroyScrollbar(wxVERTICAL);
- }
- else
- {
- if (!m_vScrollBar)
- CreateScrollbar(wxVERTICAL);
- }
- }
- WXWidget newScrollBar = GetScrollbar((wxOrientation)orient);
-
- if (oldScrollBar != newScrollBar)
- {
- // This is important! Without it, scrollbars misbehave badly.
- XtUnrealizeWidget((Widget) m_scrolledWindow);
- XmScrolledWindowSetAreas ((Widget) m_scrolledWindow, (Widget) m_hScrollBar, (Widget) m_vScrollBar, (Widget) m_drawingArea);
- XtRealizeWidget((Widget) m_scrolledWindow);
- XtManageChild((Widget) m_scrolledWindow);
- }
-
- if (newScrollBar)
- {
- XtVaSetValues((Widget) newScrollBar,
- XmNvalue, pos,
- XmNminimum, 0,
- XmNmaximum, range,
- XmNsliderSize, thumbVisible,
- NULL);
- }
-
- SetInternalScrollPos((wxOrientation)orient, pos);
-
- int newW, newH;
- GetSize(& newW, & newH);
-
- // Adjusting scrollbars can resize the canvas accidentally
- if (newW != oldW || newH != oldH)
- SetSize(-1, -1, oldW, oldH);
-#endif
-}
-
-// Does a physical scroll
-void wxWindowX11::ScrollWindow(int dx, int dy, const wxRect *rect)
-{
- int x, y, w, h;
- if (rect)
- {
- // Use specified rectangle
- x = rect->x; y = rect->y; w = rect->width; h = rect->height;
- }
- else
- {
- // Use whole client area
- x = 0; y = 0;
- GetClientSize(& w, & h);
- }
-
- wxNode *cnode = m_children.First();
- while (cnode)
- {
- wxWindow *child = (wxWindow*) cnode->Data();
- int sx = 0;
- int sy = 0;
- child->GetSize( &sx, &sy );
- wxPoint pos( child->GetPosition() );
- child->SetSize( pos.x + dx, pos.y + dy, sx, sy, wxSIZE_ALLOW_MINUS_ONE );
- cnode = cnode->Next();
- }
-
- int x1 = (dx >= 0) ? x : x - dx;
- int y1 = (dy >= 0) ? y : y - dy;
- int w1 = w - abs(dx);
- int h1 = h - abs(dy);
- int x2 = (dx >= 0) ? x + dx : x;
- int y2 = (dy >= 0) ? y + dy : y;
-
- wxClientDC dc((wxWindow*) this);
-
- dc.SetLogicalFunction (wxCOPY);
-
- Window window = (Window) GetMainWindow();
- Display* display = (Display*) wxGetDisplay();
-
- XCopyArea(display, window, window, (GC) dc.GetGC(),
- x1, y1, w1, h1, x2, y2);
-
- dc.SetAutoSetting(TRUE);
- wxBrush brush(GetBackgroundColour(), wxSOLID);
- dc.SetBrush(brush); // FIXME: needed?