| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
If we unread some events, set interrupt_input_pending.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
(xmenu_show): Set that var.
(other_menu_bar_item_p): Return 0 if mouse is not in any menu bar item.
(xmenu_show, xdialog_show): Add casts in assignments
to widget_value fields from string contents.
(dispatch_dummy_expose): Cast arg to XtDispatchEvent.
[!USE_X_TOOLKIT] (xmenu_show): Right-justify char equivalents.
Use alloca for concatenated strings, if alloca is fast.
[USE_X_TOOLKIT] (xmenu_show): Use XtTranslateCoords.
|
| |
|
|
|
|
|
|
|
| |
(list_of_items): Handle nil in item list as left/right boundary.
(push_left_right_boundary): Record the boundary.
(xmenu_show): Disregard a boundary if any.
(xdialog_show): Really obey a boundary.
|
| |
|
| |
|
|
|
|
| |
Do call lw_destroy_all_widgets at the end.
|
|
|
|
|
| |
Don't update the menubar the first time it is created via x_window.
(initialize_frame_menubar): Pass 1 to set_frame_menubar.
|
| |
|
|
|
|
|
| |
(initialize_frame_menubar): New function.
(set_frame_menubar): Call menu_bar_items when items is NIL.
|
|
|
|
|
|
|
| |
(Fx_popup_dialog): Don't pass those args; don't compute them.
Second arg is now just one pane. Lots of simplification.
Always start by decoding POSITION arg to get a frame.
[! USE_X_TOOLKIT]: Put the menu in middle of that frame.
|
|
|
|
|
|
| |
(xdialog_show): Call lw_modify_all_widgets properly.
Generate dialog's name at run time to specify number of buttons.
Report error if too many buttons to handle or if multiple panes.
|
| |
|
| |
|
|
|
|
| |
mouse_position_hook doesn't store anything.
|
|
|
|
| |
(Fx_popup_dialog) [! USE_X_TOOLKIT]: Call Fx_popup_menu.
|
| |
|
|
|
|
|
|
|
| |
(Fx_popup_dialog): New function.
(dialog_selection_callback): New function.
(xmenu_show) [USE_X_TOOLKIT]: Don't call lw_destroy_all_widgets at the end.
Do the work of construct_mouse_click in the ButtonRelease case.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
don't require an open X connection.
(single_keymap_panes, keymap_panes, menu_item_enabled_p): New arg NOTREAL.
(Fx_popup_menu): Pass new arg (1 if POSITION is nil).
(menu_item_enabled_p): If NOTREAL, always return t.
(single_keymap_panes) [!USE_X_TOOLKIT]:
Append > to item_string if submenu.
[USE_X_TOOLKIT]: Display submenus in Xt style.
(menu_items): Record where submenus start and end.
(menu_items_submenu_depth): New variable.
(init_menu_items): Init it.
(push_submenu_start, push_submenu_end): New functions.
(grow_menu_items): New function.
(push_menu_pane, push_menu_item): Use it.
(push_menu_pane): Increment menu_items_n_panes only if depth is 0.
(single_keymap_panes) [USE_X_TOOLKIT]: Record submenus in menu_items.
(xmenu_show) [USE_X_TOOLKIT]: Give submenus to toolkit.
|
|
|
|
|
|
| |
force the paned widget to resize to the right value.
(xmenu_show): No need to check a second time whether the mouse has
moved to another menu bar item. This slows down execution.
|
| |
|
|
|
|
| |
Use FRAME_MENU_BAR_LINES as vector.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow nil as position, meaning just precompute equiv-key data.
Mouse events have coords in pixel units.
(menu_item_equiv_key): Cached equiv-key data is a sublist.
Most of file rewritten.
(menu_items, menu_items_*): New variables.
(MENU_ITEMS_*): New macros.
(init_menu_items, discard_menu_items, push_menu_pane, push_menu_item)
(finish_menu_items): New functions.
(menu_item_enabled_p): New function.
(keymap_panes, single_keymap_panes): Major rewrite; most args changed.
(list_of_panes, list_of_items): Major rewrite; most args changed.
(Fx_popup_menu): Major rewrite. Now independent of display mechanism.
No more conditionals here.
(set_menu_items, free_menu_items): Functions deleted.
(xmenu_show): Both versions rewritten to work from menu_items
and to do all the conditionalized things that were in Fx_popup_menu.
(unread_menu_bar_button, other_menu_bar_item_p): New functions.
(check_mouse_other_menu_bar): New function.
|
|
|
|
|
|
| |
Rename item2 to item_string.
GCPRO some things.
(menu_item_equiv_key): Use either VECTORP or STRINGP, not both.
|
|
|
|
|
| |
(menu_item_equiv_key): New function.
(single_keymap_panes): Call it.
|
|
|
|
| |
(popup_down_callback): Likewise.
|
| |
|
|
|
|
| |
instance of the menubar.
|
| |
|
|
|
|
| |
case.
|
|
|
|
|
|
|
|
| |
if you move the pointer on another menubar item while displaying the contents
of a selected menubar item, the current pulldown menu is closed and the new
one corresponding to the new pointed item is displayed.
Clean up code.
Handle the MotionNotify events in the XEvent loop.
|
|
|
|
| |
(single_keymap_panes_1): New function.
|
|
|
|
| |
avoid the flickering of the menubar.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Reshuffle functions; put new ones in #ifdef USE_X_TOOLKIT.
(Fx_popup_menu): Add USE_X_TOOLKIT conditional around new decls.
(string_width): New function.
(event_is_in_menu_item, map_event_to_object): Likewise.
(set_menu_items, free_menu_items, popup_selection_callback): Likewise.
(popup_down_callback, free_menubar_widget_value_tree): Likewise.
(update_one_frame_psheets, set_frame_menubar): Likewise.
(Fx_popup_menu, xmenu_show): Handle USE_X_TOOLKIT.
(dispatch_dummy_expose): New function.
(XMenu_xpos, XMenu_ypos): Change the values of the constant assignment.
(xmenu_show): Change the way to make the menubar to redraw itself by
generating a dummy expose event.
|
| |
|
| |
|
| |
|
|
|
|
| |
(Fx_popup_menu): Call keymap_panes right in one-keymap case.
|
| |
|
|
|
|
|
| |
* xmenu.c (TRUE, FALSE): Same.
* xterm.c (dumprectangle): Same.
|
| |
|
|
|
|
|
|
| |
(keymap_panes): Allocate that vector.
(single_keymap_panes): Fill in that vector.
(xmenu_show): Return a list of events, not just one event.
|
|
|
|
|
|
|
|
| |
defined in an X-only source file.
* xmenu.c (Qmenu_enable): Definition moved...
(syms_of_xmenu): ... along with initialization ...
* keyboard.c (Qmenu_enable): ... to here ...
(syms_of_keyboard): ... and here.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This isn't specific to X, and it allows us to avoid #including
xterm.h in files that don't really have anything to do with X.
* blockinput.h: New file.
* xterm.h (BLOCK_INPUT, UNBLOCK_INPUT, TOTALLY_UNBLOCK_INPUT,
UNBLOCK_INPUT_RESIGNAL): These are now in blockinput.h.
(x_input_blocked, x_pending_input): Deleted; there are analogs
in blockinput.h called interrupt_input_blocked and
interrupt_input_pending.
* keyboard.c (interrupt_input_blocked, interrupt_input_pending):
New variables, used by the macros in blockinput.h.
* xterm.c: #include blockinput.h.
(x_input_blocked, x_pending_input): Deleted.
(XTread_socket): Test and set interrupt_input_blocked and
interrupt_input_pending instead of the old variables.
* alloc.c, xfaces.c, xfns.c, xmenu.c, xselect.c, keymap.c:
#include blockinput.h.
* eval.c: #include blockinput.h instead of xterm.h.
* keyboard.c: #include blockinput.h.
(input_poll_signal): Just test
interrupt_input_blocked, instead of testing HAVE_X_WINDOWS and
x_input_blocked.
Block the processing of interrupt input while we're manipulating the
malloc heap.
* alloc.c: (xfree): New function, to make it easy to free things
safely.
(xmalloc, xrealloc): Block X input while doing the deed.
(VALIDATE_LISP_STORAGE, gc_sweep, compact_strings): Use xfree
instead of free.
(uninterrupt_malloc): New function, to install input-blocking
hooks into the GNU malloc routines.
* emacs.c [not SYSTEM_MALLOC] (main): Call uninterrupt_malloc
on startup.
* alloc.c: (make_interval, make_float, Fcons, Fmake_vector,
Fmake_symbol, Fmake_marker, make_uninit_string, Fgarbage_collect):
Use xmalloc instead of malloc; don't bother to check if out of
memory here.
(Fgarbage_collect): Call xrealloc instead of realloc.
* buffer.c: Use xmalloc and xfree instead of malloc and free;
don't bother to check if out of memory here.
(Fget_buffer_create): Put BLOCK_INPUT/UNBLOCK_INPUT pair around
calls to ralloc routines.
* insdel.c: Same.
* lisp.h (xfree): New extern declaration.
* xfaces.c (xfree): Don't #define this to be free; use the
definition in alloc.c.
* dispnew.c, doc.c, doprnt.c, fileio.c, lread.c, term.c, xfns.c,
xmenu.c, xterm.c: Use xfree instead of free.
* hftctl.c: Use xfree and xmalloc instead of free and malloc.
* keymap.c (current_minor_maps): BLOCK_INPUT while calling realloc
and malloc.
* search.c: Since the regexp routines can malloc, BLOCK_INPUT
while runing them. #include blockinput.h.
* sysdep.c: #include blockinput.h. Call xfree and xmalloc instead
of free and malloc. BLOCK_INPUT around routines which we know
will call malloc.
ymakefile (keyboard.o, keymap.o, search.o, sysdep.o, xfaces.o,
xfns.o, xmenu.o, xterm.o, xselect.o, alloc.o, eval.o): Note that
these depend on blockinput.h.
|
| |
|
|
|
|
|
|
| |
they make nonselectable lines.
(single_keymap_panes): When storing in ENABLES, check def before enabled.
|
|
|
|
|
|
|
|
| |
(keymap_panes): New arg enables
(single_keymap_panes): New arg enables. Fill in its contents.
(list_of_panes, list_of_items): New arg enables. Fill in contents.
(Fx_popup_menu): Pass enable and enable_list args.
(single_keymap_panes): Set enable flag to -1 if cmd definition is nil.
|