This makes the mose wheel work on XForms again. Wheel handling is now done the same way in XForms as in QT. (or very similar.)
Index: BufferView_pimpl.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/BufferView_pimpl.C,v retrieving revision 1.548 diff -u -p -b -r1.548 BufferView_pimpl.C --- BufferView_pimpl.C 5 Jul 2004 14:34:50 -0000 1.548 +++ BufferView_pimpl.C 1 Aug 2004 14:45:53 -0000 @@ -355,7 +355,6 @@ void BufferView::Pimpl::setBuffer(Buffer // This is done after the layout combox has been populated if (buffer_) owner_->setLayout(cursor_.paragraph().layout()->name()); - if (buffer_ && lyx::graphics::Previews::status() != LyXRC::PREVIEW_OFF) lyx::graphics::Previews::get().generateBufferPreviews(*buffer_); Index: text3.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/text3.C,v retrieving revision 1.255 diff -u -p -b -r1.255 text3.C --- text3.C 25 Jul 2004 00:04:42 -0000 1.255 +++ text3.C 1 Aug 2004 14:45:54 -0000 @@ -1118,20 +1118,6 @@ void LyXText::dispatch(LCursor & cur, Fu // Single-click on work area case LFUN_MOUSE_PRESS: { - // ok ok, this is a hack (for xforms) - // We shouldn't go further down as we really need to. Only do the - // scrolling and be done with this. Otherwise we may open some - // dialogs (Jug 20020424). - if (cmd.button() == mouse_button::button4) { - bv->scroll(-lyxrc.wheel_jump); - break; - } - - if (cmd.button() == mouse_button::button5) { - bv->scroll(lyxrc.wheel_jump); - break; - } - // Right click on a footnote flag opens float menu if (cmd.button() == mouse_button::button3) { cur.clearSelection(); @@ -1185,13 +1171,6 @@ void LyXText::dispatch(LCursor & cur, Fu } case LFUN_MOUSE_RELEASE: { - // do nothing if we used the mouse wheel - if (cmd.button() == mouse_button::button4 - || cmd.button() == mouse_button::button5) { - cur.undispatched(); - break; - } - selection_possible = false; if (cmd.button() == mouse_button::button2) Index: frontends/qt2/QContentPane.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/qt2/QContentPane.C,v retrieving revision 1.31 diff -u -p -b -r1.31 QContentPane.C --- frontends/qt2/QContentPane.C 20 May 2004 09:36:27 -0000 1.31 +++ frontends/qt2/QContentPane.C 1 Aug 2004 14:45:54 -0000 @@ -216,11 +216,9 @@ void QContentPane::wheelEvent(QWheelEven void QContentPane::keyPressEvent(QKeyEvent * e) { - typedef boost::shared_ptr<LyXKeySym> LyXKeySymPtr; - - QLyXKeySym * sym = new QLyXKeySym; + boost::shared_ptr<QLyXKeySym> sym(new QLyXKeySym); sym->set(e); - wa_->workAreaKeyPress(LyXKeySymPtr(sym), q_key_state(e->state())); + wa_->workAreaKeyPress(sym, q_key_state(e->state())); } Index: frontends/xforms/XWorkArea.C =================================================================== RCS file: /usr/local/lyx/cvsroot/lyx-devel/src/frontends/xforms/XWorkArea.C,v retrieving revision 1.47 diff -u -p -b -r1.47 XWorkArea.C --- frontends/xforms/XWorkArea.C 19 May 2004 15:11:37 -0000 1.47 +++ frontends/xforms/XWorkArea.C 1 Aug 2004 14:45:54 -0000 @@ -333,6 +333,30 @@ int XWorkArea::work_area_handler(FL_OBJE case FL_PUSH: if (!ev || ev->xbutton.button == 0) break; + + if (ev->xbutton.button == 4 || ev->xbutton.button == 5) { + static long last_wheel; + + long cur_wheel = ev->xbutton.time; + if (last_wheel == cur_wheel) + break; + + last_wheel = cur_wheel; + + float l, r; + fl_get_scrollbar_increment(area->scrollbar, &l, &r); + + if (ev->xbutton.button == 4) + l *= -1.0; + + fl_set_scrollbar_value( + area->scrollbar, + fl_get_scrollbar_value(area->scrollbar) + l); + + area->scroll_cb(); + break; + } + // Should really have used xbutton.state lyxerr[Debug::WORKAREA] << "Workarea event: PUSH" << endl; area->dispatch( @@ -345,7 +369,14 @@ int XWorkArea::work_area_handler(FL_OBJE case FL_RELEASE: if (!ev || ev->xbutton.button == 0) break; // Should really have used xbutton.state + + if (ev->xbutton.button == 4 || ev->xbutton.button == 5) { + // We ingnore wheel event here + break; + } + lyxerr[Debug::WORKAREA] << "Workarea event: RELEASE" << endl; + area->dispatch( FuncRequest(LFUN_MOUSE_RELEASE, ev->xbutton.x - ob->x, @@ -526,6 +557,12 @@ int XWorkArea::work_area_handler(FL_OBJE case FL_DBLCLICK: if (ev) { + if (ev->xbutton.button == 4 || ev->xbutton.button == 5) { + // Ignore wheel events + break; + } + + lyxerr[Debug::WORKAREA] << "Workarea event: DBLCLICK" << endl; FuncRequest cmd(LFUN_MOUSE_DOUBLE, ev->xbutton.x - ob->x, @@ -537,6 +574,11 @@ int XWorkArea::work_area_handler(FL_OBJE case FL_TRPLCLICK: if (ev) { + if (ev->xbutton.button == 4 || ev->xbutton.button == 5) { + // Ignore wheel events + break; + } + lyxerr[Debug::WORKAREA] << "Workarea event: TRPLCLICK" << endl; FuncRequest cmd(LFUN_MOUSE_TRIPLE, ev->xbutton.x - ob->x,
-- Lgb