Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ce838a26 authored by Dianne Hackborn's avatar Dianne Hackborn
Browse files

IME events are now dispatched to native applications.

And also:

- APIs to show and hide the IME, and control its interaction with the app.
- APIs to tell the app when its window resizes and needs to be redrawn.
- API to tell the app the content rectangle of its window (to layout
  around the IME or status bar).

There is still a problem with IME interaction -- we need a way for the
app to deliver events to the IME before it handles them, so that for
example the back key will close the IME instead of finishing the app.

Change-Id: I37b75fc2ec533750ef36ca3aedd2f0cc0b5813cd
parent 8575a87b
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -43,7 +43,9 @@ enum {
/*
 * Declare a concrete type for the NDK's input event forward declaration.
 */
struct AInputEvent { };
struct AInputEvent {
    virtual ~AInputEvent() { }
};

namespace android {

+0 −26
Original line number Diff line number Diff line
@@ -331,30 +331,4 @@ private:

} // namespace android

/*
 * NDK input queue API.
 */
struct AInputQueue {
public:
    /* Creates a consumer associated with an input channel. */
    explicit AInputQueue(const android::sp<android::InputChannel>& channel);

    /* Destroys the consumer and releases its input channel. */
    virtual ~AInputQueue();

    inline android::InputConsumer& getConsumer() { return mConsumer; }
    
    android::status_t consume(android::InputEvent** event);
    
    void setPollLoop(const android::sp<android::PollLoop>& pollLoop) { mPollLoop = pollLoop; }
    const android::sp<android::PollLoop> getPollLoop() const { return mPollLoop; }
    
    virtual void doDefaultKey(android::KeyEvent* keyEvent) = 0;
    
private:
    android::InputConsumer mConsumer;
    android::PreallocatedInputEventFactory mInputEventFactory;
    android::sp<android::PollLoop> mPollLoop;
};

#endif // _UI_INPUT_TRANSPORT_H
+0 −19
Original line number Diff line number Diff line
@@ -690,22 +690,3 @@ void InputConsumer::populateMotionEvent(MotionEvent* motionEvent) const {
}

} // namespace android

// --- AInputQueue ---

using android::InputEvent;
using android::InputChannel;
using android::InputConsumer;
using android::sp;
using android::status_t;

AInputQueue::AInputQueue(const sp<InputChannel>& channel) :
        mConsumer(channel) {
}

AInputQueue::~AInputQueue() {
}

status_t AInputQueue::consume(InputEvent** event) {
    return mConsumer.consume(&mInputEventFactory, event);
}