From e2ccfe12eebc679a5d1c89d77631fa0d110afe48 Mon Sep 17 00:00:00 2001
From: John Obaterspok <john.obaterspok@gmail.com>
Date: Sun, 13 Sep 2015 21:14:25 +0200
Subject: [PATCH 2/2] Add Commit/Rollback to query menu + disable when not in
 transaction

---
 pgadmin/frm/frmQuery.cpp | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/pgadmin/frm/frmQuery.cpp b/pgadmin/frm/frmQuery.cpp
index 1bdb61b..b7f2f9c 100644
--- a/pgadmin/frm/frmQuery.cpp
+++ b/pgadmin/frm/frmQuery.cpp
@@ -327,6 +327,9 @@ frmQuery::frmQuery(frmMain *form, const wxString &_title, pgConn *_conn, const w
 	queryMenu->Append(MNU_AUTOCOMMIT, _("&Auto-Commit"), _("Auto commit the cuurent transaction"), wxITEM_CHECK);
 	queryMenu->AppendSeparator();
 	queryMenu->Append(MNU_CANCEL, _("&Cancel\tAlt-Break"), _("Cancel query"));
+	queryMenu->AppendSeparator();
+	queryMenu->Append(MNU_DOCOMMIT, _("Commit\tCtrl-Shift-C"), _("Commit"));
+	queryMenu->Append(MNU_DOROLLBACK, _("Rollback\tCtrl-Shift-R"), _("Rollback"));
 	menuBar->Append(queryMenu, _("&Query"));
 
 	favouritesMenu = new wxMenu();
@@ -2435,19 +2438,23 @@ void frmQuery::OnMacroInvoke(wxCommandEvent &event)
 
 void frmQuery::setTools(const bool running)
 {
+	bool canEndTransaction = (!running && conn->GetTxStatus() != PQTRANS_IDLE);
+
 	toolBar->EnableTool(MNU_EXECUTE, !running);
 	toolBar->EnableTool(MNU_EXECPGS, !running);
 	toolBar->EnableTool(MNU_EXECFILE, !running);
 	toolBar->EnableTool(MNU_EXPLAIN, !running);
 	toolBar->EnableTool(MNU_CANCEL, running);
-	toolBar->EnableTool(MNU_DOCOMMIT, !running);
-	toolBar->EnableTool(MNU_DOROLLBACK, !running);
+	toolBar->EnableTool(MNU_DOCOMMIT, canEndTransaction);
+	toolBar->EnableTool(MNU_DOROLLBACK, canEndTransaction);
 	queryMenu->Enable(MNU_EXECUTE, !running);
 	queryMenu->Enable(MNU_EXECPGS, !running);
 	queryMenu->Enable(MNU_EXECFILE, !running);
 	queryMenu->Enable(MNU_EXPLAIN, !running);
 	queryMenu->Enable(MNU_EXPLAINANALYZE, !running);
 	queryMenu->Enable(MNU_CANCEL, running);
+	queryMenu->Enable(MNU_DOCOMMIT, canEndTransaction);
+	queryMenu->Enable(MNU_DOROLLBACK, canEndTransaction);
 	fileMenu->Enable(MNU_EXPORT, sqlResult->CanExport());
 	fileMenu->Enable(MNU_QUICKREPORT, sqlResult->CanExport());
 	fileMenu->Enable(MNU_RECENT, (recentFileMenu->GetMenuItemCount() > 0));
-- 
1.9.5.msysgit.1

