]> git.eshelyaron.com Git - emacs.git/commitdiff
Fixed C compilation problems.
authorEli Zaretskii <eliz@gnu.org>
Thu, 5 Sep 2013 11:00:55 +0000 (14:00 +0300)
committerEli Zaretskii <eliz@gnu.org>
Thu, 5 Sep 2013 11:00:55 +0000 (14:00 +0300)
src/alloc.c
src/cm.h
src/dispextern.h
src/dispnew.c
src/keyboard.c
src/keyboard.h
src/menu.h
src/term.c
src/termhooks.h
src/w32console.c
src/xdisp.c

index 0989e63664ff858f8e5fbf916c74b34197db90ef..a8cbee1cf363becb55a21c836cc7c535709f70e7 100644 (file)
@@ -3378,7 +3378,6 @@ make_save_obj_obj_obj_obj (Lisp_Object a, Lisp_Object b, Lisp_Object c,
   return val;
 }
 
-#if defined HAVE_NS || defined HAVE_NTGUI
 Lisp_Object
 make_save_ptr (void *a)
 {
@@ -3388,7 +3387,6 @@ make_save_ptr (void *a)
   p->data[0].pointer = a;
   return val;
 }
-#endif
 
 Lisp_Object
 make_save_ptr_int (void *a, ptrdiff_t b)
index 6d49dda9419274f18b7aea9a23a7d6444273351f..f3455b7956948675b04d33ab9c433a8077df94ae 100644 (file)
--- a/src/cm.h
+++ b/src/cm.h
@@ -139,7 +139,7 @@ struct cm
 #define MultiDownCost(tty)     (tty)->Wcm->cc_multidown
 #define MultiLeftCost(tty)     (tty)->Wcm->cc_multileft
 #define MultiRightCost(tty)    (tty)->Wcm->cc_multiright
-#endif
+#endif /* NoCMShortHand */
 
 #define cmat(tty,row,col)      (curY(tty) = (row), curX(tty) = (col))
 #define cmplus(tty,n)                                              \
index f86059e9889ca8029dd79554eea60885dcee13d9..0e6d934991a975acf3ccf29961fd8b92347d7de6 100644 (file)
@@ -3460,6 +3460,7 @@ extern bool update_frame (struct frame *, bool, bool);
 extern void update_frame_with_menu (struct frame *);
 extern void bitch_at_user (void);
 void adjust_glyphs (struct frame *);
+struct glyph_matrix *save_current_matrix (struct frame *);
 void free_glyphs (struct frame *);
 void free_window_matrices (struct window *);
 void check_glyph_memory (void);
index 824c62bcf338746e4110a17a360ea370e57447c6..2378e72091e836976629cb095b208ee8b631905f 100644 (file)
@@ -3185,8 +3185,9 @@ void
 update_frame_with_menu (struct frame *f)
 {
   struct window *root_window = XWINDOW (f->root_window);
+  bool paused_p;
 
-  xassert (FRAME_TERMCAP_P (f));
+  eassert (FRAME_TERMCAP_P (f));
 
   /* We are working on frame matrix basis.  Set the frame on whose
      frame matrix we operate.  */
index c90ddba81c7ae6bef16378f6f990627e96a9bb6f..1150064a10f1cc9d80e8f6be822c120fbb6398da 100644 (file)
@@ -292,7 +292,7 @@ static struct input_event * volatile kbd_store_ptr;
    at inopportune times.  */
 
 /* Symbols to head events.  */
-static Lisp_Object Qmouse_movement;
+Lisp_Object Qmouse_movement;
 static Lisp_Object Qscroll_bar_movement;
 Lisp_Object Qswitch_frame;
 static Lisp_Object Qfocus_in, Qfocus_out;
index 1ee4a97c5c5b29aeaca7b30111e1157635834c70..b015f3fe4d3a3b5664e7ac3864ce22a036ee8d0f 100644 (file)
@@ -453,7 +453,7 @@ extern Lisp_Object Qswitch_frame;
 extern Lisp_Object Qevent_kind;
 
 /* The values of Qevent_kind properties.  */
-extern Lisp_Object Qmouse_click;
+extern Lisp_Object Qmouse_click, Qmouse_movement;
 
 extern Lisp_Object Qhelp_echo;
 
index c2dd376fcbb80252da7a1d4636744e77c0c61257..cdc1838ff9fade26c91e434e5bcb2ec95aca6c88 100644 (file)
@@ -51,6 +51,6 @@ extern Lisp_Object ns_menu_show (struct frame *, int, int, bool, bool,
                                 Lisp_Object, const char **);
 extern Lisp_Object xmenu_show (struct frame *, int, int, bool, bool,
                               Lisp_Object, const char **, Time);
-extern Lisp_Object tty_menu_show (FRAME_PTR, int, int, int, int,
+extern Lisp_Object tty_menu_show (struct frame *, int, int, int, int,
                                  Lisp_Object, const char **);
 #endif /* MENU_H */
index 806e038da9a00517c1621efa40c84e25917912a8..f3a750c70b6f6abc4366cbb72860db3143c93aaf 100644 (file)
@@ -2935,8 +2935,8 @@ tty_menu_display (tty_menu *menu, int y, int x, int pn, int *faces,
   menu_help_message = NULL;
 
   width = menu->width;
-  col = curX (tty);
-  row = curY (tty);
+  col = cursorX (tty);
+  row = cursorY (tty);
 #if 0
   IT_update_begin (sf);                /* FIXME: do we need an update_begin_hook? */
 #endif
@@ -2974,8 +2974,8 @@ have_menus_p (void) {  return 1; }
 
 /* Create a new pane and place it on the outer-most level.  */
 
-int
-tty_menu_add_pane (Display *foo, tty_menu *menu, const char *txt)
+static int
+tty_menu_add_pane (tty_menu *menu, const char *txt)
 {
   int len;
   const char *p;
@@ -3112,6 +3112,7 @@ free_saved_screen (struct glyph_matrix *saved)
   for (i = 0; i < saved->nrows; ++i)
     {
       struct glyph_row *from = saved->rows + i;
+      short nbytes;
 
       xfree (from->glyphs[TEXT_AREA]);
       nbytes = from->used[LEFT_MARGIN_AREA];
@@ -3145,7 +3146,7 @@ read_menu_input (int *x, int *y)
   while (1)
     {
       do {
-       c = read_char (-2, 0, NULL, Qnil, NULL, NULL);
+       c = read_char (-2, Qnil, Qnil, NULL, NULL);
       } while (BUFFERP (c) || (INTEGERP (c) && XINT (c) == -2));
 
       if (INTEGERP (c))
@@ -3188,6 +3189,38 @@ read_menu_input (int *x, int *y)
     }
 }
 
+/* FIXME */
+static bool mouse_visible;
+static void
+mouse_off (void)
+{
+  mouse_visible = false;
+}
+
+static void
+mouse_on (void)
+{
+  mouse_visible = true;
+}
+
+static bool
+mouse_pressed (int b, int *x, int *y)
+{
+  return false;
+}
+
+static bool
+mouse_button_depressed (int b, int *x, int *y)
+{
+  return false;
+}
+
+static bool
+mouse_released (int b, int *x, int *y)
+{
+  return true;
+}
+
 /* Display menu, wait for user's response, and return that response.  */
 int
 tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
@@ -3195,7 +3228,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
                   void (*help_callback)(char const *, int, int))
 {
   struct tty_menu_state *state;
-  int statecount, x, y, i, b, screensize, leave, result, onepane;
+  int statecount, x, y, i, b, leave, result, onepane;
   int title_faces[4];          /* face to display the menu title */
   int faces[4], buffers_num_deleted = 0;
   struct frame *sf = SELECTED_FRAME ();
@@ -3208,12 +3241,13 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
   if (y0 <= 0)
     y0 = 1;
 
+#if 0
   /* We will process all the mouse events directly.  */
   mouse_preempted++;
+#endif
 
   state = alloca (menu->panecount * sizeof (struct tty_menu_state));
   memset (state, 0, sizeof (*state));
-  screensize = screen_size * 2;
   faces[0]
     = lookup_derived_face (sf, intern ("tty-menu-disabled-face"),
                           DEFAULT_FACE_ID, 1);
@@ -3287,6 +3321,8 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
   leave = 0;
   while (!leave)
     {
+      int mouse_button_count = 3; /* FIXME */
+
       if (!mouse_visible) mouse_on ();
       read_menu_input (&x, &y);
       if (sf->mouse_moved)
@@ -3317,7 +3353,7 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
                        {
                          statecount--;
                          mouse_off (); /* FIXME */
-                         screen_update (state[statecount].screen_behind);
+                         screen_update (sf, state[statecount].screen_behind);
                          state[statecount].screen_behind = NULL;
                        }
                    if (i == statecount - 1 && state[i].menu->submenu[dy])
@@ -3412,11 +3448,15 @@ tty_menu_activate (tty_menu *menu, int *pane, int *selidx,
      (which invoked the menu) too quickly.  If we don't remove these events,
      Emacs will process them after we return and surprise the user.  */
   discard_mouse_events ();
+#if 0
   mouse_clear_clicks ();
-  if (!kbd_buffer_events_waiting (1))
+#endif
+  if (!kbd_buffer_events_waiting ())
     clear_input_pending ();
+#if 0
   /* Allow mouse events generation by dos_rawgetc.  */
   mouse_preempted--;
+#endif
   return result;
 }
 
@@ -3440,8 +3480,53 @@ tty_menu_destroy (tty_menu *menu)
   menu_help_message = prev_menu_help_message = NULL;
 }
 
+static struct frame *tty_menu_help_frame;
+
+/* Show help HELP_STRING, or clear help if HELP_STRING is null.
+
+   PANE is the pane number, and ITEM is the menu item number in
+   the menu (currently not used).
+
+   This cannot be done with generating a HELP_EVENT because
+   XMenuActivate contains a loop that doesn't let Emacs process
+   keyboard events.
+
+   FIXME: Do we need this in TTY menus?  */
+
+static void
+tty_menu_help_callback (char const *help_string, int pane, int item)
+{
+  Lisp_Object *first_item;
+  Lisp_Object pane_name;
+  Lisp_Object menu_object;
+
+  first_item = XVECTOR (menu_items)->contents;
+  if (EQ (first_item[0], Qt))
+    pane_name = first_item[MENU_ITEMS_PANE_NAME];
+  else if (EQ (first_item[0], Qquote))
+    /* This shouldn't happen, see xmenu_show.  */
+    pane_name = empty_unibyte_string;
+  else
+    pane_name = first_item[MENU_ITEMS_ITEM_NAME];
+
+  /* (menu-item MENU-NAME PANE-NUMBER)  */
+  menu_object = list3 (Qmenu_item, pane_name, make_number (pane));
+  show_help_echo (help_string ? build_string (help_string) : Qnil,
+                 Qnil, menu_object, make_number (item));
+}
+
+static void
+tty_pop_down_menu (Lisp_Object arg)
+{
+  tty_menu *menu = XSAVE_POINTER (arg, 0);
+
+  block_input ();
+  tty_menu_destroy (menu);
+  unblock_input ();
+}
+
 Lisp_Object
-tty_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
+tty_menu_show (struct frame *f, int x, int y, int for_click, int keymaps,
               Lisp_Object title, const char **error_name)
 {
   tty_menu *menu;
@@ -3457,7 +3542,7 @@ tty_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
   ptrdiff_t specpdl_count = SPECPDL_INDEX ();
 
   if (! FRAME_TERMCAP_P (f))
-    abort ();
+    emacs_abort ();
 
   *error_name = 0;
   if (menu_items_n_panes == 0)
@@ -3631,15 +3716,13 @@ tty_menu_show (FRAME_PTR f, int x, int y, int for_click, int keymaps,
 
   pane = selidx = 0;
 
-  record_unwind_protect (pop_down_menu,
-                         Fcons (make_save_value (f, 0),
-                                make_save_value (menu, 0)));
+  record_unwind_protect (tty_pop_down_menu, make_save_ptr (menu));
 
   /* Help display under X won't work because XMenuActivate contains
-     a loop that doesn't give Emacs a chance to process it.  */
-  menu_help_frame = f;
+     a loop that doesn't give Emacs a chance to process it.  FIXME.  */
+  tty_menu_help_frame = f;
   status = tty_menu_activate (menu, &pane, &selidx, x, y, &datap,
-                             menu_help_callback);
+                             tty_menu_help_callback);
   entry = pane_prefix = Qnil;
 
   switch (status)
index 437089ebf7a33a655961f322dbaf11b3fb6ebecf..3e4ec1d7e6d4149aa73dfbd6c19aa3ea41dd506a 100644 (file)
@@ -664,8 +664,11 @@ extern void close_gpm (int gpm_fd);
 #endif
 
 #ifdef WINDOWSNT
-extern int curX (struct tty_display_info *);
-extern int curY (struct tty_display_info *);
+extern int cursorX (struct tty_display_info *);
+extern int cursorY (struct tty_display_info *);
+#else
+#define cursorX(t)  curX(t)
+#define cursorY(t)  curY(t)
 #endif
 
 INLINE_HEADER_END
index a85469cb38254aed91ae16e9271825952ec42ef2..cb42bae14215165dfb2e23932e8b5fba83134169 100644 (file)
@@ -553,16 +553,16 @@ Wcm_clear (struct tty_display_info *tty)
 
 
 /* Report the current cursor position.  The following two functions
-   mirror cm.h macros and are used in term.c's tty menu code, so they
-   are not really "stubs".  */
+   are used in term.c's tty menu code, so they are not really
+   "stubs".  */
 int
-curX (struct tty_display_info *tty)
+cursorX (struct tty_display_info *tty)
 {
   return cursor_coords.X;
 }
 
 int
-curY (struct tty_display_info *tty)
+cursorY (struct tty_display_info *tty)
 {
   return cursor_coords.Y;
 }
index 27ce653952f2609c7e8610c4a38643d3c7ecaca8..2d015fca8872373fc6281c66ab815cb908e62311 100644 (file)
@@ -20602,10 +20602,11 @@ display_tty_menu_item (const char *item_text, int face_id, int x, int y,
 {
   struct it it;
   struct frame *f = SELECTED_FRAME ();
+  struct window *w = XWINDOW (f->selected_window);
   int saved_used, saved_truncated, saved_width;
   struct glyph_row *row;
 
-  xassert (FRAME_TERMCAP_P (f));
+  eassert (FRAME_TERMCAP_P (f));
 
   init_iterator (&it, w, -1, -1, f->desired_matrix->rows + y, MENU_FACE_ID);
   it.first_visible_x = 0;