annotate src/gui-gtk.c @ 2951:b694dfd2f40e

[xemacs-hg @ 2005-09-26 08:13:00 by ben] Compile Windows with gmp, ldap, postgresql, db, etc. README: Major rewrite. Document how to compile various optional libs. config.inc.samp: Update to recent versions of optional libs. Add support for gmp, db, postgresql, ldap. Turn on optimization when not debug. minitar.c: Include config.h. xemacs.mak: Figure out VC++ version and use it to set debug and browser flags appropriately. Add support for building gmp, db, postgresql, ldap. Rewrite handling of optional stuff so it is all added to single variables OPT_* rather than to various FOO_* variables. Pass -I$(SRC) to minitar.c so it compiles. Pass module sources, not objects, to make-docfile. Delete more stuff in `make clean'.
author ben
date Mon, 26 Sep 2005 08:13:00 +0000
parents 166ed8151e62
children 308d34e9f07d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2168
95fee4a1420e [xemacs-hg @ 2004-07-07 12:00:58 by malcolmp]
malcolmp
parents: 2054
diff changeset
1 /* General GUI code -- GTK-specific. (menubars, scrollbars, toolbars, dialogs)
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
2 Copyright (C) 1995 Board of Trustees, University of Illinois.
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 563
diff changeset
3 Copyright (C) 1995, 1996, 2002 Ben Wing.
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
4 Copyright (C) 1995 Sun Microsystems, Inc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
5 Copyright (C) 1998 Free Software Foundation, Inc.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
6
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
7 This file is part of XEmacs.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
8
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
9 XEmacs is free software; you can redistribute it and/or modify it
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
10 under the terms of the GNU General Public License as published by the
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
11 Free Software Foundation; either version 2, or (at your option) any
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
12 later version.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
13
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
14 XEmacs is distributed in the hope that it will be useful, but WITHOUT
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
16 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
17 for more details.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
18
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
19 You should have received a copy of the GNU General Public License
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
20 along with XEmacs; see the file COPYING. If not, write to
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
21 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
22 Boston, MA 02111-1307, USA. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
23
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
24 /* Synched up with: Not in FSF. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
25
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
26 #include <config.h>
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
27 #include "lisp.h"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
28
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
29 #include "buffer.h"
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 563
diff changeset
30 #include "device-impl.h"
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
31 #include "frame.h"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
32 #include "gui.h"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
33 #include "opaque.h"
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
34
872
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 563
diff changeset
35 #include "console-gtk-impl.h"
79c6ff3eef26 [xemacs-hg @ 2002-06-20 21:18:01 by ben]
ben
parents: 563
diff changeset
36
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
37 static GUI_ID gui_id_ctr = 0;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
38
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
39 GUI_ID
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
40 new_gui_id (void)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
41 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
42 return (++gui_id_ctr);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
43 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
44
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
45 /* This is like FRAME_MENUBAR_DATA (f), but contains an alist of
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
46 (id . popup-data) for GCPRO'ing the callbacks of the popup menus
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
47 and dialog boxes. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
48 static Lisp_Object Vpopup_callbacks;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
49
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
50 void
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
51 gcpro_popup_callbacks (GUI_ID id, Lisp_Object data)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
52 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
53 Vpopup_callbacks = Fcons (Fcons (make_int (id), data), Vpopup_callbacks);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
54 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
55
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
56 void
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
57 ungcpro_popup_callbacks (GUI_ID id)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
58 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
59 Lisp_Object lid = make_int (id);
2552
166ed8151e62 [xemacs-hg @ 2005-02-03 16:30:33 by james]
james
parents: 2168
diff changeset
60 Lisp_Object this_callback = assq_no_quit (lid, Vpopup_callbacks);
166ed8151e62 [xemacs-hg @ 2005-02-03 16:30:33 by james]
james
parents: 2168
diff changeset
61 Vpopup_callbacks = delq_no_quit (this_callback, Vpopup_callbacks);
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
62 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
63
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
64 Lisp_Object
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
65 get_gcpro_popup_callbacks (GUI_ID id)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
66 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
67 Lisp_Object lid = make_int (id);
2552
166ed8151e62 [xemacs-hg @ 2005-02-03 16:30:33 by james]
james
parents: 2168
diff changeset
68 Lisp_Object this_callback = assq_no_quit (lid, Vpopup_callbacks);
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
69
2552
166ed8151e62 [xemacs-hg @ 2005-02-03 16:30:33 by james]
james
parents: 2168
diff changeset
70 if (!NILP (this_callback))
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
71 {
2552
166ed8151e62 [xemacs-hg @ 2005-02-03 16:30:33 by james]
james
parents: 2168
diff changeset
72 return (XCDR (this_callback));
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
73 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
74 return (Qnil);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
75 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
76
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
77 void
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
78 syms_of_gui_gtk (void)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
79 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
80 #ifdef HAVE_POPUPS
563
183866b06e0b [xemacs-hg @ 2001-05-24 07:50:48 by ben]
ben
parents: 462
diff changeset
81 DEFSYMBOL (Qmenu_no_selection_hook);
462
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
82 #endif
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
83 }
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
84
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
85 void
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
86 vars_of_gui_gtk (void)
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
87 {
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
88 staticpro (&Vpopup_callbacks);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
89 Vpopup_callbacks = Qnil;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
90 #ifdef HAVE_POPUPS
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
91 popup_up_p = 0;
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
92
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
93 #if 0
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
94 /* This DEFVAR_LISP is just for the benefit of make-docfile. */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
95 /* #### misnamed */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
96 DEFVAR_LISP ("menu-no-selection-hook", &Vmenu_no_selection_hook /*
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
97 Function or functions to call when a menu or dialog box is dismissed
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
98 without a selection having been made.
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
99 */ );
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
100 #endif
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
101
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
102 Fset (Qmenu_no_selection_hook, Qnil);
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
103 #endif /* HAVE_POPUPS */
0784d089fdc9 Import from CVS: tag r21-2-46
cvs
parents:
diff changeset
104 }