mirror of
https://github.com/fltk/fltk.git
synced 2026-06-04 23:42:15 +08:00
Fixed issues with Fl_Scroll inside and Fl_Scroll (STR #265)
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6117 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
CHANGES IN FLTK 1.3.0
|
CHANGES IN FLTK 1.3.0
|
||||||
|
|
||||||
|
- added scroll_to() to Fl_Scroll, replacing position()
|
||||||
|
which now behaves as it should (STR #1303)
|
||||||
|
- fixed Fl_Scroll inside Fl_Scroll (STR #265)
|
||||||
- hardcoded 1.1 references in src/Makefile to 1.3
|
- hardcoded 1.1 references in src/Makefile to 1.3
|
||||||
(STR #1922)
|
(STR #1922)
|
||||||
- changed font index to 32 bit
|
- changed font index to 32 bit
|
||||||
|
|||||||
+1
-1
@@ -68,7 +68,7 @@ public:
|
|||||||
|
|
||||||
int xposition() const {return xposition_;}
|
int xposition() const {return xposition_;}
|
||||||
int yposition() const {return yposition_;}
|
int yposition() const {return yposition_;}
|
||||||
void position(int, int);
|
void scroll_to(int, int);
|
||||||
void clear();
|
void clear();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -52,15 +52,13 @@ space for the scrollbars, as Fluid won't show these either. </P>
|
|||||||
<P><I>You cannot use <TT>Fl_Window</TT> as a child of this since the
|
<P><I>You cannot use <TT>Fl_Window</TT> as a child of this since the
|
||||||
clipping is not conveyed to it when drawn, and it will draw over the
|
clipping is not conveyed to it when drawn, and it will draw over the
|
||||||
scrollbars and neighboring objects.</I></P>
|
scrollbars and neighboring objects.</I></P>
|
||||||
<P><I><TT>Fl_Scroll</TT> widgets should not be nested. Having an Fl_Scroll
|
|
||||||
inside another Fl_Scroll may result in drawing errors when resizing.</I></P>
|
|
||||||
<H3>Methods</H3>
|
<H3>Methods</H3>
|
||||||
<UL>
|
<UL>
|
||||||
<LI><A href=#Fl_Scroll.Fl_Scroll>Fl_Scroll</A></LI>
|
<LI><A href=#Fl_Scroll.Fl_Scroll>Fl_Scroll</A></LI>
|
||||||
<LI><A href=#Fl_Scroll.~Fl_Scroll>~Fl_Scroll</A></LI>
|
<LI><A href=#Fl_Scroll.~Fl_Scroll>~Fl_Scroll</A></LI>
|
||||||
<LI><A href=#Fl_Scroll.align>align</A></LI>
|
<LI><A href=#Fl_Scroll.align>align</A></LI>
|
||||||
<LI><A href=#Fl_Scroll.position>position</A></LI>
|
|
||||||
<LI><A href=#Fl_Scroll.type>type</A></LI>
|
<LI><A href=#Fl_Scroll.type>type</A></LI>
|
||||||
|
<LI><A href=#Fl_Scroll.scroll_to>scroll_to</A></LI>
|
||||||
<LI><A href=#Fl_Scroll.xposition>xposition</A></LI>
|
<LI><A href=#Fl_Scroll.xposition>xposition</A></LI>
|
||||||
<LI><A href=#Fl_Scroll.yposition>yposition</A></LI>
|
<LI><A href=#Fl_Scroll.yposition>yposition</A></LI>
|
||||||
</UL>
|
</UL>
|
||||||
@@ -100,6 +98,8 @@ considered. The flags in <TT>hscrollbar</TT> however are ignored.
|
|||||||
Gets the current horizontal scrolling position.
|
Gets the current horizontal scrolling position.
|
||||||
<H4><A name=Fl_Scroll.yposition>int Fl_Scroll::yposition() const</A></H4>
|
<H4><A name=Fl_Scroll.yposition>int Fl_Scroll::yposition() const</A></H4>
|
||||||
Gets the current vertical scrolling position.
|
Gets the current vertical scrolling position.
|
||||||
<H4><A name=Fl_Scroll.position>void Fl_Scroll::position(int w, int h)</A>
|
<H4><A name=Fl_Scroll.scroll_to>void Fl_Scroll::scroll_to(int x, int y)</A></H4>
|
||||||
</H4>
|
Moves the contents of the scroll group to a new position.
|
||||||
Sets the upper-lefthand corner of the scrolling region. </BODY></HTML>
|
<H4><A name=Fl_Scroll.position>void Fl_Scroll::position(int x, int y)</A></H4>
|
||||||
|
Moves the scroll group itself to a new position.
|
||||||
|
</BODY></HTML>
|
||||||
|
|||||||
+15
-4
@@ -237,17 +237,28 @@ void Fl_Scroll::draw() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Fl_Scroll::resize(int X, int Y, int W, int H) {
|
void Fl_Scroll::resize(int X, int Y, int W, int H) {
|
||||||
|
int dx = X-x(), dy = Y-y();
|
||||||
fix_scrollbar_order();
|
fix_scrollbar_order();
|
||||||
// move all the children:
|
// move all the children:
|
||||||
Fl_Widget*const* a = array();
|
Fl_Widget*const* a = array();
|
||||||
for (int i=children()-2; i--;) {
|
for (int i=children()-2; i--;) {
|
||||||
Fl_Object* o = *a++;
|
Fl_Object* o = *a++;
|
||||||
o->position(o->x()+X-x(), o->y()+Y-y());
|
o->position(o->x()+dx, o->y()+dy);
|
||||||
|
}
|
||||||
|
if (w()==W && h()==H) {
|
||||||
|
char pad = (scrollbar.visible() && hscrollbar.visible());
|
||||||
|
char al = (scrollbar.align()&FL_ALIGN_LEFT!=0);
|
||||||
|
char at = (scrollbar.align()&FL_ALIGN_TOP!=0);
|
||||||
|
scrollbar.position(al?X:X+W-scrollbar.w(), (at&&pad)?Y+hscrollbar.h():Y);
|
||||||
|
hscrollbar.position((al&&pad)?X+scrollbar.w():X, at?Y:Y+H-hscrollbar.h());
|
||||||
|
} else {
|
||||||
|
// FIXME recalculation of scrollbars needs to be moved out fo "draw()" (STR #1895)
|
||||||
|
redraw(); // need full recalculation of scrollbars
|
||||||
}
|
}
|
||||||
Fl_Widget::resize(X,Y,W,H);
|
Fl_Widget::resize(X,Y,W,H);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fl_Scroll::position(int X, int Y) {
|
void Fl_Scroll::scroll_to(int X, int Y) {
|
||||||
int dx = xposition_-X;
|
int dx = xposition_-X;
|
||||||
int dy = yposition_-Y;
|
int dy = yposition_-Y;
|
||||||
if (!dx && !dy) return;
|
if (!dx && !dy) return;
|
||||||
@@ -265,12 +276,12 @@ void Fl_Scroll::position(int X, int Y) {
|
|||||||
|
|
||||||
void Fl_Scroll::hscrollbar_cb(Fl_Widget* o, void*) {
|
void Fl_Scroll::hscrollbar_cb(Fl_Widget* o, void*) {
|
||||||
Fl_Scroll* s = (Fl_Scroll*)(o->parent());
|
Fl_Scroll* s = (Fl_Scroll*)(o->parent());
|
||||||
s->position(int(((Fl_Scrollbar*)o)->value()), s->yposition());
|
s->scroll_to(int(((Fl_Scrollbar*)o)->value()), s->yposition());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fl_Scroll::scrollbar_cb(Fl_Widget* o, void*) {
|
void Fl_Scroll::scrollbar_cb(Fl_Widget* o, void*) {
|
||||||
Fl_Scroll* s = (Fl_Scroll*)(o->parent());
|
Fl_Scroll* s = (Fl_Scroll*)(o->parent());
|
||||||
s->position(s->xposition(), int(((Fl_Scrollbar*)o)->value()));
|
s->scroll_to(s->xposition(), int(((Fl_Scrollbar*)o)->value()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Scroll::Fl_Scroll(int X,int Y,int W,int H,const char* L)
|
Fl_Scroll::Fl_Scroll(int X,int Y,int W,int H,const char* L)
|
||||||
|
|||||||
Reference in New Issue
Block a user