]> git.lyx.org Git - features.git/commitdiff
more keyboard/keysym changes
authorLars Gullik Bjønnes <larsbj@gullik.org>
Tue, 15 Aug 2000 09:41:24 +0000 (09:41 +0000)
committerLars Gullik Bjønnes <larsbj@gullik.org>
Tue, 15 Aug 2000 09:41:24 +0000 (09:41 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@972 a592a061-630c-0410-9148-cb99ea01b6c8

ChangeLog
src/BufferView_pimpl.C
src/LyXView.C
src/WorkArea.C
src/lyxfunc.C
src/lyxfunc.h
src/lyxlookup.h

index 8dc3b64968e4ffa18d867fdfc4b63e2d6d0bef35..6a666ce9286bcdd9852a7c6eaa0b12e129f91fe0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2000-08-15  Lars Gullik Bjønnes  <larsbj@lyx.org>
+
+       * src/WorkArea.C (work_area_handler): more work to get te
+       FL_KEYBOARD to work with xforms 0.88 too, please test.
+
+       * src/BufferView_pimpl.C (workAreaKeyPress): add XForms 0.88 guard.
+
 2000-08-15  Dekel Tsur  <dekel@math.tau.ac.il>
 
        * src/frontends/ButtonPolicies.C: make gcc happy when compiling with
index 11970de6f3f384200d09f4c6f074e2ea307e6e9e..c7e7d6b64140ba3cef582af10965541548f43494 100644 (file)
@@ -516,7 +516,9 @@ int BufferView::Pimpl::scrollDown(long time)
 
 void BufferView::Pimpl::workAreaKeyPress(KeySym keysym, unsigned int state)
 {
+#if FL_REVISION > 88
        bv_->owner()->getLyXFunc()->processKeySym(keysym, state);
+#endif
 }
 
 
index a32725d0b01e30ccca8e57ced25c29faf0356c3b..2e28a73a6828f054b3b38877de24b9ccbbaf4914 100644 (file)
@@ -211,7 +211,8 @@ int LyXView::atCloseMainFormCB(FL_FORM *, void *)
 
 
 // Wrapper for the above
-extern "C" int C_LyXView_atCloseMainFormCB(FL_FORM * form, void * p)
+extern "C"
+int C_LyXView_atCloseMainFormCB(FL_FORM * form, void * p)
 {
        return LyXView::atCloseMainFormCB(form, p);
 }
@@ -319,7 +320,7 @@ void LyXView::create_form_form_main(int width, int height)
 }
 
 
-#if FL_REVISION < 89
+#if 0
 extern "C"
 int C_LyXView_KeyPressMask_raw_callback(FL_FORM * fl, void * xev);
 #endif
@@ -341,7 +342,7 @@ void LyXView::init()
                autosave_timeout.start();
        }
 
-#if FL_REVISION < 89
+#if 0
        // Install the raw callback for keyboard events 
        fl_register_raw_callback(form_,
                                 KeyPressMask,
@@ -400,7 +401,7 @@ void LyXView::UpdateDocumentClassChoice()
 }
 
 
-#if FL_REVISION < 89
+#if 0
 // This is necessary, since FL_FREE-Objects doesn't get all keypress events
 // as FL_KEYBOARD events :-(   Matthias 280596
 int LyXView::KeyPressMask_raw_callback(FL_FORM * fl, void * xev)
index 7633b8362b1a77679a3bd2e3a02e121e4ed09a06..ca9bd91de144b5a0bfe1d53981fc39e69f94fab0 100644 (file)
@@ -21,6 +21,7 @@
 #include "BufferView.h"
 #include "LyXView.h"
 #include "lyxfunc.h"
+#include "lyxlookup.h"
 
 using std::endl;
 
@@ -319,15 +320,17 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
        case FL_KEYBOARD:
        {
                lyxerr[Debug::KEY] << "Workarea event: KEYBOARD";
-               if (static_cast<XEvent*>(ev)->type == KeyPress)
-                       lyxerr << "KeyPress" << endl;
-               else
-                       lyxerr << "KeyRelease" << endl;
                
                KeySym keysym = 0;
-               char s_r[10];
+               char dummy[1];
                XKeyEvent * xke = reinterpret_cast<XKeyEvent *>(ev);
-               XLookupString(xke, s_r, 10, &keysym, 0);
+#if FL_REVISION < 89
+               // XForms < 0.89 does not have compose support
+               // so we are using our own compose support
+               LyXLookupString(ev, dummy, 1, &keysym);
+#else
+               XLookupString(xke, dummy, 1, &keysym, 0);
+#endif
                if (lyxerr.debugging(Debug::KEY)) {
                        char const * tmp = XKeysymToString(key);
                        char const * tmp2 = XKeysymToString(keysym);
@@ -340,20 +343,35 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
                               << keysym << "]" << endl;
                }
 
+#if FL_REVISION < 89
+               if (keysym == NoSymbol) {
+                       lyxerr[Debug::KEY]
+                               << "Empty kdb action (probably composing)"
+                               << endl;
+                       break;
+               }
+               KeySym ret_key = keysym;
+#else
                if (!key) break;
-               
                KeySym ret_key = (keysym ? keysym : key);
+#endif 
                unsigned int ret_state = xke->state;
                
                static Time last_time_pressed = 0;
                static unsigned int last_key_pressed = 0;
                static unsigned int last_state_pressed = 0;
-               if (xke->time - last_time_pressed < 50 // should perhaps be tunable
+               //lyxerr << "Workarea Diff: " << xke->time - last_time_pressed
+               //       << endl;
+               if (xke->time - last_time_pressed < 40 // should perhaps be tunable
                    && xke->state == last_state_pressed
                    && xke->keycode == last_key_pressed) {
                        lyxerr[Debug::KEY]
                                << "Workarea: Purging X events." << endl;
-                       XSync(fl_get_display(), 1);
+                       //lyxerr << "Workarea Events: "
+                       //       << XEventsQueued(fl_get_display(), QueuedAlready)
+                       //       << endl;
+                       if (XEventsQueued(fl_get_display(), QueuedAlready) > 0)
+                               XSync(fl_get_display(), 1);
                        // This purge make f.ex. scrolling stop immidiatly when
                        // releasing the PageDown button. The question is if
                        // this purging of XEvents can cause any harm...
index 94a287c9ae4bd040c07e098f98a6f664047dd2e2..03c725ebd8a061e901a88bf36f9526bf1b28f685 100644 (file)
@@ -316,7 +316,7 @@ int LyXFunc::processKeySym(KeySym keysym, unsigned int state)
 } 
 
 
-#if FL_REVISION < 89
+#if 0
 int LyXFunc::processKeyEvent(XEvent * ev)
 {
        char s_r[10];
index ced5a7dc41c0dd6d73b32f27f908bc88be5d68ab..4aa874c6701ea4c74c212ff336c251e2b92fdd25 100644 (file)
@@ -49,13 +49,13 @@ public:
        /// Same again but for xtl buffers.  Still looking for better idea.
        bool Dispatch(int action, auto_mem_buffer &);
 
- #if FL_REVISION < 89
+#if 0
        /// A keyboard event is processed to execute a lyx action. 
        int processKeyEvent(XEvent * ev);
- #else
+#else
        ///
        int processKeySym(KeySym k, unsigned int state);
- #endif
+#endif
        ///
        func_status getStatus(int ac) const;
        
index a2495b199310ddee33e46b7a08d756aa0cff88de..16205309c74f35698339b32d097fbb7b0a43dfd1 100644 (file)
    different input methods for different frames, but for now we can
    keep it as it is. */
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
 #include <X11/Xlib.h>
 
 /// Initialize the compose key handling