]> git.lyx.org Git - lyx.git/blobdiff - src/WorkArea.C
fix typo that put too many include paths for most people
[lyx.git] / src / WorkArea.C
index 7dd3b8e3f7d1ff6a6e2dc44ac3b9b7dfa195600f..232e2e1651cf2f64688d471dcb43fdf8fb990d55 100644 (file)
@@ -1,8 +1,8 @@
 /* This file is part of
  * ======================================================
- * 
+ *
  *           LyX, The Document Processor
- *        
+ *
  *           Copyright 1995 Matthias Ettrich
  *           Copyright 1995-2001 The LyX Team.
  *
 // xforms doesn't define this (but it should be in <forms.h>).
 extern "C"
 FL_APPEVENT_CB fl_set_preemptive_callback(Window, FL_APPEVENT_CB, void *);
+
 using std::endl;
 using std::abs;
-
-FL_OBJECT * figinset_canvas;
+using std::hex;
 
 namespace {
 
@@ -55,25 +54,24 @@ extern "C" {
        // Just a bunch of C wrappers around static members of WorkArea
        static
        void C_WorkArea_scroll_cb(FL_OBJECT * ob, long buf)
-        {
+       {
                WorkArea::scroll_cb(ob, buf);
-        }
+       }
+
 
-       
        static
        int C_WorkArea_work_area_handler(FL_OBJECT * ob, int event,
-                                        FL_Coord, FL_Coord, 
+                                        FL_Coord, FL_Coord,
                                         int key, void * xev)
-        {
+       {
                return WorkArea::work_area_handler(ob, event,
                                                   0, 0, key, xev);
-        }
+       }
 
        static
        int C_WorkAreaEventCB(FL_FORM * form, void * xev) {
-               WorkArea * wa=static_cast<WorkArea*>(form->u_vdata);
-               wa->event_cb(static_cast<XEvent*>(xev));
-               return 0;
+               WorkArea * wa = static_cast<WorkArea*>(form->u_vdata);
+               return wa->event_cb(static_cast<XEvent*>(xev));
        }
 }
 
@@ -83,8 +81,6 @@ WorkArea::WorkArea(int xpos, int ypos, int width, int height)
 {
        fl_freeze_all_forms();
 
-       figinset_canvas = 0;
-
        if (lyxerr.debugging(Debug::WORKAREA))
                lyxerr << "Creating work area: +"
                       << xpos << '+' << ypos << ' '
@@ -93,14 +89,6 @@ WorkArea::WorkArea(int xpos, int ypos, int width, int height)
        FL_OBJECT * obj;
        int const bw = int(abs(fl_get_border_width()));
 
-       // We really want to get rid of figinset_canvas.
-       ::figinset_canvas = figinset_canvas = obj =
-                 fl_add_canvas(FL_NORMAL_CANVAS,
-                               xpos + 1, ypos + 1, 1, 1, "");
-       fl_set_object_boxtype(obj, FL_NO_BOX);
-       fl_set_object_resize(obj, FL_RESIZE_ALL);
-       fl_set_object_gravity(obj, NorthWestGravity, NorthWestGravity);
-
        // a box
        if (lyxerr.debugging(Debug::WORKAREA))
                lyxerr << "\tbackground box: +"
@@ -124,7 +112,7 @@ WorkArea::WorkArea(int xpos, int ypos, int width, int height)
                int const splash_y = ypos + (height - splash_h) / 2;
                splash_ = obj =
                        fl_add_pixmapbutton(FL_NORMAL_BUTTON,
-                                           splash_x, splash_y, 
+                                           splash_x, splash_y,
                                            splash_w, splash_h, "");
                fl_set_pixmapbutton_file(obj, splash_file.c_str());
                fl_set_pixmapbutton_focus_outline(obj, 3);
@@ -157,7 +145,7 @@ WorkArea::WorkArea(int xpos, int ypos, int width, int height)
        obj->u_vdata = this;
        fl_set_object_callback(obj, C_WorkArea_scroll_cb, 0);
        setScrollbarBounds(0.0, 0.0);
-       
+
        ///
        /// The free object
 
@@ -171,7 +159,7 @@ WorkArea::WorkArea(int xpos, int ypos, int width, int height)
                       << xpos + bw << '+' << ypos + bw << ' '
                       << width - 15 - 2 * bw << 'x'
                       << height - 2 * bw << endl;
-       
+
        work_area = obj = fl_add_free(FL_ALL_FREE,
                                      xpos + bw, ypos + bw,
                                      width - 15 - 2 * bw, // scrollbarwidth
@@ -186,8 +174,8 @@ WorkArea::WorkArea(int xpos, int ypos, int width, int height)
 
        /// X selection hook - xforms gets it wrong
        fl_current_form->u_vdata = this;
-       fl_register_raw_callback(fl_current_form, FL_ALL_EVENT, C_WorkAreaEventCB); 
+       fl_register_raw_callback(fl_current_form, FL_ALL_EVENT, C_WorkAreaEventCB);
+
        fl_unfreeze_all_forms();
 }
 
@@ -217,7 +205,7 @@ bool WorkArea::belowMouse() const
 void WorkArea::resize(int xpos, int ypos, int width, int height)
 {
        fl_freeze_all_forms();
-       
+
        int const bw = int(abs(fl_get_border_width()));
 
        // a box
@@ -254,7 +242,7 @@ void destroy_object(FL_OBJECT * obj)
        fl_free_object(obj);
 }
 } // namespace anon
-       
+
 
 void WorkArea::createPixmap(int width, int height)
 {
@@ -273,7 +261,7 @@ void WorkArea::createPixmap(int width, int height)
 
        if (cur_width == width && cur_height == height && workareapixmap)
                return;
-       
+
        cur_width = width;
        cur_height = height;
 
@@ -283,11 +271,11 @@ void WorkArea::createPixmap(int width, int height)
        if (lyxerr.debugging(Debug::WORKAREA))
                lyxerr << "Creating pixmap ("
                       << width << 'x' << height << ")" << endl;
-       
+
        workareapixmap = XCreatePixmap(fl_get_display(),
                                       RootWindow(fl_get_display(), 0),
                                       width,
-                                      height, 
+                                      height,
                                       fl_get_visual_depth());
        if (lyxerr.debugging(Debug::WORKAREA))
                lyxerr << "\tpixmap=" << workareapixmap << endl;
@@ -348,13 +336,13 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
        static int x_old = -1;
        static int y_old = -1;
        static long scrollbar_value_old = -1;
-       
+
        XEvent * ev = static_cast<XEvent*>(xev);
        WorkArea * area = static_cast<WorkArea*>(ob->u_vdata);
 
        if (!area) return 1;
-       
-       switch (event){
+
+       switch (event) {
        case FL_DRAW:
                if (!area->work_area ||
                    !area->work_area->form->visible)
@@ -371,7 +359,7 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
                                          ev->xbutton.y - ob->y,
                                          ev->xbutton.button);
                //area->workAreaKeyPress(XK_Pointer_Button1, ev->xbutton.state);
-               break; 
+               break;
        case FL_RELEASE:
                if (!ev || ev->xbutton.button == 0) break;
                // Should really have used xbutton.state
@@ -403,7 +391,7 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
 #endif
        {
                lyxerr[Debug::WORKAREA] << "Workarea event: KEYBOARD" << endl;
-               
+
                KeySym keysym = 0;
                char dummy[1];
                XKeyEvent * xke = reinterpret_cast<XKeyEvent *>(ev);
@@ -419,7 +407,7 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
                        char const * tmp2 = XKeysymToString(keysym);
                        string const stm = (tmp ? tmp : "");
                        string const stm2 = (tmp2 ? tmp2 : "");
-                       
+
                        lyxerr[Debug::KEY] << "WorkArea: Key is `" << stm << "' ["
                               << key << "]" << endl;
                        lyxerr[Debug::KEY] << "WorkArea: Keysym is `" << stm2 << "' ["
@@ -465,7 +453,7 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
                                                   << endl;
                                //}
                }
-               
+
 #endif
                unsigned int const ret_state = xke->state;
 
@@ -498,7 +486,7 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
                last_time_pressed = xke->time;
                last_key_pressed = xke->keycode;
                last_state_pressed = ret_state;
-               
+
                area->workAreaKeyPress(ret_key, ret_state);
        }
        break;
@@ -544,7 +532,7 @@ int WorkArea::work_area_handler(FL_OBJECT * ob, int event,
                lyxerr[Debug::WORKAREA] << "Workarea event: OTHER" << endl;
                break;
        }
-  
+
        return 1;
 }
 
@@ -555,13 +543,13 @@ string clipboard_selection;
 bool clipboard_read = false;
 
 extern "C" {
-       
+
        static
        int request_clipboard_cb(FL_OBJECT * /*ob*/, long /*type*/,
-                                void const * data, long size) 
+                                void const * data, long size)
        {
                clipboard_selection.erase();
-               
+
                if (size > 0)
                        clipboard_selection.reserve(size);
                for (int i = 0; i < size; ++i)
@@ -575,13 +563,23 @@ extern "C" {
 
 } // namespace anon
 
-void WorkArea::event_cb(XEvent * xev)
+
+int WorkArea::event_cb(XEvent * xev)
 {
-       if (xev->type != SelectionRequest)
-               return;
-       selectionRequested.emit();
-       return;
+       int ret = 0;
+       switch (xev->type) {
+               case SelectionRequest:
+                       lyxerr[Debug::GUI] << "X requested selection." << endl;
+                       selectionRequested.emit();
+//                     ret = 1;
+                       break;
+               case SelectionClear:
+                       lyxerr[Debug::GUI] << "Lost selection." << endl;
+                       selectionLost.emit();
+//                     ret = 1;
+                       break;
+       }
+       return ret;
 }
 
 
@@ -591,36 +589,36 @@ void WorkArea::haveSelection(bool yes) const
                XSetSelectionOwner(fl_get_display(), XA_PRIMARY, None, CurrentTime);
                return;
        }
+
        XSetSelectionOwner(fl_get_display(), XA_PRIMARY, FL_ObjWin(work_area), CurrentTime);
 }
 
-string const WorkArea::getClipboard() const 
+
+string const WorkArea::getClipboard() const
 {
        clipboard_read = false;
-       
+
        if (fl_request_clipboard(work_area, 0, request_clipboard_cb) == -1)
                return string();
 
        XEvent ev;
-       
+
        while (!clipboard_read) {
                if (fl_check_forms() == FL_EVENT) {
                        fl_XNextEvent(&ev);
-                       lyxerr << "Received unhandled X11 event" << endl; 
-                       lyxerr << "Type: 0x" << std::hex << ev.xany.type <<
-                               "Target: 0x" << std::hex << ev.xany.window << endl;
+                       lyxerr << "Received unhandled X11 event" << endl;
+                       lyxerr << "Type: 0x" << hex << ev.xany.type <<
+                               " Target: 0x" << hex << ev.xany.window << endl;
                }
        }
        return clipboard_selection;
 }
 
-       
+
 void WorkArea::putClipboard(string const & s) const
 {
        static string hold;
        hold = s;
-       
+
        fl_stuff_clipboard(work_area, 0, hold.data(), hold.size(), 0);
 }