update.
[chise/xemacs-chise.git.1] / src / gui-msw.c
index 503c631..dd858d0 100644 (file)
@@ -50,6 +50,11 @@ mswindows_handle_gui_wm_command (struct frame* f, HWND ctrl, LPARAM id)
 
   image_instance = Fgethash (make_int (id), 
                             FRAME_MSWINDOWS_WIDGET_HASH_TABLE1 (f), Qnil);
+  /* It is possible for a widget action to cause it to get out of sync
+     with its instantiator. Thus it is necessary to signal this
+     possibility. */
+  if (IMAGE_INSTANCEP (image_instance))
+    XIMAGE_INSTANCE_WIDGET_ACTION_OCCURRED (image_instance) = 1;
   callback = Fgethash (make_int (id), 
                       FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f), Qnil);
   callback_ex = Fgethash (make_int (id), 
@@ -89,98 +94,7 @@ mswindows_handle_gui_wm_command (struct frame* f, HWND ctrl, LPARAM id)
   return Qt;
 }
 
-DEFUN ("mswindows-shell-execute", Fmswindows_shell_execute, 2, 4, 0, /*
-Get Windows to perform OPERATION on DOCUMENT.
-This is a wrapper around the ShellExecute system function, which
-invokes the application registered to handle OPERATION for DOCUMENT.
-OPERATION is typically \"open\", \"print\" or \"explore\" (but can be
-nil for the default action), and DOCUMENT is typically the name of a
-document file or URL, but can also be a program executable to run or
-a directory to open in the Windows Explorer.
-
-If DOCUMENT is a program executable, PARAMETERS can be a string
-containing command line parameters, but otherwise should be nil.
-
-SHOW-FLAG can be used to control whether the invoked application is hidden
-or minimized.  If SHOW-FLAG is nil, the application is displayed normally,
-otherwise it is an integer representing a ShowWindow flag:
-
-  0 - start hidden
-  1 - start normally
-  3 - start maximized
-  6 - start minimized
-*/
-       (operation, document, parameters, show_flag))
-{
-  /* Encode filename and current directory.  */
-  Lisp_Object current_dir = Ffile_name_directory (document);
-  char* path = NULL;
-  char* doc = NULL;
-  Extbyte* f=0;
-  int ret;
-  struct gcpro gcpro1, gcpro2;
-
-  CHECK_STRING (document);
-
-  if (NILP (current_dir))
-    current_dir = current_buffer->directory;
-
-  GCPRO2 (current_dir, document);
-
-  /* Use mule and cygwin-safe APIs top get at file data. */
-  if (STRINGP (current_dir))
-    {
-      TO_EXTERNAL_FORMAT (LISP_STRING, current_dir,
-                         C_STRING_ALLOCA, f,
-                         Qfile_name);
-#ifdef __CYGWIN32__
-      CYGWIN_WIN32_PATH (f, path);
-#else
-      path = f;
-#endif
-    }
-
-  if (STRINGP (document))
-    {
-      TO_EXTERNAL_FORMAT (LISP_STRING, document,
-                         C_STRING_ALLOCA, f,
-                         Qfile_name);
-#ifdef __CYGWIN32__
-      CYGWIN_WIN32_PATH (f, doc);
-#else
-      doc = f;
-#endif
-    }
-
-  UNGCPRO;
-
-  ret = (int) ShellExecute (NULL,
-                           (STRINGP (operation) ?
-                            XSTRING_DATA (operation) : NULL),
-                           doc, 
-                           (STRINGP (parameters) ?
-                            XSTRING_DATA (parameters) : NULL),
-                           path,
-                           (INTP (show_flag) ?
-                            XINT (show_flag) : SW_SHOWDEFAULT));
-
-  if (ret > 32)
-    return Qt;
-  
-  if (ret == ERROR_FILE_NOT_FOUND)
-    signal_simple_error ("file not found", document);
-  else if (ret == ERROR_PATH_NOT_FOUND)
-    signal_simple_error ("path not found", current_dir);
-  else if (ret == ERROR_BAD_FORMAT)
-    signal_simple_error ("bad executable format", document);
-  else
-    error ("internal error");
-
-  return Qnil;
-}
-
 void
 syms_of_gui_mswindows (void)
 {
-  DEFSUBR (Fmswindows_shell_execute);
 }