X-Git-Url: http://git.chise.org/gitweb/?p=chise%2Fxemacs-chise.git.1;a=blobdiff_plain;f=src%2Fframe-msw.c;h=653f53f46caed1b4d4ca1f3e2ee76170c29d0573;hp=3325da7acd9d283f54589f7becc7933bac636373;hb=d3dd71489ab2730d79536ebdc3c56cca82766e9d;hpb=35adcaaeafb1fe93eaf00c39b48619e8f188ff3f diff --git a/src/frame-msw.c b/src/frame-msw.c index 3325da7..653f53f 100644 --- a/src/frame-msw.c +++ b/src/frame-msw.c @@ -33,6 +33,7 @@ Boston, MA 02111-1307, USA. */ #include "lisp.h" #include "buffer.h" +#include "elhash.h" #include "console-msw.h" #include "glyphs-msw.h" #include "elhash.h" @@ -129,10 +130,12 @@ mswindows_init_frame_1 (struct frame *f, Lisp_Object props) FRAME_MSWINDOWS_DATA(f)->sizing = 0; FRAME_MSWINDOWS_MENU_HASH_TABLE(f) = Qnil; #ifdef HAVE_TOOLBARS - FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE(f) = + FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE(f) = make_lisp_hash_table (50, HASH_TABLE_NON_WEAK, HASH_TABLE_EQUAL); #endif - + /* hashtable of instantiated glyphs on the frame. */ + FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f) = + make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQUAL); /* Will initialize these in WM_SIZE handler. We cannot do it now, because we do not know what is CW_USEDEFAULT height and width */ FRAME_WIDTH (f) = 0; @@ -178,7 +181,9 @@ mswindows_init_frame_1 (struct frame *f, Lisp_Object props) hwnd = CreateWindowEx (exstyle, XEMACS_CLASS, STRINGP(f->name) ? XSTRING_DATA(f->name) : - (STRINGP(name) ? XSTRING_DATA(name) : XEMACS_CLASS), + (STRINGP(name) ? + (CONST Extbyte*)XSTRING_DATA(name) : + (CONST Extbyte*)XEMACS_CLASS), style, rect_default.left, rect_default.top, rect_default.width, rect_default.height, @@ -249,6 +254,7 @@ mswindows_mark_frame (struct frame *f, void (*markobj) (Lisp_Object)) #ifdef HAVE_TOOLBARS markobj (FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE (f)); #endif + markobj (FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f)); } static void @@ -305,7 +311,7 @@ mswindows_make_frame_visible (struct frame *f) if (f->iconified) ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_RESTORE); else - ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOWNORMAL); + ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOW); f->visible = 1; f->iconified = 0; } @@ -394,6 +400,10 @@ mswindows_set_frame_pointer (struct frame *f) { SetClassLong (FRAME_MSWINDOWS_HANDLE (f), GCL_HCURSOR, (LONG) XIMAGE_INSTANCE_MSWINDOWS_ICON (f->pointer)); + /* we only have to do this because GC doesn't cause a mouse + event and doesn't give time to event processing even if it + did. */ + SetCursor (XIMAGE_INSTANCE_MSWINDOWS_ICON (f->pointer)); } } @@ -453,7 +463,6 @@ static void mswindows_raise_frame (struct frame *f) { BringWindowToTop (FRAME_MSWINDOWS_HANDLE(f)); - /* XXX Should we do SetWindowForeground too ? */ } static void