Skip to content

Commit 3f6eebe

Browse files
committed
fix(messagelist): Ensure opened message row is visible in list
Fixes: #33
1 parent c1b3cb1 commit 3f6eebe

File tree

4 files changed

+18
-5
lines changed

4 files changed

+18
-5
lines changed

src/app/app.component.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@
160160
<single-mail-viewer #singlemailviewer
161161
[messageActionsHandler]="messageActionsHandler"
162162
[adjustableHeight]="false"
163+
(afterLoadMessage)="updateMessageListHeight()"
163164
(orientationChangeRequest)="mailViewerOrientationChangeRequest($event)"
164165
(onClose)="singleMailViewerClosed($event)"></single-mail-viewer>
165166
<div *ngIf="mailViewerOnRightSide && !singlemailviewer.messageId"
@@ -407,6 +408,7 @@ <h3 class="noMessageSelectedNotification">No Message Selected</h3>
407408
[adjustableHeight]="true"
408409
[showVerticalSplitButton]="allowMailViewerOrientationChange"
409410
[messageActionsHandler]="messageActionsHandler"
411+
(afterLoadMessage)="updateMessageListHeight()"
410412
(orientationChangeRequest)="mailViewerOrientationChangeRequest($event)"
411413
(onClose)="singleMailViewerClosed($event)"></single-mail-viewer>
412414
</div>

src/app/app.component.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1064,6 +1064,10 @@ export class AppComponent implements OnInit, AfterViewInit, CanvasTableSelectLis
10641064
this.updateUrlFragment();
10651065
}
10661066

1067+
updateMessageListHeight() {
1068+
this.canvastable.jumpToOpenMessage();
1069+
}
1070+
10671071
searchTextFieldFocus() {
10681072
if (!this.usewebsocketsearch && !this.dataReady) {
10691073
this.usewebsocketsearch = true;

src/app/canvastable/canvastable.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ export class CanvasTableComponent implements AfterViewInit, DoCheck, OnInit {
133133
columnResizeInProgress = false;
134134
private scrollbarArea = false;
135135

136+
private jumpToMessage = false;
137+
136138
visibleColumnSeparatorAlpha = 0;
137139
visibleColumnSeparatorIndex = 0;
138140
lastClientY: number;
@@ -856,11 +858,7 @@ export class CanvasTableComponent implements AfterViewInit, DoCheck, OnInit {
856858

857859
// When loading a url with a fragment containing a msg id - scroll to there
858860
public jumpToOpenMessage() {
859-
// currently selected row in the centre:
860-
if (this.rows.rowCount() > 0 && this.rows.openedRowIndex) {
861-
this.topindex = this.rows.openedRowIndex - Math.round(this.maxVisibleRows / 2);
862-
this.enforceScrollLimit();
863-
}
861+
this.jumpToMessage = true;
864862
}
865863

866864
private enforceScrollLimit() {
@@ -971,6 +969,13 @@ export class CanvasTableComponent implements AfterViewInit, DoCheck, OnInit {
971969
this.canv.height = this.wantedCanvasHeight;
972970

973971
this.maxVisibleRows = this.canv.scrollHeight / this.rowheight;
972+
if(this.jumpToMessage) {
973+
// currently selected row in the centre:
974+
if (this.rows.rowCount() > 0 && this.rows.openedRowIndex) {
975+
this.topindex = this.rows.openedRowIndex - Math.round(this.maxVisibleRows / 2);
976+
}
977+
this.jumpToMessage = false;
978+
}
974979
this.enforceScrollLimit();
975980
this.hasChanges = true;
976981
if (this.canv.clientWidth < this.autoRowWrapModeWidth) {

src/app/mailviewer/singlemailviewer.component.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export class SingleMailViewerComponent implements OnInit, DoCheck, AfterViewInit
7979
@Output() onClose: EventEmitter<string> = new EventEmitter();
8080
@Output() afterViewInit: EventEmitter<any> = new EventEmitter();
8181
@Output() orientationChangeRequest: EventEmitter<string> = new EventEmitter();
82+
@Output() afterLoadMessage: EventEmitter<boolean> = new EventEmitter();
8283

8384
@Input() messageActionsHandler: MessageActions;
8485
@Input() adjustableHeight: boolean;
@@ -777,6 +778,7 @@ export class SingleMailViewerComponent implements OnInit, DoCheck, AfterViewInit
777778
this.resizer.resizePercentage(50);
778779
}
779780
}
781+
this.afterLoadMessage.emit();
780782
}, 0);
781783
}
782784

0 commit comments

Comments
 (0)