@@ -113,6 +113,56 @@ void SyncLineNumScroll(void) {
113113 UpdateLineNumbers ();
114114}
115115
116+ static int g_lastMenuMode = 0 ; /* Start with Query menu (mode 0) */
117+
118+ static void UpdateContextMenu (int mode ) {
119+ HMENU hCBMenu , hCtx ;
120+
121+ /* Only rebuild if mode changed */
122+ if (mode == g_lastMenuMode ) return ;
123+
124+ /* Get the actual menu from CommandBar */
125+ hCBMenu = CommandBar_GetMenu (g_hwndCB , 0 );
126+ if (!hCBMenu ) return ;
127+
128+ /* Remove old context menu at position 1 */
129+ RemoveMenu (hCBMenu , 1 , MF_BYPOSITION );
130+
131+ /* Create and insert new context menu */
132+ hCtx = CreatePopupMenu ();
133+ if (mode == 0 ) {
134+ AppendMenuW (hCtx , MF_STRING , IDM_EXECUTE , L"&Execute\tCtrl+Enter" );
135+ AppendMenuW (hCtx , MF_SEPARATOR , 0 , NULL );
136+ AppendMenuW (hCtx , MF_STRING , IDM_FIND , L"&Find...\tCtrl+F" );
137+ AppendMenuW (hCtx , MF_STRING , IDM_FINDNEXT , L"Find &Next\tF3" );
138+ InsertMenuW (hCBMenu , 1 , MF_BYPOSITION | MF_POPUP , (UINT )hCtx , L"&Query" );
139+ } else if (mode == 1 ) {
140+ AppendMenuW (hCtx , MF_STRING , IDM_EXPORTCSV , L"Export as &CSV..." );
141+ AppendMenuW (hCtx , MF_STRING , IDM_EXPORTTXT , L"Export as &Text..." );
142+ AppendMenuW (hCtx , MF_SEPARATOR , 0 , NULL );
143+ AppendMenuW (hCtx , MF_STRING , IDM_FIND , L"&Find...\tCtrl+F" );
144+ AppendMenuW (hCtx , MF_STRING , IDM_FINDNEXT , L"Find &Next\tF3" );
145+ InsertMenuW (hCBMenu , 1 , MF_BYPOSITION | MF_POPUP , (UINT )hCtx , L"&Results" );
146+ } else {
147+ AppendMenuW (hCtx , MF_STRING , IDM_REFRESH , L"&Refresh" );
148+ InsertMenuW (hCBMenu , 1 , MF_BYPOSITION | MF_POPUP , (UINT )hCtx , L"&Schema" );
149+ }
150+
151+ g_lastMenuMode = mode ;
152+
153+ /* Update View menu radio check - get from CommandBar's menu */
154+ {
155+ HMENU hViewSub = GetSubMenu (hCBMenu , 2 ); /* View is at position 2 */
156+ if (hViewSub ) {
157+ CheckMenuRadioItem (hViewSub , IDM_VIEWQUERY , IDM_VIEWSCHEMA ,
158+ mode == 0 ? IDM_VIEWQUERY : (mode == 1 ? IDM_VIEWRESULT : IDM_VIEWSCHEMA ), MF_BYCOMMAND );
159+ }
160+ }
161+
162+ /* Force CommandBar to redraw */
163+ CommandBar_DrawMenuBar (g_hwndCB , 0 );
164+ }
165+
116166void SwitchView (int mode ) {
117167 g_viewMode = mode ;
118168 ShowWindow (g_hwndQuery , mode == 0 ? SW_SHOW : SW_HIDE );
@@ -121,6 +171,8 @@ void SwitchView(int mode) {
121171 if (g_hwndSchema ) ShowWindow (g_hwndSchema , mode == 2 ? SW_SHOW : SW_HIDE );
122172 /* Disable exec-at-cursor button in non-query views */
123173 SendMessage (g_hwndCB , TB_ENABLEBUTTON , IDM_EXECATCURSOR , mode == 0 );
174+ /* Update context menu */
175+ UpdateContextMenu (mode );
124176 if (mode == 0 ) {
125177 SetFocus (g_hwndQuery );
126178 UpdateLineCount ();
0 commit comments