Skip to content

Commit

Permalink
HackStudio: Only refresh Git widget on save if initialized
Browse files Browse the repository at this point in the history
  • Loading branch information
itamar8910 authored and awesomekling committed Sep 18, 2020
1 parent e46b4e0 commit b82a254
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 7 deletions.
34 changes: 28 additions & 6 deletions DevTools/HackStudio/Git/GitWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,19 +95,41 @@ GitWidget::GitWidget(const LexicalPath& repo_root)
Gfx::Bitmap::load_from_file("/res/icons/16x16/minus.png").release_nonnull());
}

void GitWidget::refresh()
bool GitWidget::initialize()
{
auto result = GitRepo::try_to_create(m_repo_root);
if (result.type == GitRepo::CreateResult::Type::Success) {
switch (result.type) {
case GitRepo::CreateResult::Type::Success:
m_git_repo = result.repo;
} else if (result.type == GitRepo::CreateResult::Type::GitProgramNotFound) {
return true;
case GitRepo::CreateResult::Type::GitProgramNotFound:
GUI::MessageBox::show(window(), "Please install the Git port", "Error", GUI::MessageBox::Type::Error);
return;
} else if (result.type == GitRepo::CreateResult::Type::NoGitRepo) {
return false;
case GitRepo::CreateResult::Type::NoGitRepo: {
auto decision = GUI::MessageBox::show(window(), "Create git repository?", "Git", GUI::MessageBox::Type::Question, GUI::MessageBox::InputType::YesNo);
if (decision != GUI::Dialog::ExecResult::ExecYes)
return;
return false;
m_git_repo = GitRepo::initialize_repository(m_repo_root);
return true;
}
default:
ASSERT_NOT_REACHED();
}
}

bool GitWidget::initialize_if_needed()
{
if (initialized())
return true;

return initialize();
}

void GitWidget::refresh()
{
if (!initialize_if_needed()) {
dbg() << "GitWidget initialization failed";
return;
}

ASSERT(!m_git_repo.is_null());
Expand Down
3 changes: 3 additions & 0 deletions DevTools/HackStudio/Git/GitWidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,13 @@ class GitWidget final : public GUI::Widget {

void refresh();
void set_view_diff_callback(ViewDiffCallback callback);
bool initialized() const { return !m_git_repo.is_null(); };

private:
explicit GitWidget(const LexicalPath& repo_root);

bool initialize();
bool initialize_if_needed();
void stage_file(const LexicalPath&);
void unstage_file(const LexicalPath&);
void commit();
Expand Down
5 changes: 4 additions & 1 deletion DevTools/HackStudio/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -489,8 +489,11 @@ static int main_impl(int argc, char** argv)
auto save_action = GUI::Action::create("Save", { Mod_Ctrl, Key_S }, Gfx::Bitmap::load_from_file("/res/icons/16x16/save.png"), [&](auto&) {
if (g_currently_open_file.is_empty())
return;

current_editor().write_to_file(g_currently_open_file);
g_git_widget->refresh();

if (g_git_widget->initialized())
g_git_widget->refresh();
});

toolbar.add_action(new_action);
Expand Down

0 comments on commit b82a254

Please sign in to comment.