X-Git-Url: http://git.hcoop.net/bpt/emacs.git/blobdiff_plain/bb892cdec70b2f937e6b7f7597c5f1c7f467c9ea..5725bd2cc0e691dadc31bd958f210b1bbcf17c49:/oldXMenu/Internal.c diff --git a/oldXMenu/Internal.c b/oldXMenu/Internal.c index 619acfe724..dc8dc0120e 100644 --- a/oldXMenu/Internal.c +++ b/oldXMenu/Internal.c @@ -3,8 +3,7 @@ #include "copyright.h" /* -Copyright (C) 1993, 1996, 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009 Free Software Foundation, Inc. +Copyright (C) 1993, 1996, 2001-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,18 +32,11 @@ along with this program. If not, see . */ #include #include "XMenuInt.h" -/* - * Toggle color macro. - */ -#define toggle_color(x) \ - ((x) == menu->bkgnd_color ? menu->s_frg_color : menu->bkgnd_color) - /* * Internal Window creation queue sizes. */ #define S_QUE_SIZE 300 #define P_QUE_SIZE 20 -#define BUFFER_SIZE (S_QUE_SIZE >= P_QUE_SIZE ? S_QUE_SIZE : P_QUE_SIZE) /* @@ -72,7 +64,7 @@ int _XMErrorCode = XME_NO_ERROR; /* * _XMErrorList - Global XMenu error code description strings. */ -char * +char const *const _XMErrorList[XME_CODE_COUNT] = { "No error", /* XME_NO_ERROR */ "Menu not initialized", /* XME_NOT_INIT */ @@ -96,7 +88,7 @@ _XMErrorList[XME_CODE_COUNT] = { /* * _XMEventHandler - Internal event handler variable. */ -int (*_XMEventHandler)() = NULL; +int (*_XMEventHandler)(XEvent*) = NULL; @@ -104,7 +96,8 @@ int (*_XMEventHandler)() = NULL; * _XMWinQueInit - Internal routine to initialize the window * queue. */ -_XMWinQueInit() +void +_XMWinQueInit(void) { /* * If the queue is not initialized initialize it. @@ -138,10 +131,10 @@ _XMWinQueInit() * window queue. */ int -_XMWinQueAddPane(display, menu, p_ptr) - register Display *display; - register XMenu *menu; /* Menu being manipulated. */ - register XMPane *p_ptr; /* XMPane being queued. */ +_XMWinQueAddPane(register Display *display, register XMenu *menu, register XMPane *p_ptr) + + /* Menu being manipulated. */ + /* XMPane being queued. */ { /* * If the queue is currently full then flush it. @@ -172,10 +165,10 @@ _XMWinQueAddPane(display, menu, p_ptr) * the selection window queue. */ int -_XMWinQueAddSelection(display, menu, s_ptr) - register Display *display; - register XMenu *menu; /* Menu being manipulated. */ - register XMSelect *s_ptr; /* XMSelection being queued. */ +_XMWinQueAddSelection(register Display *display, register XMenu *menu, register XMSelect *s_ptr) + + /* Menu being manipulated. */ + /* XMSelection being queued. */ { /* * If this entry will overflow the queue then flush it. @@ -206,17 +199,18 @@ _XMWinQueAddSelection(display, menu, s_ptr) * selection window queues. */ int -_XMWinQueFlush(display, menu, pane, select) - register Display *display; - register XMenu *menu; /* Menu being manipulated. */ - register XMPane *pane; /* Current pane. */ +_XMWinQueFlush(register Display *display, register XMenu *menu, register XMPane *pane, XMSelect *sel) + + /* Menu being manipulated. */ + /* Current pane. */ { register int pq_index; /* Pane queue index. */ register int sq_index; /* Selection queue index. */ register XMPane *p_ptr; /* XMPane pointer. */ register XMSelect *s_ptr; /* XMSelect pointer. */ unsigned long valuemask; /* Which attributes to set. */ - XSetWindowAttributes *attributes; /* Attributes to be set. */ + XSetWindowAttributes attributes_buf; /* Attributes to be set. */ + XSetWindowAttributes *attributes = &attributes_buf; /* * If the pane window queue is not empty... @@ -227,7 +221,6 @@ _XMWinQueFlush(display, menu, pane, select) * set up attributes for pane window to be created. */ valuemask = (CWBackPixmap | CWBorderPixel | CWOverrideRedirect); - attributes = (XSetWindowAttributes *)malloc(sizeof(XSetWindowAttributes)); attributes->border_pixel = menu->p_bdr_color; attributes->background_pixmap = menu->inact_pixmap; attributes->override_redirect = True; @@ -346,9 +339,9 @@ _XMWinQueFlush(display, menu, pane, select) * a pane pointer that points to the indexed pane. */ XMPane * -_XMGetPanePtr(menu, p_num) - register XMenu *menu; /* Menu to find the pane in. */ - register int p_num; /* Index number of pane to find. */ +_XMGetPanePtr(register XMenu *menu, register int p_num) + /* Menu to find the pane in. */ + /* Index number of pane to find. */ { register XMPane *p_ptr; /* Pane pointer to be returned. */ register int i; /* Loop counter. */ @@ -382,9 +375,9 @@ _XMGetPanePtr(menu, p_num) * indexed selection. */ XMSelect * -_XMGetSelectionPtr(p_ptr, s_num) - register XMPane *p_ptr; /* Pane to find the selection in. */ - register int s_num; /* Index number of the selection to find. */ +_XMGetSelectionPtr(register XMPane *p_ptr, register int s_num) + /* Pane to find the selection in. */ + /* Index number of the selection to find. */ { register XMSelect *s_ptr; /* Selection pointer to be returned. */ register int i; /* Loop counter. */ @@ -416,9 +409,10 @@ _XMGetSelectionPtr(p_ptr, s_num) * _XMRecomputeGlobals - Internal subroutine to recompute menu wide * global values. */ -_XMRecomputeGlobals(display, menu) - register Display *display; /*X11 display variable. */ - register XMenu *menu; /* Menu object to compute from. */ +void +_XMRecomputeGlobals(register Display *display, register XMenu *menu) + /*X11 display variable. */ + /* Menu object to compute from. */ { register XMPane *p_ptr; /* Pane pointer. */ register XMSelect *s_ptr; /* Selection pointer. */ @@ -531,11 +525,11 @@ _XMRecomputeGlobals(display, menu) * window dependencies. */ int -_XMRecomputePane(display, menu, p_ptr, p_num) - register Display *display; /* Standard X display variable. */ - register XMenu *menu; /* Menu object being recomputed. */ - register XMPane *p_ptr; /* Pane pointer. */ - register int p_num; /* Pane sequence number. */ +_XMRecomputePane(register Display *display, register XMenu *menu, register XMPane *p_ptr, register int p_num) + /* Standard X display variable. */ + /* Menu object being recomputed. */ + /* Pane pointer. */ + /* Pane sequence number. */ { register int window_x; /* Recomputed window X coordinate. */ register int window_y; /* Recomputed window Y coordinate. */ @@ -681,11 +675,11 @@ _XMRecomputePane(display, menu, p_ptr, p_num) * selection window dependencies. */ int -_XMRecomputeSelection(display, menu, s_ptr, s_num) - register Display *display; - register XMenu *menu; /* Menu object being recomputed. */ - register XMSelect *s_ptr; /* Selection pointer. */ - register int s_num; /* Selection sequence number. */ +_XMRecomputeSelection(register Display *display, register XMenu *menu, register XMSelect *s_ptr, register int s_num) + + /* Menu object being recomputed. */ + /* Selection pointer. */ + /* Selection sequence number. */ { register Bool config_s = False; /* Reconfigure selection window? */ XWindowChanges *changes; /* Values to change in configure. */ @@ -811,15 +805,16 @@ _XMRecomputeSelection(display, menu, s_ptr, s_num) * recomputed before calling this routine or * unpredictable results will follow. */ -_XMTransToOrigin(display, menu, p_ptr, s_ptr, x_pos, y_pos, orig_x, orig_y) - Display *display; /* Not used. Included for consistency. */ - register XMenu *menu; /* Menu being computed against. */ - register XMPane *p_ptr; /* Current pane pointer. */ - register XMSelect *s_ptr; /* Current selection pointer. */ - int x_pos; /* X coordinate of point to translate. */ - int y_pos; /* Y coordinate of point to translate. */ - int *orig_x; /* Return value X coord. of the menu origin. */ - int *orig_y; /* Return value Y coord. of the menu origin. */ +void +_XMTransToOrigin(Display *display, register XMenu *menu, register XMPane *p_ptr, register XMSelect *s_ptr, int x_pos, int y_pos, int *orig_x, int *orig_y) + /* Not used. Included for consistency. */ + /* Menu being computed against. */ + /* Current pane pointer. */ + /* Current selection pointer. */ + /* X coordinate of point to translate. */ + /* Y coordinate of point to translate. */ + /* Return value X coord. of the menu origin. */ + /* Return value Y coord. of the menu origin. */ { register int l_orig_x; /* Local X coordinate of the menu origin. */ register int l_orig_y; /* Local Y coordinate of the menu origin. */ @@ -871,10 +866,8 @@ _XMTransToOrigin(display, menu, p_ptr, s_ptr, x_pos, y_pos, orig_x, orig_y) * _XMRefreshPane - Internal subroutine to completely refresh * the contents of a pane. */ -_XMRefreshPane(display, menu, pane) - register Display *display; - register XMenu *menu; - register XMPane *pane; +void +_XMRefreshPane(register Display *display, register XMenu *menu, register XMPane *pane) { register XMSelect *s_list = pane->s_list; register XMSelect *s_ptr; @@ -941,85 +934,80 @@ _XMRefreshPane(display, menu, pane) * _XMRefreshSelection - Internal subroutine that refreshes * a single selection window. */ -_XMRefreshSelection(display, menu, select) - register Display *display; - register XMenu *menu; - register XMSelect *select; +void +_XMRefreshSelection(register Display *display, register XMenu *menu, register XMSelect *sel) { - register int width = select->window_w; - register int height = select->window_h; + register int width = sel->window_w; + register int height = sel->window_h; register int bdr_width = menu->s_bdr_width; - if (select->type == SEPARATOR) { + if (sel->type == SEPARATOR) { XDrawLine(display, - select->parent_p->window, + sel->parent_p->window, menu->normal_select_GC, - select->window_x, - select->window_y + height / 2, - select->window_x + width, - select->window_y + height / 2); + sel->window_x, + sel->window_y + height / 2, + sel->window_x + width, + sel->window_y + height / 2); } - else if (select->activated) { + else if (sel->activated) { if (menu->menu_mode == INVERT) { XFillRectangle(display, - select->parent_p->window, + sel->parent_p->window, menu->normal_select_GC, - select->window_x, select->window_y, + sel->window_x, sel->window_y, width, height); XDrawString(display, - select->parent_p->window, + sel->parent_p->window, menu->inverse_select_GC, - select->label_x, - select->label_y, - select->label, select->label_length); + sel->label_x, + sel->label_y, + sel->label, sel->label_length); } else { /* * Using BOX mode. * Since most drawing routines with arbitrary width lines - * are slow compared to raster-ops lets use a raster-op to + * are slow compared to raster-ops let's use a raster-op to * draw the boxes. */ XDrawRectangle(display, - select->parent_p->window, + sel->parent_p->window, menu->normal_select_GC, - select->window_x + (bdr_width >> 1), - select->window_y + (bdr_width >> 1 ), + sel->window_x + (bdr_width >> 1), + sel->window_y + (bdr_width >> 1 ), width - bdr_width, height - bdr_width); XDrawString(display, - select->parent_p->window, + sel->parent_p->window, menu->normal_select_GC, - select->label_x, - select->label_y, - select->label, select->label_length); + sel->label_x, + sel->label_y, + sel->label, sel->label_length); } } else { XClearArea(display, - select->parent_p->window, - select->window_x, select->window_y, + sel->parent_p->window, + sel->window_x, sel->window_y, width, height, False); - if (select->active) { + if (sel->active) { XDrawString(display, - select->parent_p->window, + sel->parent_p->window, menu->normal_select_GC, - select->label_x, - select->label_y, - select->label, select->label_length); + sel->label_x, + sel->label_y, + sel->label, sel->label_length); } else { XDrawString(display, - select->parent_p->window, + sel->parent_p->window, menu->inact_GC, - select->label_x, - select->label_y, - select->label, select->label_length); + sel->label_x, + sel->label_y, + sel->label, sel->label_length); } } } - -/* arch-tag: 3ac61957-0852-4e72-8b88-7dfab1a5dee9 - (do not change this comment) */