Mercurial > emacs
view oldXMenu/Destroy.c @ 106768:21fd634f447a
Make line<->pixel_y conversion macros aware of native menu/tool bars.
They are placed above the internal border. This supersedes special
treatment of native tool bars in the display code.
This fixes wrong display position of native menu bars and bogus mouse
highlighting of native tool bars, both of which can be found when
internal border width is large. Also it fixes wrong flashed part on
visible bell with native menu bars.
* frame.h (FRAME_TOP_MARGIN_HEIGHT): New macro.
(FRAME_LINE_TO_PIXEL_Y, FRAME_PIXEL_Y_TO_LINE): Take account of pseudo
windows above internal border.
* window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P): New macros.
(WINDOW_TOP_EDGE_Y, WINDOW_BOTTOM_EDGE_Y): Take account of pseudo
windows above internal border.
* xdisp.c (get_glyph_string_clip_rects, init_glyph_string): Don't treat
tool bar windows specially.
* xfns.c (x_set_tool_bar_lines): Take account of menu bar height.
* xterm.c (x_after_update_window_line): Don't treat tool bar windows
specially.
(XTflash): Take account of menu bar height.
* w32term.c (x_after_update_window_line): Don't treat tool bar windows
specially.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Sat, 09 Jan 2010 13:16:32 +0900 |
parents | fec5e03aaf59 |
children | edf631bdbb7a ec58e5c426ef 5cc91198ffb2 |
line wrap: on
line source
/* Copyright Massachusetts Institute of Technology 1985 */ #include "copyright.h" /* * XMenu: MIT Project Athena, X Window system menu package * * XMenuDestroy - Free all resources associated with and XMenu. * * Author: Tony Della Fera, DEC * August, 1985 * */ #include "XMenuInt.h" XMenuDestroy(display, menu) Display *display; register XMenu *menu; /* Menu object to destroy. */ { register XMPane *p_ptr; /* Pointer to the current pane. */ register XMPane *p_next; /* Pointer to the next pane. */ register XMSelect *s_ptr; /* Pointer to the current selection. */ register XMSelect *s_next; /* Pointer to the next selection. */ /* * Destroy the selection and pane X windows and free * their corresponding XMWindows. */ for ( p_ptr = menu->p_list->next; p_ptr != menu->p_list; p_ptr = p_next ) { for ( s_ptr = p_ptr->s_list->next; s_ptr != p_ptr->s_list; s_ptr = s_next ) { s_next = s_ptr->next; free(s_ptr); } if (p_ptr->window) { XDestroySubwindows(display, p_ptr->window); XDestroyWindow(display, p_ptr->window); } p_next = p_ptr->next; free(p_ptr); } /* * Destroy the association table. */ XDestroyAssocTable(menu->assoc_tab); /* * Free the mouse cursor. */ XFreeCursor(display, menu->mouse_cursor); /* * Free the fonts. */ XFreeFont(display, menu->p_fnt_info); XFreeFont(display, menu->s_fnt_info); /* * Free the pixmaps. */ /* XFreePixmap(display, menu->p_bdr_pixmap); XFreePixmap(display, menu->s_bdr_pixmap); XFreePixmap(display, menu->p_frg_pixmap); XFreePixmap(display, menu->s_frg_pixmap); XFreePixmap(display, menu->bkgnd_pixmap); */ XFreePixmap(display, menu->inact_pixmap); /* * Free the color cells. */ if ((menu->p_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_bdr_color != WhitePixel(display, DefaultScreen(display)))) XFreeColors( display, DefaultColormap(display, DefaultScreen(display)), &menu->p_bdr_color, 1, 0); if ((menu->s_bdr_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_bdr_color != WhitePixel(display, DefaultScreen(display)))) XFreeColors( display, DefaultColormap(display, DefaultScreen(display)), &menu->s_bdr_color, 1, 0); if ((menu->p_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->p_frg_color != WhitePixel(display, DefaultScreen(display)))) XFreeColors( display, DefaultColormap(display, DefaultScreen(display)), &menu->p_frg_color, 1, 0); if ((menu->s_frg_color != BlackPixel(display, DefaultScreen(display))) && (menu->s_frg_color != WhitePixel(display, DefaultScreen(display)))) XFreeColors( display, DefaultColormap(display, DefaultScreen(display)), &menu->s_frg_color, 1, 0); if ((menu->bkgnd_color != BlackPixel(display, DefaultScreen(display))) && (menu->bkgnd_color != WhitePixel(display, DefaultScreen(display)))) XFreeColors( display, DefaultColormap(display, DefaultScreen(display)), &menu->bkgnd_color, 1, 0); /* * Free the XMenu. */ free(menu); } /* arch-tag: 44c9589f-5893-46fc-bc23-1b03a7f9c015 (do not change this comment) */