annotate src/gui_motif.c @ 2378:85b7dc8da5eb vim73

Add the 'concealcursor' option to decide when the cursor line is to be concealed or not. Rename 'conc' to 'cole' as the short name for 'conceallevel'.
author Bram Moolenaar <bram@vim.org>
date Fri, 23 Jul 2010 22:10:27 +0200
parents cccb71c2c5c1
children 6768ebd0bc04
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 /* vi:set ts=8 sts=4 sw=4:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3 * VIM - Vi IMproved by Bram Moolenaar
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4 * GUI/Motif support by Robert Webb
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
5 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
6 * Do ":help uganda" in Vim to read copying and usage conditions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7 * Do ":help credits" in Vim to see a list of people who contributed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 * See README.txt for an overview of the Vim source code.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
9 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 #include <Xm/Form.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12 #include <Xm/RowColumn.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
13 #include <Xm/PushB.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
14 #include <Xm/Text.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
15 #include <Xm/TextF.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
16 #include <Xm/Separator.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
17 #include <Xm/Label.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
18 #include <Xm/CascadeB.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
19 #include <Xm/ScrollBar.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
20 #include <Xm/MenuShell.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
21 #include <Xm/DrawingA.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
22 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
23 # include <Xm/RepType.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
24 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
25 #include <Xm/Frame.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
26 #include <Xm/LabelG.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
27 #include <Xm/ToggleBG.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
28 #include <Xm/SeparatoG.h>
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
29 #include <Xm/XmP.h>
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
30
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
31 #include <X11/keysym.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
32 #include <X11/Xatom.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
33 #include <X11/StringDefs.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
34 #include <X11/Intrinsic.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
35
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
36 #include "vim.h"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
37
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
38 #ifdef HAVE_X11_XPM_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
39 # include <X11/xpm.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
40 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
41 # ifdef HAVE_XM_XPMP_H
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
42 # include <Xm/XpmP.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
43 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
44 #endif
838
8e5830943bff updated for version 7.0e04
vimboss
parents: 827
diff changeset
45 #ifdef HAVE_XM_NOTEBOOK_H
8e5830943bff updated for version 7.0e04
vimboss
parents: 827
diff changeset
46 # include <Xm/Notebook.h>
8e5830943bff updated for version 7.0e04
vimboss
parents: 827
diff changeset
47 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
48
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
49 #include "gui_xmebw.h" /* for our Enhanced Button Widget */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
50
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
51 #if defined(FEAT_GUI_DIALOG) && defined(HAVE_XPM)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
52 # include "../pixmaps/alert.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
53 # include "../pixmaps/error.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
54 # include "../pixmaps/generic.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
55 # include "../pixmaps/info.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
56 # include "../pixmaps/quest.xpm"
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
57 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
58
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
59 #define MOTIF_POPUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
60
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
61 extern Widget vimShell;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
62
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
63 static Widget vimForm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
64 static Widget textAreaForm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
65 Widget textArea;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
66 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
67 static Widget toolBarFrame;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
68 static Widget toolBar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
69 #endif
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
70 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
71 static Widget tabLine;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
72 static Widget tabLine_menu = 0;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
73 static int showing_tabline = 0;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
74 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
75 #ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
76 static Widget footer;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
77 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
78 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
79 # if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
80 /* remember the last set value for the tearoff item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
81 static int tearoff_val = (int)XmTEAR_OFF_ENABLED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
82 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
83 static Widget menuBar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
84 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
85
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
86 static void scroll_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
87 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
88 static void tabline_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
89 static void tabline_button_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
90 static void tabline_menu_cb __ARGS((Widget w, XtPointer closure, XEvent *e, Boolean *continue_dispatch));
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
91 static void tabline_balloon_cb __ARGS((BalloonEval *beval, int state));
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
92 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
93 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
94 # ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
95 static void toolbarbutton_enter_cb __ARGS((Widget, XtPointer, XEvent *, Boolean *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
96 static void toolbarbutton_leave_cb __ARGS((Widget, XtPointer, XEvent *, Boolean *));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
97 # endif
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
98 static void reset_focus __ARGS((void));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
99 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
100 #ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
101 static int gui_mch_compute_footer_height __ARGS((void));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
102 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
103 #ifdef WSDEBUG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
104 static void attachDump(Widget, char *);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
105 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
106
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
107 static void gui_motif_menu_colors __ARGS((Widget id));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
108 static void gui_motif_scroll_colors __ARGS((Widget id));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
109
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
110 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
111 # define STRING_TAG XmFONTLIST_DEFAULT_TAG
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
112 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
113 # define STRING_TAG XmSTRING_DEFAULT_CHARSET
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
114 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
115
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
116 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
117 * Call-back routines.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
118 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
119
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
120 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
121 scroll_cb(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
122 Widget w UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
123 XtPointer client_data, call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
124 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
125 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
126 long value;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
127 int dragging;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
128
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
129 sb = gui_find_scrollbar((long)client_data);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
130
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
131 value = ((XmScrollBarCallbackStruct *)call_data)->value;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
132 dragging = (((XmScrollBarCallbackStruct *)call_data)->reason ==
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
133 (int)XmCR_DRAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
134 gui_drag_scrollbar(sb, value, dragging);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
135 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
136
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
137 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
138 static void
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
139 tabline_cb(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
140 Widget w UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
141 XtPointer client_data UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
142 XtPointer call_data;
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
143 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
144 XmNotebookCallbackStruct *nptr;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
145
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
146 nptr = (XmNotebookCallbackStruct *)call_data;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
147 if (nptr->reason != (int)XmCR_NONE)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
148 send_tabline_event(nptr->page_number);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
149 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
150
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
151 static void
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
152 tabline_button_cb(w, client_data, call_data)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
153 Widget w;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
154 XtPointer client_data UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
155 XtPointer call_data UNUSED;
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
156 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
157 int cmd, tab_idx;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
158
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
159 XtVaGetValues(w, XmNuserData, &cmd, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
160 XtVaGetValues(tabLine_menu, XmNuserData, &tab_idx, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
161
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
162 send_tabline_menu_event(tab_idx, cmd);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
163 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
164
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
165 /*
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
166 * Tabline single mouse click timeout handler
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
167 */
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
168 static void
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
169 motif_tabline_timer_cb (timed_out, interval_id)
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
170 XtPointer timed_out;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
171 XtIntervalId *interval_id UNUSED;
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
172 {
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
173 *((int *)timed_out) = TRUE;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
174 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
175
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
176 /*
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
177 * check if the tabline tab scroller is clicked
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
178 */
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
179 static int
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
180 tabline_scroller_clicked(scroller_name, event)
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
181 char *scroller_name;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
182 XButtonPressedEvent *event;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
183 {
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
184 Widget tab_scroll_w;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
185 Position pos_x, pos_y;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
186 Dimension width, height;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
187
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
188 tab_scroll_w = XtNameToWidget(tabLine, scroller_name);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
189 if (tab_scroll_w != (Widget)0) {
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
190 XtVaGetValues(tab_scroll_w, XmNx, &pos_x, XmNy, &pos_y, XmNwidth,
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
191 &width, XmNheight, &height, NULL);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
192 if (pos_x >= 0) {
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
193 /* Tab scroller (next) is visible */
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
194 if ((event->x >= pos_x) && (event->x <= pos_x + width) &&
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
195 (event->y >= pos_y) && (event->y <= pos_y + height)) {
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
196 /* Clicked on the scroller */
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
197 return TRUE;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
198 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
199 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
200 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
201 return FALSE;
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
202 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
203
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
204 static void
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
205 tabline_menu_cb(w, closure, e, continue_dispatch)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
206 Widget w;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
207 XtPointer closure UNUSED;
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
208 XEvent *e;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
209 Boolean *continue_dispatch UNUSED;
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
210 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
211 Widget tab_w;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
212 XButtonPressedEvent *event;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
213 int tab_idx = 0;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
214 WidgetList children;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
215 Cardinal numChildren;
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
216 static XtIntervalId timer = (XtIntervalId)0;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
217 static int timed_out = TRUE;
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
218
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
219 event = (XButtonPressedEvent *)e;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
220
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
221 if (event->button == Button1)
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
222 {
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
223 if (tabline_scroller_clicked("MajorTabScrollerNext", event)
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
224 || tabline_scroller_clicked("MajorTabScrollerPrevious", event))
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
225 return;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
226
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
227 if (!timed_out)
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
228 {
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
229 XtRemoveTimeOut(timer);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
230 timed_out = TRUE;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
231
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
232 /*
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
233 * Double click on the tabline gutter, add a new tab
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
234 */
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
235 send_tabline_menu_event(0, TABLINE_MENU_NEW);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
236 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
237 else
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
238 {
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
239 /*
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
240 * Single click on the tabline gutter, start a timer to check
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
241 * for double clicks
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
242 */
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
243 timer = XtAppAddTimeOut(app_context, (long_u)p_mouset,
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
244 motif_tabline_timer_cb, &timed_out);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
245 timed_out = FALSE;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
246 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
247 return;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
248 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
249
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
250 if (event->button != Button3)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
251 return;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
252
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
253 /* When ignoring events don't show the menu. */
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
254 if (hold_gui_events
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
255 # ifdef FEAT_CMDWIN
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
256 || cmdwin_type != 0
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
257 # endif
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
258 )
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
259 return;
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
260
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
261 if (event->subwindow != None)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
262 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
263 tab_w = XtWindowToWidget(XtDisplay(w), event->subwindow);
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
264 /* LINTED: avoid warning: dubious operation on enum */
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
265 if (tab_w != (Widget)0 && XmIsPushButton(tab_w))
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
266 XtVaGetValues(tab_w, XmNpageNumber, &tab_idx, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
267 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
268
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
269 XtVaSetValues(tabLine_menu, XmNuserData, tab_idx, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
270 XtVaGetValues(tabLine_menu, XmNchildren, &children, XmNnumChildren,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
271 &numChildren, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
272 XtManageChildren(children, numChildren);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
273 XmMenuPosition(tabLine_menu, (XButtonPressedEvent *)e) ;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
274 XtManageChild(tabLine_menu);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
275 }
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
276
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
277 static void
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
278 tabline_balloon_cb(beval, state)
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
279 BalloonEval *beval;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
280 int state UNUSED;
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
281 {
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
282 int nr;
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
283 tabpage_T *tp;
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
284
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
285 if (beval->target == (Widget)0)
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
286 return;
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
287
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
288 XtVaGetValues(beval->target, XmNpageNumber, &nr, NULL);
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
289 tp = find_tabpage(nr);
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
290 if (tp == NULL)
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
291 return;
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
292
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
293 get_tabline_label(tp, TRUE);
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
294 gui_mch_post_balloon(beval, NameBuff);
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
295 }
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
296
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
297 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
298
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
299 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
300 * End of call-back routines
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
301 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
302
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
303 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
304 * Implement three dimensional shading of insensitive labels.
66
99064882c85b updated for version 7.0030
vimboss
parents: 54
diff changeset
305 * By Marcin Dalecki.
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
306 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
307
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
308 #include <Xm/XmP.h>
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
309 #include <Xm/LabelP.h>
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
310
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
311 static XtExposeProc old_label_expose = NULL;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
312
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
313 static void label_expose __ARGS((Widget _w, XEvent *_event, Region _region));
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
314
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
315 static void
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
316 label_expose(_w, _event, _region)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
317 Widget _w;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
318 XEvent *_event;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
319 Region _region;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
320 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
321 GC insensitiveGC;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
322 XmLabelWidget lw = (XmLabelWidget)_w;
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
323 unsigned char label_type = (int)XmSTRING;
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
324
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
325 XtVaGetValues(_w, XmNlabelType, &label_type, (XtPointer)0);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
326
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
327 if (XtIsSensitive(_w) || label_type != (int)XmSTRING)
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
328 (*old_label_expose)(_w, _event, _region);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
329 else
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
330 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
331 XGCValues values;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
332 XtGCMask mask;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
333 XtGCMask dynamic;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
334 XFontStruct *fs;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
335
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
336 _XmFontListGetDefaultFont(lw->label.font, &fs);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
337
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
338 /* FIXME: we should be doing the whole drawing ourself here. */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
339 insensitiveGC = lw->label.insensitive_GC;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
340
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
341 mask = GCForeground | GCBackground | GCGraphicsExposures;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
342 dynamic = GCClipMask | GCClipXOrigin | GCClipYOrigin;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
343 values.graphics_exposures = False;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
344
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
345 if (fs != 0)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
346 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
347 mask |= GCFont;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
348 values.font = fs->fid;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
349 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
350
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
351 if (lw->primitive.top_shadow_pixmap != None
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
352 && lw->primitive.top_shadow_pixmap != XmUNSPECIFIED_PIXMAP)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
353 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
354 mask |= GCFillStyle | GCTile;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
355 values.fill_style = FillTiled;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
356 values.tile = lw->primitive.top_shadow_pixmap;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
357 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
358
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
359 lw->label.TextRect.x += 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
360 lw->label.TextRect.y += 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
361 if (lw->label._acc_text != 0)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
362 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
363 lw->label.acc_TextRect.x += 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
364 lw->label.acc_TextRect.y += 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
365 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
366
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
367 values.foreground = lw->primitive.top_shadow_color;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
368 values.background = lw->core.background_pixel;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
369
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
370 lw->label.insensitive_GC = XtAllocateGC((Widget)lw, 0, mask,
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
371 &values, dynamic, (XtGCMask)0);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
372 (*old_label_expose)(_w, _event, _region);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
373 XtReleaseGC(_w, lw->label.insensitive_GC);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
374
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
375 lw->label.TextRect.x -= 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
376 lw->label.TextRect.y -= 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
377 if (lw->label._acc_text != 0)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
378 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
379 lw->label.acc_TextRect.x -= 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
380 lw->label.acc_TextRect.y -= 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
381 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
382
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
383 values.foreground = lw->primitive.bottom_shadow_color;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
384 values.background = lw->core.background_pixel;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
385
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
386 lw->label.insensitive_GC = XtAllocateGC((Widget) lw, 0, mask,
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
387 &values, dynamic, (XtGCMask)0);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
388 (*old_label_expose)(_w, _event, _region);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
389 XtReleaseGC(_w, lw->label.insensitive_GC);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
390
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
391 lw->label.insensitive_GC = insensitiveGC;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
392 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
393 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
394
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
395 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
396 * Create all the motif widgets necessary.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
397 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
398 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
399 gui_x11_create_widgets()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
400 {
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
401 #ifdef FEAT_GUI_TABLINE
827
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
402 Widget button, scroller;
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
403 Arg args[10];
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
404 int n;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
405 XmString xms;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
406 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
407
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
408 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
409 * Install the 3D shade effect drawing routines.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
410 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
411 if (old_label_expose == NULL)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
412 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
413 old_label_expose = xmLabelWidgetClass->core_class.expose;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
414 xmLabelWidgetClass->core_class.expose = label_expose;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
415 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
416
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
417 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
418 * Start out by adding the configured border width into the border offset
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
419 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
420 gui.border_offset = gui.border_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
421
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
422 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
423 * Install the tearOffModel resource converter.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
424 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
425 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
426 XmRepTypeInstallTearOffModelConverter();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
427 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
428
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
429 /* Make sure the "Quit" menu entry of the window manager is ignored */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
430 XtVaSetValues(vimShell, XmNdeleteResponse, XmDO_NOTHING, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
431
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
432 vimForm = XtVaCreateManagedWidget("vimForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
433 xmFormWidgetClass, vimShell,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
434 XmNborderWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
435 XmNhighlightThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
436 XmNshadowThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
437 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
438 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
439 XmNresizePolicy, XmRESIZE_ANY,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
440 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
441 gui_motif_menu_colors(vimForm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
442
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
443 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
444 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
445 Arg al[7]; /* Make sure there is enough room for arguments! */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
446 int ac = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
447
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
448 # if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
449 XtSetArg(al[ac], XmNtearOffModel, tearoff_val); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
450 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
451 XtSetArg(al[ac], XmNleftAttachment, XmATTACH_FORM); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
452 XtSetArg(al[ac], XmNtopAttachment, XmATTACH_FORM); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
453 XtSetArg(al[ac], XmNrightAttachment, XmATTACH_FORM); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
454 # ifndef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
455 /* Always stick to right hand side. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
456 XtSetArg(al[ac], XmNrightOffset, 0); ac++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
457 # endif
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
458 XtSetArg(al[ac], XmNmarginHeight, 0); ac++;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
459 menuBar = XmCreateMenuBar(vimForm, "menuBar", al, ac);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
460 XtManageChild(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
461
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
462 /* Remember the default colors, needed for ":hi clear". */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
463 XtVaGetValues(menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
464 XmNbackground, &gui.menu_def_bg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
465 XmNforeground, &gui.menu_def_fg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
466 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
467 gui_motif_menu_colors(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
468 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
469 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
470
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
471 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
472 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
473 * Create an empty ToolBar. We should get buttons defined from menu.vim.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
474 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
475 toolBarFrame = XtVaCreateWidget("toolBarFrame",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
476 xmFrameWidgetClass, vimForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
477 XmNshadowThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
478 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
479 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
480 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
481 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
482 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
483 gui_motif_menu_colors(toolBarFrame);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
484
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
485 toolBar = XtVaCreateManagedWidget("toolBar",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
486 xmRowColumnWidgetClass, toolBarFrame,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
487 XmNchildType, XmFRAME_WORKAREA_CHILD,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
488 XmNrowColumnType, XmWORK_AREA,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
489 XmNorientation, XmHORIZONTAL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
490 XmNtraversalOn, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
491 XmNisHomogeneous, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
492 XmNpacking, XmPACK_TIGHT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
493 XmNspacing, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
494 XmNshadowThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
495 XmNhighlightThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
496 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
497 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
498 XmNadjustLast, True,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
499 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
500 gui_motif_menu_colors(toolBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
501
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
502 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
503
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
504 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
505 /* Create the Vim GUI tabline */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
506 n = 0;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
507 XtSetArg(args[n], XmNbindingType, XmNONE); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
508 XtSetArg(args[n], XmNorientation, XmVERTICAL); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
509 XtSetArg(args[n], XmNbackPageSize, XmNONE); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
510 XtSetArg(args[n], XmNbackPageNumber, 0); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
511 XtSetArg(args[n], XmNbackPagePlacement, XmTOP_RIGHT); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
512 XtSetArg(args[n], XmNmajorTabSpacing, 0); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
513 XtSetArg(args[n], XmNshadowThickness, 0); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
514 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
515 XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
516 tabLine = XmCreateNotebook(vimForm, "Vim tabline", args, n);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
517
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
518 XtAddCallback(tabLine, XmNpageChangedCallback, (XtCallbackProc)tabline_cb,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
519 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
520 XtAddEventHandler(tabLine, ButtonPressMask, False,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
521 (XtEventHandler)tabline_menu_cb, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
522
843
9f279ebda751 updated for version 7.0f01
vimboss
parents: 839
diff changeset
523 gui.tabline_height = TABLINE_HEIGHT;
9f279ebda751 updated for version 7.0f01
vimboss
parents: 839
diff changeset
524
827
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
525 /*
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
526 * Set the size of the minor next/prev scrollers to zero, so
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
527 * that they are not displayed. Due to a bug in OpenMotif 2.3,
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
528 * even if these children widget are unmanaged, they are again
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
529 * managed by the Notebook widget and the notebook widget geometry
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
530 * is adjusted to account for the minor scroller widgets.
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
531 */
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
532 scroller = XtNameToWidget(tabLine, "MinorTabScrollerNext");
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
533 XtVaSetValues(scroller, XmNwidth, 0, XmNresizable, False,
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
534 XmNtraversalOn, False, NULL);
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
535 scroller = XtNameToWidget(tabLine, "MinorTabScrollerPrevious");
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
536 XtVaSetValues(scroller, XmNwidth, 0, XmNresizable, False,
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
537 XmNtraversalOn, False, NULL);
fd1b3406fd1c updated for version 7.0d02
vimboss
parents: 824
diff changeset
538
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
539 /* Create the tabline popup menu */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
540 tabLine_menu = XmCreatePopupMenu(tabLine, "tabline popup", NULL, 0);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
541
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
542 /* Add the buttons to the menu */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
543 n = 0;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
544 XtSetArg(args[n], XmNuserData, TABLINE_MENU_CLOSE); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
545 xms = XmStringCreate((char *)"Close tab", STRING_TAG);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
546 XtSetArg(args[n], XmNlabelString, xms); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
547 button = XmCreatePushButton(tabLine_menu, "Close", args, n);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
548 XtAddCallback(button, XmNactivateCallback,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
549 (XtCallbackProc)tabline_button_cb, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
550 XmStringFree(xms);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
551
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
552 n = 0;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
553 XtSetArg(args[n], XmNuserData, TABLINE_MENU_NEW); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
554 xms = XmStringCreate((char *)"New Tab", STRING_TAG);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
555 XtSetArg(args[n], XmNlabelString, xms); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
556 button = XmCreatePushButton(tabLine_menu, "New Tab", args, n);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
557 XtAddCallback(button, XmNactivateCallback,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
558 (XtCallbackProc)tabline_button_cb, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
559 XmStringFree(xms);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
560
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
561 n = 0;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
562 XtSetArg(args[n], XmNuserData, TABLINE_MENU_OPEN); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
563 xms = XmStringCreate((char *)"Open tab...", STRING_TAG);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
564 XtSetArg(args[n], XmNlabelString, xms); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
565 button = XmCreatePushButton(tabLine_menu, "Open tab...", args, n);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
566 XtAddCallback(button, XmNactivateCallback,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
567 (XtCallbackProc)tabline_button_cb, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
568 XmStringFree(xms);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
569 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
570
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
571 textAreaForm = XtVaCreateManagedWidget("textAreaForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
572 xmFormWidgetClass, vimForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
573 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
574 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
575 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
576 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
577 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
578 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
579 XmNresizePolicy, XmRESIZE_ANY,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
580 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
581 gui_motif_scroll_colors(textAreaForm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
582
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
583 textArea = XtVaCreateManagedWidget("textArea",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
584 xmDrawingAreaWidgetClass, textAreaForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
585 XmNforeground, gui.norm_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
586 XmNbackground, gui.back_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
587 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
588 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
589 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
590 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
591
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
592 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
593 * These take some control away from the user, but avoids making them
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
594 * add resources to get a decent looking setup.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
595 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
596 XmNborderWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
597 XmNhighlightThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
598 XmNshadowThickness, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
599 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
600
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
601 #ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
602 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
603 * Create the Footer.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
604 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
605 footer = XtVaCreateWidget("footer",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
606 xmLabelGadgetClass, vimForm,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
607 XmNalignment, XmALIGNMENT_BEGINNING,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
608 XmNmarginHeight, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
609 XmNmarginWidth, 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
610 XmNtraversalOn, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
611 XmNrecomputeSize, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
612 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
613 XmNleftOffset, 5,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
614 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
615 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
616 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
617 gui_mch_set_footer((char_u *) "");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
618 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
619
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
620 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
621 * Install the callbacks.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
622 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
623 gui_x11_callbacks(textArea, vimForm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
624
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
625 /* Pretend we don't have input focus, we will get an event if we do. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
626 gui.in_focus = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
627 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
628
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
629 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
630 * Called when the GUI is not going to start after all.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
631 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
632 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
633 gui_x11_destroy_widgets()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
634 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
635 textArea = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
636 #ifdef FEAT_MENU
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
637 menuBar = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
638 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
639 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
640
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
641 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
642 gui_mch_set_text_area_pos(x, y, w, h)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
643 int x UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
644 int y UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
645 int w UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
646 int h UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
647 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
648 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
649 /* Give keyboard focus to the textArea instead of the toolbar. */
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
650 reset_focus();
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
651 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
652 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
653
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
654 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
655 gui_x11_set_back_color()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
656 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
657 if (textArea != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
658 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
659 XmChangeColor(textArea, gui.back_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
660 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
661 XtVaSetValues(textArea,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
662 XmNbackground, gui.back_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
663 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
664 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
665 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
666
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
667 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
668 * Manage dialog centered on pointer. This could be used by the Athena code as
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
669 * well.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
670 */
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
671 void
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
672 manage_centered(dialog_child)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
673 Widget dialog_child;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
674 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
675 Widget shell = XtParent(dialog_child);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
676 Window root, child;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
677 unsigned int mask;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
678 unsigned int width, height, border_width, depth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
679 int x, y, win_x, win_y, maxX, maxY;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
680 Boolean mappedWhenManaged;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
681
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
682 /* Temporarily set value of XmNmappedWhenManaged
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
683 to stop the dialog from popping up right away */
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
684 XtVaGetValues(shell, XmNmappedWhenManaged, &mappedWhenManaged, NULL);
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
685 XtVaSetValues(shell, XmNmappedWhenManaged, False, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
686
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
687 XtManageChild(dialog_child);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
688
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
689 /* Get the pointer position (x, y) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
690 XQueryPointer(XtDisplay(shell), XtWindow(shell), &root, &child,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
691 &x, &y, &win_x, &win_y, &mask);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
692
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
693 /* Translate the pointer position (x, y) into a position for the new
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
694 window that will place the pointer at its center */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
695 XGetGeometry(XtDisplay(shell), XtWindow(shell), &root, &win_x, &win_y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
696 &width, &height, &border_width, &depth);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
697 width += 2 * border_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
698 height += 2 * border_width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
699 x -= width / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
700 y -= height / 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
701
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
702 /* Ensure that the dialog remains on screen */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
703 maxX = XtScreen(shell)->width - width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
704 maxY = XtScreen(shell)->height - height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
705 if (x < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
706 x = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
707 if (x > maxX)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
708 x = maxX;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
709 if (y < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
710 y = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
711 if (y > maxY)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
712 y = maxY;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
713
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
714 /* Set desired window position in the DialogShell */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
715 XtVaSetValues(shell, XmNx, x, XmNy, y, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
716
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
717 /* Map the widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
718 XtMapWidget(shell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
719
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
720 /* Restore the value of XmNmappedWhenManaged */
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
721 XtVaSetValues(shell, XmNmappedWhenManaged, mappedWhenManaged, NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
722 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
723
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
724 #if defined(FEAT_MENU) || defined(FEAT_SUN_WORKSHOP) \
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
725 || defined(FEAT_GUI_DIALOG) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
726
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
727 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
728 * Encapsulate the way an XmFontList is created.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
729 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
730 XmFontList
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
731 gui_motif_create_fontlist(font)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
732 XFontStruct *font;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
733 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
734 XmFontList font_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
735
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
736 # if (XmVersion <= 1001)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
737 /* Motif 1.1 method */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
738 font_list = XmFontListCreate(font, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
739 # else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
740 /* Motif 1.2 method */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
741 XmFontListEntry font_list_entry;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
742
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
743 font_list_entry = XmFontListEntryCreate(STRING_TAG, XmFONT_IS_FONT,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
744 (XtPointer)font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
745 font_list = XmFontListAppendEntry(NULL, font_list_entry);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
746 XmFontListEntryFree(&font_list_entry);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
747 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
748 return font_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
749 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
750
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
751 # if ((XmVersion > 1001) && defined(FEAT_XFONTSET)) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
752 XmFontList
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
753 gui_motif_fontset2fontlist(fontset)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
754 XFontSet *fontset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
755 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
756 XmFontList font_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
757
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
758 /* Motif 1.2 method */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
759 XmFontListEntry font_list_entry;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
760
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
761 font_list_entry = XmFontListEntryCreate(STRING_TAG,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
762 XmFONT_IS_FONTSET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
763 (XtPointer)*fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
764 font_list = XmFontListAppendEntry(NULL, font_list_entry);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
765 XmFontListEntryFree(&font_list_entry);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
766 return font_list;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
767 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
768 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
769
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
770 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
771
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
772 #if defined(FEAT_MENU) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
773 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
774 * Menu stuff.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
775 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
776
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
777 static void gui_motif_add_actext __ARGS((vimmenu_T *menu));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
778 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
779 static void toggle_tearoff __ARGS((Widget wid));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
780 static void gui_mch_recurse_tearoffs __ARGS((vimmenu_T *menu));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
781 #endif
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
782 static void submenu_change __ARGS((vimmenu_T *mp, int colors));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
783
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
784 static void do_set_mnemonics __ARGS((int enable));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
785 static int menu_enabled = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
786
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
787 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
788 gui_mch_enable_menu(flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
789 int flag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
790 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
791 if (flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
792 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
793 XtManageChild(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
794 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
795 if (XtIsManaged(XtParent(toolBar)))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
796 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
797 /* toolBar is attached to top form */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
798 XtVaSetValues(XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
799 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
800 XmNtopWidget, menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
801 NULL);
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
802 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
803 if (showing_tabline)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
804 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
805 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
806 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
807 XmNtopWidget, XtParent(toolBar),
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
808 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
809 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
810 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
811 XmNtopWidget, tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
812 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
813 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
814 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
815 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
816 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
817 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
818 XmNtopWidget, XtParent(toolBar),
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
819 NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
820 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
821 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
822 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
823 {
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
824 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
825 if (showing_tabline)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
826 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
827 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
828 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
829 XmNtopWidget, menuBar,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
830 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
831 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
832 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
833 XmNtopWidget, tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
834 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
835 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
836 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
837 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
838 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
839 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
840 XmNtopWidget, menuBar,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
841 NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
842 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
843 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
844 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
845 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
846 XtUnmanageChild(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
847 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
848 if (XtIsManaged(XtParent(toolBar)))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
849 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
850 XtVaSetValues(XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
851 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
852 NULL);
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
853 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
854 if (showing_tabline)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
855 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
856 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
857 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
858 XmNtopWidget, XtParent(toolBar),
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
859 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
860 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
861 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
862 XmNtopWidget, tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
863 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
864 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
865 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
866 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
867 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
868 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
869 XmNtopWidget, XtParent(toolBar),
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
870 NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
871 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
872 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
873 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
874 {
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
875 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
876 if (showing_tabline)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
877 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
878 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
879 XmNtopAttachment, XmATTACH_FORM,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
880 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
881 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
882 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
883 XmNtopWidget, tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
884 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
885 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
886 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
887 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
888 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
889 XmNtopAttachment, XmATTACH_FORM,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
890 NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
891 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
892 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
893
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
894 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
895
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
896 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
897 * Enable or disable mnemonics for the toplevel menus.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
898 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
899 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
900 gui_motif_set_mnemonics(enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
901 int enable;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
902 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
903 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
904 * Don't enable menu mnemonics when the menu bar is disabled, LessTif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
905 * crashes when using a mnemonic then.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
906 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
907 if (!menu_enabled)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
908 enable = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
909 do_set_mnemonics(enable);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
910 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
911
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
912 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
913 do_set_mnemonics(enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
914 int enable;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
915 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
916 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
917
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
918 for (menu = root_menu; menu != NULL; menu = menu->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
919 if (menu->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
920 XtVaSetValues(menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
921 XmNmnemonic, enable ? menu->mnemonic : NUL,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
922 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
923 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
924
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
925 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
926 gui_mch_add_menu(menu, idx)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
927 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
928 int idx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
929 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
930 XmString label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
931 Widget shell;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
932 vimmenu_T *parent = menu->parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
933
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
934 #ifdef MOTIF_POPUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
935 if (menu_is_popup(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
936 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
937 Arg arg[2];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
938 int n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
939
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
940 /* Only create the popup menu when it's actually used, otherwise there
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
941 * is a delay when using the right mouse button. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
942 # if (XmVersion <= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
943 if (mouse_model_popup())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
944 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
945 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
946 if (gui.menu_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
947 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
948 XtSetArg(arg[0], XmNbackground, gui.menu_bg_pixel); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
949 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
950 if (gui.menu_fg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
951 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
952 XtSetArg(arg[1], XmNforeground, gui.menu_fg_pixel); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
953 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
954 menu->submenu_id = XmCreatePopupMenu(textArea, "contextMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
955 arg, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
956 menu->id = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
957 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
958 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
959 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
960 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
961
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
962 if (!menu_is_menubar(menu->name)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
963 || (parent != NULL && parent->submenu_id == (Widget)0))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
964 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
965
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
966 label = XmStringCreate((char *)menu->dname, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
967 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
968 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
969 menu->id = XtVaCreateWidget("subMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
970 xmCascadeButtonWidgetClass,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
971 (parent == NULL) ? menuBar : parent->submenu_id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
972 XmNlabelString, label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
973 XmNmnemonic, p_wak[0] == 'n' ? NUL : menu->mnemonic,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
974 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
975 /* submenu: count the tearoff item (needed for LessTif) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
976 XmNpositionIndex, idx + (parent != NULL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
977 && tearoff_val == (int)XmTEAR_OFF_ENABLED ? 1 : 0),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
978 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
979 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
980 gui_motif_menu_colors(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
981 gui_motif_menu_fontlist(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
982 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
983
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
984 if (menu->id == (Widget)0) /* failed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
985 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
986
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
987 /* add accelerator text */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
988 gui_motif_add_actext(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
989
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
990 shell = XtVaCreateWidget("subMenuShell",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
991 xmMenuShellWidgetClass, menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
992 XmNwidth, 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
993 XmNheight, 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
994 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
995 gui_motif_menu_colors(shell);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
996 menu->submenu_id = XtVaCreateWidget("rowColumnMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
997 xmRowColumnWidgetClass, shell,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
998 XmNrowColumnType, XmMENU_PULLDOWN,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
999 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1000 gui_motif_menu_colors(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1001
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1002 if (menu->submenu_id == (Widget)0) /* failed */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1003 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1004
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1005 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1006 /* Set the colors for the tear off widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1007 toggle_tearoff(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1008 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1009
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1010 XtVaSetValues(menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1011 XmNsubMenuId, menu->submenu_id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1012 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1013
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1014 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1015 * The "Help" menu is a special case, and should be placed at the far
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1016 * right hand side of the menu-bar. It's recognized by its high priority.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1017 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1018 if (parent == NULL && menu->priority >= 9999)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1019 XtVaSetValues(menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1020 XmNmenuHelpWidget, menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1021 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1022
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1023 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1024 * When we add a top-level item to the menu bar, we can figure out how
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1025 * high the menu bar should be.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1026 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1027 if (parent == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1028 gui_mch_compute_menu_height(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1029 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1030
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1031
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1032 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1033 * Add mnemonic and accelerator text to a menu button.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1034 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1035 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1036 gui_motif_add_actext(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1037 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1038 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1039 XmString label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1040
1207
beed57a8fcd1 updated for version 7.1b
vimboss
parents: 856
diff changeset
1041 /* Add accelerator text, if there is one */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1042 if (menu->actext != NULL && menu->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1043 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1044 label = XmStringCreate((char *)menu->actext, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1045 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1046 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1047 XtVaSetValues(menu->id, XmNacceleratorText, label, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1048 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1049 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1050 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1051
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1052 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1053 gui_mch_toggle_tearoffs(enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1054 int enable;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1055 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1056 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1057 if (enable)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1058 tearoff_val = (int)XmTEAR_OFF_ENABLED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1059 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1060 tearoff_val = (int)XmTEAR_OFF_DISABLED;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1061 toggle_tearoff(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1062 gui_mch_recurse_tearoffs(root_menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1063 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1064 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1065
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1066 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1067 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1068 * Set the tearoff for one menu widget on or off, and set the color of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1069 * tearoff widget.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1070 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1071 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1072 toggle_tearoff(wid)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1073 Widget wid;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1074 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1075 Widget w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1076
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1077 XtVaSetValues(wid, XmNtearOffModel, tearoff_val, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1078 if (tearoff_val == (int)XmTEAR_OFF_ENABLED
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1079 && (w = XmGetTearOffControl(wid)) != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1080 gui_motif_menu_colors(w);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1081 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1082
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1083 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1084 gui_mch_recurse_tearoffs(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1085 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1086 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1087 while (menu != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1088 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1089 if (!menu_is_popup(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1090 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1091 if (menu->submenu_id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1092 toggle_tearoff(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1093 gui_mch_recurse_tearoffs(menu->children);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1094 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1095 menu = menu->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1096 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1097 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1098 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1099
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1100 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1101 gui_mch_text_area_extra_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1102 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1103 Dimension shadowHeight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1104
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1105 XtVaGetValues(textAreaForm, XmNshadowThickness, &shadowHeight, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1106 return shadowHeight;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1107 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1108
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1109 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1110 * Compute the height of the menu bar.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1111 * We need to check all the items for their position and height, for the case
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1112 * there are several rows, and/or some characters extend higher or lower.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1113 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1114 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1115 gui_mch_compute_menu_height(id)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1116 Widget id; /* can be NULL when deleting menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1117 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1118 Dimension y, maxy;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1119 Dimension margin, shadow;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1120 vimmenu_T *mp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1121 static Dimension height = 21; /* normal height of a menu item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1122
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1123 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1124 * Get the height of the new item, before managing it, because it will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1125 * still reflect the font size. After managing it depends on the menu
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1126 * height, which is what we just wanted to get!.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1127 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1128 if (id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1129 XtVaGetValues(id, XmNheight, &height, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1130
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1131 /* Find any menu Widget, to be able to call XtManageChild() */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1132 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1133 for (mp = root_menu; mp != NULL; mp = mp->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1134 if (mp->id != (Widget)0 && menu_is_menubar(mp->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1135 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1136 id = mp->id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1137 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1138 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1139
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1140 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1141 * Now manage the menu item, to make them all be positioned (makes an
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1142 * extra row when needed, removes it when not needed).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1143 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1144 if (id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1145 XtManageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1146
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1147 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1148 * Now find the menu item that is the furthest down, and get it's position.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1149 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1150 maxy = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1151 for (mp = root_menu; mp != NULL; mp = mp->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1152 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1153 if (mp->id != (Widget)0 && menu_is_menubar(mp->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1154 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1155 XtVaGetValues(mp->id, XmNy, &y, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1156 if (y > maxy)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1157 maxy = y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1158 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1159 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1160
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1161 XtVaGetValues(menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1162 XmNmarginHeight, &margin,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1163 XmNshadowThickness, &shadow,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1164 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1165
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1166 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1167 * This computation is the result of trial-and-error:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1168 * maxy = The maximum position of an item; required for when there are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1169 * two or more rows
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1170 * height = height of an item, before managing it; Hopefully this will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1171 * change with the font height. Includes shadow-border.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1172 * shadow = shadow-border; must be subtracted from the height.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1173 * margin = margin around the menu buttons; Must be added.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1174 * Add 4 for the underlining of shortcut keys.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1175 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1176 gui.menu_height = maxy + height - 2 * shadow + 2 * margin + 4;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1177
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1178 /* Somehow the menu bar doesn't resize automatically. Set it here,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1179 * even though this is a catch 22. Don't do this when starting up,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1180 * somehow the menu gets very high then. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1181 if (gui.shell_created)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1182 XtVaSetValues(menuBar, XmNheight, gui.menu_height, NULL);
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1183 }
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1184
147
2f5a3b881ada updated for version 7.0046
vimboss
parents: 66
diff changeset
1185 #ifdef FEAT_TOOLBAR
2f5a3b881ada updated for version 7.0046
vimboss
parents: 66
diff changeset
1186
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1187 /*
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1188 * Icons used by the toolbar code.
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1189 */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1190 #include "gui_x11_pm.h"
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1191
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1192 static int check_xpm __ARGS((char_u *path));
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1193 static char **get_toolbar_pixmap __ARGS((vimmenu_T *menu, char **fname));
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1194 static int add_pixmap_args __ARGS((vimmenu_T *menu, Arg *args, int n));
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1195
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1196 /*
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1197 * Read an Xpm file. Return OK or FAIL.
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1198 */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1199 static int
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1200 check_xpm(path)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1201 char_u *path;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1202 {
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1203 XpmAttributes attrs;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1204 int status;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1205 Pixmap mask;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1206 Pixmap map;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1207
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1208 attrs.valuemask = 0;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1209
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1210 /* Create the "sensitive" pixmap */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1211 status = XpmReadFileToPixmap(gui.dpy,
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1212 RootWindow(gui.dpy, DefaultScreen(gui.dpy)),
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1213 (char *)path, &map, &mask, &attrs);
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1214 XpmFreeAttributes(&attrs);
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1215
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1216 if (status == XpmSuccess)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1217 return OK;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1218 return FAIL;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1219 }
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1220
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1221
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1222 /*
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1223 * Allocated a pixmap for toolbar menu "menu".
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1224 * When it's to be read from a file, "fname" is set to the file name
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1225 * (in allocated memory).
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1226 * Return a blank pixmap if it fails.
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1227 */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1228 static char **
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1229 get_toolbar_pixmap(menu, fname)
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1230 vimmenu_T *menu;
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1231 char **fname;
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1232 {
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1233 char_u buf[MAXPATHL]; /* buffer storing expanded pathname */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1234 char **xpm = NULL; /* xpm array */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1235 int res;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1236
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1237 *fname = NULL;
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1238 buf[0] = NUL; /* start with NULL path */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1239
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1240 if (menu->iconfile != NULL)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1241 {
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1242 /* Use the "icon=" argument. */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1243 gui_find_iconfile(menu->iconfile, buf, "xpm");
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1244 res = check_xpm(buf);
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1245
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1246 /* If it failed, try using the menu name. */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1247 if (res == FAIL && gui_find_bitmap(menu->name, buf, "xpm") == OK)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1248 res = check_xpm(buf);
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1249 if (res == OK)
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1250 {
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1251 *fname = (char *)vim_strsave(buf);
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1252 return tb_blank_xpm;
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1253 }
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1254 }
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1255
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1256 if (menu->icon_builtin || gui_find_bitmap(menu->name, buf, "xpm") == FAIL)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1257 {
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1258 if (menu->iconidx >= 0 && menu->iconidx
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
1259 < (int)(sizeof(built_in_pixmaps) / sizeof(built_in_pixmaps[0])))
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1260 xpm = built_in_pixmaps[menu->iconidx];
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1261 else
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1262 xpm = tb_blank_xpm;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1263 }
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1264
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1265 return xpm;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1266 }
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1267
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1268 /*
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1269 * Add arguments for the toolbar pixmap to a menu item.
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1270 */
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1271 static int
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1272 add_pixmap_args(menu, args, n)
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1273 vimmenu_T *menu;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1274 Arg *args;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1275 int n;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1276 {
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1277 vim_free(menu->xpm_fname);
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1278 menu->xpm = get_toolbar_pixmap(menu, &menu->xpm_fname);
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1279 if (menu->xpm == NULL)
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1280 {
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1281 XtSetArg(args[n], XmNlabelType, XmSTRING); n++;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1282 }
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1283 else
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1284 {
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1285 if (menu->xpm_fname != NULL)
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1286 {
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1287 XtSetArg(args[n], XmNpixmapFile, menu->xpm_fname); n++;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1288 }
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1289 XtSetArg(args[n], XmNpixmapData, menu->xpm); n++;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1290 XtSetArg(args[n], XmNlabelLocation, XmBOTTOM); n++;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1291 }
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1292 return n;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1293 }
147
2f5a3b881ada updated for version 7.0046
vimboss
parents: 66
diff changeset
1294 #endif /* FEAT_TOOLBAR */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1295
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1296 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1297 gui_mch_add_menu_item(menu, idx)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1298 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1299 int idx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1300 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1301 XmString label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1302 vimmenu_T *parent = menu->parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1303
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1304 # ifdef EBCDIC
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1305 menu->mnemonic = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1306 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1307
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1308 # if (XmVersion <= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1309 /* Don't add Popup menu items when the popup menu isn't used. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1310 if (menu_is_child_of_popup(menu) && !mouse_model_popup())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1311 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1312 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1313
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1314 # ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1315 if (menu_is_toolbar(parent->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1316 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1317 WidgetClass type;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1318 XmString xms = NULL; /* fallback label if pixmap not found */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1319 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1320 Arg args[18];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1321
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1322 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1323 if (menu_is_separator(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1324 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1325 char *cp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1326 Dimension wid;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1327
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1328 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1329 * A separator has the format "-sep%d[:%d]-". The optional :%d is
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1330 * a width specifier. If no width is specified then we choose one.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1331 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1332 cp = (char *)vim_strchr(menu->name, ':');
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1333 if (cp != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1334 wid = (Dimension)atoi(++cp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1335 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1336 wid = 4;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1337
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1338 #if 0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1339 /* We better use a FormWidget here, since it's far more
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1340 * flexible in terms of size. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1341 type = xmFormWidgetClass;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1342 XtSetArg(args[n], XmNwidth, wid); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1343 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1344 type = xmSeparatorWidgetClass;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1345 XtSetArg(args[n], XmNwidth, wid); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1346 XtSetArg(args[n], XmNminWidth, wid); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1347 XtSetArg(args[n], XmNorientation, XmVERTICAL); n++;
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1348 XtSetArg(args[n], XmNseparatorType, XmSHADOW_ETCHED_IN); n++;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1349 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1350 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1351 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1352 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1353 /* Without shadows one can't sense whatever the button has been
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1354 * pressed or not! However we wan't to save a bit of space...
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1355 * Need the highlightThickness to see the focus.
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1356 */
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1357 XtSetArg(args[n], XmNhighlightThickness, 1); n++;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1358 XtSetArg(args[n], XmNhighlightOnEnter, True); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1359 XtSetArg(args[n], XmNmarginWidth, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1360 XtSetArg(args[n], XmNmarginHeight, 0); n++;
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
1361 XtSetArg(args[n], XmNtraversalOn, False); n++;
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1362 /* Set the label here, so that we can switch between icons/text
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1363 * by changing the XmNlabelType resource. */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1364 xms = XmStringCreate((char *)menu->dname, STRING_TAG);
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1365 XtSetArg(args[n], XmNlabelString, xms); n++;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1366
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1367 n = add_pixmap_args(menu, args, n);
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1368
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1369 type = xmEnhancedButtonWidgetClass;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1370 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1371
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1372 XtSetArg(args[n], XmNpositionIndex, idx); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1373 if (menu->id == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1374 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1375 menu->id = XtCreateManagedWidget((char *)menu->dname,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1376 type, toolBar, args, n);
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1377 if (menu->id != NULL && type == xmEnhancedButtonWidgetClass)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1378 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1379 XtAddCallback(menu->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1380 XmNactivateCallback, gui_x11_menu_cb, menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1381 # ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1382 XtAddEventHandler(menu->id, EnterWindowMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1383 toolbarbutton_enter_cb, menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1384 XtAddEventHandler(menu->id, LeaveWindowMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1385 toolbarbutton_leave_cb, menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1386 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1387 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1388 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1389 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1390 XtSetValues(menu->id, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1391 if (xms != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1392 XmStringFree(xms);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1393
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
1394 # ifdef FEAT_BEVAL
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1395 gui_mch_menu_set_tip(menu);
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
1396 # endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1397
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1398 menu->parent = parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1399 menu->submenu_id = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1400 /* When adding first item to toolbar it might have to be enabled .*/
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1401 if (!XtIsManaged(XtParent(toolBar))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1402 && vim_strchr(p_go, GO_TOOLBAR) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1403 gui_mch_show_toolbar(TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1404 gui.toolbar_height = gui_mch_compute_toolbar_height();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1405 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1406 } /* toolbar menu item */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1407 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1408
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1409 /* No parent, must be a non-menubar menu */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1410 if (parent->submenu_id == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1411 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1412
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1413 menu->submenu_id = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1414
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1415 /* Add menu separator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1416 if (menu_is_separator(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1417 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1418 menu->id = XtVaCreateWidget("subMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1419 xmSeparatorGadgetClass, parent->submenu_id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1420 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1421 /* count the tearoff item (needed for LessTif) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1422 XmNpositionIndex, idx + (tearoff_val == (int)XmTEAR_OFF_ENABLED
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1423 ? 1 : 0),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1424 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1425 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1426 gui_motif_menu_colors(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1427 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1428 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1429
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1430 label = XmStringCreate((char *)menu->dname, STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1431 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1432 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1433 menu->id = XtVaCreateWidget("subMenu",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1434 xmPushButtonWidgetClass, parent->submenu_id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1435 XmNlabelString, label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1436 XmNmnemonic, menu->mnemonic,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1437 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1438 /* count the tearoff item (needed for LessTif) */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1439 XmNpositionIndex, idx + (tearoff_val == (int)XmTEAR_OFF_ENABLED
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1440 ? 1 : 0),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1441 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1442 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1443 gui_motif_menu_colors(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1444 gui_motif_menu_fontlist(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1445 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1446
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1447 if (menu->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1448 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1449 XtAddCallback(menu->id, XmNactivateCallback, gui_x11_menu_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1450 (XtPointer)menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1451 /* add accelerator text */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1452 gui_motif_add_actext(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1453 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1454 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1455
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1456 #if (XmVersion <= 1002) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1457 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1458 * This function will destroy/create the popup menus dynamically,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1459 * according to the value of 'mousemodel'.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1460 * This will fix the "right mouse button freeze" that occurs when
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1461 * there exists a popup menu but it isn't managed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1462 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1463 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1464 gui_motif_update_mousemodel(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1465 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1466 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1467 int idx = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1468
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1469 /* When GUI hasn't started the menus have not been created. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1470 if (!gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1471 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1472
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1473 while (menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1474 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1475 if (menu->children != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1476 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1477 if (menu_is_popup(menu->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1478 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1479 if (mouse_model_popup())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1480 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1481 /* Popup menu will be used. Create the popup menus. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1482 gui_mch_add_menu(menu, idx);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1483 gui_motif_update_mousemodel(menu->children);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1484 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1485 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1486 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1487 /* Popup menu will not be used. Destroy the popup menus. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1488 gui_motif_update_mousemodel(menu->children);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1489 gui_mch_destroy_menu(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1490 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1491 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1492 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1493 else if (menu_is_child_of_popup(menu))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1494 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1495 if (mouse_model_popup())
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1496 gui_mch_add_menu_item(menu, idx);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1497 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1498 gui_mch_destroy_menu(menu);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1499 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1500 menu = menu->next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1501 ++idx;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1502 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1503 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1504 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1505
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1506 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1507 gui_mch_new_menu_colors()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1508 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1509 if (menuBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1510 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1511 gui_motif_menu_colors(menuBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1512 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1513 gui_motif_menu_colors(toolBarFrame);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1514 gui_motif_menu_colors(toolBar);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1515 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1516
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
1517 submenu_change(root_menu, TRUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1518 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1519
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1520 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1521 gui_mch_new_menu_font()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1522 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1523 if (menuBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1524 return;
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
1525 submenu_change(root_menu, FALSE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1526 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1527 Dimension height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1528 Position w, h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1529
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1530 XtVaGetValues(menuBar, XmNheight, &height, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1531 gui.menu_height = height;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1532
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1533 XtVaGetValues(vimShell, XtNwidth, &w, XtNheight, &h, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1534 gui_resize_shell(w, h
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1535 #ifdef FEAT_XIM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1536 - xim_get_status_area_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1537 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1538 );
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1539 }
811
d2c169a725c8 updated for version 7.0c01
vimboss
parents: 418
diff changeset
1540 gui_set_shellsize(FALSE, TRUE, RESIZE_VERT);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1541 ui_new_shellsize();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1542 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1543
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1544 #if defined(FEAT_BEVAL) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1545 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1546 gui_mch_new_tooltip_font()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1547 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1548 # ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1549 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1550
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1551 if (toolBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1552 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1553
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1554 menu = gui_find_menu((char_u *)"ToolBar");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1555 if (menu != NULL)
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
1556 submenu_change(menu, FALSE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1557 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1558 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1559
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1560 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1561 gui_mch_new_tooltip_colors()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1562 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1563 # ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1564 vimmenu_T *toolbar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1565
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1566 if (toolBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1567 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1568
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1569 toolbar = gui_find_menu((char_u *)"ToolBar");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1570 if (toolbar != NULL)
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
1571 submenu_change(toolbar, TRUE);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1572 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1573 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1574 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1575
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1576 static void
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
1577 submenu_change(menu, colors)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1578 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1579 int colors; /* TRUE for colors, FALSE for font */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1580 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1581 vimmenu_T *mp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1582
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1583 for (mp = menu; mp != NULL; mp = mp->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1584 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1585 if (mp->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1586 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1587 if (colors)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1588 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1589 gui_motif_menu_colors(mp->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1590 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1591 /* For a toolbar item: Free the pixmap and allocate a new one,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1592 * so that the background color is right. */
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1593 if (mp->xpm != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1594 {
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1595 int n = 0;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1596 Arg args[18];
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1597
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
1598 n = add_pixmap_args(mp, args, n);
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
1599 XtSetValues(mp->id, args, n);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1600 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1601 # ifdef FEAT_BEVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1602 /* If we have a tooltip, then we need to change it's font */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1603 if (mp->tip != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1604 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1605 Arg args[2];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1606
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1607 args[0].name = XmNbackground;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1608 args[0].value = gui.tooltip_bg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1609 args[1].name = XmNforeground;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1610 args[1].value = gui.tooltip_fg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1611 XtSetValues(mp->tip->balloonLabel, &args[0], XtNumber(args));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1612 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1613 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1614 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1615 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1616 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1617 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1618 gui_motif_menu_fontlist(mp->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1619 #ifdef FEAT_BEVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1620 /* If we have a tooltip, then we need to change it's font */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1621 if (mp->tip != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1622 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1623 Arg args[1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1624
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1625 args[0].name = XmNfontList;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1626 args[0].value = (XtArgVal)gui_motif_fontset2fontlist(
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1627 &gui.tooltip_fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1628 XtSetValues(mp->tip->balloonLabel, &args[0], XtNumber(args));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1629 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1630 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1631 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1632 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1633
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1634 if (mp->children != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1635 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1636 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1637 /* Set the colors/font for the tear off widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1638 if (mp->submenu_id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1639 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1640 if (colors)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1641 gui_motif_menu_colors(mp->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1642 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1643 gui_motif_menu_fontlist(mp->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1644 toggle_tearoff(mp->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1645 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1646 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1647 /* Set the colors for the children */
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
1648 submenu_change(mp->children, colors);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1649 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1650 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1651 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1652
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1653 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1654 * Destroy the machine specific menu widget.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1655 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1656 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1657 gui_mch_destroy_menu(menu)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1658 vimmenu_T *menu;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1659 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1660 /* Please be sure to destroy the parent widget first (i.e. menu->id).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1661 * On the other hand, problems have been reported that the submenu must be
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1662 * deleted first...
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1663 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1664 * This code should be basically identical to that in the file gui_athena.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1665 * because they are both Xt based.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1666 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1667 if (menu->submenu_id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1668 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1669 XtDestroyWidget(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1670 menu->submenu_id = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1671 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1672
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1673 if (menu->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1674 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1675 Widget parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1676
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1677 parent = XtParent(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1678 #if defined(FEAT_TOOLBAR) && defined(FEAT_BEVAL)
216
da182deebec7 updated for version 7.0061
vimboss
parents: 161
diff changeset
1679 if (parent == toolBar && menu->tip != NULL)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1680 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1681 /* We try to destroy this before the actual menu, because there are
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1682 * callbacks, etc. that will be unregistered during the tooltip
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1683 * destruction.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1684 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1685 * If you call "gui_mch_destroy_beval_area()" after destroying
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1686 * menu->id, then the tooltip's window will have already been
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1687 * deallocated by Xt, and unknown behaviour will ensue (probably
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1688 * a core dump).
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1689 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1690 gui_mch_destroy_beval_area(menu->tip);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1691 menu->tip = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1692 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1693 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1694 XtDestroyWidget(menu->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1695 menu->id = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1696 if (parent == menuBar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1697 gui_mch_compute_menu_height((Widget)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1698 #ifdef FEAT_TOOLBAR
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1699 else if (parent == toolBar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1700 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1701 Cardinal num_children;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1702
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1703 /* When removing last toolbar item, don't display the toolbar. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1704 XtVaGetValues(toolBar, XmNnumChildren, &num_children, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1705 if (num_children == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1706 gui_mch_show_toolbar(FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1707 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1708 gui.toolbar_height = gui_mch_compute_toolbar_height();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1709 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1710 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1711 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1712 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1713
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1714 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1715 gui_mch_show_popupmenu(menu)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
1716 vimmenu_T *menu UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1717 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1718 #ifdef MOTIF_POPUP
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1719 XmMenuPosition(menu->submenu_id, gui_x11_get_last_mouse_event());
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1720 XtManageChild(menu->submenu_id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1721 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1722 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1723
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1724 #endif /* FEAT_MENU */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1725
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1726 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1727 * Set the menu and scrollbar colors to their default values.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1728 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1729 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1730 gui_mch_def_colors()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1731 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1732 if (gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1733 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1734 /* Use the values saved when starting up. These should come from the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1735 * window manager or a resources file. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1736 gui.menu_fg_pixel = gui.menu_def_fg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1737 gui.menu_bg_pixel = gui.menu_def_bg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1738 gui.scroll_fg_pixel = gui.scroll_def_fg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1739 gui.scroll_bg_pixel = gui.scroll_def_bg_pixel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1740 #ifdef FEAT_BEVAL
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1741 gui.tooltip_fg_pixel =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1742 gui_get_color((char_u *)gui.rsrc_tooltip_fg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1743 gui.tooltip_bg_pixel =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1744 gui_get_color((char_u *)gui.rsrc_tooltip_bg_name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1745 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1746 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1747 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1748
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1749
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1750 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1751 * Scrollbar stuff.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1752 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1753
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1754 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1755 gui_mch_set_scrollbar_thumb(sb, val, size, max)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1756 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1757 long val;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1758 long size;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1759 long max;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1760 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1761 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1762 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1763 XmNvalue, val,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1764 XmNsliderSize, size,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1765 XmNpageIncrement, (size > 2 ? size - 2 : 1),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1766 XmNmaximum, max + 1, /* Motif has max one past the end */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1767 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1768 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1769
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1770 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1771 gui_mch_set_scrollbar_pos(sb, x, y, w, h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1772 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1773 int x;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1774 int y;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1775 int w;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1776 int h;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1777 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1778 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1779 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1780 if (sb->type == SBAR_LEFT || sb->type == SBAR_RIGHT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1781 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1782 if (y == 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1783 h -= gui.border_offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1784 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1785 y -= gui.border_offset;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1786 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1787 XmNtopOffset, y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1788 XmNbottomOffset, -y - h,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1789 XmNwidth, w,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1790 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1791 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1792 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1793 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1794 XmNtopOffset, y,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1795 XmNleftOffset, x,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1796 XmNrightOffset, gui.which_scrollbars[SBAR_RIGHT]
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1797 ? gui.scrollbar_width : 0,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1798 XmNheight, h,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1799 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1800 XtManageChild(sb->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1801 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1802 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1803
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1804 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1805 gui_mch_enable_scrollbar(sb, flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1806 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1807 int flag;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1808 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1809 Arg args[16];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1810 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1811
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1812 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1813 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1814 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1815 if (flag)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1816 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1817 switch (sb->type)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1818 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1819 case SBAR_LEFT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1820 XtSetArg(args[n], XmNleftOffset, gui.scrollbar_width); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1821 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1822
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1823 case SBAR_RIGHT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1824 XtSetArg(args[n], XmNrightOffset, gui.scrollbar_width); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1825 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1826
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1827 case SBAR_BOTTOM:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1828 XtSetArg(args[n], XmNbottomOffset, gui.scrollbar_height);n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1829 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1830 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1831 XtSetValues(textArea, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1832 XtManageChild(sb->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1833 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1834 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1835 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1836 if (!gui.which_scrollbars[sb->type])
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1837 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1838 /* The scrollbars of this type are all disabled, adjust the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1839 * textArea attachment offset. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1840 switch (sb->type)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1841 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1842 case SBAR_LEFT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1843 XtSetArg(args[n], XmNleftOffset, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1844 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1845
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1846 case SBAR_RIGHT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1847 XtSetArg(args[n], XmNrightOffset, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1848 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1849
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1850 case SBAR_BOTTOM:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1851 XtSetArg(args[n], XmNbottomOffset, 0);n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1852 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1853 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1854 XtSetValues(textArea, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1855 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1856 XtUnmanageChild(sb->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1857 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1858 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1859 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1860
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1861 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1862 gui_mch_create_scrollbar(sb, orient)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1863 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1864 int orient; /* SBAR_VERT or SBAR_HORIZ */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1865 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1866 Arg args[16];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1867 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1868
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1869 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1870 XtSetArg(args[n], XmNminimum, 0); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1871 XtSetArg(args[n], XmNorientation,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1872 (orient == SBAR_VERT) ? XmVERTICAL : XmHORIZONTAL); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1873
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1874 switch (sb->type)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1875 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1876 case SBAR_LEFT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1877 XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1878 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1879 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1880 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1881
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1882 case SBAR_RIGHT:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1883 XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1884 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1885 XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1886 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1887
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1888 case SBAR_BOTTOM:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1889 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1890 XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1891 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1892 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1893 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1894
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1895 sb->id = XtCreateWidget("scrollBar",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1896 xmScrollBarWidgetClass, textAreaForm, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1897
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1898 /* Remember the default colors, needed for ":hi clear". */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1899 if (gui.scroll_def_bg_pixel == (guicolor_T)0
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1900 && gui.scroll_def_fg_pixel == (guicolor_T)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1901 XtVaGetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1902 XmNbackground, &gui.scroll_def_bg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1903 XmNforeground, &gui.scroll_def_fg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1904 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1905
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1906 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1907 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1908 gui_mch_set_scrollbar_colors(sb);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1909 XtAddCallback(sb->id, XmNvalueChangedCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1910 scroll_cb, (XtPointer)sb->ident);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1911 XtAddCallback(sb->id, XmNdragCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1912 scroll_cb, (XtPointer)sb->ident);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1913 XtAddEventHandler(sb->id, KeyPressMask, FALSE, gui_x11_key_hit_cb,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1914 (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1915 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1916 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1917
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1918 #if defined(FEAT_WINDOWS) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1919 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1920 gui_mch_destroy_scrollbar(sb)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1921 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1922 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1923 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1924 XtDestroyWidget(sb->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1925 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1926 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1927
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1928 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1929 gui_mch_set_scrollbar_colors(sb)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1930 scrollbar_T *sb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1931 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1932 if (sb->id != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1933 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1934 if (gui.scroll_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1935 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1936 #if (XmVersion>=1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1937 XmChangeColor(sb->id, gui.scroll_bg_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1938 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1939 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1940 XmNtroughColor, gui.scroll_bg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1941 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1942 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1943 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1944
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1945 if (gui.scroll_fg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1946 XtVaSetValues(sb->id,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1947 XmNforeground, gui.scroll_fg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1948 #if (XmVersion<1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1949 XmNbackground, gui.scroll_fg_pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1950 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1951 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1952 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1953
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1954 /* This is needed for the rectangle below the vertical scrollbars. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1955 if (sb == &gui.bottom_sbar && textAreaForm != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1956 gui_motif_scroll_colors(textAreaForm);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1957 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1958
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1959 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1960 * Miscellaneous stuff:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1961 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1962
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1963 Window
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1964 gui_x11_get_wid()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1965 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1966 return(XtWindow(textArea));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1967 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1968
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1969 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1970 * Look for a widget in the widget tree w, with a mnemonic matching keycode.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1971 * When one is found, simulate a button press on that widget and give it the
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1972 * keyboard focus. If the mnemonic is on a label, look in the userData field
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1973 * of the label to see if it points to another widget, and give that the focus.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1974 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1975 static void
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1976 do_mnemonic(Widget w, unsigned int keycode)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1977 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1978 WidgetList children;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1979 int numChildren, i;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1980 Boolean isMenu;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1981 KeySym mnemonic = '\0';
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1982 char mneString[2];
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1983 Widget userData;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1984 unsigned char rowColType;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1985
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1986 if (XtIsComposite(w))
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1987 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1988 if (XtClass(w) == xmRowColumnWidgetClass)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1989 {
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
1990 XtVaGetValues(w, XmNrowColumnType, &rowColType, NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1991 isMenu = (rowColType != (unsigned char)XmWORK_AREA);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1992 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1993 else
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1994 isMenu = False;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1995 if (!isMenu)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1996 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1997 XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
1998 &numChildren, NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
1999 for (i = 0; i < numChildren; i++)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2000 do_mnemonic(children[i], keycode);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2001 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2002 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2003 else
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2004 {
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
2005 XtVaGetValues(w, XmNmnemonic, &mnemonic, NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2006 if (mnemonic != '\0')
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2007 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2008 mneString[0] = mnemonic;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2009 mneString[1] = '\0';
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2010 if (XKeysymToKeycode(XtDisplay(XtParent(w)),
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2011 XStringToKeysym(mneString)) == keycode)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2012 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2013 if (XtClass(w) == xmLabelWidgetClass
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2014 || XtClass(w) == xmLabelGadgetClass)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2015 {
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
2016 XtVaGetValues(w, XmNuserData, &userData, NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2017 if (userData != NULL && XtIsWidget(userData))
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2018 XmProcessTraversal(userData, XmTRAVERSE_CURRENT);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2019 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2020 else
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2021 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2022 XKeyPressedEvent keyEvent;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2023
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2024 XmProcessTraversal(w, XmTRAVERSE_CURRENT);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2025
2215
cccb71c2c5c1 Fix uninit memory read in undo code. Fix uint32_t in proto file.
Bram Moolenaar <bram@vim.org>
parents: 2137
diff changeset
2026 vim_memset((char *) &keyEvent, 0, sizeof(XKeyPressedEvent));
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2027 keyEvent.type = KeyPress;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2028 keyEvent.serial = 1;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2029 keyEvent.send_event = True;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2030 keyEvent.display = XtDisplay(w);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2031 keyEvent.window = XtWindow(w);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2032 XtCallActionProc(w, "Activate", (XEvent *) & keyEvent,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2033 NULL, 0);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2034 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2035 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2036 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2037 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2038 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2039
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2040 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2041 * Callback routine for dialog mnemonic processing.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2042 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2043 static void
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2044 mnemonic_event(Widget w, XtPointer call_data UNUSED, XKeyEvent *event)
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2045 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2046 do_mnemonic(w, event->keycode);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2047 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2048
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2049
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2050 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2051 * Search the widget tree under w for widgets with mnemonics. When found, add
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2052 * a passive grab to the dialog widget for the mnemonic character, thus
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2053 * directing mnemonic events to the dialog widget.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2054 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2055 static void
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2056 add_mnemonic_grabs(Widget dialog, Widget w)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2057 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2058 char mneString[2];
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2059 WidgetList children;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2060 int numChildren, i;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2061 Boolean isMenu;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2062 KeySym mnemonic = '\0';
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2063 unsigned char rowColType;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2064
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2065 if (XtIsComposite(w))
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2066 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2067 if (XtClass(w) == xmRowColumnWidgetClass)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2068 {
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
2069 XtVaGetValues(w, XmNrowColumnType, &rowColType, NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2070 isMenu = (rowColType != (unsigned char)XmWORK_AREA);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2071 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2072 else
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2073 isMenu = False;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2074 if (!isMenu)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2075 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2076 XtVaGetValues(w, XmNchildren, &children, XmNnumChildren,
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
2077 &numChildren, NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2078 for (i = 0; i < numChildren; i++)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2079 add_mnemonic_grabs(dialog, children[i]);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2080 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2081 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2082 else
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2083 {
1604
3acbcd0d3fd3 updated for version 7.1-317
vimboss
parents: 1522
diff changeset
2084 XtVaGetValues(w, XmNmnemonic, &mnemonic, NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2085 if (mnemonic != '\0')
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2086 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2087 mneString[0] = mnemonic;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2088 mneString[1] = '\0';
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2089 XtGrabKey(dialog, XKeysymToKeycode(XtDisplay(dialog),
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2090 XStringToKeysym(mneString)),
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2091 Mod1Mask, True, GrabModeAsync, GrabModeAsync);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2092 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2093 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2094 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2095
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2096 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2097 * Add a handler for mnemonics in a dialog. Motif itself only handles
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2098 * mnemonics in menus. Mnemonics added or changed after this call will be
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2099 * ignored.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2100 *
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2101 * To add a mnemonic to a text field or list, set the XmNmnemonic resource on
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2102 * the appropriate label and set the XmNuserData resource of the label to the
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2103 * widget to get the focus when the mnemonic is typed.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2104 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2105 static void
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2106 activate_dialog_mnemonics(Widget dialog)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2107 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2108 if (!dialog)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2109 return;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2110
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2111 XtAddEventHandler(dialog, KeyPressMask, False,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2112 (XtEventHandler) mnemonic_event, (XtPointer) NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2113 add_mnemonic_grabs(dialog, dialog);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2114 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2115
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2116 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2117 * Removes the event handler and key-grabs for dialog mnemonic handling.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2118 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2119 static void
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2120 suppress_dialog_mnemonics(Widget dialog)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2121 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2122 if (!dialog)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2123 return;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2124
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2125 XtUngrabKey(dialog, AnyKey, Mod1Mask);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2126 XtRemoveEventHandler(dialog, KeyPressMask, False,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2127 (XtEventHandler) mnemonic_event, (XtPointer) NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2128 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2129
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2130 #if defined(FEAT_BROWSE) || defined(FEAT_GUI_DIALOG)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2131 static void set_fontlist __ARGS((Widget wg));
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2132
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2133 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2134 * Use the 'guifont' or 'guifontset' as a fontlist for a dialog widget.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2135 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2136 static void
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2137 set_fontlist(id)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2138 Widget id;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2139 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2140 XmFontList fl;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2141
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2142 #ifdef FONTSET_ALWAYS
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
2143 if (gui.fontset != NOFONTSET)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
2144 {
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2145 fl = gui_motif_fontset2fontlist((XFontSet *)&gui.fontset);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2146 if (fl != NULL)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2147 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2148 if (XtIsManaged(id))
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2149 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2150 XtUnmanageChild(id);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2151 XtVaSetValues(id, XmNfontList, fl, NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2152 /* We should force the widget to recalculate it's
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2153 * geometry now. */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2154 XtManageChild(id);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2155 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2156 else
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2157 XtVaSetValues(id, XmNfontList, fl, NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2158 XmFontListFree(fl);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2159 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2160 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2161 #else
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
2162 if (gui.norm_font != NOFONT)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
2163 {
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2164 fl = gui_motif_create_fontlist((XFontStruct *)gui.norm_font);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2165 if (fl != NULL)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2166 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2167 if (XtIsManaged(id))
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2168 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2169 XtUnmanageChild(id);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2170 XtVaSetValues(id, XmNfontList, fl, NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2171 /* We should force the widget to recalculate it's
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2172 * geometry now. */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2173 XtManageChild(id);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2174 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2175 else
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2176 XtVaSetValues(id, XmNfontList, fl, NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2177 XmFontListFree(fl);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2178 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2179 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2180 #endif
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2181 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2182 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2183
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2184 #if defined(FEAT_BROWSE) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2185
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2186 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2187 * file selector related stuff
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2188 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2189
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2190 #include <Xm/FileSB.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2191 #include <Xm/XmStrDefs.h>
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2192
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2193 typedef struct dialog_callback_arg
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2194 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2195 char * args; /* not used right now */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2196 int id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2197 } dcbarg_T;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2198
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2199 static Widget dialog_wgt;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2200 static char *browse_fname = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2201 static XmStringCharSet charset = (XmStringCharSet) XmSTRING_DEFAULT_CHARSET;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2202 /* used to set up XmStrings */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2203
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2204 static void DialogCancelCB __ARGS((Widget, XtPointer, XtPointer));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2205 static void DialogAcceptCB __ARGS((Widget, XtPointer, XtPointer));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2206
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2207 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2208 * This function is used to translate the predefined label text of the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2209 * precomposed dialogs. We do this explicitly to allow:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2210 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2211 * - usage of gettext for translation, as in all the other places.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2212 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2213 * - equalize the messages between different GUI implementations as far as
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2214 * possible.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2215 */
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2216 static void set_predefined_label __ARGS((Widget parent, String name, char *new_label));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2217
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2218 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2219 set_predefined_label(parent, name, new_label)
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2220 Widget parent;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2221 String name;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2222 char *new_label;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2223 {
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2224 XmString str;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2225 Widget w;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2226 char_u *p, *next;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2227 KeySym mnemonic = NUL;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2228
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2229 w = XtNameToWidget(parent, name);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2230
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2231 if (!w)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2232 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2233
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2234 p = vim_strsave((char_u *)new_label);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2235 if (p == NULL)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2236 return;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2237 for (next = p; *next; ++next)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2238 {
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2239 if (*next == DLG_HOTKEY_CHAR)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2240 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2241 int len = STRLEN(next);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2242
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2243 if (len > 0)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2244 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2245 mch_memmove(next, next + 1, len);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2246 mnemonic = next[0];
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2247 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2248 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2249 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2250
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2251 str = XmStringCreate((char *)p, STRING_TAG);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2252 vim_free(p);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2253
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2254 if (str != NULL)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2255 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2256 XtVaSetValues(w,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2257 XmNlabelString, str,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2258 XmNmnemonic, mnemonic,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2259 NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2260 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2261 }
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2262 gui_motif_menu_fontlist(w);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2263 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2264
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2265 static void
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2266 set_predefined_fontlist(parent, name)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2267 Widget parent;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2268 String name;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2269 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2270 Widget w;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2271 w = XtNameToWidget(parent, name);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2272
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2273 if (!w)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2274 return;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2275
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2276 set_fontlist(w);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2277 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2278
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2279 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2280 * Put up a file requester.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2281 * Returns the selected name in allocated memory, or NULL for Cancel.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2282 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2283 char_u *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2284 gui_mch_browse(saving, title, dflt, ext, initdir, filter)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2285 int saving UNUSED; /* select file to write */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2286 char_u *title; /* title for the window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2287 char_u *dflt; /* default name */
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2288 char_u *ext UNUSED; /* not used (extension added) */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2289 char_u *initdir; /* initial directory, NULL for current dir */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2290 char_u *filter; /* file name filter */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2291 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2292 char_u dirbuf[MAXPATHL];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2293 char_u dfltbuf[MAXPATHL];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2294 char_u *pattern;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2295 char_u *tofree = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2296
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2297 /* There a difference between the resource name and value, Therefore, we
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2298 * avoid to (ab-)use the (maybe internationalized!) dialog title as a
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2299 * dialog name.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2300 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2301
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2302 dialog_wgt = XmCreateFileSelectionDialog(vimShell, "browseDialog", NULL, 0);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2303
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2304 if (initdir == NULL || *initdir == NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2305 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2306 mch_dirname(dirbuf, MAXPATHL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2307 initdir = dirbuf;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2308 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2309
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2310 if (dflt == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2311 dflt = (char_u *)"";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2312 else if (STRLEN(initdir) + STRLEN(dflt) + 2 < MAXPATHL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2313 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2314 /* The default selection should be the full path, "dflt" is only the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2315 * file name. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2316 STRCPY(dfltbuf, initdir);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2317 add_pathsep(dfltbuf);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2318 STRCAT(dfltbuf, dflt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2319 dflt = dfltbuf;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2320 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2321
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2322 /* Can only use one pattern for a file name. Get the first pattern out of
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2323 * the filter. An empty pattern means everything matches. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2324 if (filter == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2325 pattern = (char_u *)"";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2326 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2327 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2328 char_u *s, *p;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2329
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2330 s = filter;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2331 for (p = filter; *p != NUL; ++p)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2332 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2333 if (*p == '\t') /* end of description, start of pattern */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2334 s = p + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2335 if (*p == ';' || *p == '\n') /* end of (first) pattern */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2336 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2337 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2338 pattern = vim_strnsave(s, p - s);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2339 tofree = pattern;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2340 if (pattern == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2341 pattern = (char_u *)"";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2342 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2343
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2344 XtVaSetValues(dialog_wgt,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2345 XtVaTypedArg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2346 XmNdirectory, XmRString, (char *)initdir, STRLEN(initdir) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2347 XtVaTypedArg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2348 XmNdirSpec, XmRString, (char *)dflt, STRLEN(dflt) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2349 XtVaTypedArg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2350 XmNpattern, XmRString, (char *)pattern, STRLEN(pattern) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2351 XtVaTypedArg,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2352 XmNdialogTitle, XmRString, (char *)title, STRLEN(title) + 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2353 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2354
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2355 set_predefined_label(dialog_wgt, "Apply", _("&Filter"));
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2356 set_predefined_label(dialog_wgt, "Cancel", _("&Cancel"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2357 set_predefined_label(dialog_wgt, "Dir", _("Directories"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2358 set_predefined_label(dialog_wgt, "FilterLabel", _("Filter"));
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2359 set_predefined_label(dialog_wgt, "Help", _("&Help"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2360 set_predefined_label(dialog_wgt, "Items", _("Files"));
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2361 set_predefined_label(dialog_wgt, "OK", _("&OK"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2362 set_predefined_label(dialog_wgt, "Selection", _("Selection"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2363
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2364 /* This is to save us from silly external settings using not fixed with
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2365 * fonts for file selection.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2366 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2367 set_predefined_fontlist(dialog_wgt, "DirListSW.DirList");
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2368 set_predefined_fontlist(dialog_wgt, "ItemsListSW.ItemsList");
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2369
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2370 gui_motif_menu_colors(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2371 if (gui.scroll_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2372 XtVaSetValues(dialog_wgt, XmNtroughColor, gui.scroll_bg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2373
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2374 XtAddCallback(dialog_wgt, XmNokCallback, DialogAcceptCB, (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2375 XtAddCallback(dialog_wgt, XmNcancelCallback, DialogCancelCB, (XtPointer)0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2376 /* We have no help in this window, so hide help button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2377 XtUnmanageChild(XmFileSelectionBoxGetChild(dialog_wgt,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2378 (unsigned char)XmDIALOG_HELP_BUTTON));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2379
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2380 manage_centered(dialog_wgt);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2381 activate_dialog_mnemonics(dialog_wgt);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2382
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2383 /* sit in a loop until the dialog box has gone away */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2384 do
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2385 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2386 XtAppProcessEvent(XtWidgetToApplicationContext(dialog_wgt),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2387 (XtInputMask)XtIMAll);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2388 } while (XtIsManaged(dialog_wgt));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2389
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2390 suppress_dialog_mnemonics(dialog_wgt);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2391 XtDestroyWidget(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2392 vim_free(tofree);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2393
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2394 if (browse_fname == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2395 return NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2396 return vim_strsave((char_u *)browse_fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2397 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2398
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2399 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2400 * The code below was originally taken from
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2401 * /usr/examples/motif/xmsamplers/xmeditor.c
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2402 * on Digital Unix 4.0d, but heavily modified.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2403 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2404
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2405 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2406 * Process callback from Dialog cancel actions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2407 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2408 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2409 DialogCancelCB(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2410 Widget w UNUSED; /* widget id */
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2411 XtPointer client_data UNUSED; /* data from application */
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2412 XtPointer call_data UNUSED; /* data from widget class */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2413 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2414 if (browse_fname != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2415 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2416 XtFree(browse_fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2417 browse_fname = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2418 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2419 XtUnmanageChild(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2420 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2421
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2422 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2423 * Process callback from Dialog actions.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2424 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2425 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2426 DialogAcceptCB(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2427 Widget w UNUSED; /* widget id */
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2428 XtPointer client_data UNUSED; /* data from application */
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2429 XtPointer call_data; /* data from widget class */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2430 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2431 XmFileSelectionBoxCallbackStruct *fcb;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2432
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2433 if (browse_fname != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2434 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2435 XtFree(browse_fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2436 browse_fname = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2437 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2438 fcb = (XmFileSelectionBoxCallbackStruct *)call_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2439
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2440 /* get the filename from the file selection box */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2441 XmStringGetLtoR(fcb->value, charset, &browse_fname);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2442
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2443 /* popdown the file selection box */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2444 XtUnmanageChild(dialog_wgt);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2445 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2446
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2447 #endif /* FEAT_BROWSE */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2448
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2449 #if defined(FEAT_GUI_DIALOG) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2450
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2451 static int dialogStatus;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2452
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2453 static void keyhit_callback __ARGS((Widget w, XtPointer client_data, XEvent *event, Boolean *cont));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2454 static void butproc __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2455
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2456 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2457 * Callback function for the textfield. When CR is hit this works like
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2458 * hitting the "OK" button, ESC like "Cancel".
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2459 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2460 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2461 keyhit_callback(w, client_data, event, cont)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2462 Widget w;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2463 XtPointer client_data UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2464 XEvent *event;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2465 Boolean *cont UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2466 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2467 char buf[2];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2468 KeySym key_sym;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2469
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2470 if (XLookupString(&(event->xkey), buf, 2, &key_sym, NULL) == 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2471 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2472 if (*buf == CAR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2473 dialogStatus = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2474 else if (*buf == ESC)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2475 dialogStatus = 2;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2476 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2477 if ((key_sym == XK_Left || key_sym == XK_Right)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2478 && !(event->xkey.state & ShiftMask))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2479 XmTextFieldClearSelection(w, XtLastTimestampProcessed(gui.dpy));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2480 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2481
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2482 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2483 butproc(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2484 Widget w UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2485 XtPointer client_data;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2486 XtPointer call_data UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2487 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2488 dialogStatus = (int)(long)client_data + 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2489 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2490
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2491 #ifdef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2492
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2493 static Widget create_pixmap_label(Widget parent, String name, char **data, ArgList args, Cardinal arg);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2494
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2495 static Widget
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2496 create_pixmap_label(parent, name, data, args, arg)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2497 Widget parent;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2498 String name;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2499 char **data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2500 ArgList args;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2501 Cardinal arg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2502 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2503 Widget label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2504 Display *dsp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2505 Screen *scr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2506 int depth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2507 Pixmap pixmap = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2508 XpmAttributes attr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2509 Boolean rs;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2510 XpmColorSymbol color[5] =
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2511 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2512 {"none", NULL, 0},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2513 {"iconColor1", NULL, 0},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2514 {"bottomShadowColor", NULL, 0},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2515 {"topShadowColor", NULL, 0},
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2516 {"selectColor", NULL, 0}
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2517 };
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2518
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2519 label = XmCreateLabelGadget(parent, name, args, arg);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2520
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2521 /*
1207
beed57a8fcd1 updated for version 7.1b
vimboss
parents: 856
diff changeset
2522 * We need to be careful here, since in case of gadgets, there is
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2523 * no way to get the background color directly from the widget itself.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2524 * In such cases we get it from The Core part of his parent instead.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2525 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2526 dsp = XtDisplayOfObject(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2527 scr = XtScreenOfObject(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2528 XtVaGetValues(XtIsSubclass(label, coreWidgetClass)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2529 ? label : XtParent(label),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2530 XmNdepth, &depth,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2531 XmNbackground, &color[0].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2532 XmNforeground, &color[1].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2533 XmNbottomShadowColor, &color[2].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2534 XmNtopShadowColor, &color[3].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2535 XmNhighlight, &color[4].pixel,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2536 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2537
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2538 attr.valuemask = XpmColorSymbols | XpmCloseness | XpmDepth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2539 attr.colorsymbols = color;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2540 attr.numsymbols = 5;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2541 attr.closeness = 65535;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2542 attr.depth = depth;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2543 XpmCreatePixmapFromData(dsp, RootWindowOfScreen(scr),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2544 data, &pixmap, NULL, &attr);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2545
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2546 XtVaGetValues(label, XmNrecomputeSize, &rs, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2547 XtVaSetValues(label, XmNrecomputeSize, True, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2548 XtVaSetValues(label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2549 XmNlabelType, XmPIXMAP,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2550 XmNlabelPixmap, pixmap,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2551 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2552 XtVaSetValues(label, XmNrecomputeSize, rs, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2553
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2554 return label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2555 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2556 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2557
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2558 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2559 gui_mch_dialog(type, title, message, button_names, dfltbutton, textfield)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
2560 int type UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2561 char_u *title;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2562 char_u *message;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2563 char_u *button_names;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2564 int dfltbutton;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2565 char_u *textfield; /* buffer of size IOSIZE */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2566 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2567 char_u *buts;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2568 char_u *p, *next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2569 XtAppContext app;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2570 XmString label;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2571 int butcount;
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2572 Widget w;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2573 Widget dialogform = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2574 Widget form = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2575 Widget dialogtextfield = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2576 Widget *buttons;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2577 Widget sep_form = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2578 Boolean vertical;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2579 Widget separator = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2580 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2581 Arg args[6];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2582 #ifdef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2583 char **icon_data = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2584 Widget dialogpixmap = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2585 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2586
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2587 if (title == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2588 title = (char_u *)_("Vim dialog");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2589
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2590 /* if our pointer is currently hidden, then we should show it. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2591 gui_mch_mousehide(FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2592
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2593 dialogform = XmCreateFormDialog(vimShell, (char *)"dialog", NULL, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2594
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2595 /* Check 'v' flag in 'guioptions': vertical button placement. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2596 vertical = (vim_strchr(p_go, GO_VERTICAL) != NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2597
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2598 /* Set the title of the Dialog window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2599 label = XmStringCreateSimple((char *)title);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2600 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2601 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2602 XtVaSetValues(dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2603 XmNdialogTitle, label,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2604 XmNhorizontalSpacing, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2605 XmNverticalSpacing, vertical ? 0 : 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2606 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2607 XmStringFree(label);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2608
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2609 /* make a copy, so that we can insert NULs */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2610 buts = vim_strsave(button_names);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2611 if (buts == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2612 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2613
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2614 /* Count the number of buttons and allocate buttons[]. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2615 butcount = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2616 for (p = buts; *p; ++p)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2617 if (*p == DLG_BUTTON_SEP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2618 ++butcount;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2619 buttons = (Widget *)alloc((unsigned)(butcount * sizeof(Widget)));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2620 if (buttons == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2621 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2622 vim_free(buts);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2623 return -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2624 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2625
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2626 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2627 * Create the buttons.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2628 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2629 sep_form = (Widget) 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2630 p = buts;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2631 for (butcount = 0; *p; ++butcount)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2632 {
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2633 KeySym mnemonic = NUL;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2634
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2635 for (next = p; *next; ++next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2636 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2637 if (*next == DLG_HOTKEY_CHAR)
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2638 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2639 int len = STRLEN(next);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2640
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2641 if (len > 0)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2642 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2643 mch_memmove(next, next + 1, len);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2644 mnemonic = next[0];
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2645 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2646 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2647 if (*next == DLG_BUTTON_SEP)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2648 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2649 *next++ = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2650 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2651 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2652 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2653 label = XmStringCreate(_((char *)p), STRING_TAG);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2654 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2655 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2656
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2657 buttons[butcount] = XtVaCreateManagedWidget("button",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2658 xmPushButtonWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2659 XmNlabelString, label,
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2660 XmNmnemonic, mnemonic,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2661 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2662 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2663 XmNshowAsDefault, butcount == dfltbutton - 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2664 XmNdefaultButtonShadowThickness, 1,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2665 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2666 XmStringFree(label);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2667 gui_motif_menu_fontlist(buttons[butcount]);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2668
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2669 /* Layout properly. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2670
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2671 if (butcount > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2672 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2673 if (vertical)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2674 XtVaSetValues(buttons[butcount],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2675 XmNtopWidget, buttons[butcount - 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2676 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2677 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2678 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2679 if (*next == NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2680 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2681 XtVaSetValues(buttons[butcount],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2682 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2683 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2684 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2685
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2686 /* fill in a form as invisible separator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2687 sep_form = XtVaCreateWidget("separatorForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2688 xmFormWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2689 XmNleftAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2690 XmNleftWidget, buttons[butcount - 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2691 XmNrightAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2692 XmNrightWidget, buttons[butcount],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2693 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2694 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2695 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2696 XtManageChild(sep_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2697 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2698 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2699 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2700 XtVaSetValues(buttons[butcount],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2701 XmNleftAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2702 XmNleftWidget, buttons[butcount - 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2703 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2704 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2705 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2706 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2707 else if (!vertical)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2708 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2709 if (*next == NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2710 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2711 XtVaSetValues(buttons[0],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2712 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2713 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2714 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2715
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2716 /* fill in a form as invisible separator */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2717 sep_form = XtVaCreateWidget("separatorForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2718 xmFormWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2719 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2720 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2721 XmNrightAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2722 XmNrightWidget, buttons[0],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2723 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2724 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2725 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2726 XtManageChild(sep_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2727 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2728 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2729 XtVaSetValues(buttons[0],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2730 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2731 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2732 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2733 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2734
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2735 XtAddCallback(buttons[butcount], XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2736 (XtCallbackProc)butproc, (XtPointer)(long)butcount);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2737 p = next;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2738 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2739 vim_free(buts);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2740
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2741 separator = (Widget) 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2742 if (butcount > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2743 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2744 /* Create the separator for beauty. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2745 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2746 XtSetArg(args[n], XmNorientation, XmHORIZONTAL); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2747 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_WIDGET); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2748 XtSetArg(args[n], XmNbottomWidget, buttons[0]); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2749 XtSetArg(args[n], XmNbottomOffset, 4); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2750 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2751 XtSetArg(args[n], XmNrightAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2752 separator = XmCreateSeparatorGadget(dialogform, "separator", args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2753 XtManageChild(separator);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2754 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2755
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2756 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2757 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2758 dialogtextfield = XtVaCreateWidget("textField",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2759 xmTextFieldWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2760 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2761 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2762 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2763 if (butcount > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2764 XtVaSetValues(dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2765 XmNbottomAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2766 XmNbottomWidget, separator,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2767 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2768 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2769 XtVaSetValues(dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2770 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2771 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2772
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2773 set_fontlist(dialogtextfield);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2774 XmTextFieldSetString(dialogtextfield, (char *)textfield);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2775 XtManageChild(dialogtextfield);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2776 XtAddEventHandler(dialogtextfield, KeyPressMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2777 (XtEventHandler)keyhit_callback, (XtPointer)NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2778 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2779
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2780 /* Form holding both message and pixmap labels */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2781 form = XtVaCreateWidget("separatorForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2782 xmFormWidgetClass, dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2783 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2784 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2785 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2786 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2787 XtManageChild(form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2788
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2789 #ifdef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2790 /* Add a pixmap, left of the message. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2791 switch (type)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2792 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2793 case VIM_GENERIC:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2794 icon_data = generic_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2795 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2796 case VIM_ERROR:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2797 icon_data = error_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2798 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2799 case VIM_WARNING:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2800 icon_data = alert_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2801 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2802 case VIM_INFO:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2803 icon_data = info_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2804 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2805 case VIM_QUESTION:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2806 icon_data = quest_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2807 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2808 default:
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2809 icon_data = generic_xpm;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2810 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2811
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2812 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2813 XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2814 XtSetArg(args[n], XmNtopOffset, 8); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2815 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2816 XtSetArg(args[n], XmNbottomOffset, 8); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2817 XtSetArg(args[n], XmNleftAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2818 XtSetArg(args[n], XmNleftOffset, 8); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2819
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2820 dialogpixmap = create_pixmap_label(form, "dialogPixmap",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2821 icon_data, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2822 XtManageChild(dialogpixmap);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2823 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2824
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2825 /* Create the dialog message.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2826 * Since LessTif is apparently having problems with the creation of
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2827 * properly localized string, we use LtoR here. The symptom is that the
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2828 * string sill not show properly in multiple lines as it does in native
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2829 * Motif.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2830 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2831 label = XmStringCreateLtoR((char *)message, STRING_TAG);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2832 if (label == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2833 return -1;
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2834 w = XtVaCreateManagedWidget("dialogMessage",
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2835 xmLabelGadgetClass, form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2836 XmNlabelString, label,
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2837 XmNalignment, XmALIGNMENT_BEGINNING,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2838 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2839 XmNtopOffset, 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2840 #ifdef HAVE_XPM
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2841 XmNleftAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2842 XmNleftWidget, dialogpixmap,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2843 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2844 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2845 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2846 XmNleftOffset, 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2847 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2848 XmNrightOffset, 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2849 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2850 XmNbottomOffset, 8,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2851 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2852 XmStringFree(label);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2853 set_fontlist(w);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2854
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2855 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2856 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2857 XtVaSetValues(form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2858 XmNbottomAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2859 XmNbottomWidget, dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2860 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2861 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2862 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2863 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2864 if (butcount > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2865 XtVaSetValues(form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2866 XmNbottomAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2867 XmNbottomWidget, separator,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2868 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2869 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2870 XtVaSetValues(form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2871 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2872 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2873 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2874
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2875 if (dfltbutton < 1)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2876 dfltbutton = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2877 if (dfltbutton > butcount)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2878 dfltbutton = butcount;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2879 XtVaSetValues(dialogform,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2880 XmNdefaultButton, buttons[dfltbutton - 1], NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2881 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2882 XtVaSetValues(dialogform, XmNinitialFocus, dialogtextfield, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2883 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2884 XtVaSetValues(dialogform, XmNinitialFocus, buttons[dfltbutton - 1],
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2885 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2886
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2887 manage_centered(dialogform);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2888 activate_dialog_mnemonics(dialogform);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2889
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2890 if (textfield != NULL && *textfield != NUL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2891 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2892 /* This only works after the textfield has been realised. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2893 XmTextFieldSetSelection(dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2894 (XmTextPosition)0, (XmTextPosition)STRLEN(textfield),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2895 XtLastTimestampProcessed(gui.dpy));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2896 XmTextFieldSetCursorPosition(dialogtextfield,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2897 (XmTextPosition)STRLEN(textfield));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2898 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2899
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2900 app = XtWidgetToApplicationContext(dialogform);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2901
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2902 /* Loop until a button is pressed or the dialog is killed somehow. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2903 dialogStatus = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2904 for (;;)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2905 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2906 XtAppProcessEvent(app, (XtInputMask)XtIMAll);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2907 if (dialogStatus >= 0 || !XtIsManaged(dialogform))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2908 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2909 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2910
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2911 vim_free(buttons);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2912
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2913 if (textfield != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2914 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2915 p = (char_u *)XmTextGetString(dialogtextfield);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2916 if (p == NULL || dialogStatus < 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2917 *textfield = NUL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2918 else
418
84825cc6f049 updated for version 7.0109
vimboss
parents: 216
diff changeset
2919 vim_strncpy(textfield, p, IOSIZE - 1);
2137
dabcabce3f9d updated for version 7.2.419
Bram Moolenaar <bram@zimbu.org>
parents: 1887
diff changeset
2920 XtFree((char *)p);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2921 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2922
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2923 suppress_dialog_mnemonics(dialogform);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2924 XtDestroyWidget(dialogform);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2925
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2926 return dialogStatus;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2927 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2928 #endif /* FEAT_GUI_DIALOG */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2929
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2930 #if defined(FEAT_FOOTER) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2931
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2932 static int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2933 gui_mch_compute_footer_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2934 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2935 Dimension height; /* total Toolbar height */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2936 Dimension top; /* XmNmarginTop */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2937 Dimension bottom; /* XmNmarginBottom */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2938 Dimension shadow; /* XmNshadowThickness */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2939
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2940 XtVaGetValues(footer,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2941 XmNheight, &height,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2942 XmNmarginTop, &top,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2943 XmNmarginBottom, &bottom,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2944 XmNshadowThickness, &shadow,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2945 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2946
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2947 return (int) height + top + bottom + (shadow << 1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2948 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2949
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2950 #if 0 /* not used */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2951 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2952 gui_mch_set_footer_pos(h)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2953 int h; /* textArea height */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2954 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2955 XtVaSetValues(footer,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2956 XmNtopOffset, h + 7,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2957 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2958 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2959 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2960
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2961 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2962 gui_mch_enable_footer(showit)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2963 int showit;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2964 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2965 if (showit)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2966 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2967 gui.footer_height = gui_mch_compute_footer_height();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2968 XtManageChild(footer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2969 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2970 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2971 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2972 gui.footer_height = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2973 XtUnmanageChild(footer);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2974 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2975 XtVaSetValues(textAreaForm, XmNbottomOffset, gui.footer_height, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2976 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2977
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2978 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2979 gui_mch_set_footer(s)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2980 char_u *s;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2981 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2982 XmString xms;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2983
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2984 xms = XmStringCreate((char *)s, STRING_TAG);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2985 if (xms != NULL)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2986 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2987 XtVaSetValues(footer, XmNlabelString, xms, NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2988 XmStringFree(xms);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
2989 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2990 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2991
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2992 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2993
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2994
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2995 #if defined(FEAT_TOOLBAR) || defined(PROTO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2996 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2997 gui_mch_show_toolbar(int showit)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2998 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
2999 Cardinal numChildren; /* how many children toolBar has */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3000
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3001 if (toolBar == (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3002 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3003 XtVaGetValues(toolBar, XmNnumChildren, &numChildren, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3004 if (showit && numChildren > 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3005 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3006 /* Assume that we want to show the toolbar if p_toolbar contains
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3007 * valid option settings, therefore p_toolbar must not be NULL.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3008 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3009 WidgetList children;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3010
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3011 XtVaGetValues(toolBar, XmNchildren, &children, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3012 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3013 void (*action)(BalloonEval *);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3014 int text = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3015
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3016 if (strstr((const char *)p_toolbar, "tooltips"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3017 action = &gui_mch_enable_beval_area;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3018 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3019 action = &gui_mch_disable_beval_area;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3020 if (strstr((const char *)p_toolbar, "text"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3021 text = 1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3022 else if (strstr((const char *)p_toolbar, "icons"))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3023 text = -1;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3024 if (text != 0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3025 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3026 vimmenu_T *toolbar;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3027 vimmenu_T *cur;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3028
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3029 for (toolbar = root_menu; toolbar; toolbar = toolbar->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3030 if (menu_is_toolbar(toolbar->dname))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3031 break;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3032 /* Assumption: toolbar is NULL if there is no toolbar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3033 * otherwise it contains the toolbar menu structure.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3034 *
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3035 * Assumption: "numChildren" == the number of items in the list
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3036 * of items beginning with toolbar->children.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3037 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3038 if (toolbar)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3039 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3040 for (cur = toolbar->children; cur; cur = cur->next)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3041 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3042 Arg args[1];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3043 int n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3044
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3045 /* Enable/Disable tooltip (OK to enable while
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3046 * currently enabled). */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3047 if (cur->tip != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3048 (*action)(cur->tip);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3049 if (!menu_is_separator(cur->name))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3050 {
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3051 if (text == 1 || cur->xpm == NULL)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3052 {
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3053 XtSetArg(args[n], XmNlabelType, XmSTRING);
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3054 ++n;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3055 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3056 if (cur->id != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3057 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3058 XtUnmanageChild(cur->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3059 XtSetValues(cur->id, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3060 XtManageChild(cur->id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3061 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3062 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3063 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3064 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3065 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3066 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3067 gui.toolbar_height = gui_mch_compute_toolbar_height();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3068 XtManageChild(XtParent(toolBar));
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3069 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3070 if (showing_tabline)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3071 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3072 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3073 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3074 XmNtopWidget, XtParent(toolBar),
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3075 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3076 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3077 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3078 XmNtopWidget, tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3079 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3080 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3081 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3082 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3083 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3084 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3085 XmNtopWidget, XtParent(toolBar),
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3086 NULL);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3087 if (XtIsManaged(menuBar))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3088 XtVaSetValues(XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3089 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3090 XmNtopWidget, menuBar,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3091 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3092 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3093 XtVaSetValues(XtParent(toolBar),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3094 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3095 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3096 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3097 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3098 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3099 gui.toolbar_height = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3100 if (XtIsManaged(menuBar))
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3101 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3102 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3103 if (showing_tabline)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3104 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3105 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3106 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3107 XmNtopWidget, menuBar,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3108 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3109 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3110 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3111 XmNtopWidget, tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3112 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3113 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3114 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3115 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3116 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3117 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3118 XmNtopWidget, menuBar,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3119 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3120 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3121 else
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3122 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3123 #ifdef FEAT_GUI_TABLINE
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3124 if (showing_tabline)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3125 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3126 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3127 XmNtopAttachment, XmATTACH_FORM,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3128 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3129 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3130 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3131 XmNtopWidget, tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3132 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3133 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3134 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3135 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3136 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3137 XmNtopAttachment, XmATTACH_FORM,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3138 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3139 }
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3140
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3141 XtUnmanageChild(XtParent(toolBar));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3142 }
811
d2c169a725c8 updated for version 7.0c01
vimboss
parents: 418
diff changeset
3143 gui_set_shellsize(FALSE, FALSE, RESIZE_VERT);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3144 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3145
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3146 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3147 * A toolbar button has been pushed; now reset the input focus
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3148 * such that the user can type page up/down etc. and have the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3149 * input go to the editor window, not the button
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3150 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3151 static void
54
6bfddb1d126a updated for version 7.0029
vimboss
parents: 48
diff changeset
3152 reset_focus()
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3153 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3154 if (textArea != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3155 XmProcessTraversal(textArea, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3156 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3157
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3158 int
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3159 gui_mch_compute_toolbar_height()
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3160 {
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3161 Dimension borders;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3162 Dimension height; /* total Toolbar height */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3163 Dimension whgt; /* height of each widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3164 WidgetList children; /* list of toolBar's children */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3165 Cardinal numChildren; /* how many children toolBar has */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3166 int i;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3167
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3168 borders = 0;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3169 height = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3170 if (toolBar != (Widget)0 && toolBarFrame != (Widget)0)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3171 { /* get height of XmFrame parent */
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3172 Dimension fst;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3173 Dimension fmh;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3174 Dimension tst;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3175 Dimension tmh;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3176
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3177 XtVaGetValues(toolBarFrame,
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3178 XmNshadowThickness, &fst,
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3179 XmNmarginHeight, &fmh,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3180 NULL);
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3181 borders += fst + fmh;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3182 XtVaGetValues(toolBar,
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3183 XmNshadowThickness, &tst,
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3184 XmNmarginHeight, &tmh,
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3185 XmNchildren, &children,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3186 XmNnumChildren, &numChildren, NULL);
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3187 borders += tst + tmh;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3188 for (i = 0; i < (int)numChildren; i++)
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3189 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3190 whgt = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3191 XtVaGetValues(children[i], XmNheight, &whgt, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3192 if (height < whgt)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3193 height = whgt;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3194 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3195 }
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3196 #ifdef LESSTIF_VERSION
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3197 /* Hack: When starting up we get wrong dimensions. */
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3198 if (height < 10)
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3199 height = 24;
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3200 #endif
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3201
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3202 return (int)(height + (borders << 1));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3203 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3204
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3205 void
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3206 motif_get_toolbar_colors(bgp, fgp, bsp, tsp, hsp)
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3207 Pixel *bgp;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3208 Pixel *fgp;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3209 Pixel *bsp;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3210 Pixel *tsp;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3211 Pixel *hsp;
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3212 {
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3213 XtVaGetValues(toolBar,
856
8cd729851562 updated for version 7.0g
vimboss
parents: 844
diff changeset
3214 XmNbackground, bgp,
8cd729851562 updated for version 7.0g
vimboss
parents: 844
diff changeset
3215 XmNforeground, fgp,
8cd729851562 updated for version 7.0g
vimboss
parents: 844
diff changeset
3216 XmNbottomShadowColor, bsp,
8cd729851562 updated for version 7.0g
vimboss
parents: 844
diff changeset
3217 XmNtopShadowColor, tsp,
8cd729851562 updated for version 7.0g
vimboss
parents: 844
diff changeset
3218 XmNhighlightColor, hsp,
8cd729851562 updated for version 7.0g
vimboss
parents: 844
diff changeset
3219 NULL);
161
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3220 }
6df0106fc595 updated for version 7.0049
vimboss
parents: 147
diff changeset
3221
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3222 # ifdef FEAT_FOOTER
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3223 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3224 * The next toolbar enter/leave callbacks should really do balloon help. But
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3225 * I have to use footer help for backwards compatability. Hopefully both will
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3226 * get implemented and the user will have a choice.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3227 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3228 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3229 toolbarbutton_enter_cb(w, client_data, event, cont)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3230 Widget w UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3231 XtPointer client_data;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3232 XEvent *event UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3233 Boolean *cont UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3234 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3235 vimmenu_T *menu = (vimmenu_T *) client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3236
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3237 if (menu->strings[MENU_INDEX_TIP] != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3238 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3239 if (vim_strchr(p_go, GO_FOOTER) != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3240 gui_mch_set_footer(menu->strings[MENU_INDEX_TIP]);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3241 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3242 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3243
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3244 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3245 toolbarbutton_leave_cb(w, client_data, event, cont)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3246 Widget w UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3247 XtPointer client_data UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3248 XEvent *event UNUSED;
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3249 Boolean *cont UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3250 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3251 gui_mch_set_footer((char_u *) "");
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3252 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3253 # endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3254 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3255
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3256 #if defined(FEAT_GUI_TABLINE) || defined(PROTO)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3257 /*
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3258 * Show or hide the tabline.
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3259 */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3260 void
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3261 gui_mch_show_tabline(int showit)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3262 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3263 if (tabLine == (Widget)0)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3264 return;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3265
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3266 if (!showit != !showing_tabline)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3267 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3268 if (showit)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3269 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3270 XtManageChild(tabLine);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3271 XtUnmanageChild(XtNameToWidget(tabLine, "PageScroller"));
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3272 XtUnmanageChild(XtNameToWidget(tabLine, "MinorTabScrollerNext"));
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3273 XtUnmanageChild(XtNameToWidget(tabLine,
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3274 "MinorTabScrollerPrevious"));
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3275 #ifdef FEAT_MENU
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3276 # ifdef FEAT_TOOLBAR
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3277 if (XtIsManaged(XtParent(toolBar)))
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3278 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3279 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3280 XmNtopWidget, XtParent(toolBar), NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3281 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3282 # endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3283 if (XtIsManaged(menuBar))
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3284 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3285 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3286 XmNtopWidget, menuBar, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3287 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3288 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3289 XtVaSetValues(tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3290 XmNtopAttachment, XmATTACH_FORM, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3291 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3292 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3293 XmNtopWidget, tabLine,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3294 NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3295 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3296 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3297 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3298 XtUnmanageChild(tabLine);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3299 #ifdef FEAT_MENU
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3300 # ifdef FEAT_TOOLBAR
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3301 if (XtIsManaged(XtParent(toolBar)))
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3302 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3303 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3304 XmNtopWidget, XtParent(toolBar), NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3305 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3306 # endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3307 if (XtIsManaged(menuBar))
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3308 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3309 XmNtopAttachment, XmATTACH_WIDGET,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3310 XmNtopWidget, menuBar, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3311 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3312 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3313 XtVaSetValues(textAreaForm,
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3314 XmNtopAttachment, XmATTACH_FORM, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3315 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3316 showing_tabline = showit;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3317 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3318 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3319
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3320 /*
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3321 * Return TRUE when tabline is displayed.
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3322 */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3323 int
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3324 gui_mch_showing_tabline(void)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3325 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3326 return tabLine != (Widget)0 && showing_tabline;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3327 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3328
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3329 /*
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3330 * Update the labels of the tabline.
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3331 */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3332 void
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3333 gui_mch_update_tabline(void)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3334 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3335 tabpage_T *tp;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3336 int nr = 1, n;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3337 Arg args[10];
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3338 int curtabidx = 0, currentpage;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3339 Widget tab;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3340 XmNotebookPageInfo page_info;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3341 XmNotebookPageStatus page_status;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3342 int last_page, tab_count;
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3343 XmString label_str;
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3344 char *label_cstr;
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3345 BalloonEval *beval;
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3346
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3347 if (tabLine == (Widget)0)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3348 return;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3349
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3350 /* Add a label for each tab page. They all contain the same text area. */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3351 for (tp = first_tabpage; tp != NULL; tp = tp->tp_next, ++nr)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3352 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3353 if (tp == curtab)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3354 curtabidx = nr;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3355
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3356 page_status = XmNotebookGetPageInfo(tabLine, nr, &page_info);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3357 if (page_status == XmPAGE_INVALID
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3358 || page_info.major_tab_widget == (Widget)0)
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3359 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3360 /* Add the tab */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3361 n = 0;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3362 XtSetArg(args[n], XmNnotebookChildType, XmMAJOR_TAB); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3363 XtSetArg(args[n], XmNtraversalOn, False); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3364 XtSetArg(args[n], XmNalignment, XmALIGNMENT_BEGINNING); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3365 XtSetArg(args[n], XmNhighlightThickness, 1); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3366 XtSetArg(args[n], XmNshadowThickness , 1); n++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3367 tab = XmCreatePushButton(tabLine, "-Empty-", args, n);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3368 XtManageChild(tab);
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3369 beval = gui_mch_create_beval_area(tab, NULL, tabline_balloon_cb,
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3370 NULL);
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3371 XtVaSetValues(tab, XmNuserData, beval, NULL);
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3372 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3373 else
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3374 tab = page_info.major_tab_widget;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3375
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3376 XtVaSetValues(tab, XmNpageNumber, nr, NULL);
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3377
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3378 /*
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3379 * Change the label text only if it is different
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3380 */
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3381 XtVaGetValues(tab, XmNlabelString, &label_str, NULL);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3382 if (XmStringGetLtoR(label_str, XmSTRING_DEFAULT_CHARSET, &label_cstr))
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3383 {
839
1f3b1021f002 updated for version 7.0e05
vimboss
parents: 838
diff changeset
3384 get_tabline_label(tp, FALSE);
1f3b1021f002 updated for version 7.0e05
vimboss
parents: 838
diff changeset
3385 if (STRCMP(label_cstr, NameBuff) != 0)
1f3b1021f002 updated for version 7.0e05
vimboss
parents: 838
diff changeset
3386 {
824
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3387 XtVaSetValues(tab, XtVaTypedArg, XmNlabelString, XmRString,
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3388 NameBuff, STRLEN(NameBuff) + 1, NULL);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3389 /*
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3390 * Force a resize of the tab label button
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3391 */
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3392 XtUnmanageChild(tab);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3393 XtManageChild(tab);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3394 }
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3395 XtFree(label_cstr);
8dd456c1e283 updated for version 7.0c13
vimboss
parents: 819
diff changeset
3396 }
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3397 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3398
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3399 tab_count = nr - 1;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3400
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3401 XtVaGetValues(tabLine, XmNlastPageNumber, &last_page, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3402
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3403 /* Remove any old labels. */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3404 while (nr <= last_page)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3405 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3406 if (XmNotebookGetPageInfo(tabLine, nr, &page_info) != XmPAGE_INVALID
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3407 && page_info.page_number == nr
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3408 && page_info.major_tab_widget != (Widget)0)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3409 {
844
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3410 XtVaGetValues(page_info.major_tab_widget, XmNuserData, &beval, NULL);
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3411 if (beval != NULL)
d3bbb5dd3913 updated for version 7.0f02
vimboss
parents: 843
diff changeset
3412 gui_mch_destroy_beval_area(beval);
819
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3413 XtUnmanageChild(page_info.major_tab_widget);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3414 XtDestroyWidget(page_info.major_tab_widget);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3415 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3416 nr++;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3417 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3418
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3419 XtVaSetValues(tabLine, XmNlastPageNumber, tab_count, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3420
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3421 XtVaGetValues(tabLine, XmNcurrentPageNumber, &currentpage, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3422 if (currentpage != curtabidx)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3423 XtVaSetValues(tabLine, XmNcurrentPageNumber, curtabidx, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3424 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3425
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3426 /*
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3427 * Set the current tab to "nr". First tab is 1.
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3428 */
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3429 void
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3430 gui_mch_set_curtab(nr)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3431 int nr;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3432 {
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3433 int currentpage;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3434
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3435 if (tabLine == (Widget)0)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3436 return;
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3437
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3438 XtVaGetValues(tabLine, XmNcurrentPageNumber, &currentpage, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3439 if (currentpage != nr)
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3440 XtVaSetValues(tabLine, XmNcurrentPageNumber, nr, NULL);
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3441 }
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3442 #endif
23f82b5d2814 updated for version 7.0c10
vimboss
parents: 811
diff changeset
3443
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3444 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3445 * Set the colors of Widget "id" to the menu colors.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3446 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3447 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3448 gui_motif_menu_colors(id)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3449 Widget id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3450 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3451 if (gui.menu_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3452 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3453 XmChangeColor(id, gui.menu_bg_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3454 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3455 XtVaSetValues(id, XmNbackground, gui.menu_bg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3456 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3457 if (gui.menu_fg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3458 XtVaSetValues(id, XmNforeground, gui.menu_fg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3459 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3460
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3461 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3462 * Set the colors of Widget "id" to the scrollbar colors.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3463 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3464 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3465 gui_motif_scroll_colors(id)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3466 Widget id;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3467 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3468 if (gui.scroll_bg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3469 #if (XmVersion >= 1002)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3470 XmChangeColor(id, gui.scroll_bg_pixel);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3471 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3472 XtVaSetValues(id, XmNbackground, gui.scroll_bg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3473 #endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3474 if (gui.scroll_fg_pixel != INVALCOLOR)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3475 XtVaSetValues(id, XmNforeground, gui.scroll_fg_pixel, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3476 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3477
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3478 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3479 * Set the fontlist for Widget "id" to use gui.menu_fontset or gui.menu_font.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3480 */
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3481 void
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3482 gui_motif_menu_fontlist(id)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3483 Widget id UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3484 {
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3485 #ifdef FEAT_MENU
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3486 #ifdef FONTSET_ALWAYS
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3487 if (gui.menu_fontset != NOFONTSET)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3488 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3489 XmFontList fl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3490
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3491 fl = gui_motif_fontset2fontlist((XFontSet *)&gui.menu_fontset);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3492 if (fl != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3493 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3494 if (XtIsManaged(id))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3495 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3496 XtUnmanageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3497 XtVaSetValues(id, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3498 /* We should force the widget to recalculate it's
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3499 * geometry now. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3500 XtManageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3501 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3502 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3503 XtVaSetValues(id, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3504 XmFontListFree(fl);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3505 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3506 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3507 #else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3508 if (gui.menu_font != NOFONT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3509 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3510 XmFontList fl;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3511
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3512 fl = gui_motif_create_fontlist((XFontStruct *)gui.menu_font);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3513 if (fl != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3514 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3515 if (XtIsManaged(id))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3516 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3517 XtUnmanageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3518 XtVaSetValues(id, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3519 /* We should force the widget to recalculate it's
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3520 * geometry now. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3521 XtManageChild(id);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3522 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3523 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3524 XtVaSetValues(id, XmNfontList, fl, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3525 XmFontListFree(fl);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3526 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3527 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3528 #endif
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3529 #endif
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3530 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3531
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3532
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3533 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3534 * We don't create it twice for the sake of speed.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3535 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3536
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3537 typedef struct _SharedFindReplace
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3538 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3539 Widget dialog; /* the main dialog widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3540 Widget wword; /* 'Exact match' check button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3541 Widget mcase; /* 'match case' check button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3542 Widget up; /* search direction 'Up' radio button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3543 Widget down; /* search direction 'Down' radio button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3544 Widget what; /* 'Find what' entry text widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3545 Widget with; /* 'Replace with' entry text widget */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3546 Widget find; /* 'Find Next' action button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3547 Widget replace; /* 'Replace With' action button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3548 Widget all; /* 'Replace All' action button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3549 Widget undo; /* 'Undo' action button */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3550
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3551 Widget cancel;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3552 } SharedFindReplace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3553
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3554 static SharedFindReplace find_widgets = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3555 static SharedFindReplace repl_widgets = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3556
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3557 static void find_replace_destroy_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3558 static void find_replace_dismiss_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3559 static void entry_activate_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3560 static void find_replace_callback __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3561 static void find_replace_keypress __ARGS((Widget w, SharedFindReplace * frdp, XKeyEvent * event));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3562 static void find_replace_dialog_create __ARGS((char_u *entry_text, int do_replace));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3563
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3564 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3565 find_replace_destroy_callback(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3566 Widget w UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3567 XtPointer client_data;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3568 XtPointer call_data UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3569 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3570 SharedFindReplace *cd = (SharedFindReplace *)client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3571
48
00c35ea0c2b3 updated for version 7.0028
vimboss
parents: 44
diff changeset
3572 if (cd != NULL)
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3573 /* suppress_dialog_mnemonics(cd->dialog); */
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3574 cd->dialog = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3575 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3576
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3577 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3578 find_replace_dismiss_callback(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3579 Widget w UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3580 XtPointer client_data;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3581 XtPointer call_data UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3582 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3583 SharedFindReplace *cd = (SharedFindReplace *)client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3584
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3585 if (cd != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3586 XtUnmanageChild(cd->dialog);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3587 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3588
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3589 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3590 entry_activate_callback(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3591 Widget w UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3592 XtPointer client_data;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3593 XtPointer call_data UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3594 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3595 XmProcessTraversal((Widget)client_data, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3596 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3597
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3598 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3599 find_replace_callback(w, client_data, call_data)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3600 Widget w UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3601 XtPointer client_data;
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3602 XtPointer call_data UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3603 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3604 long_u flags = (long_u)client_data;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3605 char *find_text, *repl_text;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3606 Boolean direction_down = TRUE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3607 Boolean wword;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3608 Boolean mcase;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3609 SharedFindReplace *sfr;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3610
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3611 if (flags == FRD_UNDO)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3612 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3613 char_u *save_cpo = p_cpo;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3614
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3615 /* No need to be Vi compatible here. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3616 p_cpo = (char_u *)"";
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3617 u_undo(1);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3618 p_cpo = save_cpo;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3619 gui_update_screen();
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3620 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3621 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3622
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3623 /* Get the search/replace strings from the dialog */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3624 if (flags == FRD_FINDNEXT)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3625 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3626 repl_text = NULL;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3627 sfr = &find_widgets;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3628 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3629 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3630 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3631 repl_text = XmTextFieldGetString(repl_widgets.with);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3632 sfr = &repl_widgets;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3633 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3634 find_text = XmTextFieldGetString(sfr->what);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3635 XtVaGetValues(sfr->down, XmNset, &direction_down, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3636 XtVaGetValues(sfr->wword, XmNset, &wword, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3637 XtVaGetValues(sfr->mcase, XmNset, &mcase, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3638 if (wword)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3639 flags |= FRD_WHOLE_WORD;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3640 if (mcase)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3641 flags |= FRD_MATCH_CASE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3642
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3643 (void)gui_do_findrepl((int)flags, (char_u *)find_text, (char_u *)repl_text,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3644 direction_down);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3645
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3646 if (find_text != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3647 XtFree(find_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3648 if (repl_text != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3649 XtFree(repl_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3650 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3651
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3652 static void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3653 find_replace_keypress(w, frdp, event)
1887
fc89a4f98a8b updated for version 7.2-184
vimboss
parents: 1604
diff changeset
3654 Widget w UNUSED;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3655 SharedFindReplace *frdp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3656 XKeyEvent *event;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3657 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3658 KeySym keysym;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3659
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3660 if (frdp == NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3661 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3662
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3663 keysym = XLookupKeysym(event, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3664
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3665 /* the scape key pops the whole dialog down */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3666 if (keysym == XK_Escape)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3667 XtUnmanageChild(frdp->dialog);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3668 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3669
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3670 static void
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3671 set_label(w, label)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3672 Widget w;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3673 char_u *label;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3674 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3675 XmString str;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3676 char_u *p, *next;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3677 KeySym mnemonic = NUL;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3678
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3679 if (!w)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3680 return;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3681
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3682 p = vim_strsave(label);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3683 if (p == NULL)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3684 return;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3685 for (next = p; *next; ++next)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3686 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3687 if (*next == DLG_HOTKEY_CHAR)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3688 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3689 int len = STRLEN(next);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3690
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3691 if (len > 0)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3692 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3693 mch_memmove(next, next + 1, len);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3694 mnemonic = next[0];
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3695 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3696 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3697 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3698
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3699 str = XmStringCreateSimple((char *)p);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3700 vim_free(p);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3701 if (str)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3702 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3703 XtVaSetValues(w,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3704 XmNlabelString, str,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3705 XmNmnemonic, mnemonic,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3706 NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3707 XmStringFree(str);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3708 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3709 gui_motif_menu_fontlist(w);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3710 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3711
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3712 static void
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3713 find_replace_dialog_create(arg, do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3714 char_u *arg;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3715 int do_replace;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3716 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3717 SharedFindReplace *frdp;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3718 Widget separator;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3719 Widget input_form;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3720 Widget button_form;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3721 Widget toggle_form;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3722 Widget frame;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3723 XmString str;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3724 int n;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3725 Arg args[6];
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3726 int wword = FALSE;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3727 int mcase = !p_ic;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3728 Dimension width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3729 Dimension widest;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3730 char_u *entry_text;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3731
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3732 frdp = do_replace ? &repl_widgets : &find_widgets;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3733
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3734 /* Get the search string to use. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3735 entry_text = get_find_dialog_text(arg, &wword, &mcase);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3736
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3737 /* If the dialog already exists, just raise it. */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3738 if (frdp->dialog)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3739 {
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3740 gui_motif_synch_fonts();
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3741
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3742 /* If the window is already up, just pop it to the top */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3743 if (XtIsManaged(frdp->dialog))
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3744 XMapRaised(XtDisplay(frdp->dialog),
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3745 XtWindow(XtParent(frdp->dialog)));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3746 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3747 XtManageChild(frdp->dialog);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3748 XtPopup(XtParent(frdp->dialog), XtGrabNone);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3749 XmProcessTraversal(frdp->what, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3750
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3751 if (entry_text != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3752 XmTextFieldSetString(frdp->what, (char *)entry_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3753 vim_free(entry_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3754
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3755 XtVaSetValues(frdp->wword, XmNset, wword, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3756 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3757 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3758
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3759 /* Create a fresh new dialog window */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3760 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3761 str = XmStringCreateSimple(_("VIM - Search and Replace..."));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3762 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3763 str = XmStringCreateSimple(_("VIM - Search..."));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3764
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3765 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3766 XtSetArg(args[n], XmNautoUnmanage, False); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3767 XtSetArg(args[n], XmNnoResize, True); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3768 XtSetArg(args[n], XmNdialogTitle, str); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3769
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3770 frdp->dialog = XmCreateFormDialog(vimShell, "findReplaceDialog", args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3771 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3772 XtAddCallback(frdp->dialog, XmNdestroyCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3773 find_replace_destroy_callback, frdp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3774
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3775 button_form = XtVaCreateWidget("buttonForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3776 xmFormWidgetClass, frdp->dialog,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3777 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3778 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3779 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3780 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3781 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3782 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3783 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3784
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3785 frdp->find = XtVaCreateManagedWidget("findButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3786 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3787 XmNsensitive, True,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3788 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3789 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3790 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3791 NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3792 set_label(frdp->find, _("Find &Next"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3793
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3794 XtAddCallback(frdp->find, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3795 find_replace_callback,
1522
710b52d02c4a updated for version 7.1-237
vimboss
parents: 1207
diff changeset
3796 (do_replace ? (XtPointer)FRD_R_FINDNEXT : (XtPointer)FRD_FINDNEXT));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3797
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3798 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3799 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3800 frdp->replace = XtVaCreateManagedWidget("replaceButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3801 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3802 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3803 XmNtopWidget, frdp->find,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3804 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3805 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3806 NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3807 set_label(frdp->replace, _("&Replace"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3808 XtAddCallback(frdp->replace, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3809 find_replace_callback, (XtPointer)FRD_REPLACE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3810
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3811 frdp->all = XtVaCreateManagedWidget("replaceAllButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3812 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3813 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3814 XmNtopWidget, frdp->replace,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3815 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3816 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3817 NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3818 set_label(frdp->all, _("Replace &All"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3819 XtAddCallback(frdp->all, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3820 find_replace_callback, (XtPointer)FRD_REPLACEALL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3821
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3822 frdp->undo = XtVaCreateManagedWidget("undoButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3823 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3824 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3825 XmNtopWidget, frdp->all,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3826 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3827 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3828 NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3829 set_label(frdp->undo, _("&Undo"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3830 XtAddCallback(frdp->undo, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3831 find_replace_callback, (XtPointer)FRD_UNDO);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3832 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3833
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3834 frdp->cancel = XtVaCreateManagedWidget("closeButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3835 xmPushButtonWidgetClass, button_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3836 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3837 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3838 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3839 NULL);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3840 set_label(frdp->cancel, _("&Cancel"));
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3841 XtAddCallback(frdp->cancel, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3842 find_replace_dismiss_callback, frdp);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3843 gui_motif_menu_fontlist(frdp->cancel);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3844
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3845 XtManageChild(button_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3846
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3847 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3848 XtSetArg(args[n], XmNorientation, XmVERTICAL); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3849 XtSetArg(args[n], XmNrightAttachment, XmATTACH_WIDGET); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3850 XtSetArg(args[n], XmNrightWidget, button_form); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3851 XtSetArg(args[n], XmNrightOffset, 4); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3852 XtSetArg(args[n], XmNtopAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3853 XtSetArg(args[n], XmNbottomAttachment, XmATTACH_FORM); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3854 separator = XmCreateSeparatorGadget(frdp->dialog, "separator", args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3855 XtManageChild(separator);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3856
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3857 input_form = XtVaCreateWidget("inputForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3858 xmFormWidgetClass, frdp->dialog,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3859 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3860 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3861 XmNrightAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3862 XmNrightWidget, separator,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3863 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3864 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3865 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3866 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3867
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3868 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3869 Widget label_what;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3870 Widget label_with = (Widget)0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3871
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3872 str = XmStringCreateSimple(_("Find what:"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3873 label_what = XtVaCreateManagedWidget("whatLabel",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3874 xmLabelGadgetClass, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3875 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3876 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3877 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3878 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3879 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3880 XmStringFree(str);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3881 gui_motif_menu_fontlist(label_what);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3882
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3883 frdp->what = XtVaCreateManagedWidget("whatText",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3884 xmTextFieldWidgetClass, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3885 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3886 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3887 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3888 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3889
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3890 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3891 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3892 frdp->with = XtVaCreateManagedWidget("withText",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3893 xmTextFieldWidgetClass, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3894 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3895 XmNtopWidget, frdp->what,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3896 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3897 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3898 XmNrightAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3899 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3900 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3901
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3902 XtAddCallback(frdp->with, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3903 find_replace_callback, (XtPointer) FRD_R_FINDNEXT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3904
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3905 str = XmStringCreateSimple(_("Replace with:"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3906 label_with = XtVaCreateManagedWidget("withLabel",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3907 xmLabelGadgetClass, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3908 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3909 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3910 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3911 XmNtopWidget, frdp->what,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3912 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3913 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3914 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3915 XmStringFree(str);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3916 gui_motif_menu_fontlist(label_with);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3917
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3918 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3919 * Make the entry activation only change the input focus onto the
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3920 * with item.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3921 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3922 XtAddCallback(frdp->what, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3923 entry_activate_callback, frdp->with);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3924 XtAddEventHandler(frdp->with, KeyPressMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3925 (XtEventHandler)find_replace_keypress,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3926 (XtPointer) frdp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3927
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3928 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3929 else
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3930 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3931 /*
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3932 * Make the entry activation do the search.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3933 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3934 XtAddCallback(frdp->what, XmNactivateCallback,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3935 find_replace_callback, (XtPointer)FRD_FINDNEXT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3936 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3937 XtAddEventHandler(frdp->what, KeyPressMask, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3938 (XtEventHandler)find_replace_keypress,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3939 (XtPointer)frdp);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3940
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3941 /* Get the maximum width between the label widgets and line them up.
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3942 */
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3943 n = 0;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3944 XtSetArg(args[n], XmNwidth, &width); n++;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3945 XtGetValues(label_what, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3946 widest = width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3947 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3948 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3949 XtGetValues(label_with, args, n);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3950 if (width > widest)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3951 widest = width;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3952 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3953
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3954 XtVaSetValues(frdp->what, XmNleftOffset, widest, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3955 if (do_replace)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3956 XtVaSetValues(frdp->with, XmNleftOffset, widest, NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3957
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3958 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3959
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3960 XtManageChild(input_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3961
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3962 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3963 Widget radio_box;
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3964 Widget w;
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3965
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3966 frame = XtVaCreateWidget("directionFrame",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3967 xmFrameWidgetClass, frdp->dialog,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3968 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3969 XmNtopWidget, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3970 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3971 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3972 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3973 XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3974 XmNrightWidget, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3975 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3976
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3977 str = XmStringCreateSimple(_("Direction"));
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3978 w = XtVaCreateManagedWidget("directionFrameLabel",
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3979 xmLabelGadgetClass, frame,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3980 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3981 XmNchildHorizontalAlignment, XmALIGNMENT_BEGINNING,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3982 XmNchildType, XmFRAME_TITLE_CHILD,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3983 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3984 XmStringFree(str);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3985 gui_motif_menu_fontlist(w);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3986
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3987 radio_box = XmCreateRadioBox(frame, "radioBox",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3988 (ArgList)NULL, 0);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3989
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3990 str = XmStringCreateSimple( _("Up"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3991 frdp->up = XtVaCreateManagedWidget("upRadioButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3992 xmToggleButtonGadgetClass, radio_box,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3993 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3994 XmNset, False,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3995 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3996 XmStringFree(str);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
3997 gui_motif_menu_fontlist(frdp->up);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3998
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
3999 str = XmStringCreateSimple(_("Down"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4000 frdp->down = XtVaCreateManagedWidget("downRadioButton",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4001 xmToggleButtonGadgetClass, radio_box,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4002 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4003 XmNset, True,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4004 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4005 XmStringFree(str);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4006 gui_motif_menu_fontlist(frdp->down);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4007
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4008 XtManageChild(radio_box);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4009 XtManageChild(frame);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4010 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4011
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4012 toggle_form = XtVaCreateWidget("toggleForm",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4013 xmFormWidgetClass, frdp->dialog,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4014 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4015 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4016 XmNrightAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4017 XmNrightWidget, frame,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4018 XmNrightOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4019 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4020 XmNtopWidget, input_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4021 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4022 XmNbottomAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4023 XmNbottomOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4024 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4025
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4026 str = XmStringCreateSimple(_("Match whole word only"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4027 frdp->wword = XtVaCreateManagedWidget("wordToggle",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4028 xmToggleButtonGadgetClass, toggle_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4029 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4030 XmNtopAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4031 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4032 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4033 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4034 XmNset, wword,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4035 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4036 XmStringFree(str);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4037
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4038 str = XmStringCreateSimple(_("Match case"));
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4039 frdp->mcase = XtVaCreateManagedWidget("caseToggle",
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4040 xmToggleButtonGadgetClass, toggle_form,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4041 XmNlabelString, str,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4042 XmNleftAttachment, XmATTACH_FORM,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4043 XmNleftOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4044 XmNtopAttachment, XmATTACH_WIDGET,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4045 XmNtopWidget, frdp->wword,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4046 XmNtopOffset, 4,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4047 XmNset, mcase,
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4048 NULL);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4049 XmStringFree(str);
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4050 gui_motif_menu_fontlist(frdp->wword);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4051 gui_motif_menu_fontlist(frdp->mcase);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4052
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4053 XtManageChild(toggle_form);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4054
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4055 if (entry_text != NULL)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4056 XmTextFieldSetString(frdp->what, (char *)entry_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4057 vim_free(entry_text);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4058
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4059 gui_motif_synch_fonts();
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4060
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4061 manage_centered(frdp->dialog);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4062 activate_dialog_mnemonics(frdp->dialog);
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4063 XmProcessTraversal(frdp->what, XmTRAVERSE_CURRENT);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4064 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4065
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4066 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4067 gui_mch_find_dialog(eap)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4068 exarg_T *eap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4069 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4070 if (!gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4071 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4072
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4073 find_replace_dialog_create(eap->arg, FALSE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4074 }
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4075
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4076
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4077 void
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4078 gui_mch_replace_dialog(eap)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4079 exarg_T *eap;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4080 {
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4081 if (!gui.in_use)
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4082 return;
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4083
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4084 find_replace_dialog_create(eap->arg, TRUE);
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
4085 }
44
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4086
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4087 /*
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4088 * Synchronize all gui elements, which are dependant upon the
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4089 * main text font used. Those are in esp. the find/replace dialogs.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4090 * If you don't understand why this should be needed, please try to
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4091 * search for "pięść" in iso8859-2.
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4092 */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4093 void
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4094 gui_motif_synch_fonts(void)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4095 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4096 SharedFindReplace *frdp;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4097 int do_replace;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4098 XFontStruct *font;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4099 XmFontList font_list;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4100
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4101 /* FIXME: Unless we find out how to create a XmFontList from a XFontSet,
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4102 * we just give up here on font synchronization. */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4103 font = (XFontStruct *)gui.norm_font;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4104 if (font == NULL)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4105 return;
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4106
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4107 font_list = gui_motif_create_fontlist(font);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4108
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4109 /* OK this loop is a bit tricky... */
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4110 for (do_replace = 0; do_replace <= 1; ++do_replace)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4111 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4112 frdp = (do_replace) ? (&repl_widgets) : (&find_widgets);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4113 if (frdp->dialog)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4114 {
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4115 XtVaSetValues(frdp->what, XmNfontList, font_list, NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4116 if (do_replace)
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4117 XtVaSetValues(frdp->with, XmNfontList, font_list, NULL);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4118 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4119 }
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4120
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4121 XmFontListFree(font_list);
af1bcb9a13c0 updated for version 7.0027
vimboss
parents: 7
diff changeset
4122 }