summaryrefslogtreecommitdiff
path: root/fluid
diff options
context:
space:
mode:
Diffstat (limited to 'fluid')
-rw-r--r--fluid/Fl_Type.h3
-rw-r--r--fluid/Fl_Window_Type.cxx7
2 files changed, 8 insertions, 2 deletions
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