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