summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES1
-rw-r--r--fluid/Fl_Type.h3
-rw-r--r--fluid/Fl_Window_Type.cxx7
3 files changed, 9 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index 7ca8eaf84..d69d9a34a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3,6 +3,7 @@ CHANGES IN FLTK 1.1.7
- Documentation fixes (STR #571, STR #648, STR #692, STR
#730, STR #744, STR #745, STR #931, STR #942, STR #960,
STR #969)
+ - FLUID selection boxes now synchronised (STR #964)
- fl_filename_list now recognizes pathnames without trailing
slash as directions (STR #854)
- Fl_Text_Display now auto-scrolls in all
diff --git a/fluid/Fl_Type.h b/fluid/Fl_Type.h
index 4c7d18af5..8220273bb 100644
--- a/fluid/Fl_Type.h
+++ b/fluid/Fl_Type.h
@@ -464,7 +464,8 @@ protected:
friend class Overlay_Window;
int mx,my; // mouse position during dragging
int x1,y1; // initial position of selection box
- int bx,by,br,bt; // bounding box of selection
+ int bx,by,br,bt; // bounding box of selection before snapping
+ int sx,sy,sr,st; // bounding box of selection after snapping to guides
int dx,dy;
int drag; // which parts of bbox are being moved
int numselected; // number of children selected
diff --git a/fluid/Fl_Window_Type.cxx b/fluid/Fl_Window_Type.cxx
index 44c9f61da..9223ae918 100644
--- a/fluid/Fl_Window_Type.cxx
+++ b/fluid/Fl_Window_Type.cxx
@@ -647,6 +647,7 @@ void Fl_Window_Type::draw_overlay() {
if (myo->o->y()+myo->o->h() > bt) bt = myo->o->y()+myo->o->h();
}
recalc = 0;
+ sx = bx; sy = by; sr = br; st = bt;
}
fl_color(FL_RED);
if (drag==BOX && (x1 != mx || y1 != my)) {
@@ -695,7 +696,7 @@ void Fl_Window_Type::draw_overlay() {
// - check for distance to the window edge
// * FLTK suggests 10 pixels from the edge
int d;
- int xsp, ysp;
+ int xsp, ysp, mybx_bak = mybx, myby_bak = myby;
Fl_Widget_Type *mysel = (Fl_Widget_Type *)selection;
@@ -973,7 +974,11 @@ void Fl_Window_Type::draw_overlay() {
}
}
}
+ mysx += mybx-mybx_bak; mysr += mybx-mybx_bak;
+ mysy += myby-myby_bak; myst += myby-myby_bak;
}
+ // align the snapping selection box with the box we draw.
+ sx = mysx; sy = mysy; sr = mysr; st = myst;
// Draw selection box + resize handles...
// draw box including all labels