Mercurial > hg > xemacs-beta
comparison src/frame-msw.c @ 219:262b8bb4a523 r20-4b8
Import from CVS: tag r20-4b8
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:09:35 +0200 |
parents | 1f0dabaa0855 |
children | 6c0ae1f9357f |
comparison
equal
deleted
inserted
replaced
218:c9f226976f56 | 219:262b8bb4a523 |
---|---|
61 f->frame_data = xnew_and_zero (struct mswindows_frame); | 61 f->frame_data = xnew_and_zero (struct mswindows_frame); |
62 FRAME_MSWINDOWS_HANDLE(f) = (HWND)mswindows_make_request(WM_XEMACS_CREATEWINDOW, | 62 FRAME_MSWINDOWS_HANDLE(f) = (HWND)mswindows_make_request(WM_XEMACS_CREATEWINDOW, |
63 0, &request); | 63 0, &request); |
64 FRAME_MSWINDOWS_DC(f) = GetDC(FRAME_MSWINDOWS_HANDLE(f)); | 64 FRAME_MSWINDOWS_DC(f) = GetDC(FRAME_MSWINDOWS_HANDLE(f)); |
65 SetTextAlign(FRAME_MSWINDOWS_DC(f), TA_BASELINE|TA_LEFT|TA_NOUPDATECP); | 65 SetTextAlign(FRAME_MSWINDOWS_DC(f), TA_BASELINE|TA_LEFT|TA_NOUPDATECP); |
66 | |
67 /* XXX FIXME: This function should be made to do something */ | |
68 update_frame_face_values (f); | |
69 } | 66 } |
70 | 67 |
71 /* Called just before frame's properties are set, size is 10x10 or something */ | 68 /* Called just before frame's properties are set, size is 10x10 or something */ |
72 static void | 69 static void |
73 mswindows_init_frame_2 (struct frame *f, Lisp_Object props) | 70 mswindows_init_frame_2 (struct frame *f, Lisp_Object props) |
84 /* Called after frame's properties are set */ | 81 /* Called after frame's properties are set */ |
85 static void | 82 static void |
86 mswindows_init_frame_3 (struct frame *f) | 83 mswindows_init_frame_3 (struct frame *f) |
87 { | 84 { |
88 /* Don't do this earlier or we get a WM_PAINT before the frame is ready*/ | 85 /* Don't do this earlier or we get a WM_PAINT before the frame is ready*/ |
89 ShowWindow(FRAME_MSWINDOWS_HANDLE(f), SW_SHOWNORMAL); | 86 ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOWNORMAL); |
87 SetForegroundWindow (FRAME_MSWINDOWS_HANDLE(f)); | |
88 } | |
89 | |
90 static void | |
91 mswindows_focus_on_frame (struct frame *f) | |
92 { | |
93 SetForegroundWindow (FRAME_MSWINDOWS_HANDLE(f)); | |
90 } | 94 } |
91 | 95 |
92 static void | 96 static void |
93 mswindows_delete_frame (struct frame *f) | 97 mswindows_delete_frame (struct frame *f) |
94 { | 98 { |
95 if (f->frame_data) | 99 if (f->frame_data) |
96 { | 100 { |
97 ReleaseDC(FRAME_MSWINDOWS_HANDLE(f), FRAME_MSWINDOWS_DC(f)); | 101 mswindows_request_type request = { f }; |
98 DestroyWindow(FRAME_MSWINDOWS_HANDLE(f)); | 102 mswindows_make_request(WM_XEMACS_DESTROYWINDOW, 0, &request); |
99 } | 103 } |
100 } | 104 } |
101 | 105 |
102 static void | 106 static void |
103 mswindows_set_frame_size (struct frame *f, int cols, int rows) | 107 mswindows_set_frame_size (struct frame *f, int cols, int rows) |
104 { | 108 { |
109 RECT rect1, rect2; | |
110 | |
111 GetWindowRect (FRAME_MSWINDOWS_HANDLE(f), &rect1); | |
112 rect2.left = rect2.top = 0; | |
113 char_to_pixel_size (f, cols, rows, &rect2.right, &rect2.bottom); | |
114 AdjustWindowRect (&rect2, GetWindowLong (FRAME_MSWINDOWS_HANDLE(f), | |
115 GWL_STYLE), FALSE); | |
116 MoveWindow (FRAME_MSWINDOWS_HANDLE(f), rect1.left, rect1.top, | |
117 rect2.right-rect2.left, rect2.bottom-rect2.top, TRUE); | |
105 } | 118 } |
106 | 119 |
107 | 120 |
108 static void | 121 static void |
109 mswindows_set_frame_position (struct frame *f, int xoff, int yoff) | 122 mswindows_set_frame_position (struct frame *f, int xoff, int yoff) |
110 { | 123 { |
124 RECT rect; | |
125 | |
126 GetWindowRect (FRAME_MSWINDOWS_HANDLE(f), &rect); | |
127 MoveWindow (FRAME_MSWINDOWS_HANDLE(f), xoff, yoff, | |
128 rect.right-rect.left, rect.bottom-rect.top, TRUE); | |
129 } | |
130 | |
131 static void | |
132 mswindows_make_frame_visible (struct frame *f) | |
133 { | |
134 if (f->iconified) | |
135 ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_RESTORE); | |
136 else | |
137 ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOWNORMAL); | |
138 f->visible = 1; | |
139 f->iconified = 0; | |
140 } | |
141 | |
142 static void | |
143 mswindows_make_frame_invisible (struct frame *f) | |
144 { | |
145 ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_HIDE); | |
146 f->visible = -1; | |
147 } | |
148 | |
149 static int | |
150 mswindows_frame_visible_p (struct frame *f) | |
151 { | |
152 return IsWindowVisible (FRAME_MSWINDOWS_HANDLE(f)) | |
153 && !IsIconic (FRAME_MSWINDOWS_HANDLE(f)); | |
154 } | |
155 | |
156 | |
157 static void | |
158 mswindows_iconify_frame (struct frame *f) | |
159 { | |
160 ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_MINIMIZE); | |
161 f->visible = 0; | |
162 f->iconified = 1; | |
163 } | |
164 | |
165 static int | |
166 mswindows_frame_iconified_p (struct frame *f) | |
167 { | |
168 return IsIconic (FRAME_MSWINDOWS_HANDLE(f)); | |
169 } | |
170 | |
171 static void | |
172 mswindows_raise_frame (struct frame *f) | |
173 { | |
174 BringWindowToTop (FRAME_MSWINDOWS_HANDLE(f)); | |
175 /* XXX Should we do SetWindowForeground too ? */ | |
176 } | |
177 | |
178 static void | |
179 mswindows_lower_frame (struct frame *f) | |
180 { | |
181 RECT rect; | |
182 | |
183 GetWindowRect (FRAME_MSWINDOWS_HANDLE(f), &rect); | |
184 SetWindowPos (FRAME_MSWINDOWS_HANDLE(f), HWND_BOTTOM, rect.top, rect.left, | |
185 rect.right-rect.left, rect.bottom-rect.top, 0); | |
186 } | |
187 | |
188 static void | |
189 mswindows_set_title_from_bufbyte (struct frame *f, Bufbyte *title) | |
190 { | |
191 SetWindowText (FRAME_MSWINDOWS_HANDLE(f), title); | |
111 } | 192 } |
112 | 193 |
113 static void | 194 static void |
114 mswindows_set_frame_properties (struct frame *f, Lisp_Object plist) | 195 mswindows_set_frame_properties (struct frame *f, Lisp_Object plist) |
115 { | 196 { |
188 GetWindowRect (FRAME_MSWINDOWS_HANDLE(f), &rect); | 269 GetWindowRect (FRAME_MSWINDOWS_HANDLE(f), &rect); |
189 if (!x_specified_p) | 270 if (!x_specified_p) |
190 x = rect.left; | 271 x = rect.left; |
191 if (!y_specified_p) | 272 if (!y_specified_p) |
192 y = rect.top; | 273 y = rect.top; |
193 /* XXX FIXME: Should do AdjustWindowRect here like in mswindows_handle_request */ | 274 |
275 AdjustWindowRect (&rect, GetWindowLong (FRAME_MSWINDOWS_HANDLE(f), | |
276 GWL_STYLE), FALSE); | |
194 MoveWindow (FRAME_MSWINDOWS_HANDLE(f), x, y, pixel_width, pixel_height, | 277 MoveWindow (FRAME_MSWINDOWS_HANDLE(f), x, y, pixel_width, pixel_height, |
195 (width_specified_p || height_specified_p)); | 278 (width_specified_p || height_specified_p)); |
196 } | 279 } |
197 } | 280 } |
198 | 281 |
203 /* frame methods */ | 286 /* frame methods */ |
204 CONSOLE_HAS_METHOD (mswindows, init_frame_1); | 287 CONSOLE_HAS_METHOD (mswindows, init_frame_1); |
205 CONSOLE_HAS_METHOD (mswindows, init_frame_2); | 288 CONSOLE_HAS_METHOD (mswindows, init_frame_2); |
206 CONSOLE_HAS_METHOD (mswindows, init_frame_3); | 289 CONSOLE_HAS_METHOD (mswindows, init_frame_3); |
207 /* CONSOLE_HAS_METHOD (mswindows, mark_frame); */ | 290 /* CONSOLE_HAS_METHOD (mswindows, mark_frame); */ |
208 /* CONSOLE_HAS_METHOD (mswindows, focus_on_frame); */ | 291 CONSOLE_HAS_METHOD (mswindows, focus_on_frame); |
209 CONSOLE_HAS_METHOD (mswindows, delete_frame); | 292 CONSOLE_HAS_METHOD (mswindows, delete_frame); |
210 /* CONSOLE_HAS_METHOD (mswindows, get_mouse_position); */ | 293 /* CONSOLE_HAS_METHOD (mswindows, get_mouse_position); */ |
211 /* CONSOLE_HAS_METHOD (mswindows, set_mouse_position); */ | 294 /* CONSOLE_HAS_METHOD (mswindows, set_mouse_position); */ |
212 /* CONSOLE_HAS_METHOD (mswindows, raise_frame); */ | 295 CONSOLE_HAS_METHOD (mswindows, raise_frame); |
213 /* CONSOLE_HAS_METHOD (mswindows, lower_frame); */ | 296 CONSOLE_HAS_METHOD (mswindows, lower_frame); |
214 /* CONSOLE_HAS_METHOD (mswindows, make_frame_visible); */ | 297 CONSOLE_HAS_METHOD (mswindows, make_frame_visible); |
215 /* CONSOLE_HAS_METHOD (mswindows, make_frame_invisible); */ | 298 CONSOLE_HAS_METHOD (mswindows, make_frame_invisible); |
216 /* CONSOLE_HAS_METHOD (mswindows, iconify_frame); */ | 299 CONSOLE_HAS_METHOD (mswindows, iconify_frame); |
217 CONSOLE_HAS_METHOD (mswindows, set_frame_size); | 300 CONSOLE_HAS_METHOD (mswindows, set_frame_size); |
218 CONSOLE_HAS_METHOD (mswindows, set_frame_position); | 301 CONSOLE_HAS_METHOD (mswindows, set_frame_position); |
219 /* CONSOLE_HAS_METHOD (mswindows, frame_property); */ | 302 /* CONSOLE_HAS_METHOD (mswindows, frame_property); */ |
220 /* CONSOLE_HAS_METHOD (mswindows, internal_frame_property_p); */ | 303 /* CONSOLE_HAS_METHOD (mswindows, internal_frame_property_p); */ |
221 /* CONSOLE_HAS_METHOD (mswindows, frame_properties); */ | 304 /* CONSOLE_HAS_METHOD (mswindows, frame_properties); */ |
222 CONSOLE_HAS_METHOD (mswindows, set_frame_properties); | 305 CONSOLE_HAS_METHOD (mswindows, set_frame_properties); |
223 /* CONSOLE_HAS_METHOD (mswindows, set_title_from_bufbyte); */ | 306 CONSOLE_HAS_METHOD (mswindows, set_title_from_bufbyte); |
224 /* CONSOLE_HAS_METHOD (mswindows, set_icon_name_from_bufbyte); */ | 307 /* CONSOLE_HAS_METHOD (mswindows, set_icon_name_from_bufbyte); */ |
225 /* CONSOLE_HAS_METHOD (mswindows, frame_visible_p); */ | 308 CONSOLE_HAS_METHOD (mswindows, frame_visible_p); |
226 /* CONSOLE_HAS_METHOD (mswindows, frame_totally_visible_p); */ | 309 /* CONSOLE_HAS_METHOD (mswindows, frame_totally_visible_p); */ |
227 /* CONSOLE_HAS_METHOD (mswindows, frame_iconified_p); */ | 310 CONSOLE_HAS_METHOD (mswindows, frame_iconified_p); |
228 /* CONSOLE_HAS_METHOD (mswindows, set_frame_pointer); */ | 311 /* CONSOLE_HAS_METHOD (mswindows, set_frame_pointer); */ |
229 /* CONSOLE_HAS_METHOD (mswindows, set_frame_icon); */ | 312 /* CONSOLE_HAS_METHOD (mswindows, set_frame_icon); */ |
230 /* CONSOLE_HAS_METHOD (mswindows, get_frame_parent); */ | 313 /* CONSOLE_HAS_METHOD (mswindows, get_frame_parent); */ |
231 } | 314 } |
232 | 315 |