~ubuntu-branches/ubuntu/utopic/xterm/utopic-proposed

« back to all changes in this revision

Viewing changes to menu.c

  • Committer: Daniel Holbach
  • Date: 2010-08-03 06:45:18 UTC
  • mfrom: (1.1.19 upstream)
  • Revision ID: daniel.holbach@canonical.com-20100803064518-obveikvy73ximzvw
Merging shared upstream rev into target branch.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $XTermId: menu.c,v 1.263 2010/05/21 08:47:19 tom Exp $ */
 
1
/* $XTermId: menu.c,v 1.267 2010/06/20 21:09:10 tom Exp $ */
2
2
 
3
3
/*
4
4
 *
597
597
       String * params,         /* mainMenu, vtMenu, or tekMenu */
598
598
       Cardinal *param_count)   /* 0 or 1 */
599
599
{
600
 
    TScreen *screen = TScreenOf(term);
 
600
    XtermWidget xw = term;
 
601
    TScreen *screen = TScreenOf(xw);
601
602
    MenuIndex me;
602
603
    Bool created = False;
603
604
    Widget mw;
604
605
 
605
606
    if (*param_count != 1) {
606
 
        Bell(XkbBI_MinorError, 0);
 
607
        Bell(xw, XkbBI_MinorError, 0);
607
608
        return False;
608
609
    }
609
610
 
610
611
    if ((me = indexOfMenu(params[0])) == noMenu) {
611
 
        Bell(XkbBI_MinorError, 0);
 
612
        Bell(xw, XkbBI_MinorError, 0);
612
613
        return False;
613
614
    }
614
615
 
615
616
    if ((mw = obtain_menu(w, me)) == 0
616
617
        || sizeof_menu(w, me) == 0) {
617
 
        mw = create_menu(w, term, me);
 
618
        mw = create_menu(w, xw, me);
618
619
        created = (mw != 0);
619
620
    }
620
621
    if (mw == 0)
642
643
                                   False);
643
644
            }
644
645
#endif
645
 
            if (!xtermHasPrinter(term)) {
 
646
            if (!xtermHasPrinter(xw)) {
646
647
                SetItemSensitivity(mainMenuEntries[mainMenu_print].widget,
647
648
                                   False);
648
649
                SetItemSensitivity(mainMenuEntries[mainMenu_print_redir].widget,
742
743
#endif
743
744
#if OPT_DEC_CHRSET
744
745
            update_font_doublesize();
745
 
            if (TScreenOf(term)->cache_doublesize == 0)
 
746
            if (TScreenOf(xw)->cache_doublesize == 0)
746
747
                SetItemSensitivity(
747
748
                                      fontMenuEntries[fontMenu_font_doublesize].widget,
748
749
                                      False);
763
764
            enable_allow_xxx_ops(!(screen->allowSendEvents));
764
765
#endif
765
766
        }
766
 
        FindFontSelection(term, NULL, True);
 
767
        FindFontSelection(xw, NULL, True);
767
768
        SetItemSensitivity(
768
769
                              fontMenuEntries[fontMenu_fontsel].widget,
769
770
                              (screen->menu_font_names[fontMenu_fontsel]
843
844
             XtPointer closure GCC_UNUSED,
844
845
             XtPointer data GCC_UNUSED)
845
846
{
846
 
    TScreen *screen = TScreenOf(term);
 
847
    XtermWidget xw = term;
 
848
    TScreen *screen = TScreenOf(xw);
847
849
    Time now = CurrentTime;     /* XXX - wrong */
848
850
 
849
851
    if (screen->grabbedKbd) {
850
852
        XUngrabKeyboard(screen->display, now);
851
 
        ReverseVideo(term);
 
853
        ReverseVideo(xw);
852
854
        screen->grabbedKbd = False;
853
855
    } else {
854
856
        if (XGrabKeyboard(screen->display, XtWindow(CURRENT_EMU()),
855
857
                          True, GrabModeAsync, GrabModeAsync, now)
856
858
            != GrabSuccess) {
857
 
            Bell(XkbBI_MinorError, 100);
 
859
            Bell(xw, XkbBI_MinorError, 100);
858
860
        } else {
859
 
            ReverseVideo(term);
 
861
            ReverseVideo(xw);
860
862
            screen->grabbedKbd = True;
861
863
        }
862
864
    }
936
938
           XtPointer closure GCC_UNUSED,
937
939
           XtPointer data GCC_UNUSED)
938
940
{
939
 
    TScreen *screen = TScreenOf(term);
 
941
    XtermWidget xw = term;
 
942
    TScreen *screen = TScreenOf(xw);
940
943
 
941
944
    if (screen->logging) {
942
 
        CloseLog(screen);
 
945
        CloseLog(xw);
943
946
    } else {
944
 
        StartLog(screen);
 
947
        StartLog(xw);
945
948
    }
946
949
    /* update_logging done by CloseLog and StartLog */
947
950
}
1335
1338
static void
1336
1339
handle_tekshow(Widget gw GCC_UNUSED, Bool allowswitch)
1337
1340
{
1338
 
    TScreen *screen = TScreenOf(term);
 
1341
    XtermWidget xw = term;
 
1342
    TScreen *screen = TScreenOf(xw);
1339
1343
 
1340
1344
    TRACE(("Show tek-window\n"));
1341
 
    if (!TEK4014_SHOWN(term)) { /* not showing, turn on */
 
1345
    if (!TEK4014_SHOWN(xw)) {   /* not showing, turn on */
1342
1346
        set_tek_visibility(True);
1343
1347
    } else if (screen->Vshow || allowswitch) {  /* is showing, turn off */
1344
1348
        set_tek_visibility(False);
1345
1349
        end_tek_mode();         /* WARNING: this does a longjmp */
1346
1350
    } else
1347
 
        Bell(XkbBI_MinorError, 0);
 
1351
        Bell(xw, XkbBI_MinorError, 0);
1348
1352
}
1349
1353
 
1350
1354
/* ARGSUSED */
1469
1473
          XtPointer closure,
1470
1474
          XtPointer data GCC_UNUSED)
1471
1475
{
 
1476
    XtermWidget xw = term;
1472
1477
    char *entryname = (char *) closure;
1473
1478
    int i;
1474
1479
 
1475
1480
    for (i = 0; i < NMENUFONTS; i++) {
1476
1481
        if (strcmp(entryname, fontMenuEntries[i].name) == 0) {
1477
 
            SetVTFont(term, i, True, NULL);
 
1482
            SetVTFont(xw, i, True, NULL);
1478
1483
            return;
1479
1484
        }
1480
1485
    }
1481
 
    Bell(XkbBI_MinorError, 0);
 
1486
    Bell(xw, XkbBI_MinorError, 0);
1482
1487
}
1483
1488
 
1484
1489
#if OPT_DEC_CHRSET
1487
1492
                   XtPointer closure GCC_UNUSED,
1488
1493
                   XtPointer data GCC_UNUSED)
1489
1494
{
1490
 
    if (TScreenOf(term)->cache_doublesize != 0)
1491
 
        ToggleFlag(TScreenOf(term)->font_doublesize);
 
1495
    XtermWidget xw = term;
 
1496
 
 
1497
    if (TScreenOf(xw)->cache_doublesize != 0)
 
1498
        ToggleFlag(TScreenOf(xw)->font_doublesize);
1492
1499
    update_font_doublesize();
1493
1500
    Redraw();
1494
1501
}
1533
1540
                   XtPointer closure GCC_UNUSED,
1534
1541
                   XtPointer data GCC_UNUSED)
1535
1542
{
1536
 
    TScreen *screen = TScreenOf(term);
 
1543
    XtermWidget xw = (XtermWidget) term;
 
1544
    TScreen *screen = TScreenOf(xw);
1537
1545
    int fontnum = screen->menu_font_number;
1538
 
    String name = TScreenOf(term)->MenuFontName(fontnum);
 
1546
    String name = TScreenOf(xw)->MenuFontName(fontnum);
1539
1547
 
1540
 
    ToggleFlag(term->misc.render_font);
 
1548
    DefaultRenderFont(xw);
 
1549
    ToggleFlag(xw->misc.render_font);
1541
1550
    update_font_renderfont();
1542
 
    xtermLoadFont(term, xtermFontName(name), True, fontnum);
 
1551
    xtermLoadFont(xw, xtermFontName(name), True, fontnum);
1543
1552
    ScrnRefresh(term, 0, 0,
1544
1553
                MaxRows(screen),
1545
1554
                MaxCols(screen), True);
1651
1660
static void
1652
1661
handle_vtshow(Widget gw GCC_UNUSED, Bool allowswitch)
1653
1662
{
1654
 
    TScreen *screen = TScreenOf(term);
 
1663
    XtermWidget xw = term;
 
1664
    TScreen *screen = TScreenOf(xw);
1655
1665
 
1656
1666
    TRACE(("Show vt-window\n"));
1657
1667
    if (!screen->Vshow) {       /* not showing, turn on */
1658
1668
        set_vt_visibility(True);
1659
 
    } else if (TEK4014_SHOWN(term) || allowswitch) {    /* is showing, turn off */
 
1669
    } else if (TEK4014_SHOWN(xw) || allowswitch) {      /* is showing, turn off */
1660
1670
        set_vt_visibility(False);
1661
 
        if (!TEK4014_ACTIVE(term) && tekRefreshList)
 
1671
        if (!TEK4014_ACTIVE(xw) && tekRefreshList)
1662
1672
            TekRefresh(tekWidget);
1663
1673
        end_vt_mode();          /* WARNING: this does a longjmp... */
1664
1674
    } else
1665
 
        Bell(XkbBI_MinorError, 0);
 
1675
        Bell(xw, XkbBI_MinorError, 0);
1666
1676
}
1667
1677
 
1668
1678
static void
1712
1722
              XtPointer closure,
1713
1723
              XtPointer data)
1714
1724
{
 
1725
    XtermWidget xw = term;
1715
1726
    int dir = -2;
1716
1727
 
1717
1728
    switch (nparams) {
1730
1741
 
1731
1742
    switch (dir) {
1732
1743
    case -2:
1733
 
        Bell(XkbBI_MinorError, 0);
 
1744
        Bell(xw, XkbBI_MinorError, 0);
1734
1745
        break;
1735
1746
 
1736
1747
    case -1:
1741
1752
        if (var)
1742
1753
            (*proc) (w, closure, data);
1743
1754
        else
1744
 
            Bell(XkbBI_MinorError, 0);
 
1755
            Bell(xw, XkbBI_MinorError, 0);
1745
1756
        break;
1746
1757
 
1747
1758
    case 1:
1748
1759
        if (!var)
1749
1760
            (*proc) (w, closure, data);
1750
1761
        else
1751
 
            Bell(XkbBI_MinorError, 0);
 
1762
            Bell(xw, XkbBI_MinorError, 0);
1752
1763
        break;
1753
1764
    }
1754
1765
    return;
1884
1895
        /* one could allow numeric values, but that would be a security hole */
1885
1896
    }
1886
1897
 
1887
 
    Bell(XkbBI_MinorError, 0);
 
1898
    Bell(term, XkbBI_MinorError, 0);
1888
1899
}
1889
1900
 
1890
1901
/* ARGSUSED */
2023
2034
                String * params,
2024
2035
                Cardinal *param_count)
2025
2036
{
2026
 
    if (IsIcon(TScreenOf(term))) {
2027
 
        Bell(XkbBI_MinorError, 0);
 
2037
    XtermWidget xw = term;
 
2038
 
 
2039
    if (IsIcon(TScreenOf(xw))) {
 
2040
        Bell(xw, XkbBI_MinorError, 0);
2028
2041
    } else {
2029
 
        handle_vt_toggle(do_scrollbar, TScreenOf(term)->fullVwin.sb_info.width,
 
2042
        handle_vt_toggle(do_scrollbar, TScreenOf(xw)->fullVwin.sb_info.width,
2030
2043
                         params, *param_count, w);
2031
2044
    }
2032
2045
}
2292
2305
                 String * params,
2293
2306
                 Cardinal *param_count)
2294
2307
{
2295
 
    handle_vt_toggle(do_font_renderfont, term->misc.render_font,
 
2308
    XtermWidget xw = (XtermWidget) term;
 
2309
 
 
2310
    DefaultRenderFont(xw);
 
2311
 
 
2312
    handle_vt_toggle(do_font_renderfont, xw->misc.render_font,
2296
2313
                     params, *param_count, w);
2297
2314
}
2298
2315
#endif
2326
2343
                      String * params,
2327
2344
                      Cardinal *param_count)
2328
2345
{
 
2346
    XtermWidget xw = term;
 
2347
 
2329
2348
    if (*param_count == 1) {
2330
2349
        switch (params[0][0]) {
2331
2350
        case 'v':
2332
2351
        case 'V':
2333
 
            if (TEK4014_ACTIVE(term))
 
2352
            if (TEK4014_ACTIVE(xw))
2334
2353
                do_vtmode(w, (XtPointer) 0, (XtPointer) 0);
2335
2354
            break;
2336
2355
        case 't':
2337
2356
        case 'T':
2338
 
            if (!TEK4014_ACTIVE(term))
 
2357
            if (!TEK4014_ACTIVE(xw))
2339
2358
                do_tekmode(w, (XtPointer) 0, (XtPointer) 0);
2340
2359
            break;
2341
2360
        default:
2342
 
            Bell(XkbBI_MinorError, 0);
 
2361
            Bell(xw, XkbBI_MinorError, 0);
2343
2362
        }
2344
2363
    } else {
2345
 
        Bell(XkbBI_MinorError, 0);
 
2364
        Bell(xw, XkbBI_MinorError, 0);
2346
2365
    }
2347
2366
}
2348
2367
 
2352
2371
                 String * params,
2353
2372
                 Cardinal *param_count)
2354
2373
{
 
2374
    XtermWidget xw = term;
 
2375
 
2355
2376
    if (*param_count == 2) {
2356
2377
        switch (params[0][0]) {
2357
2378
        case 'v':
2358
2379
        case 'V':
2359
 
            handle_tek_toggle(do_vtonoff, (int) TScreenOf(term)->Vshow,
 
2380
            handle_tek_toggle(do_vtonoff, (int) TScreenOf(xw)->Vshow,
2360
2381
                              params + 1, (*param_count) - 1, w);
2361
2382
            break;
2362
2383
        case 't':
2363
2384
        case 'T':
2364
 
            handle_tek_toggle(do_tekonoff, (int) TEK4014_SHOWN(term),
 
2385
            handle_tek_toggle(do_tekonoff, (int) TEK4014_SHOWN(xw),
2365
2386
                              params + 1, (*param_count) - 1, w);
2366
2387
            break;
2367
2388
        default:
2368
 
            Bell(XkbBI_MinorError, 0);
 
2389
            Bell(xw, XkbBI_MinorError, 0);
2369
2390
        }
2370
2391
    } else {
2371
 
        Bell(XkbBI_MinorError, 0);
 
2392
        Bell(xw, XkbBI_MinorError, 0);
2372
2393
    }
2373
2394
}
2374
2395
 
2379
2400
                 String * params,
2380
2401
                 Cardinal *param_count)
2381
2402
{
 
2403
    XtermWidget xw = term;
2382
2404
    void (*proc) PROTO_XT_CALLBACK_ARGS = 0;
2383
2405
 
2384
2406
    switch (*param_count) {
2405
2427
    if (proc)
2406
2428
        (*proc) (w, (XtPointer) 0, (XtPointer) 0);
2407
2429
    else
2408
 
        Bell(XkbBI_MinorError, 0);
 
2430
        Bell(xw, XkbBI_MinorError, 0);
2409
2431
}
2410
2432
 
2411
2433
/* ARGSUSED */
2750
2772
void
2751
2773
ShowToolbar(Bool enable)
2752
2774
{
 
2775
    XtermWidget xw = term;
 
2776
 
2753
2777
    TRACE(("ShowToolbar(%d)\n", enable));
2754
2778
 
2755
 
    if (IsIcon(TScreenOf(term))) {
2756
 
        Bell(XkbBI_MinorError, 0);
 
2779
    if (IsIcon(TScreenOf(xw))) {
 
2780
        Bell(xw, XkbBI_MinorError, 0);
2757
2781
    } else {
2758
2782
        if (enable) {
2759
2783
            if (InitWidgetMenu(toplevel))
2760
 
                show_toolbar((Widget) term);
 
2784
                show_toolbar((Widget) xw);
2761
2785
#if OPT_TEK4014
2762
2786
            if (InitWidgetMenu(tekshellwidget))
2763
2787
                show_toolbar((Widget) tekWidget);
2764
2788
#endif
2765
2789
        } else {
2766
 
            hide_toolbar((Widget) term);
 
2790
            hide_toolbar((Widget) xw);
2767
2791
#if OPT_TEK4014
2768
2792
            hide_toolbar((Widget) tekWidget);
2769
2793
#endif
2779
2803
              String * params GCC_UNUSED,
2780
2804
              Cardinal *param_count GCC_UNUSED)
2781
2805
{
2782
 
    if (IsIcon(TScreenOf(term))) {
2783
 
        Bell(XkbBI_MinorError, 0);
 
2806
    XtermWidget xw = term;
 
2807
 
 
2808
    if (IsIcon(TScreenOf(xw))) {
 
2809
        Bell(xw, XkbBI_MinorError, 0);
2784
2810
    } else {
2785
2811
        handle_vt_toggle(do_toolbar, resource.toolBar,
2786
2812
                         params, *param_count, w);
2793
2819
           XtPointer closure GCC_UNUSED,
2794
2820
           XtPointer data GCC_UNUSED)
2795
2821
{
 
2822
    XtermWidget xw = term;
 
2823
 
2796
2824
    /*
2797
2825
     * Toggle toolbars for both vt100 and tek windows, since they share the
2798
2826
     * menu which contains the checkbox indicating whether the toolbar is
2799
2827
     * active.
2800
2828
     */
2801
 
    if (IsIcon(TScreenOf(term))) {
2802
 
        Bell(XkbBI_MinorError, 0);
 
2829
    if (IsIcon(TScreenOf(xw))) {
 
2830
        Bell(xw, XkbBI_MinorError, 0);
2803
2831
    } else {
2804
2832
        ShowToolbar(ToggleFlag(resource.toolBar));
2805
2833
    }
3226
3254
    UpdateCheckbox("update_font_renderfont",
3227
3255
                   fontMenuEntries,
3228
3256
                   fontMenu_render_font,
3229
 
                   term->misc.render_font);
 
3257
                   (term->misc.render_font == True));
3230
3258
    SetItemSensitivity(fontMenuEntries[fontMenu_render_font].widget,
3231
3259
                       !IsEmpty(term->misc.face_name));
3232
3260
}