CodeNav icon indicating copy to clipboard operation
CodeNav copied to clipboard

CodeNav does not respond, and refresh does not work when too many classes in a file

Open ToMakeSense opened this issue 4 years ago • 3 comments

It seems that because of too many classes in a source code file, the panel of CodeNav cannot fresh(CodeNav still displays the results of the previous open file, it can't seem to show scrollbar automatically).

Tricky details If you try to fold the code multiple times CTRL + M, L, The CodeNav window will be triggered to display the beginning part of the source file. However, if the file is opened for the first time, CodeNav does not respond, the CodeNav window cannot be activated and displayed, even if the code is folded multiple times. in this situation, unless you temporarily remove some blocks of code to activate the CodeNav window, then press CTRL + Z and restore the code, to get the CodeNav window activated.

ToMakeSense avatar Feb 10 '22 09:02 ToMakeSense

Wow sounds weird!

How many classes are in your file? Can you share the file?

CodeNav should show a scrollbar for long files: image

sboulema avatar Feb 24 '22 16:02 sboulema

@sboulema Thanks for your attention, you can use demo C# class below to repro.

using System;
using System.Collections.Generic;

namespace Demo {
    class CodeNavRepro {
        public static void XXXMethod(List<RawMediaInfo> mediaSetInfo) {
            Console.WriteLine("Hello world!");
            Console.ReadLine();
        }
    }

    #region model
    public class RawMediaInfo {
        public string FileId { get; set; }
        public string SessionId { get; set; }
    }

    public class MediaTaskInfo : RawMediaInfo {
        public string TaskId { get; set; }
    }

    public class EditMediaTaskInfo : MediaTaskInfo {
        public string ProcedureTaskId { get; set; }
    }
    #endregion

    #region base model
    public class MediaTaskBaseResponse {
        public string TaskType { get; set; }
        public string Status { get; set; }
        public string CreateTime { get; set; }
        public string BeginProcessTime { get; set; }
        public string FinishTime { get; set; }
        public string RequestId { get; set; }
    }

    #region ProcedureTask
    public class ProcedureTaskResponse : MediaTaskBaseResponse {
        public ProcedureTask ProcedureTask { get; set; }
    }

    public class ProcedureTask {
        public string TaskId { get; set; }
        public string Status { get; set; }
        public int ErrCode { get; set; }
        public string Message { get; set; }
        public string FileId { get; set; }
        public string FileName { get; set; }
        public string FileUrl { get; set; }
        public MetaData MetaData { get; set; }
        public MediaProcessResultSet[] MediaProcessResultSet { get; set; }
        public object[] AiContentReviewResultSet { get; set; }
        public object[] AiAnalysisResultSet { get; set; }
        public object[] AiRecognitionResultSet { get; set; }
        public int TasksPriority { get; set; }
        public string TasksNotifyMode { get; set; }
        public string SessionContext { get; set; }
        public string SessionId { get; set; }
    }

    public class MetaData {
        public int Size { get; set; }
        public string Container { get; set; }
        public int Bitrate { get; set; }
        public int Height { get; set; }
        public int Width { get; set; }
        public float Duration { get; set; }
        public int Rotate { get; set; }
        public VideoStreamSet[] VideoStreamSet { get; set; }
        public AudioStreamSet[] AudioStreamSet { get; set; }
        public float VideoDuration { get; set; }
        public float AudioDuration { get; set; }
    }

    public class VideoStreamSet {
        public int Bitrate { get; set; }
        public int Height { get; set; }
        public int Width { get; set; }
        public string Codec { get; set; }
        public int Fps { get; set; }
    }

    public class AudioStreamSet {
        public int Bitrate { get; set; }
        public int SamplingRate { get; set; }
        public string Codec { get; set; }
    }

    public class MediaProcessResultSet {
        public string Type { get; set; }
        public MediaProcessTask TranscodeTask { get; set; }
        public CoverBySnapshotTask CoverBySnapshotTask { get; set; }
        public object AnimatedGraphicTask { get; set; }
        public object SnapshotByTimeOffsetTask { get; set; }
        public object SampleSnapshotTask { get; set; }
        public object ImageSpriteTask { get; set; }
        public object AdaptiveDynamicStreamingTask { get; set; }
    }

    public class MediaProcessTask {
        public string Status { get; set; }
        public string ErrCodeExt { get; set; }
        public int ErrCode { get; set; }
        public string Message { get; set; }
        public Input Input { get; set; }
        public Output Output { get; set; }
        public int Progress { get; set; }
    }

    public class Input {
        public int Definition { get; set; }
        public object[] WatermarkSet { get; set; }
        public object[] MosaicSet { get; set; }
        public float StartTimeOffset { get; set; }
        public float EndTimeOffset { get; set; }
    }

    public class Output {
        public string Url { get; set; }
        public int Definition { get; set; }
        public int Bitrate { get; set; }
        public int Height { get; set; }
        public int Width { get; set; }
        public int Size { get; set; }
        public float Duration { get; set; }
        public string Container { get; set; }
        public string Md5 { get; set; }
        public AudioStreamSet[] AudioStreamSet { get; set; }
        public VideoStreamSet[] VideoStreamSet { get; set; }
    }

    public class CoverBySnapshotTask {
        public string Status { get; set; }
        public string ErrCodeExt { get; set; }
        public int ErrCode { get; set; }
        public string Message { get; set; }
        public SnapshotTaskInput Input { get; set; }
        public SnapshotTaskOutput Output { get; set; }
    }

    public class SnapshotTaskInput {
        public int Definition { get; set; }
        public string PositionType { get; set; }
        public float PositionValue { get; set; }
        public object[] WatermarkSet { get; set; }
    }

    public class SnapshotTaskOutput {
        public string CoverUrl { get; set; }
    }
    #endregion

    #region EditMedia
    public class EditMediaTaskResponse : MediaTaskBaseResponse {
        public EditMediaTask EditMediaTask { get; set; }
    }

    public class EditMediaTask {
        public string TaskId { get; set; }
        public string Status { get; set; }
        public int ErrCode { get; set; }
        public string Message { get; set; }
        public EditMediaTaskInput Input { get; set; }
        public EditMediaTaskOutput Output { get; set; }
        public string ProcedureTaskId { get; set; }
        public string SessionContext { get; set; }
        public string SessionId { get; set; }
    }
    public class EditMediaTaskInput {
        public string InputType { get; set; }
        public FileInfoSet[] FileInfoSet { get; set; }
        public object[] StreamInfoSet { get; set; }
    }

    public class FileInfoSet {
        public string FileId { get; set; }
        public float StartTimeOffset { get; set; }
        public float EndTimeOffset { get; set; }
    }

    public class EditMediaTaskOutput {
        public string FileType { get; set; }
        public string FileUrl { get; set; }
        public string FileId { get; set; }
        public string MediaName { get; set; }
        public int ClassId { get; set; }
        public string ExpireTime { get; set; }
    }
    #endregion
    #endregion
}

ToMakeSense avatar Feb 26 '22 07:02 ToMakeSense

@sboulema Simple steps to repro with a gif animation, for your reference

Repro

ToMakeSense avatar Feb 26 '22 07:02 ToMakeSense