@@ -183,17 +183,17 @@ void curses_scrollable_list::selection_goto(int32_t datasize, int32_t row)
183
183
// /////////////////////////////////////////////////////////////////////////////
184
184
// curses_table_sidemenu implementation
185
185
// /////////////////////////////////////////////////////////////////////////////
186
- curses_table_sidemenu::curses_table_sidemenu (sinsp_cursesui* parent)
186
+ curses_table_sidemenu::curses_table_sidemenu (sidemenu_type type, sinsp_cursesui* parent, uint32_t selct )
187
187
{
188
188
ASSERT (parent != NULL );
189
189
m_parent = parent;
190
190
m_h = m_parent->m_screenh - TABLE_Y_START - 1 ;
191
191
m_w = SIDEMENU_WIDTH;
192
192
m_y_start = TABLE_Y_START;
193
193
m_win = newwin (m_h, m_w, m_y_start, 0 );
194
- m_selct = m_parent-> m_selected_sidemenu_entry ;
194
+ m_selct = selct ;
195
195
m_selct_ori = m_selct;
196
- m_entries = NULL ;
196
+ m_type = type ;
197
197
}
198
198
199
199
curses_table_sidemenu::~curses_table_sidemenu ()
@@ -205,7 +205,7 @@ void curses_table_sidemenu::render()
205
205
{
206
206
int32_t j, k;
207
207
208
- ASSERT (m_entries != NULL );
208
+ ASSERT (m_entries. size () != 0 );
209
209
210
210
//
211
211
// Render window header
@@ -229,7 +229,7 @@ void curses_table_sidemenu::render()
229
229
//
230
230
// Render the rows
231
231
//
232
- for (j = m_firstrow; j < MIN (m_firstrow + (int32_t )m_h - 1 , (int32_t )m_entries-> size ()); j++)
232
+ for (j = m_firstrow; j < MIN (m_firstrow + (int32_t )m_h - 1 , (int32_t )m_entries. size ()); j++)
233
233
{
234
234
if (j == m_selct)
235
235
{
@@ -248,7 +248,7 @@ void curses_table_sidemenu::render()
248
248
}
249
249
250
250
// add the new line
251
- mvwaddnstr (m_win, j - m_firstrow + 1 , 0 , m_entries-> at (j).m_name .c_str (), m_w);
251
+ mvwaddnstr (m_win, j - m_firstrow + 1 , 0 , m_entries. at (j).m_name .c_str (), m_w);
252
252
253
253
// white space at the right
254
254
wattrset (m_win, m_parent->m_colors [sinsp_cursesui::PROCESS]);
@@ -268,10 +268,10 @@ void curses_table_sidemenu::update_view_info()
268
268
{
269
269
delete m_parent->m_viewinfo_page ;
270
270
271
- ASSERT (m_selct < (int32_t )m_entries-> size ());
271
+ ASSERT (m_selct < (int32_t )m_entries. size ());
272
272
273
273
m_parent->m_viewinfo_page = new curses_viewinfo_page (m_parent,
274
- m_entries-> at (m_selct).m_id ,
274
+ m_entries. at (m_selct).m_id ,
275
275
TABLE_Y_START,
276
276
SIDEMENU_WIDTH,
277
277
m_parent->m_screenh - TABLE_Y_START - 1 ,
@@ -299,33 +299,51 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
299
299
case ' \n ' :
300
300
case ' \r ' :
301
301
case KEY_ENTER:
302
- ASSERT (m_selct < (int32_t )m_entries-> size ());
303
- if (m_parent-> m_spy_box == NULL )
302
+ ASSERT (m_selct < (int32_t )m_entries. size ());
303
+ if (m_type == ST_VIEWS )
304
304
{
305
- m_parent->m_selected_view = m_entries->at (m_selct).m_id ;
305
+ if (m_parent->m_spy_box == NULL )
306
+ {
307
+ m_parent->m_selected_view = m_entries.at (m_selct).m_id ;
308
+ }
309
+
310
+ m_parent->m_selected_view_sidemenu_entry = m_selct;
306
311
}
307
- m_parent->m_selected_sidemenu_entry = m_selct;
312
+ else
313
+ {
314
+ m_parent->m_selected_action_sidemenu_entry = m_selct;
315
+ }
316
+
308
317
return STA_SWITCH_VIEW;
309
318
case KEY_BACKSPACE:
310
319
case 127 :
311
320
case 27 : // ESC
312
321
case KEY_RESIZE:
313
- ASSERT (m_selct < (int32_t )m_entries-> size ());
322
+ ASSERT (m_selct < (int32_t )m_entries. size ());
314
323
if (m_parent->m_spy_box == NULL )
315
324
{
316
- m_parent->m_selected_view = m_entries->at (m_selct).m_id ;
325
+ m_parent->m_selected_view = m_entries.at (m_selct).m_id ;
326
+ }
327
+
328
+ if (m_type == ST_VIEWS)
329
+ {
330
+ m_parent->m_selected_view_sidemenu_entry = m_selct_ori;
317
331
}
318
- m_parent->m_selected_sidemenu_entry = m_selct_ori;
332
+ else
333
+ {
334
+ m_parent->m_selected_action_sidemenu_entry = m_selct_ori;
335
+ }
336
+
319
337
return STA_SWITCH_VIEW;
320
338
case KEY_UP:
321
- if (m_entries-> size () == 0 )
339
+ if (m_entries. size () == 0 )
322
340
{
323
341
return STA_NONE;
324
342
}
325
343
326
344
prev_select = m_selct;
327
345
328
- selection_up ((int32_t )m_entries-> size ());
346
+ selection_up ((int32_t )m_entries. size ());
329
347
330
348
input = getch ();
331
349
if (input != -1 )
@@ -341,14 +359,14 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
341
359
render ();
342
360
return STA_NONE;
343
361
case KEY_DOWN:
344
- if (m_entries-> size () == 0 )
362
+ if (m_entries. size () == 0 )
345
363
{
346
364
return STA_NONE;
347
365
}
348
366
349
367
prev_select = m_selct;
350
368
351
- selection_down ((int32_t )m_entries-> size ());
369
+ selection_down ((int32_t )m_entries. size ());
352
370
353
371
input = getch ();
354
372
if (input != -1 )
@@ -364,14 +382,14 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
364
382
render ();
365
383
return STA_NONE;
366
384
case KEY_PPAGE:
367
- if (m_entries-> size () == 0 )
385
+ if (m_entries. size () == 0 )
368
386
{
369
387
return STA_NONE;
370
388
}
371
389
372
390
prev_select = m_selct;
373
391
374
- selection_pageup ((int32_t )m_entries-> size ());
392
+ selection_pageup ((int32_t )m_entries. size ());
375
393
376
394
input = getch ();
377
395
if (input != -1 )
@@ -387,14 +405,14 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
387
405
render ();
388
406
return STA_NONE;
389
407
case KEY_NPAGE:
390
- if (m_entries-> size () == 0 )
408
+ if (m_entries. size () == 0 )
391
409
{
392
410
return STA_NONE;
393
411
}
394
412
395
413
prev_select = m_selct;
396
414
397
- selection_pagedown ((int32_t )m_entries-> size ());
415
+ selection_pagedown ((int32_t )m_entries. size ());
398
416
399
417
input = getch ();
400
418
if (input != -1 )
@@ -410,14 +428,14 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
410
428
render ();
411
429
return STA_NONE;
412
430
case KEY_HOME:
413
- if (m_entries-> size () == 0 )
431
+ if (m_entries. size () == 0 )
414
432
{
415
433
return STA_NONE;
416
434
}
417
435
418
436
prev_select = m_selct;
419
437
420
- selection_home ((int32_t )m_entries-> size ());
438
+ selection_home ((int32_t )m_entries. size ());
421
439
422
440
input = getch ();
423
441
if (input != -1 )
@@ -433,14 +451,14 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
433
451
render ();
434
452
return STA_NONE;
435
453
case KEY_END:
436
- if (m_entries-> size () == 0 )
454
+ if (m_entries. size () == 0 )
437
455
{
438
456
return STA_NONE;
439
457
}
440
458
441
459
prev_select = m_selct;
442
460
443
- selection_end ((int32_t )m_entries-> size ());
461
+ selection_end ((int32_t )m_entries. size ());
444
462
445
463
input = getch ();
446
464
if (input != -1 )
@@ -457,7 +475,7 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
457
475
return STA_NONE;
458
476
case KEY_MOUSE:
459
477
{
460
- if (m_entries-> size () == 0 )
478
+ if (m_entries. size () == 0 )
461
479
{
462
480
return STA_NONE;
463
481
}
@@ -481,7 +499,7 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
481
499
// This is a click one of the menu entries. Update the selection.
482
500
//
483
501
m_selct = m_firstrow + (m_last_mevent.y - TABLE_Y_START - 1 );
484
- sanitize_selection ((int32_t )m_entries-> size ());
502
+ sanitize_selection ((int32_t )m_entries. size ());
485
503
update_view_info ();
486
504
render ();
487
505
}
@@ -496,7 +514,7 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
496
514
// Update the selection.
497
515
//
498
516
m_selct = m_firstrow + (m_last_mevent.y - TABLE_Y_START - 1 );
499
- sanitize_selection ((int32_t )m_entries-> size ());
517
+ sanitize_selection ((int32_t )m_entries. size ());
500
518
render ();
501
519
502
520
//
@@ -508,12 +526,21 @@ sysdig_table_action curses_table_sidemenu::handle_input(int ch)
508
526
//
509
527
// Notify the parent that a selection has happened
510
528
//
511
- ASSERT (m_selct < (int32_t )m_entries-> size ());
529
+ ASSERT (m_selct < (int32_t )m_entries. size ());
512
530
if (m_parent->m_spy_box == NULL )
513
531
{
514
- m_parent->m_selected_view = m_entries->at (m_selct).m_id ;
532
+ m_parent->m_selected_view = m_entries.at (m_selct).m_id ;
533
+ }
534
+
535
+ if (m_type == ST_VIEWS)
536
+ {
537
+ m_parent->m_selected_view_sidemenu_entry = m_selct;
515
538
}
516
- m_parent->m_selected_sidemenu_entry = m_selct;
539
+ else
540
+ {
541
+ m_parent->m_selected_action_sidemenu_entry = m_selct;
542
+ }
543
+
517
544
return STA_SWITCH_VIEW;
518
545
}
519
546
}
@@ -950,7 +977,7 @@ sysdig_table_action curses_textbox::handle_input(int ch)
950
977
sysdig_table_action ta = m_sidemenu->handle_input (ch);
951
978
if (ta == STA_SWITCH_VIEW)
952
979
{
953
- switch (m_parent->m_selected_sidemenu_entry )
980
+ switch (m_parent->m_selected_view_sidemenu_entry )
954
981
{
955
982
case 0 :
956
983
m_parent->m_spybox_text_format = sinsp_evt::PF_NORMAL;
@@ -1045,7 +1072,9 @@ sysdig_table_action curses_textbox::handle_input(int ch)
1045
1072
1046
1073
if (m_sidemenu == NULL )
1047
1074
{
1048
- m_sidemenu = new curses_table_sidemenu (this ->m_parent );
1075
+ m_sidemenu = new curses_table_sidemenu (curses_table_sidemenu::ST_VIEWS,
1076
+ this ->m_parent ,
1077
+ 0 );
1049
1078
populate_sidemenu ();
1050
1079
clear ();
1051
1080
wresize (m_win, m_parent->m_screenh - 4 , m_parent->m_screenw - 20 );
0 commit comments