__wlTextInputManager->setGeometryUpdated(updated);
}
+DSWaylandSurface *DSTextInputPrivate::getTextInputSurface()
+{
+ return __wlTextInputManager->getTextInputSurface();
+}
+
void DSTextInputPrivate::contextCommitString(unsigned int serial, std::string text)
{
void predictionHintData(std::string key, std::string value);
void updateTextInputPanelState(bool state);
void setGeometryUpdated(bool updated);
+ DSWaylandSurface *getTextInputSurface();
/* DSWaylandInputMethodContext request */
void contextCommitString(unsigned int serial, std::string text);
__dsTextInputPrivate->updateTextInputPanelState(state);
}
+DSWaylandSurface *DSWaylandInputPanel::getTextInputSurface()
+{
+ if (!__dsTextInputPrivate) return nullptr;
+
+ return __dsTextInputPrivate->getTextInputSurface();
+}
+
void DSWaylandInputPanel::__onEventIdleEnterer(void *data)
{
}
void DSWaylandInputPanelSurfacePrivate::createGlobal(void *client, void *inputPanelResource, unsigned int id, void *surface)
{
Resource *resource = add((struct ::wl_client *)client, id, 1);
- DSWaylandInputPanelSurfaceData *data = new DSWaylandInputPanelSurfaceData(resource, inputPanelResource, surface);
- __dataMap.insert(std::pair<Resource*, DSWaylandInputPanelSurfaceData *>(resource, data));
+ __appendSurface(resource, inputPanelResource, surface);
}
void DSWaylandInputPanelSurfacePrivate::clearGlobals(void *inputPanelResource)
}
}
+void DSWaylandInputPanelSurfacePrivate::__appendSurface(Resource *resource, void *inputPanelResource, void *surface)
+{
+ DS_GET_PUB(DSWaylandInputPanelSurface);
+ DSWaylandInputPanelSurfaceData *data = new DSWaylandInputPanelSurfaceData(resource, inputPanelResource, surface);
+ __dataMap.insert(std::pair<Resource*, DSWaylandInputPanelSurfaceData *>(resource, data));
+
+ DSWaylandSurface *textInputSurface = pub->__inputPanel->getTextInputSurface();
+
+ if (textInputSurface)
+ {
+ //TODO: transparent set
+ }
+
+ if (pub->__inputPanel->getRerunPanelShow())
+ {
+ pub->__inputPanel->changeVisibility(true);
+ }
+}
+
DSWaylandInputPanelSurface::DSWaylandInputPanelSurface(DSWaylandCompositor *compositor, DSWaylandInputPanel *inputPanel)
: DSObject(), _d_ptr(std::make_unique<DSWaylandInputPanelSurfacePrivate>(this, compositor)),
DSWaylandInputPanelFloating *getFloatingData();
stGeometry getSurfaceGeometry(DSWaylandSurface *wlSurface);
void updateTextInputPanelState(bool state);
+ DSWaylandSurface *getTextInputSurface();
private:
DSWaylandCompositor *__compositor;
std::multimap<Resource*, DSWaylandInputPanelSurfaceData *> __dataMap;
void __updateSurfaceVisibility(DSWaylandInputPanelSurfaceData *surfaceData);
+ void __appendSurface(Resource *resource, void *inputPanelResource, void *surface);
};
}
#include "DSWaylandTextInputManagerPrivate.h"
#include "DSWaylandTextInput.h"
#include "DSWaylandTextInputPrivate.h"
+#include "DSWaylandSurface.h"
namespace display_server {
__textInput->setGeometryUpdated(updated);
}
+DSWaylandSurface* DSWaylandTextInputManager::getTextInputSurface()
+{
+ return __textInput->getClientSurface();
+}
+
DSWaylandTextInputPrivate::DSWaylandTextInputPrivate(DSWaylandTextInput *p_ptr, DSWaylandCompositor *compositor)
: DSObjectPrivate(p_ptr),
pub->__dsTextInputPrivate->activateTextInput(pub, id);
__activatedResource = resource;
- __clientSurface = surface;
+ __clientSurface = DSWaylandSurface::fromWlResource(surface);
}
void DSWaylandTextInputPrivate::text_input_deactivate(Resource *resource, struct ::wl_resource *seat)
__geometryUpdated = updated;
}
+DSWaylandSurface* DSWaylandTextInput::getClientSurface()
+{
+ DS_GET_PRIV(DSWaylandTextInput);
+
+ return priv->__clientSurface;
+}
+
}
class DSWaylandTextInputPrivate;
class DSTextInputPrivate;
+class DSWaylandSurface;
class DS_DECL_EXPORT DSWaylandTextInput : public DSObject
{
void updatePanelState(bool state);
void setGeometryUpdated(bool updated);
+ DSWaylandSurface* getClientSurface();
protected:
class DSWaylandTextInputManagerPrivate;
class DSWaylandTextInput;
+class DSWaylansSurface;
class DS_DECL_EXPORT DSWaylandTextInputManager : public DSObject
{
void updateTextInputPanelState(bool state);
void setGeometryUpdated(bool updated);
+ DSWaylandSurface* getTextInputSurface();
protected:
std::multimap<Resource*, int> __resourceIdMap;
struct ::wl_client *__showClient;
Resource *__activatedResource;
- struct ::wl_resource *__clientSurface;
+ DSWaylandSurface *__clientSurface;
};
}
DSWaylandCompositor::releaseInstance();
}
+TEST_F(DSWaylandInputPanelTest, GetTextInputSurface)
+{
+ DSWaylandCompositor *comp = DSWaylandCompositor::getInstance();
+ DSWaylandInputPanel *inputPanel = new DSWaylandInputPanel(comp);
+ EXPECT_TRUE(inputPanel != nullptr);
+
+ (void)inputPanel->getTextInputSurface();
+
+ delete inputPanel;
+ DSWaylandCompositor::releaseInstance();
+}
+
DSWaylandCompositor::releaseInstance();
}
+TEST_F(DSWaylandTextInputTest, GetClientSurface)
+{
+ DSWaylandCompositor *comp = DSWaylandCompositor::getInstance();
+ DSWaylandTextInputManager *textInputManager = new DSWaylandTextInputManager(comp);
+ DSWaylandTextInput *textInput = new DSWaylandTextInput(comp, textInputManager);
+ EXPECT_TRUE(textInput != nullptr);
+
+ (void)textInput->getClientSurface();
+
+ delete textInput;
+ delete textInputManager;
+ DSWaylandCompositor::releaseInstance();
+}
+
DSWaylandCompositor::releaseInstance();
}
+TEST_F(DSWaylandTextInputManagerTest, GetTextInputSurface)
+{
+ DSWaylandCompositor *comp = DSWaylandCompositor::getInstance();
+ DSWaylandTextInputManager *textInputManager = new DSWaylandTextInputManager(comp);
+ EXPECT_TRUE(textInputManager != nullptr);
+
+ (void)textInputManager->getTextInputSurface();
+
+ delete textInputManager;
+ DSWaylandCompositor::releaseInstance();
+}
+