Mercurial > hg > xemacs-beta
comparison src/frame-msw.c @ 5125:b5df3737028a ben-lisp-object
merge
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Wed, 24 Feb 2010 01:58:04 -0600 |
parents | d1247f3cc363 ae48681c47fa |
children | 2a462149bd6a |
comparison
equal
deleted
inserted
replaced
5124:623d57b7fbe8 | 5125:b5df3737028a |
---|---|
190 #ifdef HAVE_TOOLBARS | 190 #ifdef HAVE_TOOLBARS |
191 /* EQ not EQUAL or we will get QUIT crashes, see below. */ | 191 /* EQ not EQUAL or we will get QUIT crashes, see below. */ |
192 FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE (f) = | 192 FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE (f) = |
193 make_lisp_hash_table (50, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); | 193 make_lisp_hash_table (50, HASH_TABLE_NON_WEAK, HASH_TABLE_EQ); |
194 #endif | 194 #endif |
195 /* hashtable of instantiated glyphs on the frame. Make them EQ because | 195 /* hashtable of instantiated glyphs on the frame. [[ Make them EQ because |
196 we only use ints as keys. Otherwise we run into stickiness in | 196 we only use ints as keys. Otherwise we run into stickiness in |
197 redisplay because internal_equal() can QUIT. See | 197 redisplay because internal_equal() can QUIT. See |
198 enter_redisplay_critical_section(). */ | 198 enter_redisplay_critical_section(). ]] -- probably not true any more, |
199 now that we have internal_equal_trapping_problems(). --ben */ | |
199 FRAME_MSWINDOWS_WIDGET_HASH_TABLE1 (f) = | 200 FRAME_MSWINDOWS_WIDGET_HASH_TABLE1 (f) = |
200 make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ); | 201 make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ); |
201 FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f) = | 202 FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f) = |
202 make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ); | 203 make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQ); |
203 FRAME_MSWINDOWS_WIDGET_HASH_TABLE3 (f) = | 204 FRAME_MSWINDOWS_WIDGET_HASH_TABLE3 (f) = |
246 Vmswindows_frame_being_created = frame_obj; | 247 Vmswindows_frame_being_created = frame_obj; |
247 { | 248 { |
248 const Extbyte *nameext = 0; | 249 const Extbyte *nameext = 0; |
249 | 250 |
250 if (STRINGP (f->name)) | 251 if (STRINGP (f->name)) |
251 LISP_STRING_TO_TSTR (f->name, nameext); | 252 nameext = LISP_STRING_TO_TSTR (f->name); |
252 else if (STRINGP (name)) | 253 else if (STRINGP (name)) |
253 LISP_STRING_TO_TSTR (name, nameext); | 254 nameext = LISP_STRING_TO_TSTR (name); |
254 else | 255 else |
255 nameext = XETEXT (XEMACS_CLASS); | 256 nameext = XETEXT (XEMACS_CLASS); |
256 hwnd = qxeCreateWindowEx (exstyle, | 257 hwnd = qxeCreateWindowEx (exstyle, |
257 XETEXT (XEMACS_CLASS), | 258 XETEXT (XEMACS_CLASS), |
258 nameext, | 259 nameext, |
270 STRINGP (name) ? name : | 271 STRINGP (name) ? name : |
271 Qunbound); | 272 Qunbound); |
272 | 273 |
273 FRAME_MSWINDOWS_HANDLE (f) = hwnd; | 274 FRAME_MSWINDOWS_HANDLE (f) = hwnd; |
274 | 275 |
275 qxeSetWindowLong (hwnd, XWL_FRAMEOBJ, (LONG)LISP_TO_VOID (frame_obj)); | 276 qxeSetWindowLong (hwnd, XWL_FRAMEOBJ, (LONG)STORE_LISP_IN_VOID (frame_obj)); |
276 FRAME_MSWINDOWS_DC (f) = GetDC (hwnd); | 277 FRAME_MSWINDOWS_DC (f) = GetDC (hwnd); |
277 SetTextAlign (FRAME_MSWINDOWS_DC (f), TA_BASELINE | TA_LEFT | TA_NOUPDATECP); | 278 SetTextAlign (FRAME_MSWINDOWS_DC (f), TA_BASELINE | TA_LEFT | TA_NOUPDATECP); |
278 | 279 |
279 #ifdef HAVE_DIALOGS | 280 #ifdef HAVE_DIALOGS |
280 if (FRAME_MSWINDOWS_POPUP (f)) | 281 if (FRAME_MSWINDOWS_POPUP (f)) |
359 mswindows_unregister_popup_frame (wrap_frame (f)); | 360 mswindows_unregister_popup_frame (wrap_frame (f)); |
360 #endif | 361 #endif |
361 ReleaseDC (FRAME_MSWINDOWS_HANDLE (f), FRAME_MSWINDOWS_DC (f)); | 362 ReleaseDC (FRAME_MSWINDOWS_HANDLE (f), FRAME_MSWINDOWS_DC (f)); |
362 DestroyWindow (FRAME_MSWINDOWS_HANDLE (f)); | 363 DestroyWindow (FRAME_MSWINDOWS_HANDLE (f)); |
363 #ifndef NEW_GC | 364 #ifndef NEW_GC |
364 xfree (f->frame_data, void *); | 365 xfree (f->frame_data); |
365 #endif /* not NEW_GC */ | 366 #endif /* not NEW_GC */ |
366 } | 367 } |
367 f->frame_data = 0; | 368 f->frame_data = 0; |
368 } | 369 } |
369 | 370 |
550 if (!mswindows_window_is_xemacs (hwnd)) | 551 if (!mswindows_window_is_xemacs (hwnd)) |
551 return 0; | 552 return 0; |
552 | 553 |
553 /* Yippie! */ | 554 /* Yippie! */ |
554 ScreenToClient (hwnd, &pt); | 555 ScreenToClient (hwnd, &pt); |
555 *frame = VOID_TO_LISP ((void *) qxeGetWindowLong (hwnd, XWL_FRAMEOBJ)); | 556 *frame = GET_LISP_FROM_VOID ((void *) qxeGetWindowLong (hwnd, XWL_FRAMEOBJ)); |
556 *x = pt.x; | 557 *x = pt.x; |
557 *y = pt.y; | 558 *y = pt.y; |
558 return 1; | 559 return 1; |
559 } | 560 } |
560 | 561 |
590 if (new_checksum != FRAME_MSWINDOWS_TITLE_CHECKSUM (f)) | 591 if (new_checksum != FRAME_MSWINDOWS_TITLE_CHECKSUM (f)) |
591 { | 592 { |
592 Extbyte *title_ext; | 593 Extbyte *title_ext; |
593 | 594 |
594 FRAME_MSWINDOWS_TITLE_CHECKSUM (f) = new_checksum; | 595 FRAME_MSWINDOWS_TITLE_CHECKSUM (f) = new_checksum; |
595 C_STRING_TO_TSTR (title, title_ext); | 596 title_ext = ITEXT_TO_TSTR (title); |
596 qxeSetWindowText (FRAME_MSWINDOWS_HANDLE (f), title_ext); | 597 qxeSetWindowText (FRAME_MSWINDOWS_HANDLE (f), title_ext); |
597 } | 598 } |
598 } | 599 } |
599 | 600 |
600 static Lisp_Object | 601 static Lisp_Object |
602 { | 603 { |
603 Ibyte str[255]; | 604 Ibyte str[255]; |
604 struct frame *f = decode_mswindows_frame (frame); | 605 struct frame *f = decode_mswindows_frame (frame); |
605 | 606 |
606 qxesprintf (str, "%lu", (unsigned long) FRAME_MSWINDOWS_HANDLE (f)); | 607 qxesprintf (str, "%lu", (unsigned long) FRAME_MSWINDOWS_HANDLE (f)); |
607 return build_intstring (str); | 608 return build_istring (str); |
608 } | 609 } |
609 | 610 |
610 static Lisp_Object | 611 static Lisp_Object |
611 mswindows_frame_property (struct frame *f, Lisp_Object property) | 612 mswindows_frame_property (struct frame *f, Lisp_Object property) |
612 { | 613 { |
818 HWND hwnd = FRAME_MSWINDOWS_HANDLE (f); | 819 HWND hwnd = FRAME_MSWINDOWS_HANDLE (f); |
819 hwnd = GetParent (hwnd); | 820 hwnd = GetParent (hwnd); |
820 if (hwnd) | 821 if (hwnd) |
821 { | 822 { |
822 Lisp_Object parent; | 823 Lisp_Object parent; |
823 parent = VOID_TO_LISP ((void *) qxeGetWindowLong (hwnd, XWL_FRAMEOBJ)); | 824 parent = GET_LISP_FROM_VOID ((void *) qxeGetWindowLong (hwnd, XWL_FRAMEOBJ)); |
824 assert (FRAME_MSWINDOWS_P (XFRAME (parent))); | 825 assert (FRAME_MSWINDOWS_P (XFRAME (parent))); |
825 return parent; | 826 return parent; |
826 } | 827 } |
827 else | 828 else |
828 return Qnil; | 829 return Qnil; |
993 di.cbSize = sizeof (di); | 994 di.cbSize = sizeof (di); |
994 { | 995 { |
995 const Extbyte *nameext; | 996 const Extbyte *nameext; |
996 | 997 |
997 if (STRINGP (f->name)) | 998 if (STRINGP (f->name)) |
998 LISP_STRING_TO_TSTR (f->name, nameext); | 999 nameext = LISP_STRING_TO_TSTR (f->name); |
999 else | 1000 else |
1000 nameext = XETEXT ("XEmacs print document"); | 1001 nameext = XETEXT ("XEmacs print document"); |
1001 di.lpszDocName = (XELPTSTR) nameext; | 1002 di.lpszDocName = (XELPTSTR) nameext; |
1002 } | 1003 } |
1003 di.lpszOutput = NULL; | 1004 di.lpszOutput = NULL; |
1028 HDC hdc = DEVICE_MSPRINTER_HDC (XDEVICE (FRAME_DEVICE (f))); | 1029 HDC hdc = DEVICE_MSPRINTER_HDC (XDEVICE (FRAME_DEVICE (f))); |
1029 if (FRAME_MSPRINTER_PAGE_STARTED (f)) | 1030 if (FRAME_MSPRINTER_PAGE_STARTED (f)) |
1030 EndPage (hdc); | 1031 EndPage (hdc); |
1031 if (FRAME_MSPRINTER_JOB_STARTED (f)) | 1032 if (FRAME_MSPRINTER_JOB_STARTED (f)) |
1032 EndDoc (hdc); | 1033 EndDoc (hdc); |
1033 xfree (f->frame_data, void *); | 1034 xfree (f->frame_data); |
1034 } | 1035 } |
1035 | 1036 |
1036 f->frame_data = 0; | 1037 f->frame_data = 0; |
1037 } | 1038 } |
1038 | 1039 |