mirror of
https://github.com/SpartanJ/eepp.git
synced 2026-10-01 18:50:16 +03:00
Improve Git History navigation and commit details
Add a detached Git Commit History tab with a traditional table layout, persistent column widths, commit focusing, and a splitter-based commit details pane. Register the git-show-history command and expose “Show in Git History” from commit details and history context menus. Add History and Git Commit tab icons, localized titles, appropriate tooltips, and ref-aware tab naming. Share the commit-details layout and behavior between standalone commit tabs and detached History views. Move view creation, widget binding, state management, controls, and asynchronous changed-file loading into CommitDetailsState. Display complete commit metadata and messages, GitHub links, copyable commit SHAs, colored changed-file statistics, and multi-file diffs with global expand/collapse and unified/split controls. Improve detached-history lifecycle behavior, selection and focus handling, stale-request protection, tooltip formatting, and column recalculation. Restore “Load older commits” by preserving pagination-node semantics while asynchronous loading is in progress. Fix expandable History rows so merge subjects and metadata render correctly without regressing generic UITreeView cells. Add recursive commit lookup for focusing nested history entries. Add deferred tooltip-created notifications and configure History tooltips only after their widgets exist. Preserve tokenizer-applied UITextView color ranges during layout recalculation when custom styling is enabled, preventing changed-file statistics from losing their colors after splitter resizing. Add the required Codicons and translations, expose UIWidget pseudo-class queries, reuse cached tree-expander drawable sources, and use SmallVector for nested stylesheet property resolution.
This commit is contained in:
@@ -141,7 +141,7 @@ class EE_API UIStyle : public UIState {
|
||||
/** Lazily allocated for styles that use substitutions. The common, non-reentrant resolution
|
||||
* needs no container allocation; nested slots are retained for later reuse. */
|
||||
std::unique_ptr<CSS::StyleSheetProperty> mPropertyResolutionSlot;
|
||||
std::vector<std::unique_ptr<CSS::StyleSheetProperty>> mNestedPropertyResolutionSlots;
|
||||
SmallVector<std::unique_ptr<CSS::StyleSheetProperty>, 2> mNestedPropertyResolutionSlots;
|
||||
bool mChangingState;
|
||||
bool mForceReapplyProperties;
|
||||
bool mDisableAnimations;
|
||||
|
||||
@@ -1342,6 +1342,17 @@ class EE_API UIWidget : public UINode {
|
||||
*/
|
||||
bool hasPseudoClass( const std::string& pseudoCls ) const;
|
||||
|
||||
/**
|
||||
* @brief Checks if this widget has a specific pseudo-class.
|
||||
*
|
||||
* Determines whether this widget currently has the specified pseudo-class
|
||||
* (e.g., hover, focus, active).
|
||||
*
|
||||
* @param pseudoCls The pseudo-class to check.
|
||||
* @return True if the widget has the pseudo-class, false otherwise.
|
||||
*/
|
||||
bool hasPseudoClass( StyleSheetSelectorRule::PseudoClasses pseudoCls ) const;
|
||||
|
||||
/**
|
||||
* @brief Checks if the tooltip is enabled for this widget.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user