Mercurial > hg > xemacs-beta
diff src/gui-gtk.c @ 462:0784d089fdc9 r21-2-46
Import from CVS: tag r21-2-46
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:44:37 +0200 |
parents | |
children | 183866b06e0b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/gui-gtk.c Mon Aug 13 11:44:37 2007 +0200 @@ -0,0 +1,108 @@ +/* General GUI code -- X-specific. (menubars, scrollbars, toolbars, dialogs) + Copyright (C) 1995 Board of Trustees, University of Illinois. + Copyright (C) 1995, 1996 Ben Wing. + Copyright (C) 1995 Sun Microsystems, Inc. + Copyright (C) 1998 Free Software Foundation, Inc. + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in FSF. */ + +#include <config.h> +#include "lisp.h" + +#include "console-gtk.h" +#include "gui-gtk.h" +#include "buffer.h" +#include "device.h" +#include "frame.h" +#include "gui.h" +#include "opaque.h" + +#ifdef HAVE_POPUPS +Lisp_Object Qmenu_no_selection_hook; +#endif + +static GUI_ID gui_id_ctr = 0; + +GUI_ID +new_gui_id (void) +{ + return (++gui_id_ctr); +} + +/* This is like FRAME_MENUBAR_DATA (f), but contains an alist of + (id . popup-data) for GCPRO'ing the callbacks of the popup menus + and dialog boxes. */ +static Lisp_Object Vpopup_callbacks; + +void +gcpro_popup_callbacks (GUI_ID id, Lisp_Object data) +{ + Vpopup_callbacks = Fcons (Fcons (make_int (id), data), Vpopup_callbacks); +} + +void +ungcpro_popup_callbacks (GUI_ID id) +{ + Lisp_Object lid = make_int (id); + Lisp_Object this = assq_no_quit (lid, Vpopup_callbacks); + Vpopup_callbacks = delq_no_quit (this, Vpopup_callbacks); +} + +Lisp_Object +get_gcpro_popup_callbacks (GUI_ID id) +{ + Lisp_Object lid = make_int (id); + Lisp_Object this = assq_no_quit (lid, Vpopup_callbacks); + + if (!NILP (this)) + { + return (XCDR (this)); + } + return (Qnil); +} + +void +syms_of_gui_gtk (void) +{ +#ifdef HAVE_POPUPS + defsymbol (&Qmenu_no_selection_hook, "menu-no-selection-hook"); +#endif +} + +void +vars_of_gui_gtk (void) +{ + staticpro (&Vpopup_callbacks); + Vpopup_callbacks = Qnil; +#ifdef HAVE_POPUPS + popup_up_p = 0; + +#if 0 + /* This DEFVAR_LISP is just for the benefit of make-docfile. */ + /* #### misnamed */ + DEFVAR_LISP ("menu-no-selection-hook", &Vmenu_no_selection_hook /* +Function or functions to call when a menu or dialog box is dismissed +without a selection having been made. +*/ ); +#endif + + Fset (Qmenu_no_selection_hook, Qnil); +#endif /* HAVE_POPUPS */ +}