X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fgame%2Fg_gui.pas;h=e32889203b7216e27914336ce79c6bac37861a6f;hb=15583dd918333276650cbcc705d44dcb55f10199;hp=42c2c6b66a08ab53ccfe6ac9a8187763004f78a7;hpb=82e244af6046f36a1d4e7b281f64a8e9cf796119;p=d2df-sdl.git diff --git a/src/game/g_gui.pas b/src/game/g_gui.pas index 42c2c6b..e328892 100644 --- a/src/game/g_gui.pas +++ b/src/game/g_gui.pas @@ -535,6 +535,7 @@ type var g_GUIWindows: array of TGUIWindow; g_ActiveWindow: TGUIWindow = nil; + g_GUIGrabInput: Boolean = False; procedure g_GUI_Init(); function g_GUI_AddWindow(Window: TGUIWindow): TGUIWindow; @@ -813,10 +814,19 @@ procedure TGUIWindow.Draw; var i: Integer; ID: DWORD; + tw, th: Word; begin - if FBackTexture <> '' then + if FBackTexture <> '' then // Here goes code duplication from g_game.pas:DrawMenuBackground() if g_Texture_Get(FBackTexture, ID) then - e_DrawSize(ID, 0, 0, 0, False, False, gScreenWidth, gScreenHeight) + begin + e_Clear(GL_COLOR_BUFFER_BIT, 0, 0, 0); + e_GetTextureSize(ID, @tw, @th); + if tw = th then + tw := round(tw * 1.333 * (gScreenHeight / th)) + else + tw := trunc(tw * (gScreenHeight / th)); + e_DrawSize(ID, (gScreenWidth - tw) div 2, 0, 0, False, False, tw, gScreenHeight); + end else e_Clear(GL_COLOR_BUFFER_BIT, 0.5, 0.5, 0.5); @@ -2335,7 +2345,8 @@ begin end; end; - g_Touch_ShowKeyboard(FWindow.FActiveControl = Self); + g_GUIGrabInput := (@FOnEnterEvent = nil) and (FWindow.FActiveControl = Self); + g_Touch_ShowKeyboard(g_GUIGrabInput) end; procedure TGUIEdit.SetText(Text: string); @@ -2469,6 +2480,8 @@ begin end; end; end; + + g_GUIGrabInput := FIsQuery end; { TGUIKeyRead2 } @@ -2637,6 +2650,8 @@ begin end; end; end; + + g_GUIGrabInput := FIsQuery end;