Allow GridView to intercept clicks

Closes #3645
Fixes #3621
Fixes #3633

// FREEBIE
This commit is contained in:
Jake McGinty 2015-07-13 10:39:40 -07:00 committed by Moxie Marlinspike
parent b75a04eb08
commit 0af902b81c
2 changed files with 10 additions and 9 deletions

View file

@ -3,10 +3,11 @@ package org.thoughtcrime.securesms.components.emoji;
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.FrameLayout;
import android.widget.GridView;
@ -33,13 +34,9 @@ public class EmojiPageView extends FrameLayout {
final View view = LayoutInflater.from(getContext()).inflate(R.layout.emoji_grid_layout, this, true);
grid = (GridView) view.findViewById(R.id.emoji);
grid.setColumnWidth(getResources().getDimensionPixelSize(R.dimen.emoji_drawer_size) + 2 * getResources().getDimensionPixelSize(R.dimen.emoji_drawer_item_padding));
grid.setOnTouchListener(new OnTouchListener() {
@Override public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
EmojiView emojiView = (EmojiView)grid.getChildAt(grid.pointToPosition((int)event.getX(), (int)event.getY()));
if (listener != null && emojiView != null) listener.onEmojiSelected(emojiView.getEmoji());
}
return false;
grid.setOnItemClickListener(new OnItemClickListener() {
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (listener != null) listener.onEmojiSelected(((EmojiView)view).getEmoji());
}
});
}

View file

@ -19,7 +19,11 @@ public class EmojiPopup extends PopupWindow {
parent.getWidth(),
parent.getResources().getDimensionPixelSize(R.dimen.min_emoji_drawer_height));
this.parent = parent;
Log.w("EmojiPopup", "popup initialized with width " + parent.getWidth());
getContentView().setClickable(true);
getContentView().setFocusableInTouchMode(true);
getContentView().setFocusable(true);
setTouchable(true);
setFocusable(true);
}
public void setEmojiEventListener(EmojiEventListener listener) {