From 96cb4e1683a47f5b14131a18e903ef975b290cf8 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 f855e88..a0a114a 100644
--- a/pgadmin/frm/frmQuery.cpp
+++ b/pgadmin/frm/frmQuery.cpp
@@ -328,6 +328,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();
@@ -2436,19 +2439,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

