1
0
mirror of https://github.com/moparisthebest/k-9 synced 2025-02-17 07:30:16 -05:00

invalidate message content WebView when the message header changes

This fixes redraw issues where text appears doubled or is cut off
This commit is contained in:
m0viefreak 2012-03-02 05:16:58 +01:00
parent ae6679769b
commit f1baa8f461
2 changed files with 26 additions and 1 deletions

View File

@ -63,6 +63,8 @@ public class MessageHeader extends ScrollView implements OnClickListener {
private ImageView mShowAdditionalHeadersIcon;
private SavedState mSavedState;
private OnLayoutChangedListener mOnLayoutChangedListener;
/**
* Pair class is only available since API Level 5, so we need
* this helper class unfortunately
@ -272,6 +274,7 @@ public class MessageHeader extends ScrollView implements OnClickListener {
} else {
showAdditionalHeaders();
}
layoutChanged();
}
private List<HeaderEntry> getAdditionalHeaders(final Message message)
@ -378,4 +381,18 @@ public class MessageHeader extends ScrollView implements OnClickListener {
out.writeInt((this.additionalHeadersVisible) ? 1 : 0);
}
}
public interface OnLayoutChangedListener {
void onLayoutChanged();
}
public void setOnLayoutChangedListener(OnLayoutChangedListener listener) {
mOnLayoutChangedListener = listener;
}
private void layoutChanged() {
if (mOnLayoutChangedListener != null) {
mOnLayoutChangedListener.onLayoutChanged();
}
}
}

View File

@ -33,7 +33,8 @@ import com.fsck.k9.mail.store.LocalStore.LocalMessage;
import java.util.List;
public class SingleMessageView extends LinearLayout implements OnClickListener {
public class SingleMessageView extends LinearLayout implements OnClickListener,
MessageHeader.OnLayoutChangedListener {
private boolean mScreenReaderEnabled;
private MessageCryptoView mCryptoView;
private MessageWebView mMessageContentView;
@ -65,6 +66,7 @@ public class SingleMessageView extends LinearLayout implements OnClickListener {
mHeaderPlaceHolder = (LinearLayout) findViewById(R.id.message_view_header_container);
mHeaderContainer = (MessageHeader) findViewById(R.id.header_container);
mHeaderContainer.setOnLayoutChangedListener(this);
mAttachmentsContainer = findViewById(R.id.attachments_container);
mInsideAttachmentsContainer = (LinearLayout) findViewById(R.id.inside_attachments_container);
@ -508,6 +510,12 @@ public class SingleMessageView extends LinearLayout implements OnClickListener {
mSavedState = savedState;
}
public void onLayoutChanged() {
if (mMessageContentView != null) {
mMessageContentView.invalidate();
}
}
static class SavedState extends BaseSavedState {
boolean attachmentViewVisible;
boolean hiddenAttachmentsVisible;