Index: source/gui/CGUI.cpp =================================================================== --- source/gui/CGUI.cpp +++ source/gui/CGUI.cpp @@ -159,6 +159,11 @@ ret = pNearest->SendEvent(GUIM_MOUSE_PRESS_RIGHT, "mouserightpress"); break; + case SDL_BUTTON_MIDDLE: + if (pNearest) + ret = pNearest->SendEvent(GUIM_MOUSE_PRESS_MIDDLE, "mousemiddlepress"); + break; + default: break; } @@ -198,6 +203,18 @@ ret = pNearest->SendEvent(GUIM_MOUSE_RELEASE_RIGHT, "mouserightrelease"); } break; + case SDL_BUTTON_MIDDLE: + if (pNearest) + { + double timeElapsed = timer_Time() - pNearest->m_LastClickTime[SDL_BUTTON_MIDDLE]; + pNearest->m_LastClickTime[SDL_BUTTON_MIDDLE] = timer_Time(); + + if (timeElapsed < SELECT_DBLCLICK_RATE) + ret = pNearest->SendEvent(GUIM_MOUSE_DBLCLICK_MIDDLE, "mousemiddledoubleclick"); + else + ret = pNearest->SendEvent(GUIM_MOUSE_RELEASE_MIDDLE, "mousemiddlerelease"); + } + break; } // Reset all states on all visible objects Index: source/gui/GUIbase.h =================================================================== --- source/gui/GUIbase.h +++ source/gui/GUIbase.h @@ -63,13 +63,16 @@ GUIM_MOUSE_PRESS_LEFT, GUIM_MOUSE_PRESS_LEFT_ITEM, GUIM_MOUSE_PRESS_RIGHT, + GUIM_MOUSE_PRESS_MIDDLE, GUIM_MOUSE_DOWN_LEFT, GUIM_MOUSE_DOWN_RIGHT, GUIM_MOUSE_DBLCLICK_LEFT, GUIM_MOUSE_DBLCLICK_LEFT_ITEM, // Triggered when doubleclicking on a list item GUIM_MOUSE_DBLCLICK_RIGHT, + GUIM_MOUSE_DBLCLICK_MIDDLE, GUIM_MOUSE_RELEASE_LEFT, GUIM_MOUSE_RELEASE_RIGHT, + GUIM_MOUSE_RELEASE_MIDDLE, GUIM_MOUSE_WHEEL_UP, GUIM_MOUSE_WHEEL_DOWN, GUIM_SETTINGS_UPDATED, // SGUIMessage.m_Value = name of setting