Author: matt
Date: 2012-05-09 08:07:24 -0700 (Wed, 09 May 2012)
New Revision: 9474
Log:
Fixed scrolling

Modified:
   branches/branch-3.0/src/fltk3/MenuButton.cxx
   branches/branch-3.0/src/fltk3/PackedGroup.cxx
   branches/branch-3.0/src/fltk3/ScrollGroup.cxx
   branches/branch-3.0/src/fltk3/scroll_area.cxx
   branches/branch-3.0/test/native-filechooser.cxx
   branches/branch-3.0/test/pack.cxx

Modified: branches/branch-3.0/src/fltk3/MenuButton.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/MenuButton.cxx        2012-05-09 14:31:58 UTC 
(rev 9473)
+++ branches/branch-3.0/src/fltk3/MenuButton.cxx        2012-05-09 15:07:24 UTC 
(rev 9474)
@@ -61,7 +61,7 @@
   redraw();
   fltk3::WidgetTracker mb(this);
   if (!box() || type()) {
-    m = menu()->popup(event_x_root()-event_x(), event_y_root()-event_y(), 
label(), mvalue(), this);
+    m = menu()->popup(dx_window()+event_x(), dy_window()+event_y(), label(), 
mvalue(), this);
   } else {
     m = menu()->pulldown(dx_window(), dy_window(), w(), h(), 0, this);
   }

Modified: branches/branch-3.0/src/fltk3/PackedGroup.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/PackedGroup.cxx       2012-05-09 14:31:58 UTC 
(rev 9473)
+++ branches/branch-3.0/src/fltk3/PackedGroup.cxx       2012-05-09 15:07:24 UTC 
(rev 9474)
@@ -80,8 +80,8 @@
 }
 
 void fltk3::PackedGroup::draw() {
-  int tx = x()+fltk3::box_dx(box());
-  int ty = y()+fltk3::box_dy(box());
+  int tx =     fltk3::box_dx(box());
+  int ty =     fltk3::box_dy(box());
   int tw = w()-fltk3::box_dw(box());
   int th = h()-fltk3::box_dh(box());
   int rw, rh;

Modified: branches/branch-3.0/src/fltk3/ScrollGroup.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/ScrollGroup.cxx       2012-05-09 14:31:58 UTC 
(rev 9473)
+++ branches/branch-3.0/src/fltk3/ScrollGroup.cxx       2012-05-09 15:07:24 UTC 
(rev 9474)
@@ -109,8 +109,8 @@
 void fltk3::ScrollGroup::recalc_scrollbars(ScrollInfo &si) {
 
   // inner box of widget (excluding scrollbars)
-  si.innerbox_x = x()+fltk3::box_dx(box());
-  si.innerbox_y = y()+fltk3::box_dy(box());
+  si.innerbox_x =     fltk3::box_dx(box());
+  si.innerbox_y =     fltk3::box_dy(box());
   si.innerbox_w = w()-fltk3::box_dw(box());
   si.innerbox_h = h()-fltk3::box_dh(box());
 
@@ -229,8 +229,8 @@
   outside of the draw() method (STR #1895).
 */
 void fltk3::ScrollGroup::bbox(int& X, int& Y, int& W, int& H) {
-  X = x()+fltk3::box_dx(box());
-  Y = y()+fltk3::box_dy(box());
+  X =     fltk3::box_dx(box());
+  Y =     fltk3::box_dy(box());
   W = w()-fltk3::box_dw(box());
   H = h()-fltk3::box_dh(box());
   if (scrollbar.visible()) {
@@ -250,7 +250,7 @@
   uchar d = damage();
 
   if (d & fltk3::DAMAGE_ALL) { // full redraw
-    draw_box(box(),x(),y(),w(),h(),color());
+    draw_box(box(),0,0,w(),h(),color());
     draw_clip(this, X, Y, W, H);
   } else {
     if (d & fltk3::DAMAGE_SCROLL) {

Modified: branches/branch-3.0/src/fltk3/scroll_area.cxx
===================================================================
--- branches/branch-3.0/src/fltk3/scroll_area.cxx       2012-05-09 14:31:58 UTC 
(rev 9473)
+++ branches/branch-3.0/src/fltk3/scroll_area.cxx       2012-05-09 15:07:24 UTC 
(rev 9474)
@@ -86,7 +86,7 @@
 
 #if defined(USE_X11)
   XCopyArea(fl_display, fl_window, fl_window, fl_gc,
-           src_x, src_y, src_w, src_h, dest_x, dest_y);
+           src_x+origin_x(), src_y+origin_y(), src_w, src_h, dest_x, dest_y);
   // we have to sync the display and get the GraphicsExpose events! (sigh)
   for (;;) {
     XEvent e; XWindowEvent(fl_display, fl_window, ExposureMask, &e);
@@ -128,7 +128,7 @@
     HRGN sys_rgn = CreateRectRgn(0, 0, 0, 0);
     fl_GetRandomRgn(fl_gc, sys_rgn, 4);
     // now get the source scrolling rectangle 
-    HRGN src_rgn = CreateRectRgn(src_x, src_y, src_x+src_w, src_y+src_h);
+    HRGN src_rgn = CreateRectRgn(src_x+origin_x(), src_y+origin_y(), 
src_x+origin_x()+src_w, src_y+origin_y()+src_h);
     POINT offset = { 0, 0 };
     if (GetDCOrgEx(fl_gc, &offset)) {
       OffsetRgn(src_rgn, offset.x, offset.y);
@@ -148,11 +148,11 @@
   }
 
   // Great, we can do an accelerated scroll instead of re-rendering
-  BitBlt(fl_gc, dest_x, dest_y, src_w, src_h, fl_gc, src_x, src_y,SRCCOPY);
+  BitBlt(fl_gc, dest_x+origin_x(), dest_y+origin_y(), src_w, src_h, fl_gc, 
src_x+origin_x(), src_y+origin_y(),SRCCOPY);
 
 #elif defined(__APPLE_QUARTZ__)
-  CGImageRef img = Fl_X::CGImage_from_window_rect(fltk3::Window::current(), 
src_x, src_y, src_w, src_h);
-  CGRect rect = { { dest_x, dest_y }, { src_w, src_h } };
+  CGImageRef img = Fl_X::CGImage_from_window_rect(fltk3::Window::current(), 
src_x+origin_x(), src_y+origin_y(), src_w, src_h);
+  CGRect rect = { { dest_x+origin_x(), dest_y+origin_y() }, { src_w, src_h } };
   Fl_X::q_begin_image(rect, 0, 0, src_w, src_h);
   CGContextDrawImage(fl_gc, rect, img);
   Fl_X::q_end_image();

Modified: branches/branch-3.0/test/native-filechooser.cxx
===================================================================
--- branches/branch-3.0/test/native-filechooser.cxx     2012-05-09 14:31:58 UTC 
(rev 9473)
+++ branches/branch-3.0/test/native-filechooser.cxx     2012-05-09 15:07:24 UTC 
(rev 9474)
@@ -76,6 +76,8 @@
   // OS X may add the process number as the first argument - ignore
   if (argc>argn && strncmp(argv[1], "-psn_", 5)==0)
     argn++;
+  if (argc>argn+1 && strcmp(argv[1], "-NSDocumentRevisionsDebugMode")==0)
+    argn+=2;
 #endif
   
   fltk3::Window *win = new fltk3::Window(600, 100, "Native File Chooser Test");

Modified: branches/branch-3.0/test/pack.cxx
===================================================================
--- branches/branch-3.0/test/pack.cxx   2012-05-09 14:31:58 UTC (rev 9473)
+++ branches/branch-3.0/test/pack.cxx   2012-05-09 15:07:24 UTC (rev 9474)
@@ -45,7 +45,7 @@
     fltk3::Widget* o = pack->child(i);
     o->resize(0,0,25,25);
   }
-  pack->resize(scroll->x(),scroll->y(),scroll->w(),scroll->h());
+  pack->resize(0, 0, scroll->w(), scroll->h());
   pack->parent()->redraw();
   pack->type(uchar(v));
   pack->redraw();
@@ -57,62 +57,63 @@
 }
 
 int main(int argc, char **argv) {
- fltk3::DoubleWindow *w;
- {fltk3::DoubleWindow* o = new fltk3::DoubleWindow(360, 370);
-  w = o;
-  scroll = new fltk3::ScrollGroup(10,10,340,285);
- {fltk3::PackedGroup* o = new fltk3::PackedGroup(10, 10, 340, 285);
-  pack = o;
-  o->box(fltk3::DOWN_FRAME);
-  //o->box(fltk3::ENGRAVED_FRAME);
- new fltk3::Button(35, 35, 25, 25, "b1");
- new fltk3::Button(45, 45, 25, 25, "b2");
- new fltk3::Button(55, 55, 25, 25, "b3");
- new fltk3::Button(65, 65, 25, 25, "b4");
- new fltk3::Button(75, 75, 25, 25, "b5");
- new fltk3::Button(85, 85, 25, 25, "b6");
- new fltk3::Button(95, 95, 25, 25, "b7");
- new fltk3::Button(105, 105, 25, 25, "b8");
- new fltk3::Button(115, 115, 25, 25, "b9");
- new fltk3::Button(125, 125, 25, 25, "b10");
- new fltk3::Button(135, 135, 25, 25, "b11");
- new fltk3::Button(145, 145, 25, 25, "b12");
- new fltk3::Button(155, 155, 25, 25, "b13");
- new fltk3::Button(165, 165, 25, 25, "b14");
- new fltk3::Button(175, 175, 25, 25, "b15");
- new fltk3::Button(185, 185, 25, 25, "b16");
- new fltk3::Button(195, 195, 25, 25, "b17");
- new fltk3::Button(205, 205, 25, 25, "b18");
- new fltk3::Button(215, 215, 25, 25, "b19");
- new fltk3::Button(225, 225, 25, 25, "b20");
- new fltk3::Button(235, 235, 25, 25, "b21");
- new fltk3::Button(245, 245, 25, 25, "b22");
- new fltk3::Button(255, 255, 25, 25, "b23");
- new fltk3::Button(265, 265, 25, 25, "b24");
-  o->end();
-  w->resizable(o);
- }
- scroll->end();
- {fltk3::LightButton* o = new fltk3::LightButton(10, 305, 165, 25, 
"HORIZONTAL");
- o->type(fltk3::RADIO_BUTTON);
-  o->callback((fltk3::Callback*)type_cb, 
(void*)(fltk3::PackedGroup::HORIZONTAL));
- }
- {fltk3::LightButton* o = new fltk3::LightButton(185, 305, 165, 25, 
"VERTICAL");
- o->type(fltk3::RADIO_BUTTON);
- o->value(1);
-  o->callback((fltk3::Callback*)type_cb, 
(void*)(fltk3::PackedGroup::VERTICAL));
- }
- {fltk3::ValueSlider* o = new fltk3::ValueSlider(100, 335, 250, 25, "Spacing: 
");
- o->align(fltk3::ALIGN_LEFT);
- o->type(fltk3::HORIZONTAL);
- o->range(0,30);
- o->step(1);
- o->callback((fltk3::Callback*)spacing_cb);
- }
- w->end();
- }
- w->show(argc, argv);
- return fltk3::run();
+  fltk3::DoubleWindow *w;
+  {fltk3::DoubleWindow* o = new fltk3::DoubleWindow(360, 370);
+    w = o;
+    scroll = new fltk3::ScrollGroup(10,10,340,285);
+    {fltk3::PackedGroup* o = new fltk3::PackedGroup(0, 0, 340, 285);
+      pack = o;
+      o->box(fltk3::DOWN_FRAME);
+      o->clip_children(1);
+      //o->box(fltk3::ENGRAVED_FRAME);
+      new fltk3::Button(35, 35, 25, 25, "b1");
+      new fltk3::Button(45, 45, 25, 25, "b2");
+      new fltk3::Button(55, 55, 25, 25, "b3");
+      new fltk3::Button(65, 65, 25, 25, "b4");
+      new fltk3::Button(75, 75, 25, 25, "b5");
+      new fltk3::Button(85, 85, 25, 25, "b6");
+      new fltk3::Button(95, 95, 25, 25, "b7");
+      new fltk3::Button(105, 105, 25, 25, "b8");
+      new fltk3::Button(115, 115, 25, 25, "b9");
+      new fltk3::Button(125, 125, 25, 25, "b10");
+      new fltk3::Button(135, 135, 25, 25, "b11");
+      new fltk3::Button(145, 145, 25, 25, "b12");
+      new fltk3::Button(155, 155, 25, 25, "b13");
+      new fltk3::Button(165, 165, 25, 25, "b14");
+      new fltk3::Button(175, 175, 25, 25, "b15");
+      new fltk3::Button(185, 185, 25, 25, "b16");
+      new fltk3::Button(195, 195, 25, 25, "b17");
+      new fltk3::Button(205, 205, 25, 25, "b18");
+      new fltk3::Button(215, 215, 25, 25, "b19");
+      new fltk3::Button(225, 225, 25, 25, "b20");
+      new fltk3::Button(235, 235, 25, 25, "b21");
+      new fltk3::Button(245, 245, 25, 25, "b22");
+      new fltk3::Button(255, 255, 25, 25, "b23");
+      new fltk3::Button(265, 265, 25, 25, "b24");
+      o->end();
+      w->resizable(o);
+    }
+    scroll->end();
+    {fltk3::LightButton* o = new fltk3::LightButton(10, 305, 165, 25, 
"HORIZONTAL");
+      o->type(fltk3::RADIO_BUTTON);
+      o->callback((fltk3::Callback*)type_cb, 
(void*)(fltk3::PackedGroup::HORIZONTAL));
+    }
+    {fltk3::LightButton* o = new fltk3::LightButton(185, 305, 165, 25, 
"VERTICAL");
+      o->type(fltk3::RADIO_BUTTON);
+      o->value(1);
+      o->callback((fltk3::Callback*)type_cb, 
(void*)(fltk3::PackedGroup::VERTICAL));
+    }
+    {fltk3::ValueSlider* o = new fltk3::ValueSlider(100, 335, 250, 25, 
"Spacing: ");
+      o->align(fltk3::ALIGN_LEFT);
+      o->type(fltk3::HORIZONTAL);
+      o->range(0,30);
+      o->step(1);
+      o->callback((fltk3::Callback*)spacing_cb);
+    }
+    w->end();
+  }
+  w->show(argc, argv);
+  return fltk3::run();
 }
 
 //

_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit

Reply via email to