Skip to main content

RepoTab

Struct RepoTab 

Source
pub struct RepoTab {
Show 60 fields pub repo_path: Option<PathBuf>, pub repo_info: Option<RepoInfo>, pub branches: Vec<BranchInfo>, pub current_branch: Option<String>, pub commits: Vec<CommitInfo>, pub selected_commit: Option<usize>, pub anchor_commit_index: Option<usize>, pub selected_commits: Vec<usize>, pub graph_rows: Vec<GraphRow>, pub unstaged_changes: Vec<DiffFileEntry>, pub staged_changes: Vec<DiffFileEntry>, pub commit_files: Vec<DiffFileEntry>, pub selected_commit_oid: Option<String>, pub selected_file_index: Option<usize>, pub is_loading_file_diff: bool, pub anchor_file_index: Option<usize>, pub selected_commit_file_indices: Vec<usize>, pub multi_file_diffs: Vec<DiffInfo>, pub commit_range_diffs: Vec<DiffInfo>, pub selected_diff: Option<DiffInfo>, pub commit_message: String, pub stashes: Vec<StashEntry>, pub remotes: Vec<RemoteInfo>, pub show_commit_detail: bool, pub new_branch_name: String, pub show_branch_create: bool, pub local_branches_expanded: bool, pub remote_branches_expanded: bool, pub stash_message: String, pub selected_unstaged: HashSet<String>, pub selected_staged: HashSet<String>, pub anchor_unstaged_index: Option<usize>, pub anchor_staged_index: Option<usize>, pub pending_discard: Option<String>, pub status_message: Option<String>, pub error_message: Option<String>, pub is_loading: bool, pub context_menu_pos: (f32, f32), pub context_menu: Option<ContextMenu>, pub rename_branch_target: Option<String>, pub rename_branch_input: String, pub create_tag_target_oid: Option<String>, pub create_tag_annotated: bool, pub create_tag_name: String, pub create_tag_message: String, pub create_branch_at_oid: Option<String>, pub commit_scroll_offset: f32, pub hovered_commit: Option<usize>, pub branch_context: Vec<Option<String>>, pub diff_scroll_offset: f32, pub commit_display: Vec<(String, String)>, pub has_more_commits: bool, pub is_loading_more_commits: bool, pub file_history_path: Option<String>, pub file_history_commits: Vec<CommitInfo>, pub file_history_scroll: f32, pub blame_path: Option<String>, pub blame_lines: Vec<BlameLine>, pub blame_scroll: f32, pub pending_delete_file: Option<String>,
}
Expand description

Per-repository state — one instance per open tab.

Fields§

§repo_path: Option<PathBuf>

Path to the currently opened repository (workdir root).

§repo_info: Option<RepoInfo>

High-level information about the opened repository.

§branches: Vec<BranchInfo>

All branches (local + remote) in the repository.

§current_branch: Option<String>

Name of the currently checked-out branch.

§commits: Vec<CommitInfo>

Commit log (newest first).

§selected_commit: Option<usize>

Index into commits of the currently selected commit.

§anchor_commit_index: Option<usize>

Anchor commit index for range selection — set on a plain click.

§selected_commits: Vec<usize>

Ordered (ascending) list of commit indices in the current range selection.

§graph_rows: Vec<GraphRow>

Per-commit graph layout rows for branch visualisation.

§unstaged_changes: Vec<DiffFileEntry>

Unstaged (working-directory) changes.

§staged_changes: Vec<DiffFileEntry>

Staged (index) changes.

§commit_files: Vec<DiffFileEntry>

Lightweight file list for the currently selected commit (path + status only).

§selected_commit_oid: Option<String>

OID of the currently selected commit (needed for on-demand file diff loading).

§selected_file_index: Option<usize>

Index of the selected file in commit_files.

§is_loading_file_diff: bool

True while a single-file diff is being loaded.

§anchor_file_index: Option<usize>

Anchor index for range selection — set on a regular click, kept fixed while the user extends the selection with Shift+Click.

§selected_commit_file_indices: Vec<usize>

Ordered list of file indices currently multi-selected in the commit file list (Shift+Click). Always stored in ascending index order (lowest index first).

§multi_file_diffs: Vec<DiffInfo>

Diffs for all multi-selected files (populated when 2+ files are selected).

§commit_range_diffs: Vec<DiffInfo>

Combined diff for all commits in the current range selection (populated when selected_commits.len() > 1). Shown in the diff panel instead of single-commit diff.

§selected_diff: Option<DiffInfo>

The diff currently displayed in the diff viewer panel.

§commit_message: String

Text in the commit-message input.

§stashes: Vec<StashEntry>

All stash entries.

§remotes: Vec<RemoteInfo>

Configured remotes.

§show_commit_detail: bool

Whether the commit detail pane is visible.

§new_branch_name: String

Text in the “new branch name” input.

§show_branch_create: bool

Whether the inline branch-creation UI is visible.

§local_branches_expanded: bool

Whether the Local branches section is expanded.

§remote_branches_expanded: bool

Whether the Remote branches section is expanded.

§stash_message: String

Text in the “stash message” input.

§selected_unstaged: HashSet<String>

Set of selected unstaged file paths (for multi-select).

§selected_staged: HashSet<String>

Set of selected staged file paths (for multi-select).

§anchor_unstaged_index: Option<usize>

Anchor index for Shift+Click range selection in the unstaged list.

§anchor_staged_index: Option<usize>

Anchor index for Shift+Click range selection in the staged list.

§pending_discard: Option<String>

File path pending discard confirmation (None = no pending discard).

§status_message: Option<String>

Transient status-bar message (e.g. “Branch created”).

§error_message: Option<String>

Error message shown in a banner / toast.

§is_loading: bool

True while an async operation is in flight.

§context_menu_pos: (f32, f32)

Cursor position captured at the moment the context menu was opened. Used to anchor the menu so it doesn’t follow the mouse after appearing.

§context_menu: Option<ContextMenu>

Currently open context menu, if any.

§rename_branch_target: Option<String>

Name of the branch currently being renamed (None = not renaming).

§rename_branch_input: String

The new name being typed in the rename input.

§create_tag_target_oid: Option<String>

When Some(oid), the tag-creation inline form is visible, targeting that OID.

§create_tag_annotated: bool

True when creating an annotated tag; false for a lightweight tag.

§create_tag_name: String

The tag name the user is typing.

§create_tag_message: String

The annotated tag message the user is typing (only used when create_tag_annotated is true).

§create_branch_at_oid: Option<String>

When Some(oid), the inline “create branch at this commit” form is visible.

§commit_scroll_offset: f32

Current scroll offset of the commit log in pixels. Tracked via on_scroll so virtual scrolling can render only the visible window of rows.

§hovered_commit: Option<usize>

Index of the commit row currently being hovered by the mouse. Used to show ghost branch labels and highlight the row.

§branch_context: Vec<Option<String>>

Pre-computed branch context labels for each commit row. For rows with refs, this is empty (the real badges are shown instead). For rows without refs, this contains the inherited branch name from the nearest ancestor in the same graph lane.

§diff_scroll_offset: f32

Current scroll offset of the diff viewer in pixels.

§commit_display: Vec<(String, String)>

Pre-computed display strings for each commit: (relative_time, truncated_author). Computed once when commits load to avoid per-frame string allocations. The summary is read directly from commits[i].summary to avoid duplication.

§has_more_commits: bool

Whether there are potentially more commits to load beyond those already shown.

§is_loading_more_commits: bool

Guard: true while a background load-more task is in flight (prevents duplicates).

§file_history_path: Option<String>

When Some(path), the file-history overlay is shown for that repo-relative path.

§file_history_commits: Vec<CommitInfo>

Commits loaded for the file-history overlay (newest first).

§file_history_scroll: f32

Scroll offset of the file-history list in pixels.

§blame_path: Option<String>

When Some(path), the blame overlay is shown for that repo-relative path.

§blame_lines: Vec<BlameLine>

Blame lines loaded for the blame overlay.

§blame_scroll: f32

Scroll offset of the blame view in pixels.

§pending_delete_file: Option<String>

When Some(path), a delete-confirmation banner is shown for that file.

Implementations§

Source§

impl RepoTab

Source

pub fn new_empty() -> Self

Create an empty tab (no repo open — shows welcome screen).

Source

pub fn has_repo(&self) -> bool

Whether a repository is currently open in this tab.

Source

pub fn default_remote(&self) -> String

Name of the first remote, or “origin” as a fallback.

Source

pub fn display_name(&self) -> String

Display name for the tab (last path component, or “New Tab”).

Source

pub fn apply_payload(&mut self, payload: RepoPayload, path: PathBuf)

Apply a full repo payload to this tab, resetting transient UI state.

The currently selected commit (if any) is re-pinned by OID after the new commit list arrives, so background auto-refreshes (git-watcher or staging changes) never clear the user’s selection.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
Source§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
Source§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync> ⓘ

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self> ⓘ

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self> ⓘ

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<State, Message> IntoBoot<State, Message> for State

Source§

fn into_boot(self) -> (State, Task<Message>)

Turns some type into the initial state of some Application.
Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> MaybeClone for T

Source§

impl<T> MaybeDebug for T

Source§

impl<T> MaybeSend for T
where T: Send,

Source§

impl<T> MaybeSync for T
where T: Sync,

Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more