comparison src/scrollbar-msw.c @ 442:abe6d1db359e r21-2-36

Import from CVS: tag r21-2-36
author cvs
date Mon, 13 Aug 2007 11:35:02 +0200
parents 3ecd8885ac67
children 5aa1854ad537
comparison
equal deleted inserted replaced
441:72a7cfa4a488 442:abe6d1db359e
22 Boston, MA 02111-1307, USA. */ 22 Boston, MA 02111-1307, USA. */
23 23
24 /* Synched up with: Not in FSF. */ 24 /* Synched up with: Not in FSF. */
25 25
26 #include <config.h> 26 #include <config.h>
27 #include <limits.h>
28 #include "lisp.h" 27 #include "lisp.h"
29 28
30 #include "console-msw.h" 29 #include "console-msw.h"
31 #include "events.h" 30 #include "events.h"
32 #include "frame.h" 31 #include "frame.h"
46 static void 45 static void
47 mswindows_create_scrollbar_instance (struct frame *f, int vertical, 46 mswindows_create_scrollbar_instance (struct frame *f, int vertical,
48 struct scrollbar_instance *sb) 47 struct scrollbar_instance *sb)
49 { 48 {
50 int orientation; 49 int orientation;
51 50
52 sb->scrollbar_data = xnew_and_zero (struct mswindows_scrollbar_data); 51 sb->scrollbar_data = xnew_and_zero (struct mswindows_scrollbar_data);
53 52
54 if (vertical) 53 if (vertical)
55 orientation = SBS_VERT; 54 orientation = SBS_VERT;
56 else 55 else
57 orientation = SBS_HORZ; 56 orientation = SBS_HORZ;
58 57
59 SCROLLBAR_MSW_HANDLE (sb) = 58 SCROLLBAR_MSW_HANDLE (sb) =
60 CreateWindowEx(0, "SCROLLBAR", 0, orientation|WS_CHILD, 59 CreateWindowEx(0, "SCROLLBAR", 0, orientation|WS_CHILD,
61 CW_USEDEFAULT, CW_USEDEFAULT, 60 CW_USEDEFAULT, CW_USEDEFAULT,
62 CW_USEDEFAULT, CW_USEDEFAULT, 61 CW_USEDEFAULT, CW_USEDEFAULT,
63 FRAME_MSWINDOWS_HANDLE (f), 62 FRAME_MSWINDOWS_HANDLE (f),
82 81
83 static void 82 static void
84 mswindows_free_scrollbar_instance (struct scrollbar_instance *sb) 83 mswindows_free_scrollbar_instance (struct scrollbar_instance *sb)
85 { 84 {
86 DestroyWindow (SCROLLBAR_MSW_HANDLE (sb)); 85 DestroyWindow (SCROLLBAR_MSW_HANDLE (sb));
87 if (sb->scrollbar_data) 86 if (sb->scrollbar_data)
88 xfree (sb->scrollbar_data); 87 xfree (sb->scrollbar_data);
89 } 88 }
90 89
91 static void 90 static void
92 mswindows_release_scrollbar_instance (struct scrollbar_instance *sb) 91 mswindows_release_scrollbar_instance (struct scrollbar_instance *sb)
145 UPDATE_POS_FIELD (scrollbar_x); 144 UPDATE_POS_FIELD (scrollbar_x);
146 UPDATE_POS_FIELD (scrollbar_y); 145 UPDATE_POS_FIELD (scrollbar_y);
147 UPDATE_POS_FIELD (scrollbar_width); 146 UPDATE_POS_FIELD (scrollbar_width);
148 UPDATE_POS_FIELD (scrollbar_height); 147 UPDATE_POS_FIELD (scrollbar_height);
149 148
150 if (pos_changed) 149 if (pos_changed)
151 { 150 {
152 MoveWindow(SCROLLBAR_MSW_HANDLE (sb), 151 MoveWindow(SCROLLBAR_MSW_HANDLE (sb),
153 new_scrollbar_x, new_scrollbar_y, 152 new_scrollbar_x, new_scrollbar_y,
154 new_scrollbar_width, new_scrollbar_height, 153 new_scrollbar_width, new_scrollbar_height,
155 TRUE); 154 TRUE);
185 win = real_window (sb->mirror, 1); 184 win = real_window (sb->mirror, 1);
186 frame = XWINDOW (win)->frame; 185 frame = XWINDOW (win)->frame;
187 f = XFRAME (frame); 186 f = XFRAME (frame);
188 187
189 /* SB_LINEDOWN == SB_CHARLEFT etc. This is the way they will 188 /* SB_LINEDOWN == SB_CHARLEFT etc. This is the way they will
190 always be - any Windows is binary compatible backward with 189 always be - any Windows is binary compatible backward with
191 old programs */ 190 old programs */
192 191
193 switch (code) 192 switch (code)
194 { 193 {
195 case SB_LINEDOWN: 194 case SB_LINEDOWN:
196 mswindows_enqueue_misc_user_event 195 mswindows_enqueue_misc_user_event
197 (frame, vert ? Qscrollbar_line_down : Qscrollbar_char_right, win); 196 (frame, vert ? Qscrollbar_line_down : Qscrollbar_char_right, win);
198 break; 197 break;
199 198
200 case SB_LINEUP: 199 case SB_LINEUP:
201 mswindows_enqueue_misc_user_event 200 mswindows_enqueue_misc_user_event
202 (frame, vert ? Qscrollbar_line_up : Qscrollbar_char_left, win); 201 (frame, vert ? Qscrollbar_line_up : Qscrollbar_char_left, win);
203 break; 202 break;
204 203
205 case SB_PAGEDOWN: 204 case SB_PAGEDOWN:
206 mswindows_enqueue_misc_user_event 205 mswindows_enqueue_misc_user_event
207 (win, vert ? Qscrollbar_page_down : Qscrollbar_page_right, 206 (win, vert ? Qscrollbar_page_down : Qscrollbar_page_right,
208 vert ? Fcons (win, Qnil) : win); 207 vert ? Fcons (win, Qnil) : win);
209 break; 208 break;
212 mswindows_enqueue_misc_user_event 211 mswindows_enqueue_misc_user_event
213 (frame, 212 (frame,
214 vert ? Qscrollbar_page_up : Qscrollbar_page_left, 213 vert ? Qscrollbar_page_up : Qscrollbar_page_left,
215 vert ? Fcons (win, Qnil) : win); 214 vert ? Fcons (win, Qnil) : win);
216 break; 215 break;
217 216
218 case SB_BOTTOM: 217 case SB_BOTTOM:
219 mswindows_enqueue_misc_user_event 218 mswindows_enqueue_misc_user_event
220 (frame, vert ? Qscrollbar_to_bottom : Qscrollbar_to_right, win); 219 (frame, vert ? Qscrollbar_to_bottom : Qscrollbar_to_right, win);
221 break; 220 break;
222 221
275 } 274 }
276 275
277 int 276 int
278 mswindows_handle_mousewheel_event (Lisp_Object frame, int keys, int delta) 277 mswindows_handle_mousewheel_event (Lisp_Object frame, int keys, int delta)
279 { 278 {
280 int hasVertBar, hasHorzBar; /* Indicates prescence of scroll bars */ 279 int hasVertBar, hasHorzBar; /* Indicates presence of scroll bars */
281 unsigned wheelScrollLines = 0; /* Number of lines per wheel notch */ 280 unsigned wheelScrollLines = 0; /* Number of lines per wheel notch */
282 281
283 /* Find the currently selected window */ 282 /* Find the currently selected window */
284 Lisp_Object win = FRAME_SELECTED_WINDOW (XFRAME (frame)); 283 Lisp_Object win = FRAME_SELECTED_WINDOW (XFRAME (frame));
285 struct window* w = XWINDOW (win); 284 struct window* w = XWINDOW (win);