~ubuntu-branches/ubuntu/karmic/xterm/karmic

« back to all changes in this revision

Viewing changes to scrollbar.c

  • Committer: Bazaar Package Importer
  • Author(s): Bryce Harrington
  • Date: 2009-02-26 13:53:17 UTC
  • mfrom: (1.1.13 upstream) (11.1.6 sid)
  • Revision ID: james.westby@ubuntu.com-20090226135317-qnnj97y2n7olu8fo
Tags: 241-1ubuntu1
* Merge from debian unstable, remaining changes:
  - Enabled URL hilighting
  - rm -rf for .pc patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* $XTermId: scrollbar.c,v 1.137 2008/12/30 15:40:13 tom Exp $ */
 
1
/* $XTermId: scrollbar.c,v 1.138 2009/01/23 00:10:49 tom Exp $ */
2
2
 
3
3
/* $XFree86: xc/programs/xterm/scrollbar.c,v 3.48 2006/02/13 01:14:59 dickey Exp $ */
4
4
 
5
5
/*
6
 
 * Copyright 2000-2007,2008 by Thomas E. Dickey
 
6
 * Copyright 2000-2008,2009 by Thomas E. Dickey
7
7
 *
8
8
 *                         All Rights Reserved
9
9
 *
78
78
 * The scrollbar's border overlaps the border of the vt100 window.  If there
79
79
 * is no border for the vt100, there can be no border for the scrollbar.
80
80
 */
81
 
#define SCROLLBAR_BORDER(xw) ((xw)->screen.scrollBarBorder)
 
81
#define SCROLLBAR_BORDER(xw) (TScreenOf(xw)->scrollBarBorder)
82
82
#if OPT_TOOLBAR
83
83
#define ScrollBarBorder(xw) (BorderWidth(xw) ? SCROLLBAR_BORDER(xw) : 0)
84
84
#else
96
96
void
97
97
DoResizeScreen(XtermWidget xw)
98
98
{
99
 
    TScreen *screen = &xw->screen;
 
99
    TScreen *screen = TScreenOf(xw);
100
100
 
101
 
    int border = 2 * xw->screen.border;
102
 
    int min_wide = border + xw->screen.fullVwin.sb_info.width;
 
101
    int border = 2 * screen->border;
 
102
    int min_wide = border + screen->fullVwin.sb_info.width;
103
103
    int min_high = border;
104
104
    XtGeometryResult geomreqresult;
105
105
    Dimension reqWidth, reqHeight, repWidth, repHeight;
220
220
#endif /* NO_ACTIVE_ICON */
221
221
}
222
222
 
223
 
static XtermWidget
224
 
xtermScroller(Widget xw)
225
 
{
226
 
    XtermWidget result = 0;
227
 
 
228
 
    if (xw != 0) {
229
 
        if (IsXtermWidget(xw)) {
230
 
            result = (XtermWidget) xw;
231
 
        } else {
232
 
            /*
233
 
             * This may have been the scrollbar widget.  Try its parent, which
234
 
             * would be the VT100 widget.
235
 
             */
236
 
            result = xtermScroller(XtParent(xw));
237
 
        }
238
 
    }
239
 
    return result;
240
 
}
241
 
 
242
223
static Widget
243
224
CreateScrollBar(XtermWidget xw, int x, int y, int height)
244
225
{
262
243
void
263
244
ScrollBarReverseVideo(Widget scrollWidget)
264
245
{
265
 
    XtermWidget xw = xtermScroller(scrollWidget);
 
246
    XtermWidget xw = getXtermWidget(scrollWidget);
266
247
 
267
248
    if (xw != 0) {
268
 
        SbInfo *sb = &(xw->screen.fullVwin.sb_info);
 
249
        SbInfo *sb = &(TScreenOf(xw)->fullVwin.sb_info);
269
250
        Arg args[4];
270
251
        Cardinal nargs = XtNumber(args);
271
252
 
303
284
void
304
285
ScrollBarDrawThumb(Widget scrollWidget)
305
286
{
306
 
    XtermWidget xw = xtermScroller(scrollWidget);
 
287
    XtermWidget xw = getXtermWidget(scrollWidget);
307
288
 
308
289
    if (xw != 0) {
309
 
        TScreen *screen = &xw->screen;
 
290
        TScreen *screen = TScreenOf(xw);
310
291
        int thumbTop, thumbHeight, totalHeight;
311
292
 
312
293
        thumbTop = ROW2INX(screen, screen->savedlines);
322
303
void
323
304
ResizeScrollBar(XtermWidget xw)
324
305
{
325
 
    TScreen *screen = &(xw->screen);
 
306
    TScreen *screen = TScreenOf(xw);
326
307
 
327
308
    if (screen->scrollWidget != 0) {
328
309
        int height = screen->fullVwin.height + screen->border * 2;
354
335
void
355
336
WindowScroll(XtermWidget xw, int top)
356
337
{
357
 
    TScreen *screen = &(xw->screen);
 
338
    TScreen *screen = TScreenOf(xw);
358
339
    int i, lines;
359
340
    int scrolltop, scrollheight, refreshtop;
360
341
 
407
388
void
408
389
updateRightScrollbar(XtermWidget xw)
409
390
{
410
 
    TScreen *screen = &xw->screen;
 
391
    TScreen *screen = TScreenOf(xw);
411
392
 
412
393
    if (xw->misc.useRight
413
394
        && screen->fullVwin.fullwidth < xw->core.width)
420
401
void
421
402
ScrollBarOn(XtermWidget xw, int init, int doalloc)
422
403
{
423
 
    TScreen *screen = &xw->screen;
 
404
    TScreen *screen = TScreenOf(xw);
424
405
    int i, j, k;
425
406
 
426
407
    if (screen->fullVwin.sb_info.width || IsIcon(screen))
499
480
void
500
481
ScrollBarOff(XtermWidget xw)
501
482
{
502
 
    TScreen *screen = &xw->screen;
 
483
    TScreen *screen = TScreenOf(xw);
503
484
 
504
485
    if (!screen->fullVwin.sb_info.width || IsIcon(screen))
505
486
        return;
525
506
void
526
507
ToggleScrollBar(XtermWidget xw)
527
508
{
528
 
    TScreen *screen = &xw->screen;
 
509
    TScreen *screen = TScreenOf(xw);
529
510
 
530
511
    if (IsIcon(screen)) {
531
512
        Bell(XkbBI_MinorError, 0);
548
529
                XtPointer client_data GCC_UNUSED,
549
530
                XtPointer call_data)
550
531
{
551
 
    XtermWidget xw = xtermScroller(scrollbarWidget);
 
532
    XtermWidget xw = getXtermWidget(scrollbarWidget);
552
533
 
553
534
    if (xw != 0) {
554
535
        float *topPercent = (float *) call_data;
555
 
        TScreen *screen = &xw->screen;
 
536
        TScreen *screen = TScreenOf(xw);
556
537
        int thumbTop;           /* relative to first saved line */
557
538
        int newTopLine;
558
539
 
573
554
                      XtPointer client_data GCC_UNUSED,
574
555
                      XtPointer call_data)
575
556
{
576
 
    XtermWidget xw = xtermScroller(scrollbarWidget);
 
557
    XtermWidget xw = getXtermWidget(scrollbarWidget);
577
558
 
578
559
    if (xw != 0) {
579
560
        long pixels = (long) call_data;
580
561
 
581
 
        TScreen *screen = &xw->screen;
 
562
        TScreen *screen = TScreenOf(xw);
582
563
        int rowOnScreen, newTopLine;
583
564
 
584
565
        rowOnScreen = pixels / FontHeight(screen);
670
651
}
671
652
 
672
653
static long
673
 
AmountToScroll(Widget xw, String * params, Cardinal nparams)
 
654
AmountToScroll(Widget w, String * params, Cardinal nparams)
674
655
{
675
 
    if (xw != 0) {
676
 
        if (IsXtermWidget(xw)) {
677
 
            TScreen *screen = TScreenOf((XtermWidget) xw);
678
 
            if (nparams > 2
679
 
                && screen->send_mouse_pos != MOUSE_OFF)
680
 
                return 0;
681
 
            return params_to_pixels(screen, params, nparams);
682
 
        } else {
683
 
            /*
684
 
             * This may have been the scrollbar widget.  Try its parent, which
685
 
             * would be the VT100 widget.
686
 
             */
687
 
            return AmountToScroll(XtParent(xw), params, nparams);
 
656
    long result = 0;
 
657
    XtermWidget xw;
 
658
 
 
659
    if ((xw = getXtermWidget(w)) != 0) {
 
660
        TScreen *screen = TScreenOf(xw);
 
661
        if (nparams <= 2
 
662
            || screen->send_mouse_pos == MOUSE_OFF) {
 
663
            result = params_to_pixels(screen, params, nparams);
688
664
        }
689
665
    }
690
 
    return 0;
 
666
    return result;
691
667
}
692
668
 
693
669
/*ARGSUSED*/