X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FWorkArea.C;h=ea9324e037d1889905e6f870b78d77ec16bdf1cb;hb=32ef0d04c48a1751abbb5e3b17d1bec25f22c255;hp=57e8e01f1842ee08eddb1cd8c7d6da38df377295;hpb=4b9ed498eafad6a72f12b46d7e9750873d33ae32;p=lyx.git diff --git a/src/WorkArea.C b/src/WorkArea.C index 57e8e01f18..ea9324e037 100644 --- a/src/WorkArea.C +++ b/src/WorkArea.C @@ -4,7 +4,7 @@ * LyX, The Document Processor * * Copyright 1995 Matthias Ettrich - * Copyright 1995-2000 The LyX Team. + * Copyright 1995-2001 The LyX Team. * * ====================================================== */ @@ -18,9 +18,7 @@ #include "WorkArea.h" #include "debug.h" #include "support/lstrings.h" -#include "BufferView.h" #include "LyXView.h" -#include "lyxfunc.h" #if FL_REVISION < 89 || (FL_REVISION == 89 && FL_FIXLEVEL < 5) #include "lyxlookup.h" @@ -34,12 +32,16 @@ FL_OBJECT * figinset_canvas; // This is at least true for g++. //using std::abs; -static inline +namespace { + +inline void waitForX() { XSync(fl_get_display(), 0); } +} // anon namespace + extern "C" { // Just a bunch of C wrappers around static members of WorkArea @@ -58,9 +60,8 @@ extern "C" { } - -WorkArea::WorkArea(BufferView * o, int xpos, int ypos, int width, int height) - : owner_(o), workareapixmap(0), painter_(*this) +WorkArea::WorkArea(int xpos, int ypos, int width, int height) + : workareapixmap(0), painter_(*this) { fl_freeze_all_forms(); @@ -261,7 +262,7 @@ void WorkArea::scroll_cb(FL_OBJECT * ob, long) // If we really want the accellerating scroll we can do that // from here. IMHO that is a waste of effort since we already // have other ways to move fast around in the document. (Lgb) - area->owner_->scrollCB(fl_get_scrollbar_value(ob)); + area->scrollCB(fl_get_scrollbar_value(ob)); waitForX(); } @@ -355,7 +356,7 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event, << keysym << "]" << endl; } -#if FL_REVISION < 89 +#if FL_REVISION < 89 || (FL_REVISION == 89 && FL_FIXLEVEL < 5) if (keysym == NoSymbol) { lyxerr[Debug::KEY] << "Empty kdb action (probably composing)" @@ -372,33 +373,42 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event, if (!key) { // We migth have to add more keysyms here also, // we will do that as the issues arise. (Lgb) - if (keysym == XK_space) + if (keysym == XK_space) { ret_key = keysym; - else + lyxerr[Debug::KEY] << "Using keysym [A]" + << endl; + } else break; } else { // It seems that this was a bit optimistic... // With this hacking things seems to be better (Lgb) - if (static_cast(key) == key - && !iscntrl(key)) - ret_key = key; - else + //if (!iscntrl(key)) { + // ret_key = key; + // lyxerr[Debug::KEY] + // << "Using key [B]\n" + // << "Uchar[" + // << static_cast(key) + // << endl; + //} else { ret_key = (keysym ? keysym : key); + lyxerr[Debug::KEY] << "Using keysym [B]" + << endl; + //} } -#endif +#endif unsigned int const ret_state = xke->state; // If you have a better way to handle "wild-output" of // characters after the key has been released than the one // below, please contact me. (Lgb) - static Time last_time_pressed = 0; - static unsigned int last_key_pressed = 0; - static unsigned int last_state_pressed = 0; + static Time last_time_pressed; + static unsigned int last_key_pressed; + static unsigned int last_state_pressed; lyxerr[Debug::KEY] << "Workarea Diff: " << xke->time - last_time_pressed << endl; - if (xke->time - last_time_pressed < 35 // should perhaps be tunable + if (xke->time - last_time_pressed < 25 // should perhaps be tunable && ret_state == last_state_pressed && xke->keycode == last_key_pressed) { lyxerr[Debug::KEY] @@ -470,11 +480,12 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event, } -static string clipboard_selection; -static bool clipboard_read = false; +namespace { -extern "C" { - static +string clipboard_selection; +bool clipboard_read = false; + +extern "C" int request_clipboard_cb(FL_OBJECT * /*ob*/, long /*type*/, void const * data, long size) { @@ -487,8 +498,8 @@ int request_clipboard_cb(FL_OBJECT * /*ob*/, long /*type*/, clipboard_read = true; return 0; } -} // extern "C" +} // namespace anon string const WorkArea::getClipboard() const { @@ -514,5 +525,5 @@ void WorkArea::putClipboard(string const & s) const static string hold; hold = s; - fl_stuff_clipboard(work_area, 0, hold.c_str(), hold.size(), 0); + fl_stuff_clipboard(work_area, 0, hold.data(), hold.size(), 0); }