annotate src/gui_motif.c @ 34627:5071d4c3ff2e v9.1.0202

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