@@ -13,12 +13,14 @@ import {
1313 setContextMenuVisibility ,
1414 updatePreviewSelection ,
1515 selectTrackFromTid ,
16+ overrideZeroAt ,
1617} from 'firefox-profiler/actions/profile-view' ;
1718import {
1819 getPreviewSelection ,
1920 getCommittedRange ,
2021 getProfiledThreadIds ,
2122 getInnerWindowIDToPageMap ,
23+ isZeroAtOverridden ,
2224} from 'firefox-profiler/selectors/profile' ;
2325import { getRightClickedMarkerInfo } from 'firefox-profiler/selectors/right-clicked-marker' ;
2426import copy from 'copy-to-clipboard' ;
@@ -59,12 +61,14 @@ type StateProps = {
5961 readonly getMarkerLabelToCopy : ( param : MarkerIndex ) => string ;
6062 readonly profiledThreadIds : Set < Tid > ;
6163 readonly innerWindowIDToPageMap : Map < InnerWindowID , Page > | null ;
64+ readonly isZeroAtOverridden : boolean ;
6265} ;
6366
6467type DispatchProps = {
6568 readonly updatePreviewSelection : typeof updatePreviewSelection ;
6669 readonly setContextMenuVisibility : typeof setContextMenuVisibility ;
6770 readonly selectTrackFromTid : typeof selectTrackFromTid ;
71+ readonly overrideZeroAt : typeof overrideZeroAt ;
6872} ;
6973
7074type Props = ConnectedProps < OwnProps , StateProps , DispatchProps > ;
@@ -141,6 +145,16 @@ class MarkerContextMenuImpl extends PureComponent<Props> {
141145 } ) ;
142146 } ;
143147
148+ overrideZeroAtMarkerStart = ( ) => {
149+ const { marker, overrideZeroAt } = this . props ;
150+ overrideZeroAt ( marker . start ) ;
151+ } ;
152+
153+ resetZeroAt = ( ) => {
154+ const { overrideZeroAt } = this . props ;
155+ overrideZeroAt ( null ) ;
156+ } ;
157+
144158 _isZeroDurationMarker ( marker : Marker | null ) : boolean {
145159 return ! marker || marker . end === null ;
146160 }
@@ -379,7 +393,8 @@ class MarkerContextMenuImpl extends PureComponent<Props> {
379393 } ;
380394
381395 override render ( ) {
382- const { marker, previewSelection, committedRange } = this . props ;
396+ const { marker, previewSelection, committedRange, isZeroAtOverridden } =
397+ this . props ;
383398 const { data } = marker ;
384399
385400 const selectionEnd = previewSelection
@@ -482,6 +497,25 @@ class MarkerContextMenuImpl extends PureComponent<Props> {
482497 </ >
483498 ) }
484499
500+ < div className = "react-contextmenu-separator" />
501+
502+ < MenuItem onClick = { this . overrideZeroAtMarkerStart } >
503+ < span className = "react-contextmenu-icon markerContextMenuIconOverrideZeroAtMarkerStart" />
504+ < Localized id = "MarkerContextMenu--override-zero-at-marker-start" >
505+ Override zero at marker’s start
506+ </ Localized >
507+ </ MenuItem >
508+ { isZeroAtOverridden ? (
509+ < MenuItem onClick = { this . resetZeroAt } >
510+ < span className = "react-contextmenu-icon markerContextMenuIconResetOverrideZeroAt" />
511+ < Localized id = "MarkerContextMenu--reset-override-zero-at" >
512+ Reset the override for zero
513+ </ Localized >
514+ </ MenuItem >
515+ ) : (
516+ ''
517+ ) }
518+
485519 < div className = "react-contextmenu-separator" />
486520 < MenuItem onClick = { this . copyMarkerDescription } >
487521 < span className = "react-contextmenu-icon markerContextMenuIconCopyDescription" />
@@ -533,12 +567,14 @@ const MarkerContextMenu = explicitConnect<OwnProps, StateProps, DispatchProps>({
533567 getMarkerLabelToCopy : selectors . getMarkerLabelToCopyGetter ( state ) ,
534568 profiledThreadIds : getProfiledThreadIds ( state ) ,
535569 innerWindowIDToPageMap : getInnerWindowIDToPageMap ( state ) ,
570+ isZeroAtOverridden : isZeroAtOverridden ( state ) ,
536571 } ;
537572 } ,
538573 mapDispatchToProps : {
539574 updatePreviewSelection,
540575 setContextMenuVisibility,
541576 selectTrackFromTid,
577+ overrideZeroAt,
542578 } ,
543579 component : MarkerContextMenuImpl ,
544580} ) ;
0 commit comments