]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/menu/menu.qc
s/LOG_WARNING/LOG_WARN/g
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / menu.qc
index 913cdbe34b43f6bb068c7e8748e301da57386397..f32b85298ed7e23a8a70c04f46aa8d1fedad6dde 100644 (file)
@@ -270,7 +270,8 @@ void m_keydown(float key, float ascii)
        else
        {
                draw_reset_cropped();
-               if (!mouseButtonsPressed && key >= K_MOUSE1 && key <= K_MOUSE3) main.mousePress(main, menuMousePos);
+               if (!mouseButtonsPressed && key >= K_MOUSE1 && key <= K_MOUSE3)
+                       main.mousePress(main, menuMousePos);
                if (!main.keyDown(main, key, ascii, menuShiftState))
                {
                        // disable menu on unhandled ESC
@@ -588,9 +589,11 @@ void m_tooltip(vector pos)
 
                                        int i = 0;
                                        float w = 0;
-                                       for (getWrappedLine_remaining = menuTooltipText; getWrappedLine_remaining; ++i)
+                                       for (getWrappedLine_remaining = menuTooltipText; getWrappedLine_remaining && i <= 16; ++i)
                                        {
                                                string s = getWrappedLine(SKINWIDTH_TOOLTIP, fontsize, draw_TextWidth_WithoutColors);
+                                               if (i == 16)
+                                                       s = "...";
                                                float f = draw_TextWidth(s, false, fontsize);
                                                if (f > w) w = f;
                                        }
@@ -660,18 +663,36 @@ void m_tooltip(vector pos)
                        p = menuTooltipOrigin;
                        p.x += SKINMARGIN_TOOLTIP_x / conwidth;
                        p.y += SKINMARGIN_TOOLTIP_y / conheight;
-                       for (getWrappedLine_remaining = menuTooltipText; getWrappedLine_remaining; p.y += fontsize.y)
+                       int i = 0;
+                       for (getWrappedLine_remaining = menuTooltipText; getWrappedLine_remaining && i <= 16; ++i, p.y += fontsize.y)
                        {
                                string s = getWrappedLine(SKINWIDTH_TOOLTIP, fontsize, draw_TextWidth_WithoutColors);
+                               if (i == 16)
+                                       s = "...";
                                draw_Text(p, s, fontsize, SKINCOLOR_TOOLTIP, SKINALPHA_TOOLTIP * menuTooltipAlpha, false);
                        }
                }
        }
 }
 
+float autocvar_menu_force_on_disconnection;
 void m_draw(float width, float height)
 {
-       if (clientstate() == CS_DISCONNECTED) m_toggle(true);
+       if (autocvar_menu_force_on_disconnection > 0)
+       {
+               static float connected_time;
+               if (clientstate() == CS_DISCONNECTED)
+               {
+                       if (connected_time && time - connected_time > autocvar_menu_force_on_disconnection)
+                       {
+                               m_toggle(true);
+                               connected_time = 0;
+                       }
+               }
+               else
+                       connected_time = time;
+       }
+
        m_gamestatus();
 
        execute_next_frame();
@@ -790,15 +811,11 @@ void m_draw(float width, float height)
 
        draw_alpha *= menuAlpha;
 
-       if (!Menu_Active)
-       {
-               // do not update mouse position
-               // it prevents mouse jumping to '0 0 0' when menu is fading out
-       }
-       else if (menuMouseMode)
+       if (menuMouseMode)
        {
-               vector newMouse = globalToBox(getmousepos(), draw_shift, draw_scale);
-               if (newMouse != '0 0 0' && newMouse != menuMousePos)
+               vector rawMousePos = getmousepos();
+               vector newMouse = globalToBox(rawMousePos, draw_shift, draw_scale);
+               if (rawMousePos != '0 0 0' && newMouse != menuMousePos)
                {
                        menuMousePos = newMouse;
                        if (mouseButtonsPressed) main.mouseDrag(main, menuMousePos);
@@ -832,6 +849,7 @@ void m_draw(float width, float height)
        postMenuDraw();
 
        frametime = 0;
+       IL_ENDFRAME();
 }
 
 void m_display()