2168
+ − 1 /* General GUI code -- GTK-specific. (menubars, scrollbars, toolbars, dialogs)
462
+ − 2 Copyright (C) 1995 Board of Trustees, University of Illinois.
872
+ − 3 Copyright (C) 1995, 1996, 2002 Ben Wing.
462
+ − 4 Copyright (C) 1995 Sun Microsystems, Inc.
+ − 5 Copyright (C) 1998 Free Software Foundation, Inc.
+ − 6
+ − 7 This file is part of XEmacs.
+ − 8
+ − 9 XEmacs is free software; you can redistribute it and/or modify it
+ − 10 under the terms of the GNU General Public License as published by the
+ − 11 Free Software Foundation; either version 2, or (at your option) any
+ − 12 later version.
+ − 13
+ − 14 XEmacs is distributed in the hope that it will be useful, but WITHOUT
+ − 15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ − 16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+ − 17 for more details.
+ − 18
+ − 19 You should have received a copy of the GNU General Public License
+ − 20 along with XEmacs; see the file COPYING. If not, write to
+ − 21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ − 22 Boston, MA 02111-1307, USA. */
+ − 23
+ − 24 /* Synched up with: Not in FSF. */
+ − 25
+ − 26 #include <config.h>
+ − 27 #include "lisp.h"
+ − 28
+ − 29 #include "buffer.h"
872
+ − 30 #include "device-impl.h"
462
+ − 31 #include "frame.h"
+ − 32 #include "gui.h"
+ − 33 #include "opaque.h"
+ − 34
872
+ − 35 #include "console-gtk-impl.h"
+ − 36
462
+ − 37 static GUI_ID gui_id_ctr = 0;
+ − 38
+ − 39 GUI_ID
+ − 40 new_gui_id (void)
+ − 41 {
+ − 42 return (++gui_id_ctr);
+ − 43 }
+ − 44
+ − 45 /* This is like FRAME_MENUBAR_DATA (f), but contains an alist of
+ − 46 (id . popup-data) for GCPRO'ing the callbacks of the popup menus
+ − 47 and dialog boxes. */
+ − 48 static Lisp_Object Vpopup_callbacks;
+ − 49
+ − 50 void
+ − 51 gcpro_popup_callbacks (GUI_ID id, Lisp_Object data)
+ − 52 {
+ − 53 Vpopup_callbacks = Fcons (Fcons (make_int (id), data), Vpopup_callbacks);
+ − 54 }
+ − 55
+ − 56 void
+ − 57 ungcpro_popup_callbacks (GUI_ID id)
+ − 58 {
+ − 59 Lisp_Object lid = make_int (id);
2552
+ − 60 Lisp_Object this_callback = assq_no_quit (lid, Vpopup_callbacks);
+ − 61 Vpopup_callbacks = delq_no_quit (this_callback, Vpopup_callbacks);
462
+ − 62 }
+ − 63
+ − 64 Lisp_Object
+ − 65 get_gcpro_popup_callbacks (GUI_ID id)
+ − 66 {
+ − 67 Lisp_Object lid = make_int (id);
2552
+ − 68 Lisp_Object this_callback = assq_no_quit (lid, Vpopup_callbacks);
462
+ − 69
2552
+ − 70 if (!NILP (this_callback))
462
+ − 71 {
2552
+ − 72 return (XCDR (this_callback));
462
+ − 73 }
+ − 74 return (Qnil);
+ − 75 }
+ − 76
+ − 77 void
+ − 78 syms_of_gui_gtk (void)
+ − 79 {
+ − 80 #ifdef HAVE_POPUPS
563
+ − 81 DEFSYMBOL (Qmenu_no_selection_hook);
462
+ − 82 #endif
+ − 83 }
+ − 84
+ − 85 void
+ − 86 vars_of_gui_gtk (void)
+ − 87 {
+ − 88 staticpro (&Vpopup_callbacks);
+ − 89 Vpopup_callbacks = Qnil;
+ − 90 #ifdef HAVE_POPUPS
+ − 91 popup_up_p = 0;
+ − 92
+ − 93 #if 0
+ − 94 /* This DEFVAR_LISP is just for the benefit of make-docfile. */
+ − 95 /* #### misnamed */
+ − 96 DEFVAR_LISP ("menu-no-selection-hook", &Vmenu_no_selection_hook /*
+ − 97 Function or functions to call when a menu or dialog box is dismissed
+ − 98 without a selection having been made.
+ − 99 */ );
+ − 100 #endif
+ − 101
+ − 102 Fset (Qmenu_no_selection_hook, Qnil);
+ − 103 #endif /* HAVE_POPUPS */
+ − 104 }