From 951f02acf340e8cb67e37d466b26f712e674b6fa Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Fri, 16 Aug 2013 17:48:11 +0200 Subject: [PATCH 01/25] Fixed keypad 5 release events. --- README.md | 2 ++ src/x11_init.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 711b9cda..73230463 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,7 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). the window frame on some WMs - [X11] Bugfix: The original video mode of a monitor was overwritten by calls to `glfwSetWindowSize` + - [X11] Bugfix: Key release events for `GLFW_KEY_KP_5` were discarded. ## Contact @@ -264,6 +265,7 @@ skills. - John Bartholomew - Niklas Behrens - Niklas Bergström + - Doug Binks - blanco - Lambert Clara - Noel Cower diff --git a/src/x11_init.c b/src/x11_init.c index 1c28e5f3..3d94ff5e 100644 --- a/src/x11_init.c +++ b/src/x11_init.c @@ -48,7 +48,7 @@ static int translateKey(int keyCode) // Note: This way we always force "NumLock = ON", which is intentional // since the returned key code should correspond to a physical // location. - keySym = XkbKeycodeToKeysym(_glfw.x11.display, keyCode, 1, 0); + keySym = XkbKeycodeToKeysym(_glfw.x11.display, keyCode, 0, 1); switch (keySym) { case XK_KP_0: return GLFW_KEY_KP_0; From 9c20737b60037dbbda5552a45b5af9e1314cc701 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Mon, 19 Aug 2013 13:08:35 +0200 Subject: [PATCH 02/25] Allowed characters regardless of modifier keys. --- README.md | 1 + src/cocoa_window.m | 3 --- src/win32_window.c | 1 + src/x11_window.c | 9 +++------ 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 73230463..420a84fc 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,7 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). ## Changelog + - Allowed character callback to be triggered regardless of modifier keys - Bugfix: The `-Wall` flag was not used with Clang and other GCC compatibles - Bugfix: The default for `GLFW_ALPHA_BITS` was set to zero - [Win32] Added `_GLFW_USE_DWM_SWAP_INTERVAL` for forcing the swap interval diff --git a/src/cocoa_window.m b/src/cocoa_window.m index 4a2c0c35..6bdba4bb 100644 --- a/src/cocoa_window.m +++ b/src/cocoa_window.m @@ -566,9 +566,6 @@ static int translateKey(unsigned int key) const int mods = translateFlags([event modifierFlags]); _glfwInputKey(window, key, [event keyCode], GLFW_PRESS, mods); - if (mods & GLFW_MOD_SUPER) - return; - NSString* characters = [event characters]; NSUInteger i, length = [characters length]; diff --git a/src/win32_window.c b/src/win32_window.c index 7b1ce655..139e661d 100644 --- a/src/win32_window.c +++ b/src/win32_window.c @@ -480,6 +480,7 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg, } case WM_CHAR: + case WM_SYSCHAR: { _glfwInputChar(window, (unsigned int) wParam); return 0; diff --git a/src/x11_window.c b/src/x11_window.c index 9b3791c2..33c4b8e4 100644 --- a/src/x11_window.c +++ b/src/x11_window.c @@ -513,15 +513,12 @@ static void processEvent(XEvent *event) { const int key = translateKey(event->xkey.keycode); const int mods = translateState(event->xkey.state); + const int character = translateChar(&event->xkey); _glfwInputKey(window, key, event->xkey.keycode, GLFW_PRESS, mods); - if (!(mods & GLFW_MOD_CONTROL) && !(mods & GLFW_MOD_ALT)) - { - const int character = translateChar(&event->xkey); - if (character != -1) - _glfwInputChar(window, character); - } + if (character != -1) + _glfwInputChar(window, character); break; } From 71c07feffd57da345808be68fce1421c302f3d6e Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Tue, 20 Aug 2013 12:46:32 +0200 Subject: [PATCH 03/25] Added description of 3.0.2 release. --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 420a84fc..a8dabe9d 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,9 @@ GLFW is a free, Open Source, portable library for OpenGL and OpenGL ES application development. It provides a simple, platform-independent API for creating windows and contexts, reading input, handling events, etc. -Version 3.0.2 is *not yet described*. As this is a patch release, there are no -API changes. +Version 3.0.2 adds support for OpenGL 4 on and precise scrolling deltas on OS +X and fixes for a number of bugs affecting all supported platforms. As this is +a patch release, there are no API changes. If you are new to GLFW, you may find the [introductory tutorial](http://www.glfw.org/docs/latest/quick.html) for GLFW From 83f57ff0ce7f06d22e5e2f8b585517a67083fa72 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Wed, 21 Aug 2013 10:14:16 +0200 Subject: [PATCH 04/25] Fixed potential segfault on init. --- README.md | 2 ++ src/init.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a8dabe9d..c4edca42 100644 --- a/README.md +++ b/README.md @@ -208,6 +208,8 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). - Allowed character callback to be triggered regardless of modifier keys - Bugfix: The `-Wall` flag was not used with Clang and other GCC compatibles - Bugfix: The default for `GLFW_ALPHA_BITS` was set to zero + - Bugfix: `glfwInit` would segfault if monitor enumeration failed and no error + callback was set - [Win32] Added `_GLFW_USE_DWM_SWAP_INTERVAL` for forcing the swap interval to be set even when DWM compositing is enabled - [Win32] Added support for forcing the use of the high-performance GPU diff --git a/src/init.c b/src/init.c index 4e334d0e..d34abea7 100644 --- a/src/init.c +++ b/src/init.c @@ -130,7 +130,7 @@ GLFWAPI int glfwInit(void) _glfw.monitors = _glfwPlatformGetMonitors(&_glfw.monitorCount); if (_glfw.monitors == NULL) { - _glfwErrorCallback(GLFW_PLATFORM_ERROR, "No monitors found"); + _glfwInputError(GLFW_PLATFORM_ERROR, "No monitors found"); _glfwPlatformTerminate(); return GL_FALSE; } From f54b4e174d7429695ef30599df8f952fd7067deb Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Wed, 21 Aug 2013 11:56:48 +0200 Subject: [PATCH 05/25] Fixed error code for missing GLES. --- src/glx_context.c | 2 +- src/wgl_context.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/glx_context.c b/src/glx_context.c index f0f7ed06..58c25757 100644 --- a/src/glx_context.c +++ b/src/glx_context.c @@ -386,7 +386,7 @@ int _glfwCreateContext(_GLFWwindow* window, !_glfw.glx.ARB_create_context_profile || !_glfw.glx.EXT_create_context_es2_profile) { - _glfwInputError(GLFW_VERSION_UNAVAILABLE, + _glfwInputError(GLFW_API_UNAVAILABLE, "GLX: OpenGL ES requested but " "GLX_EXT_create_context_es2_profile is unavailable"); return GL_FALSE; diff --git a/src/wgl_context.c b/src/wgl_context.c index 51623de1..ccd7f574 100644 --- a/src/wgl_context.c +++ b/src/wgl_context.c @@ -529,7 +529,7 @@ int _glfwAnalyzeContext(const _GLFWwindow* window, !window->wgl.ARB_create_context_profile || !window->wgl.EXT_create_context_es2_profile) { - _glfwInputError(GLFW_VERSION_UNAVAILABLE, + _glfwInputError(GLFW_API_UNAVAILABLE, "WGL: OpenGL ES requested but " "WGL_ARB_create_context_es2_profile is unavailable"); return _GLFW_RECREATION_IMPOSSIBLE; From 58aef89521f22b8aa389b43037b60b44e959471c Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Sun, 25 Aug 2013 21:40:06 +0200 Subject: [PATCH 06/25] Made release description match website. --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c4edca42..a1204790 100644 --- a/README.md +++ b/README.md @@ -7,8 +7,8 @@ application development. It provides a simple, platform-independent API for creating windows and contexts, reading input, handling events, etc. Version 3.0.2 adds support for OpenGL 4 on and precise scrolling deltas on OS -X and fixes for a number of bugs affecting all supported platforms. As this is -a patch release, there are no API changes. +X and fixes for a number of bugs that together affect all supported platforms. +As this is a patch release, there are no API changes. If you are new to GLFW, you may find the [introductory tutorial](http://www.glfw.org/docs/latest/quick.html) for GLFW From 8c1588b14eacb8dbb7164359fa2f52d3e58945b0 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Mon, 26 Aug 2013 16:22:06 +0200 Subject: [PATCH 07/25] Started 3.0.3. --- CMakeLists.txt | 2 +- README.md | 35 ++--------------------------------- include/GLFW/glfw3.h | 2 +- 3 files changed, 4 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e7983cb..829a6436 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.8) set(GLFW_VERSION_MAJOR "3") set(GLFW_VERSION_MINOR "0") -set(GLFW_VERSION_PATCH "2") +set(GLFW_VERSION_PATCH "3") set(GLFW_VERSION_EXTRA "") set(GLFW_VERSION "${GLFW_VERSION_MAJOR}.${GLFW_VERSION_MINOR}") set(GLFW_VERSION_FULL "${GLFW_VERSION}.${GLFW_VERSION_PATCH}${GLFW_VERSION_EXTRA}") diff --git a/README.md b/README.md index a1204790..8c944af3 100644 --- a/README.md +++ b/README.md @@ -6,9 +6,8 @@ GLFW is a free, Open Source, portable library for OpenGL and OpenGL ES application development. It provides a simple, platform-independent API for creating windows and contexts, reading input, handling events, etc. -Version 3.0.2 adds support for OpenGL 4 on and precise scrolling deltas on OS -X and fixes for a number of bugs that together affect all supported platforms. -As this is a patch release, there are no API changes. +Version 3.0.3 is *not yet described*. As this is a patch release, there are no +API changes. If you are new to GLFW, you may find the [introductory tutorial](http://www.glfw.org/docs/latest/quick.html) for GLFW @@ -205,36 +204,6 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). ## Changelog - - Allowed character callback to be triggered regardless of modifier keys - - Bugfix: The `-Wall` flag was not used with Clang and other GCC compatibles - - Bugfix: The default for `GLFW_ALPHA_BITS` was set to zero - - Bugfix: `glfwInit` would segfault if monitor enumeration failed and no error - callback was set - - [Win32] Added `_GLFW_USE_DWM_SWAP_INTERVAL` for forcing the swap interval - to be set even when DWM compositing is enabled - - [Win32] Added support for forcing the use of the high-performance GPU - on nVidia Optimus systems - - [Win32] Bugfix: The clipboard string was not freed on terminate - - [Win32] Bugfix: Entry points for OpenGL 1.0 and 1.1 functions were not - returned by `glfwGetProcAddress` - - [Win32] Bugfix: The `user32` and `dwmapi` module handles were not freed on - library termination - - [Cocoa] Added support for precise scrolling deltas on OS X 10.7 and later - - [Cocoa] Enabled explicit creation of OpenGL 3.x and 4.x contexts as supported - by OS X 10.9 - - [Cocoa] Bugfix: The clipboard string was not freed on terminate - - [Cocoa] Bugfix: Selectors were used that are not declared by the 10.6 SDK - - [Cocoa] Bugfix: The position set by `glfwSetWindowPos` was incorrect - - [X11] Bugfix: Override-redirect windows were resized to the desired instead - of the actual resolution of the selected video mode - - [X11] Bugfix: Screensaver override for full screen windows had a possible - race condition - - [X11] Bugfix: The reported window position did not account for the size of - the window frame on some WMs - - [X11] Bugfix: The original video mode of a monitor was overwritten by calls - to `glfwSetWindowSize` - - [X11] Bugfix: Key release events for `GLFW_KEY_KP_5` were discarded. - ## Contact diff --git a/include/GLFW/glfw3.h b/include/GLFW/glfw3.h index de2798b9..7e6ebdce 100644 --- a/include/GLFW/glfw3.h +++ b/include/GLFW/glfw3.h @@ -228,7 +228,7 @@ extern "C" { * API changes. * @ingroup init */ -#define GLFW_VERSION_REVISION 2 +#define GLFW_VERSION_REVISION 3 /*! @} */ /*! @name Key and button actions From 124bc392ab4cba3d9d0bec2f02a81147aaa9e1de Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Mon, 26 Aug 2013 20:18:03 +0200 Subject: [PATCH 08/25] Removed stale comment. --- src/nsgl_context.m | 1 - 1 file changed, 1 deletion(-) diff --git a/src/nsgl_context.m b/src/nsgl_context.m index 2c3dcca6..12c3a779 100644 --- a/src/nsgl_context.m +++ b/src/nsgl_context.m @@ -86,7 +86,6 @@ int _glfwCreateContext(_GLFWwindow* window, } #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 - // Fail if any OpenGL version above 2.1 other than 3.2 was requested if (wndconfig->glMajor == 3 && wndconfig->glMinor < 2) { _glfwInputError(GLFW_VERSION_UNAVAILABLE, From 3f747125406ad3f0e5e8d37242a25e7bbd160802 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Mon, 26 Aug 2013 22:48:07 +0200 Subject: [PATCH 09/25] Updated NSGL error tag. --- src/nsgl_context.m | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/nsgl_context.m b/src/nsgl_context.m index 12c3a779..1051fe7d 100644 --- a/src/nsgl_context.m +++ b/src/nsgl_context.m @@ -40,7 +40,7 @@ int _glfwInitContextAPI(void) if (pthread_key_create(&_glfw.nsgl.current, NULL) != 0) { _glfwInputError(GLFW_PLATFORM_ERROR, - "NSOpenGL: Failed to create context TLS"); + "NSGL: Failed to create context TLS"); return GL_FALSE; } @@ -81,7 +81,7 @@ int _glfwCreateContext(_GLFWwindow* window, if (wndconfig->clientAPI == GLFW_OPENGL_ES_API) { _glfwInputError(GLFW_VERSION_UNAVAILABLE, - "NSOpenGL: This API does not support OpenGL ES"); + "NSGL: This API does not support OpenGL ES"); return GL_FALSE; } @@ -89,7 +89,7 @@ int _glfwCreateContext(_GLFWwindow* window, if (wndconfig->glMajor == 3 && wndconfig->glMinor < 2) { _glfwInputError(GLFW_VERSION_UNAVAILABLE, - "NSOpenGL: The targeted version of OS X does not " + "NSGL: The targeted version of OS X does not " "support OpenGL 3.0 or 3.1"); return GL_FALSE; } @@ -99,7 +99,7 @@ int _glfwCreateContext(_GLFWwindow* window, if (!wndconfig->glForward) { _glfwInputError(GLFW_VERSION_UNAVAILABLE, - "NSOpenGL: The targeted version of OS X only " + "NSGL: The targeted version of OS X only " "supports OpenGL 3.2 and later versions if they " "are forward-compatible"); return GL_FALSE; @@ -108,7 +108,7 @@ int _glfwCreateContext(_GLFWwindow* window, if (wndconfig->glProfile != GLFW_OPENGL_CORE_PROFILE) { _glfwInputError(GLFW_VERSION_UNAVAILABLE, - "NSOpenGL: The targeted version of OS X only " + "NSGL: The targeted version of OS X only " "supports OpenGL 3.2 and later versions if they " "use the core profile"); return GL_FALSE; @@ -119,7 +119,7 @@ int _glfwCreateContext(_GLFWwindow* window, if (wndconfig->glMajor > 2) { _glfwInputError(GLFW_VERSION_UNAVAILABLE, - "NSOpenGL: The targeted version of OS X does not " + "NSGL: The targeted version of OS X does not " "support OpenGL version 3.0 or above"); return GL_FALSE; } @@ -129,7 +129,7 @@ int _glfwCreateContext(_GLFWwindow* window, if (wndconfig->glRobustness) { _glfwInputError(GLFW_VERSION_UNAVAILABLE, - "NSOpenGL: OS X does not support OpenGL robustness " + "NSGL: OS X does not support OpenGL robustness " "strategies"); return GL_FALSE; } @@ -190,7 +190,7 @@ int _glfwCreateContext(_GLFWwindow* window, if (window->nsgl.pixelFormat == nil) { _glfwInputError(GLFW_PLATFORM_ERROR, - "NSOpenGL: Failed to create OpenGL pixel format"); + "NSGL: Failed to create OpenGL pixel format"); return GL_FALSE; } @@ -205,7 +205,7 @@ int _glfwCreateContext(_GLFWwindow* window, if (window->nsgl.context == nil) { _glfwInputError(GLFW_PLATFORM_ERROR, - "NSOpenGL: Failed to create OpenGL context"); + "NSGL: Failed to create OpenGL context"); return GL_FALSE; } From d0a0e37b2b2891e22b1eeb49aaf034d2760e59ab Mon Sep 17 00:00:00 2001 From: Systemcluster Date: Thu, 29 Aug 2013 06:15:55 +0200 Subject: [PATCH 10/25] Declared unnamed typedef structs as their types Without defining them as structs it was impossible to forward declare `GLFWgammaramp` and `GLFWvidmode`. --- include/GLFW/glfw3.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/GLFW/glfw3.h b/include/GLFW/glfw3.h index 7e6ebdce..1b93a3eb 100644 --- a/include/GLFW/glfw3.h +++ b/include/GLFW/glfw3.h @@ -793,7 +793,7 @@ typedef void (* GLFWmonitorfun)(GLFWmonitor*,int); * * @ingroup monitor */ -typedef struct +typedef struct GLFWvidmode { /*! The width, in screen coordinates, of the video mode. */ @@ -823,7 +823,7 @@ typedef struct * * @ingroup monitor */ -typedef struct +typedef struct GLFWgammaramp { /*! An array of value describing the response of the red channel. */ From b998d4fe01c98541c9eed8742f6cfcdca6effbe3 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Tue, 3 Sep 2013 13:38:16 +0200 Subject: [PATCH 11/25] Fixed _WIN32_WINNT not being set to Windows XP. --- README.md | 2 ++ src/win32_platform.h | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 8c944af3..0a8854ae 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,8 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). ## Changelog + - [Win32] Bugfix: `_WIN32_WINNT` was not set to Windows XP or later + ## Contact diff --git a/src/win32_platform.h b/src/win32_platform.h index e31abd9d..ba34368e 100644 --- a/src/win32_platform.h +++ b/src/win32_platform.h @@ -52,10 +52,13 @@ #define UNICODE #endif -// GLFW requires Windows XP +// GLFW requires Windows XP or later #ifndef WINVER #define WINVER 0x0501 #endif +#ifndef _WIN32_WINNT + #define _WIN32_WINNT 0x0501 +#endif #include #include From c93b120252f38268efc95890e8fbbb26f6423d55 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Sun, 8 Sep 2013 16:07:34 +0200 Subject: [PATCH 12/25] Disabled stddef.h for GLFW_INCLUDE_NONE, cleanup. --- include/GLFW/glfw3.h | 63 ++++++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 32 deletions(-) diff --git a/include/GLFW/glfw3.h b/include/GLFW/glfw3.h index 1b93a3eb..64d797db 100644 --- a/include/GLFW/glfw3.h +++ b/include/GLFW/glfw3.h @@ -133,10 +133,38 @@ extern "C" { /* Most GL/glu.h variants on Windows need wchar_t * OpenGL/gl.h blocks the definition of ptrdiff_t by glext.h on OS X */ -#include +#if !defined(GLFW_INCLUDE_NONE) + #include +#endif - -/* ---------------- GLFW related system specific defines ----------------- */ +/* Include the chosen client API headers. + */ +#if defined(__APPLE_CC__) + #if defined(GLFW_INCLUDE_GLCOREARB) + #include + #elif !defined(GLFW_INCLUDE_NONE) + #define GL_GLEXT_LEGACY + #include + #endif + #if defined(GLFW_INCLUDE_GLU) + #include + #endif +#else + #if defined(GLFW_INCLUDE_GLCOREARB) + #include + #elif defined(GLFW_INCLUDE_ES1) + #include + #elif defined(GLFW_INCLUDE_ES2) + #include + #elif defined(GLFW_INCLUDE_ES3) + #include + #elif !defined(GLFW_INCLUDE_NONE) + #include + #endif + #if defined(GLFW_INCLUDE_GLU) + #include + #endif +#endif #if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL) /* GLFW_DLL is defined by users of GLFW when compiling programs that will link @@ -173,35 +201,6 @@ extern "C" { /* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */ -/* Include the chosen client API headers. - */ -#if defined(__APPLE_CC__) - #if defined(GLFW_INCLUDE_GLCOREARB) - #include - #elif !defined(GLFW_INCLUDE_NONE) - #define GL_GLEXT_LEGACY - #include - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif -#else - #if defined(GLFW_INCLUDE_GLCOREARB) - #include - #elif defined(GLFW_INCLUDE_ES1) - #include - #elif defined(GLFW_INCLUDE_ES2) - #include - #elif defined(GLFW_INCLUDE_ES3) - #include - #elif !defined(GLFW_INCLUDE_NONE) - #include - #endif - #if defined(GLFW_INCLUDE_GLU) - #include - #endif -#endif - /************************************************************************* * GLFW API tokens From 57b8be1c24e3a832c5709a5d24fed12020f8eb0f Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Sun, 8 Sep 2013 16:08:15 +0200 Subject: [PATCH 13/25] Added support for mouse buttons 4-n. --- README.md | 1 + src/x11_window.c | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/README.md b/README.md index 0a8854ae..f24de6a1 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,7 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). ## Changelog - [Win32] Bugfix: `_WIN32_WINNT` was not set to Windows XP or later + - [X11] Bugfix: Events for mouse buttons 4 and above were not reported ## Contact diff --git a/src/x11_window.c b/src/x11_window.c index 33c4b8e4..f0e872e4 100644 --- a/src/x11_window.c +++ b/src/x11_window.c @@ -553,6 +553,16 @@ static void processEvent(XEvent *event) else if (event->xbutton.button == Button7) _glfwInputScroll(window, 1.0, 0.0); + else + { + // Additional buttons after 7 are treated as regular buttons + // We subtract 4 to fill the gap left by scroll input above + _glfwInputMouseClick(window, + event->xbutton.button - 4, + GLFW_PRESS, + mods); + } + break; } @@ -581,6 +591,15 @@ static void processEvent(XEvent *event) GLFW_RELEASE, mods); } + else if (event->xbutton.button > Button7) + { + // Additional buttons after 7 are treated as regular buttons + // We subtract 4 to fill the gap left by scroll input above + _glfwInputMouseClick(window, + event->xbutton.button - 4, + GLFW_RELEASE, + mods); + } break; } From bb5581690d948500cc0f732ef53802fb0d018a33 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Mon, 9 Sep 2013 23:31:59 +0200 Subject: [PATCH 14/25] Documentation fixes for glfwSetCursorPos. --- include/GLFW/glfw3.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/GLFW/glfw3.h b/include/GLFW/glfw3.h index 64d797db..8b11c2fc 100644 --- a/include/GLFW/glfw3.h +++ b/include/GLFW/glfw3.h @@ -1853,9 +1853,9 @@ GLFWAPI void glfwGetCursorPos(GLFWwindow* window, double* xpos, double* ypos); * * @param[in] window The desired window. * @param[in] xpos The desired x-coordinate, relative to the left edge of the - * client area, or `NULL`. + * client area. * @param[in] ypos The desired y-coordinate, relative to the top edge of the - * client area, or `NULL`. + * client area. * * @sa glfwGetCursorPos * From 6770ae055666af6f8be1142075890d073b115f03 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Fri, 13 Sep 2013 12:22:28 +0200 Subject: [PATCH 15/25] Added workaround for legacy MinGW. When building on legacy MinGW, WINVER and UNICODE need to be defined before the inclusion of stddef.h (by glfw3.h), which is itself included before win32_platform.h. --- CMakeLists.txt | 7 +++++++ README.md | 1 + 2 files changed, 8 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 829a6436..b2a61ab1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -163,6 +163,13 @@ if (_GLFW_WIN32) if (GLFW_USE_OPTIMUS_HPG) set(_GLFW_USE_OPTIMUS_HPG 1) endif() + + # HACK: When building on MinGW, WINVER and UNICODE need to be defined before + # the inclusion of stddef.h (by glfw3.h), which is itself included before + # win32_platform.h. We define them here until a saner solution can be found + # NOTE: MinGW-w64 and Visual C++ do /not/ need this hack. + add_definitions(-DUNICODE) + add_definitions(-DWINVER=0x0501) endif() #-------------------------------------------------------------------- diff --git a/README.md b/README.md index f24de6a1..511f73a5 100644 --- a/README.md +++ b/README.md @@ -205,6 +205,7 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). ## Changelog - [Win32] Bugfix: `_WIN32_WINNT` was not set to Windows XP or later + - [Win32] Bugfix: Legacy MinGW needs `WINVER` and `UNICODE` before `stddef.h` - [X11] Bugfix: Events for mouse buttons 4 and above were not reported From 3415f3ccdef59cec52b3227c2388f2ac8bce8c89 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Fri, 13 Sep 2013 12:27:43 +0200 Subject: [PATCH 16/25] Conditionally define API version macros. --- src/win32_platform.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/win32_platform.h b/src/win32_platform.h index ba34368e..1652ab8c 100644 --- a/src/win32_platform.h +++ b/src/win32_platform.h @@ -53,10 +53,12 @@ #endif // GLFW requires Windows XP or later -#ifndef WINVER +#if WINVER < 0x0501 + #undef WINVER #define WINVER 0x0501 #endif -#ifndef _WIN32_WINNT +#if _WIN32_WINNT < 0x0501 + #undef _WIN32_WINNT #define _WIN32_WINNT 0x0501 #endif From 4ff8095dee25ef506b158cf3c2a338e2820173da Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Fri, 13 Sep 2013 14:41:13 +0200 Subject: [PATCH 17/25] Workaround for libXi and CMake 2.8.7. --- CMakeLists.txt | 8 +++++++- README.md | 2 ++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b2a61ab1..7c9b2c2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -211,7 +211,13 @@ if (_GLFW_X11) endif() list(APPEND glfw_INCLUDE_DIRS ${X11_Xinput_INCLUDE_PATH}) - list(APPEND glfw_LIBRARIES ${X11_Xinput_LIB}) + + if (X11_Xinput_LIB) + list(APPEND glfw_LIBRARIES ${X11_Xinput_LIB}) + else() + # Backwards compatibility (bug in CMake 2.8.7) + list(APPEND glfw_LIBRARIES Xi) + endif() set(GLFW_PKG_DEPS "${GLFW_PKG_DEPS} xi") # Check for Xf86VidMode (fallback gamma control) diff --git a/README.md b/README.md index 511f73a5..c9d60fcc 100644 --- a/README.md +++ b/README.md @@ -207,6 +207,7 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). - [Win32] Bugfix: `_WIN32_WINNT` was not set to Windows XP or later - [Win32] Bugfix: Legacy MinGW needs `WINVER` and `UNICODE` before `stddef.h` - [X11] Bugfix: Events for mouse buttons 4 and above were not reported + - [X11] Bugfix: CMake 2.8.7 does not set `X11_Xinput_LIB` even when found ## Contact @@ -277,6 +278,7 @@ skills. - Bruce Mitchener - Jeff Molofee - Jon Morton + - Pierre Moulon - Julian Møller - Ozzy - Peoro From d69796d9e07831d57ab774766b45855440468495 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Tue, 10 Sep 2013 19:33:32 +0200 Subject: [PATCH 18/25] Updated menu label for minimization. --- src/cocoa_window.m | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cocoa_window.m b/src/cocoa_window.m index 6bdba4bb..a7dbe1db 100644 --- a/src/cocoa_window.m +++ b/src/cocoa_window.m @@ -759,7 +759,7 @@ static void createMenuBar(void) [NSApp setWindowsMenu:windowMenu]; [windowMenuItem setSubmenu:windowMenu]; - [windowMenu addItemWithTitle:@"Miniaturize" + [windowMenu addItemWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; [windowMenu addItemWithTitle:@"Zoom" From 546c794321b70e112324e164b5b8c3c5576bab62 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Thu, 19 Sep 2013 01:05:51 +0200 Subject: [PATCH 19/25] Fixed OS X cursor bugs #3, #72 and #88. --- README.md | 3 ++ src/cocoa_window.m | 72 +++++++++++++++++++--------------------------- 2 files changed, 33 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index c9d60fcc..bd56c176 100644 --- a/README.md +++ b/README.md @@ -206,6 +206,9 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). - [Win32] Bugfix: `_WIN32_WINNT` was not set to Windows XP or later - [Win32] Bugfix: Legacy MinGW needs `WINVER` and `UNICODE` before `stddef.h` + - [Cocoa] Bugfix: Cursor was not visible in normal mode in full screen + - [Cocoa] Bugfix: Cursor was not actually hidden in hidden mode + - [Cocoa] Bugfix: Cursor modes were not applied to inactive windows - [X11] Bugfix: Events for mouse buttons 4 and above were not reported - [X11] Bugfix: CMake 2.8.7 does not set `X11_Xinput_LIB` even when found diff --git a/src/cocoa_window.m b/src/cocoa_window.m index a7dbe1db..b1b324d7 100644 --- a/src/cocoa_window.m +++ b/src/cocoa_window.m @@ -30,6 +30,25 @@ #include +// Center the cursor in the view of the window +// +static void centerCursor(_GLFWwindow *window) +{ + int width, height; + _glfwPlatformGetWindowSize(window, &width, &height); + _glfwPlatformSetCursorPos(window, width / 2.0, height / 2.0); +} + +// Update the cursor to match the specified cursor mode +// +static void setModeCursor(_GLFWwindow* window, int mode) +{ + if (mode == GLFW_CURSOR_NORMAL) + [[NSCursor arrowCursor] set]; + else + [(NSCursor*) _glfw.ns.cursor set]; +} + // Enter fullscreen mode // static void enterFullscreenMode(_GLFWwindow* window) @@ -94,13 +113,6 @@ static NSRect convertRectToBacking(_GLFWwindow* window, NSRect contentRect) @implementation GLFWWindowDelegate -static void centerCursor(_GLFWwindow *window) -{ - int width, height; - _glfwPlatformGetWindowSize(window, &width, &height); - _glfwPlatformSetCursorPos(window, width / 2.0, height / 2.0); -} - - (id)initWithGlfwWindow:(_GLFWwindow *)initWindow { self = [super init]; @@ -159,14 +171,13 @@ static void centerCursor(_GLFWwindow *window) - (void)windowDidBecomeKey:(NSNotification *)notification { _glfwInputWindowFocus(window, GL_TRUE); - - if (window->cursorMode == GLFW_CURSOR_DISABLED) - centerCursor(window); + _glfwPlatformSetCursorMode(window, window->cursorMode); } - (void)windowDidResignKey:(NSNotification *)notification { _glfwInputWindowFocus(window, GL_FALSE); + _glfwPlatformSetCursorMode(window, GLFW_CURSOR_NORMAL); } @end @@ -445,6 +456,11 @@ static int translateKey(unsigned int key) return YES; } +- (void)cursorUpdate:(NSEvent *)event +{ + setModeCursor(window, window->cursorMode); +} + - (void)mouseDown:(NSEvent *)event { _glfwInputMouseClick(window, @@ -548,7 +564,8 @@ static int translateKey(unsigned int key) } NSTrackingAreaOptions options = NSTrackingMouseEnteredAndExited | - NSTrackingActiveAlways | + NSTrackingActiveInKeyWindow | + NSTrackingCursorUpdate | NSTrackingInVisibleRect; trackingArea = [[NSTrackingArea alloc] initWithRect:[self bounds] @@ -625,12 +642,6 @@ static int translateKey(unsigned int key) _glfwInputScroll(window, deltaX, deltaY); } -- (void)resetCursorRects -{ - [self discardCursorRects]; - [self addCursorRect:[self bounds] cursor:_glfw.ns.cursor]; -} - @end @@ -848,7 +859,6 @@ static GLboolean createWindow(_GLFWwindow* window, [window->ns.object setContentView:window->ns.view]; [window->ns.object setDelegate:window->ns.delegate]; [window->ns.object setAcceptsMouseMovedEvents:YES]; - [window->ns.object disableCursorRects]; [window->ns.object center]; #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1070 @@ -1058,37 +1068,15 @@ void _glfwPlatformSetCursorPos(_GLFWwindow* window, double x, double y) void _glfwPlatformSetCursorMode(_GLFWwindow* window, int mode) { - if (mode == GLFW_CURSOR_HIDDEN) - { - [window->ns.object enableCursorRects]; - [window->ns.object invalidateCursorRectsForView:window->ns.view]; - } - else - { - [window->ns.object disableCursorRects]; - [window->ns.object invalidateCursorRectsForView:window->ns.view]; - } + setModeCursor(window, mode); if (mode == GLFW_CURSOR_DISABLED) { CGAssociateMouseAndMouseCursorPosition(false); - - if (!_glfw.ns.cursorHidden) - { - [NSCursor hide]; - _glfw.ns.cursorHidden = GL_TRUE; - } + centerCursor(window); } else - { CGAssociateMouseAndMouseCursorPosition(true); - - if (_glfw.ns.cursorHidden) - { - [NSCursor unhide]; - _glfw.ns.cursorHidden = GL_FALSE; - } - } } From d3f3e2d6c5e8be5b2c486d8ab137cf889e96b7c4 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Thu, 19 Sep 2013 01:12:50 +0200 Subject: [PATCH 20/25] Removed unused flag. --- src/cocoa_platform.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/cocoa_platform.h b/src/cocoa_platform.h index b422e13c..0e92c4a2 100644 --- a/src/cocoa_platform.h +++ b/src/cocoa_platform.h @@ -105,8 +105,6 @@ typedef struct _GLFWlibraryNS id autoreleasePool; id cursor; - GLboolean cursorHidden; - char* clipboardString; _GLFWjoy joysticks[GLFW_JOYSTICK_LAST + 1]; From fd4ea8bc254d76eabe05c5380f419400cb6936a0 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Thu, 19 Sep 2013 14:30:47 +0200 Subject: [PATCH 21/25] Added description of 3.0.3 release. --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bd56c176..326a0260 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,9 @@ GLFW is a free, Open Source, portable library for OpenGL and OpenGL ES application development. It provides a simple, platform-independent API for creating windows and contexts, reading input, handling events, etc. -Version 3.0.3 is *not yet described*. As this is a patch release, there are no -API changes. +Version 3.0.3 adds fixes for a number of bugs that together affect all supported +platforms, most notably MinGW compilation issues and cursor mode issues on OS X. +As this is a patch release, there are no API changes. If you are new to GLFW, you may find the [introductory tutorial](http://www.glfw.org/docs/latest/quick.html) for GLFW From 3af1c411ca72db97734dd4aa46219adeb0c01338 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Thu, 19 Sep 2013 21:37:01 +0200 Subject: [PATCH 22/25] Added notes on swap interval defaults. --- include/GLFW/glfw3.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/include/GLFW/glfw3.h b/include/GLFW/glfw3.h index 8b11c2fc..477fd2c3 100644 --- a/include/GLFW/glfw3.h +++ b/include/GLFW/glfw3.h @@ -1243,6 +1243,10 @@ GLFWAPI void glfwWindowHint(int target, int hint); * information from the application's bundle. For more information on bundles, * see the Bundle Programming Guide provided by Apple. * + * @remarks The swap interval is not set during window creation, but is left at + * the default value for that platform. For more information, see @ref + * glfwSwapInterval. + * * @note This function may only be called from the main thread. * * @sa glfwDestroyWindow @@ -2201,6 +2205,11 @@ GLFWAPI void glfwSwapBuffers(GLFWwindow* window); * * @remarks This function may be called from secondary threads. * + * @note This function is not called during window creation, leaving the swap + * interval set to whatever is the default on that platform. This is done + * because some swap interval extensions used by GLFW do not allow the swap + * interval to be reset to zero once it has been set to a non-zero value. + * * @note Some GPU drivers do not honor the requested swap interval, either * because of user settings that override the request or due to bugs in the * driver. From 6af51e049f243fa0abcc0c94382f4b971cdf4bd0 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Thu, 19 Sep 2013 22:24:03 +0200 Subject: [PATCH 23/25] Added more detailed notes on some CMake options. --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 326a0260..f0f7c541 100644 --- a/README.md +++ b/README.md @@ -168,11 +168,15 @@ directory of bundled applications to the `Contents/Resources` directory. #### Windows specific options `USE_MSVC_RUNTIME_LIBRARY_DLL` determines whether to use the DLL version or the -static library version of the Visual C++ runtime library. +static library version of the Visual C++ runtime library. If set to `ON`, the +DLL version of the Visual C++ library is used. It is recommended to set this to +`ON`, as this keeps the executable smaller and benefits from security and bug +fix updates of the Visual C++ runtime. `GLFW_USE_DWM_SWAP_INTERVAL` determines whether the swap interval is set even -when DWM compositing is enabled. This can lead to severe jitter and is not -usually recommended. +when DWM compositing is enabled. If this is `ON`, the swap interval is set even +if DWM is enabled. It is recommended to set this to `OFF`, as doing otherwise +can lead to severe jitter. `GLFW_USE_OPTIMUS_HPG` determines whether to export the `NvOptimusEnablement` symbol, which forces the use of the high-performance GPU on nVidia Optimus From cca61d752da9376ebcc2e0fe31b12a894b94cec3 Mon Sep 17 00:00:00 2001 From: siavash Date: Sat, 21 Sep 2013 15:14:37 +0430 Subject: [PATCH 24/25] New theme for doxygen generated documentations. --- docs/Doxyfile.in | 6 +- docs/extra.css | 317 +++++++++++++++++++++++++++++++++++++++++++++++ docs/footer.html | 8 ++ docs/header.html | 34 +++++ 4 files changed, 362 insertions(+), 3 deletions(-) create mode 100644 docs/extra.css create mode 100644 docs/footer.html create mode 100644 docs/header.html diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index 7c3c431a..eb547d35 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -899,13 +899,13 @@ HTML_FILE_EXTENSION = .html # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! -HTML_HEADER = +HTML_HEADER = @GLFW_SOURCE_DIR@/docs/header.html # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. -HTML_FOOTER = +HTML_FOOTER = @GLFW_SOURCE_DIR@/docs/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to @@ -924,7 +924,7 @@ HTML_STYLESHEET = # robust against future updates. Doxygen will copy the style sheet file to # the output directory. -HTML_EXTRA_STYLESHEET = +HTML_EXTRA_STYLESHEET = @GLFW_SOURCE_DIR@/docs/extra.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note diff --git a/docs/extra.css b/docs/extra.css new file mode 100644 index 00000000..f50111e8 --- /dev/null +++ b/docs/extra.css @@ -0,0 +1,317 @@ +html { + background-color:hsl(0,0%,95%); +} + +.glfwheader { + font-size:16px; + height:64px; + max-width:920px; + margin:0em auto; +} + +.glfwheader a#glfwhome { + line-height:64px; + padding-right:48pxpx; + float:left; + color:hsl(0,0%,40%); + font-size:2.5em; + background-image:url("http://www.glfw.org/css/arrow.png"); + background-position:right top; + background-repeat:no-repeat; +} + +.glfwnavbar { + list-style-type:none; + margin-top:0px; + float:right; +} + +.glfwnavbar li { + float:left; +} + +.glfwnavbar a,.glfwnavbar a:visited { + line-height:64px; + margin-left:2em; + display:block; + color:hsl(0,0%,40%); +} + +.glfwheader a#glfwhome,.glfwnavbar a,.glfwnavbar a:visited { + transition:all 0.35s ease 0s; +} + +#titlearea,address.footer { + color:hsl(0,0%,40%); + background-color:hsl(0,0%,95%); + border-bottom:none; +} + +address.footer { + text-align:center; + padding:2em; +} + +div#top { + background-color:hsl(0,0%,40%); +} + +div#navrow1,div#navrow2,div#navrow3,div#navrow4 { + background-color:hsl(0,0%,40%); + background-image:none; + max-width:920px; + margin:0em auto; +} + +ul.tablist { + min-width:700px; +} + +.tablist a,.tablist a:hover,.tablist li,.tablist li.current a { + background-image:none; + text-shadow:none; +} + +.tablist a,.tablist a:visited { + color:hsl(0,0%,95%); + text-shadow:none; +} + +.tablist li.current a { + background:linear-gradient(to bottom,hsl(34,100%,60%) 0%,hsl(24,100%,50%) 100%); + box-shadow:inset 0px 0px 32px hsl(24,100%,50%); + text-shadow:0px -1px 1px hsl(24,100%,35%); + color:hsl(0,0%,100%); +} + +div.contents { + min-height:590px; +} + +div.contents,div.header { + max-width:920px; + margin:0em auto; + padding:0em 2em 2em 2em; + background-color:hsl(0,0%,100%); +} + +div.header { + background-image:none; + border-bottom:none; +} + +table.doxtable th,dl.reflist dt,div.levels { + background:linear-gradient(to bottom,hsl(34,100%,60%) 0%,hsl(24,100%,50%) 100%); + box-shadow:inset 0px 0px 32px hsl(24,100%,50%); + text-shadow:0px -1px 1px hsl(24,100%,35%); + color:hsl(0,0%,100%); +} + +dl.reflist dt a.el,div.levels span { + color:hsl(24,100%,50%); + padding:0.2em; + border-radius:4px; + background-color:hsl(24,100%,90%); + text-shadow:none; +} + +div.memproto,div.qindex,div.ah { + background:linear-gradient(to bottom,hsl(34,0%,95%) 0%,hsl(24,0%,90%) 100%); + box-shadow:inset 0px 0px 32px hsl(24,0%,90%); + text-shadow:0px 1px 1px hsl(24,0%,100%); + color:hsl(0,0%,10%); +} + +div.memproto a { + color:hsl(24,100%,50%); +} + +div.memproto td.paramname { + text-shadow:0px 1px 1px hsl(24,0%,100%); +} + +div.memproto,div.qindex,div.ah { + border:2px solid hsl(24,0%,90%); + border-radius:4px; +} + +div.memdoc { + background:none; + box-shadow:none; + border:none; +} + +td.paramname { + color:hsl(24,100%,25%); +} + +dl.reflist dt { + border:2px solid hsl(24,100%,50%); + border-top-left-radius:4px; + border-top-right-radius:4px; + border-bottom:none; +} + +dl.reflist dd { + border:2px solid hsl(24,100%,50%); + border-bottom-right-radius:4px; + border-bottom-left-radius:4px; + border-top:none; + background:none; + box-shadow:none; +} + +table.doxtable { + border-collapse:inherit; + border-spacing:0px; + border:2px solid hsl(24,100%,50%); + border-radius:4px; +} + +table.doxtable td,table.doxtable th { + border:none; +} + +tr.even,.directory tr.even,table.doxtable tr:nth-child(even) { + background-color:hsl(0,0%,95%); +} + +body { + color:hsl(0,0%,30%); +} + +h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em { + color:hsl(0,0%,10%); + border-bottom:none; +} + +a,a:hover,a:visited,a:visited:hover,a.el,a.el:visited,.glfwheader a#glfwhome:hover,.tablist a:hover { + color:hsl(24,100%,50%); + text-decoration:none; +} + +.mdescLeft,.mdescRight,.memItemLeft,.memItemRight { + background-color:hsl(0,0%,95%); +} + +div.directory { + border-collapse:inherit; + border-spacing:0px; + border:2px solid hsl(24,100%,50%); + border-radius:4px; +} + +.directory .levels span { + color:hsl(24,100%,50%); + padding:0.1em 0.5em; + margin:auto 0.25em; + border-radius:2px; + background-color:hsl(24,100%,90%); + text-shadow:none; +} + +td.memSeparator { + height:2px; + border:0px; + background:linear-gradient(to right,hsl(0,0%,95%) 0%,hsl(0,0%,85%) 50%,hsl(0,0%,95%) 100%); +} + +hr.footer { + height:0px; + border:0px; +} + +dl.note,dl.pre,dl.post,dl.invariant { + background:linear-gradient(to bottom,hsl(103,80%,90%) 0%,hsl(103,80%,85%) 100%); + box-shadow:inset 0px 0px 32px hsl(103,40%,80%); + color:hsl(103,80%,10%); + border:2px solid hsl(103,40%,75%); +} + +dl.warning,dl.attention { + background:linear-gradient(to bottom,hsl(34,80%,90%) 0%,hsl(34,80%,85%) 100%); + box-shadow:inset 0px 0px 32px hsl(34,40%,80%); + color:hsl(34,80%,10%); + border:2px solid hsl(34,40%,75%); +} + +dl.deprecated,dl.bug { + background:linear-gradient(to bottom,hsl(333,80%,90%) 0%,hsl(333,80%,85%) 100%); + box-shadow:inset 0px 0px 32px hsl(333,40%,80%); + color:hsl(333,80%,10%); + border:2px solid hsl(333,40%,75%); +} + +dl.todo,dl.test { + background:linear-gradient(to bottom,hsl(200,80%,90%) 0%,hsl(200,80%,85%) 100%); + box-shadow:inset 0px 0px 32px hsl(200,40%,80%); + color:hsl(200,80%,10%); + border:2px solid hsl(200,40%,75%); +} + +dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test { + border-radius:4px; + padding:1em; + text-shadow:0px 1px 1px hsl(0,0%,100%); +} + +div.toc { + background:linear-gradient(to bottom,hsl(34,0%,95%) 0%,hsl(24,0%,90%) 100%); + box-shadow:inset 0px 0px 32px hsl(24,0%,90%); + text-shadow:0px 1px 1px hsl(24,0%,100%); + color:hsl(0,0%,10%); + border:2px solid hsl(24,0%,90%); + border-radius:4px; + float:none; + width:auto; +} + +div.toc h3 { + font-size:1.17em; +} + +div.toc ul { + padding-left:1.5em; +} + +div.toc li { + background:none; + font-size:1em; + padding-left:0em; + list-style-type:disc; +} + +div.ah { + background-image:none; +} + +div.fragment,pre.fragment { + background-color:hsl(0,0%,20%); + border-radius:4px; + border-width:0px; + padding:0.5em 2em; + overflow:auto; + border-left:4px solid hsl(0,0%,80%); +} + +div.line,pre.fragment { + color:hsl(60,30%,96%); +} + +a.code,a.code:visited,span.preprocessor,span.comment { + color:hsl(80,76%,53%); +} + +span.keyword,span.keywordtype,span.keywordflow { + color:hsl(190,81%,67%); +} + +span.stringliteral { + color:hsl(54,70%,68%); +} + +code { + background-color:hsl(0,0%,95%); + padding:0.1em; + border-radius: 4px; +} diff --git a/docs/footer.html b/docs/footer.html new file mode 100644 index 00000000..c8403f34 --- /dev/null +++ b/docs/footer.html @@ -0,0 +1,8 @@ + + + + diff --git a/docs/header.html b/docs/header.html new file mode 100644 index 00000000..54dbb104 --- /dev/null +++ b/docs/header.html @@ -0,0 +1,34 @@ + + + + + + +$projectname: $title +$title + + + +$treeview +$search +$mathjax + +$extrastylesheet + + +
+ + + + + From 96c5aea3ba7f47412f60dc27a2a022d052d7ce95 Mon Sep 17 00:00:00 2001 From: siavash Date: Sat, 21 Sep 2013 15:18:49 +0430 Subject: [PATCH 25/25] Removed invisible element. --- docs/extra.css | 5 ----- docs/footer.html | 1 - 2 files changed, 6 deletions(-) diff --git a/docs/extra.css b/docs/extra.css index f50111e8..6d0dde1c 100644 --- a/docs/extra.css +++ b/docs/extra.css @@ -216,11 +216,6 @@ td.memSeparator { background:linear-gradient(to right,hsl(0,0%,95%) 0%,hsl(0,0%,85%) 50%,hsl(0,0%,95%) 100%); } -hr.footer { - height:0px; - border:0px; -} - dl.note,dl.pre,dl.post,dl.invariant { background:linear-gradient(to bottom,hsl(103,80%,90%) 0%,hsl(103,80%,85%) 100%); box-shadow:inset 0px 0px 32px hsl(103,40%,80%); diff --git a/docs/footer.html b/docs/footer.html index c8403f34..b0434ca1 100644 --- a/docs/footer.html +++ b/docs/footer.html @@ -1,4 +1,3 @@ -