]> de.git.xonotic.org Git - xonotic/darkplaces.git/blobdiff - vid_wgl.c
Added strlcat and strlcpy, from OpenBSD. They are smart replacements for strncat...
[xonotic/darkplaces.git] / vid_wgl.c
index 367871328918b44296a8510b082c1aaa31ae8792..31507a422875e509757acd1c20e7aeca177c9bff 100644 (file)
--- a/vid_wgl.c
+++ b/vid_wgl.c
@@ -110,6 +110,26 @@ static qboolean dinput;
 HRESULT (WINAPI *pDirectInputCreate)(HINSTANCE hinst, DWORD dwVersion,
        LPDIRECTINPUT * lplpDirectInput, LPUNKNOWN punkOuter);
 
+// LordHavoc: thanks to backslash for this support for mouse buttons 4 and 5
+/* backslash :: imouse explorer buttons */
+/* These are #ifdefed out for non-Win2K in the February 2001 version of
+   MS's platform SDK, but we need them for compilation. . . */
+#ifndef WM_XBUTTONDOWN
+   #define WM_XBUTTONDOWN      0x020B
+   #define WM_XBUTTONUP      0x020C
+#endif
+#ifndef MK_XBUTTON1
+   #define MK_XBUTTON1         0x0020
+   #define MK_XBUTTON2         0x0040
+// LordHavoc: lets hope this allows more buttons in the future...
+   #define MK_XBUTTON3         0x0080
+   #define MK_XBUTTON4         0x0100
+   #define MK_XBUTTON5         0x0200
+   #define MK_XBUTTON6         0x0400
+   #define MK_XBUTTON7         0x0800
+#endif
+/* :: backslash */
+
 // mouse variables
 int                    mouse_buttons;
 int                    mouse_oldbuttonstate;
@@ -536,6 +556,8 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM  wParam, LPARAM lParam)
                case WM_RBUTTONUP:
                case WM_MBUTTONDOWN:
                case WM_MBUTTONUP:
+               case WM_XBUTTONDOWN:   // backslash :: imouse explorer buttons
+               case WM_XBUTTONUP:      // backslash :: imouse explorer buttons
                case WM_MOUSEMOVE:
                        temp = 0;
 
@@ -548,6 +570,26 @@ LONG WINAPI MainWndProc (HWND hWnd, UINT uMsg, WPARAM  wParam, LPARAM lParam)
                        if (wParam & MK_MBUTTON)
                                temp |= 4;
 
+                       /* backslash :: imouse explorer buttons */
+                       if (wParam & MK_XBUTTON1)
+                               temp |= 8;
+
+                       if (wParam & MK_XBUTTON2)
+                               temp |= 16;
+                       /* :: backslash */
+
+                       // LordHavoc: lets hope this allows more buttons in the future...
+                       if (wParam & MK_XBUTTON3)
+                               temp |= 32;
+                       if (wParam & MK_XBUTTON4)
+                               temp |= 64;
+                       if (wParam & MK_XBUTTON5)
+                               temp |= 128;
+                       if (wParam & MK_XBUTTON6)
+                               temp |= 256;
+                       if (wParam & MK_XBUTTON7)
+                               temp |= 512;
+
                        IN_MouseEvent (temp);
 
                        break;
@@ -622,7 +664,7 @@ static HINSTANCE gldll;
 
 int GL_OpenLibrary(const char *name)
 {
-       Con_Printf("Loading GL driver %s\n", name);
+       Con_Printf("Loading OpenGL driver %s\n", name);
        GL_CloseLibrary();
        if (!(gldll = LoadLibrary(name)))
        {
@@ -757,7 +799,7 @@ int VID_InitMode (int fullscreen, int width, int height, int bpp, int stencil)
 
                vid_isfullscreen = true;
                WindowStyle = WS_POPUP;
-               ExWindowStyle = 0;
+               ExWindowStyle = WS_EX_TOPMOST;
        }
        else
        {
@@ -950,13 +992,13 @@ void VID_Shutdown (void)
        GL_CloseLibrary();
        if (hDC && mainwindow)
                ReleaseDC(mainwindow, hDC);
-       if (vid_isfullscreen)
-               ChangeDisplaySettings (NULL, 0);
-       vid_isfullscreen = false;
        AppActivate(false, false);
        if (mainwindow)
                DestroyWindow(mainwindow);
        mainwindow = 0;
+       if (vid_isfullscreen)
+               ChangeDisplaySettings (NULL, 0);
+       vid_isfullscreen = false;
 }
 
 
@@ -1216,7 +1258,7 @@ void IN_StartupMouse (void)
                }
        }
 
-       mouse_buttons = 3;
+       mouse_buttons = 10;
 
 // if a fullscreen video mode was set before the mouse was initialized,
 // set the mouse state appropriately