Update SDL2 with screen keyboard height functions for iOS
This commit is contained in:
parent
945565790c
commit
2171bd7bf3
@ -1108,12 +1108,12 @@ bool CIrrDeviceSDL::hasOnScreenKeyboard() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CIrrDeviceSDL::hasHardwareKeyboard() const
|
u32 CIrrDeviceSDL::getOnScreenKeyboardHeight() const
|
||||||
{
|
{
|
||||||
#ifdef MOBILE_STK
|
#ifdef MOBILE_STK
|
||||||
return SDL_HasHardwareKeyboardConnected() == SDL_TRUE;
|
return SDL_GetScreenKeyboardHeight() * NativeScale;
|
||||||
#else
|
#else
|
||||||
return true;
|
return 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,8 +137,7 @@ namespace irr
|
|||||||
|
|
||||||
virtual bool hasOnScreenKeyboard() const;
|
virtual bool hasOnScreenKeyboard() const;
|
||||||
|
|
||||||
virtual bool hasHardwareKeyboard() const;
|
virtual u32 getOnScreenKeyboardHeight() const;
|
||||||
|
|
||||||
|
|
||||||
virtual bool activateAccelerometer(float updateInterval);
|
virtual bool activateAccelerometer(float updateInterval);
|
||||||
virtual bool deactivateAccelerometer();
|
virtual bool deactivateAccelerometer();
|
||||||
|
@ -780,6 +780,7 @@ void IrrDriver::initDevice()
|
|||||||
m_device->registerGetMovedHeightFunction([]
|
m_device->registerGetMovedHeightFunction([]
|
||||||
(const IrrlichtDevice* device)->int
|
(const IrrlichtDevice* device)->int
|
||||||
{
|
{
|
||||||
|
#ifdef ANDROID
|
||||||
int screen_keyboard_height =
|
int screen_keyboard_height =
|
||||||
device->getOnScreenKeyboardHeight();
|
device->getOnScreenKeyboardHeight();
|
||||||
int screen_height = device->getScreenHeight();
|
int screen_height = device->getScreenHeight();
|
||||||
@ -803,6 +804,9 @@ void IrrDriver::initDevice()
|
|||||||
return screen_keyboard_height;
|
return screen_keyboard_height;
|
||||||
}
|
}
|
||||||
return screen_keyboard_height - element_height;
|
return screen_keyboard_height - element_height;
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
});
|
});
|
||||||
} // initDevice
|
} // initDevice
|
||||||
|
|
||||||
|
@ -27,6 +27,11 @@
|
|||||||
#include <atomic>
|
#include <atomic>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
|
||||||
|
// Can be removed later when android STK uses SDL2
|
||||||
|
#ifdef IOS_STK
|
||||||
|
#include "SDL_keyboard.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
using namespace GUIEngine;
|
using namespace GUIEngine;
|
||||||
|
|
||||||
namespace MessageQueue
|
namespace MessageQueue
|
||||||
@ -212,9 +217,16 @@ public:
|
|||||||
int pos_transform = 0;
|
int pos_transform = 0;
|
||||||
if (m_container == g_container.get())
|
if (m_container == g_container.get())
|
||||||
pos_transform = s_msg_raise;
|
pos_transform = s_msg_raise;
|
||||||
|
int moved_height = 0;
|
||||||
|
#ifdef ANDROID
|
||||||
|
moved_height = irr_driver->getDevice()->getMovedHeight();
|
||||||
|
#elif defined(IOS_STK)
|
||||||
|
moved_height = SDL_GetMovedHeightByScreenKeyboard() *
|
||||||
|
irr_driver->getDevice()->getNativeScale();
|
||||||
|
#endif
|
||||||
core::position2di raise = core::position2di(0,
|
core::position2di raise = core::position2di(0,
|
||||||
irr_driver->getDevice()->getOnScreenKeyboardHeight() -
|
irr_driver->getDevice()->getOnScreenKeyboardHeight() -
|
||||||
irr_driver->getDevice()->getMovedHeight() + pos_transform);
|
moved_height + pos_transform);
|
||||||
GUIEngine::getSkin()->drawMessage(m_container, m_area - raise,
|
GUIEngine::getSkin()->drawMessage(m_container, m_area - raise,
|
||||||
m_render_type);
|
m_render_type);
|
||||||
GUIEngine::getFont()->draw(m_gls, m_text_rect - raise,
|
GUIEngine::getFont()->draw(m_gls, m_text_rect - raise,
|
||||||
@ -317,9 +329,16 @@ public:
|
|||||||
{
|
{
|
||||||
Message::draw(dt);
|
Message::draw(dt);
|
||||||
m_display_timer = 9999999.9f;
|
m_display_timer = 9999999.9f;
|
||||||
|
int moved_height = 0;
|
||||||
|
#ifdef ANDROID
|
||||||
|
moved_height = irr_driver->getDevice()->getMovedHeight();
|
||||||
|
#elif defined(IOS_STK)
|
||||||
|
moved_height = SDL_GetMovedHeightByScreenKeyboard() *
|
||||||
|
irr_driver->getDevice()->getNativeScale();
|
||||||
|
#endif
|
||||||
core::position2di raise = core::position2di(0,
|
core::position2di raise = core::position2di(0,
|
||||||
irr_driver->getDevice()->getOnScreenKeyboardHeight() -
|
irr_driver->getDevice()->getOnScreenKeyboardHeight() -
|
||||||
irr_driver->getDevice()->getMovedHeight());
|
moved_height);
|
||||||
GUIEngine::getSkin()->drawProgressBarInScreen(&m_swc, m_area - raise,
|
GUIEngine::getSkin()->drawProgressBarInScreen(&m_swc, m_area - raise,
|
||||||
(float)g_progress.load() / 100.0f);
|
(float)g_progress.load() / 100.0f);
|
||||||
video::SColor color(255, 0, 0, 0);
|
video::SColor color(255, 0, 0, 0);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user