]> git.pld-linux.org Git - packages/dosemu.git/commitdiff
- initial revision
authorpascalek <pascalek@pld-linux.org>
Wed, 30 Jan 2008 11:23:44 +0000 (11:23 +0000)
committercvs2git <feedback@pld-linux.org>
Sun, 24 Jun 2012 12:13:13 +0000 (12:13 +0000)
Changed files:
    dosemu-Xquit.patch -> 1.1

dosemu-Xquit.patch [new file with mode: 0644]

diff --git a/dosemu-Xquit.patch b/dosemu-Xquit.patch
new file mode 100644 (file)
index 0000000..30fc6cc
--- /dev/null
@@ -0,0 +1,114 @@
+diff -Nur dosemu-1.4.0.orig/src/plugin/X/X.c dosemu-1.4.0.chng/src/plugin/X/X.c
+--- dosemu-1.4.0.orig/src/plugin/X/X.c 2007-05-04 07:59:48.000000000 +0200
++++ dosemu-1.4.0.chng/src/plugin/X/X.c 2008-01-30 12:09:47.000000000 +0100
+@@ -383,6 +383,9 @@
+ static Atom comm_atom = None;
+ static Boolean kdos_client = FALSE;           /* started by kdos */
++static Boolean about_to_quit = FALSE;
++extern struct text_system Text_X;
++void (*Draw_cursor_backup)(int x, int y, Bit8u attr, int first, int last, Boolean focus);
+ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
+@@ -1434,6 +1437,7 @@
+         
+       case FocusIn:
+         X_printf("X: focus in\n");
++        if (about_to_quit) break;
+         if (vga.mode_class == TEXT) text_gain_focus();
+         if (config.X_background_pause && !dosemu_user_froze) unfreeze_dosemu ();
+         have_focus = TRUE;
+@@ -1441,6 +1445,7 @@
+       case FocusOut:
+         X_printf("X: focus out\n");
++        if (about_to_quit) break;
+         if (mainwindow == fullscreenwindow) break;
+         if (vga.mode_class == TEXT) text_lose_focus();
+         output_byte_8042(port60_buffer | 0x80);
+@@ -1458,9 +1463,36 @@
+          * atom, it means the window manager wants us to die.
+          */
+         if(e.xclient.message_type == proto_atom && *e.xclient.data.l == delete_atom) {
++          int i;
++
+           X_printf("X: got window delete message\n");
+-          /* XXX - Is it ok to call this from a SIGALRM handler? */
+-          leavedos(0);
++
++          if (about_to_quit)
++              break;
++
++          about_to_quit = TRUE;
++          Draw_cursor_backup = Text_X.Draw_cursor;
++          Text_X.Draw_cursor = NULL;
++          freeze_dosemu();
++
++            for (i = 0; i < 12; i++)
++              Text_X.Draw_string(14, i+6, "                                                    " , 52, 0xf0);
++
++          Text_X.Draw_string(15,  7, "                                                  " , 50, 0x4f);
++          Text_X.Draw_string(15,  8, " You are about to abort DosEmu session.           " , 50, 0x4f);
++          Text_X.Draw_string(15,  9, " This is not recomended way for closing DosEmu.   " , 50, 0x4f);
++          Text_X.Draw_string(15, 10, " Close all your programs and use exitemu command. " , 50, 0x4f);
++          Text_X.Draw_string(15, 11, "                                                  " , 50, 0x4f);
++          Text_X.Draw_string(15, 12, " Do you still want to continue?                   " , 50, 0x4f);
++          Text_X.Draw_string(15, 13, "                                                  " , 50, 0x4f);
++          Text_X.Draw_string(15, 14, "   Y - abort DosEmu session                       " , 50, 0x4f);
++          Text_X.Draw_string(15, 15, "   N - continue DosEmu session                    " , 50, 0x4f);
++          Text_X.Draw_string(15, 16, "                                                  " , 50, 0x4f);
++          
++          Text_X.Draw_string(48, 10, "exitemu" , 7, 0x4a);
++          Text_X.Draw_string(18, 14, "Y" , 1, 0x4e);
++          Text_X.Draw_string(18, 15, "N" , 1, 0x4e);
++          
+           break;
+         }
+@@ -1490,6 +1522,24 @@
+           keyrel_pending = 0;
+         }
++          if (about_to_quit) {
++              KeySym keysym = XKeycodeToKeysym(display, e.xkey.keycode, 0);
++              if (keysym == XK_Y || keysym == XK_y) {
++                 leavedos(0);
++              } else if (keysym == XK_N || keysym == XK_n) {
++                  about_to_quit = FALSE;
++                  Text_X.Draw_cursor = Draw_cursor_backup;
++                  if(vga.mode_class == TEXT) {
++                      X_redraw_text_screen();
++                  } else {
++                      dirty_all_video_pages();
++                      X_update_screen();
++                  }
++                  unfreeze_dosemu();
++              }
++              break;
++          }
++
+           if((e.xkey.state & ControlMask) && (e.xkey.state & Mod1Mask)) {
+             KeySym keysym = XKeycodeToKeysym(display, e.xkey.keycode, 0);
+             if (keysym == grab_keysym) {
+@@ -1504,6 +1554,7 @@
+               break;
+             }
+           }
++          
+ /* 
+       Clears the visible selection if the cursor is inside the selection
+ */
+diff -Nur dosemu-1.4.0.orig/src/plugin/X/X_font.c dosemu-1.4.0.chng/src/plugin/X/X_font.c
+--- dosemu-1.4.0.orig/src/plugin/X/X_font.c    2007-05-04 07:59:48.000000000 +0200
++++ dosemu-1.4.0.chng/src/plugin/X/X_font.c    2008-01-30 10:04:00.000000000 +0100
+@@ -195,8 +195,7 @@
+   text_colors[i] = xc.pixel;
+ }
+-
+-static struct text_system Text_X =
++struct text_system Text_X =
+ {
+    X_draw_string, 
+    X_draw_line,
This page took 0.078153 seconds and 4 git commands to generate.