亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? macevlog.c

?? 遠程登陸工具軟件源碼 用于遠程登陸unix
?? C
字號:
/* $Id: macevlog.c,v 1.8 2003/05/04 14:18:18 simon Exp $ */
/*
 * Copyright (c) 2003 Ben Harris
 * All rights reserved.
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or
 * sell copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 * 
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 * 
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#include <MacTypes.h>
#include <Lists.h>
#include <MacWindows.h>
#include <Quickdraw.h>
#include <Script.h>
#include <ToolUtils.h>

#include <limits.h>
#include <string.h>

#include "putty.h"
#include "mac.h"
#include "macresid.h"
#include "terminal.h"

static void mac_draweventloggrowicon(Session *s);
static void mac_adjusteventlogscrollbar(Session *s);
static void mac_clickeventlog(WindowPtr, EventRecord *);
static void mac_activateeventlog(WindowPtr, EventRecord *);
static void mac_groweventlog(WindowPtr, EventRecord *);
static void mac_updateeventlog(WindowPtr);
static void mac_closeeventlog(WindowPtr);

static void mac_createeventlog(Session *s)
{
    Rect view;
    ListBounds bounds = { 0, 0, 0, 1 }; /* 1 column, 0 rows */
    Point csize = { 0, 0 };
    GrafPtr saveport;
    long fondsize;
    WinInfo *wi;

    s->eventlog_window = GetNewWindow(wEventLog, NULL, (WindowPtr)-1);
    wi = snew(WinInfo);
    memset(wi, 0, sizeof(*wi));
    wi->s = s;
    wi->wtype = wEventLog;
    wi->click = &mac_clickeventlog;
    wi->activate = &mac_activateeventlog;
    wi->grow = &mac_groweventlog;
    wi->update = &mac_updateeventlog;
    wi->close = &mac_closeeventlog;
    SetWRefCon(s->eventlog_window, (long)wi);
    GetPort(&saveport);
    SetPort((GrafPtr)GetWindowPort(s->eventlog_window));
    fondsize = GetScriptVariable(smRoman, smScriptSmallFondSize);
    TextFont(HiWord(fondsize));
    TextSize(LoWord(fondsize));
    SetPort(saveport);
#if TARGET_API_MAC_CARBON
    GetPortBounds(GetWindowPort(s->eventlog_window), &view);
#else
    view = s->eventlog_window->portRect;
#endif
    view.right -= 15; /* Scrollbar */
    s->eventlog = LNew(&view, &bounds, csize, 0, s->eventlog_window,
		       TRUE, TRUE, FALSE, TRUE);
    mac_adjusteventlogscrollbar(s);
#if TARGET_API_MAC_CARBON
    SetListSelectionFlags(s->eventlog, lExtendDrag | lNoDisjoint | lNoExtend);
#else
    (*s->eventlog)->selFlags = lExtendDrag | lNoDisjoint | lNoExtend;
#endif
}

void mac_freeeventlog(Session *s)
{

    if (s->eventlog != NULL)
	LDispose(s->eventlog);
    if (s->eventlog_window != NULL) {
	sfree((WinInfo *)GetWRefCon(s->eventlog_window));
	DisposeWindow(s->eventlog_window);
    }
}

void logevent(void *frontend, const char *str)
{
    Session *s = frontend;
    ListBounds bounds, visible;
    Cell cell = { 0, 0 };

    if (s->eventlog == NULL)
	mac_createeventlog(s);
    if (s->eventlog == NULL)
	return;

#if TARGET_API_MAC_CARBON
    GetListDataBounds(s->eventlog, &bounds);
    GetListVisibleCells(s->eventlog, &visible);
#else
    bounds = (*s->eventlog)->dataBounds;
    visible = (*s->eventlog)->visible;
#endif

    cell.v = bounds.bottom;
    LAddRow(1, cell.v, s->eventlog);
    LSetCell(str, strlen(str), cell, s->eventlog);
    /* ">=" and "2" because there can be a blank cell below the last one. */
    if (visible.bottom >= bounds.bottom)
	LScroll(0, 2, s->eventlog);
}

static void mac_draweventloggrowicon(Session *s)
{
    Rect clip;
    RgnHandle savergn;

    SetPort((GrafPtr)GetWindowPort(s->eventlog_window));
    /*
     * Stop DrawGrowIcon giving us space for a horizontal scrollbar
     * See Tech Note TB575 for details.
     */
#if TARGET_API_MAC_CARBON
    GetPortBounds(GetWindowPort(s->eventlog_window), &clip);
#else
    clip = s->eventlog_window->portRect;
#endif
    clip.left = clip.right - 15;
    savergn = NewRgn();
    GetClip(savergn);
    ClipRect(&clip);
    DrawGrowIcon(s->eventlog_window);
    SetClip(savergn);
    DisposeRgn(savergn);
}

/*
 * For some reason, LNew doesn't seem to respect the hasGrow
 * parameter, so we hammer the scrollbar into shape ourselves.
 */
static void mac_adjusteventlogscrollbar(Session *s)
{
#if TARGET_API_MAC_CARBON
    Rect winrect;

    GetPortBounds(GetWindowPort(s->eventlog_window), &winrect);
    SizeControl(GetListVerticalScrollBar(s->eventlog),
		16, winrect.bottom - 13);
#else
    SizeControl((*s->eventlog)->vScroll,
		16, s->eventlog_window->portRect.bottom - 13);
#endif
}

void mac_clickeventlog(WindowPtr window, EventRecord *event)
{
    Session *s = mac_windowsession(window);
    Point mouse;
    GrafPtr saveport;

    GetPort(&saveport);
    SetPort((GrafPtr)GetWindowPort(window));
    mouse = event->where;
    GlobalToLocal(&mouse);
    LClick(mouse, event->modifiers, s->eventlog);
    SetPort(saveport);
}

static void mac_groweventlog(WindowPtr window, EventRecord *event)
{
    Session *s = mac_windowsession(window);
    Rect limits;
    long grow_result;
#if TARGET_API_MAC_CARBON
    Rect rect;
    Point cellsize;
#else
    GrafPtr saveport;
#endif

    SetRect(&limits, 15, 0, SHRT_MAX, SHRT_MAX);
    grow_result = GrowWindow(window, event->where, &limits);
    if (grow_result == 0) return;
    SizeWindow(window, LoWord(grow_result), HiWord(grow_result), TRUE);
    LSize(LoWord(grow_result) - 15, HiWord(grow_result), s->eventlog);
    mac_adjusteventlogscrollbar(s);
    /* We would use SetListCellSize in Carbon, but it's missing. */
    (*s->eventlog)->cellSize.h = LoWord(grow_result) - 15;
#if TARGET_API_MAC_CARBON
    cellsize.h = LoWord(grow_result) - 15;
    GetListViewBounds(s->eventlog, &rect);
    InvalWindowRect(window, &rect);
#else
    GetPort(&saveport);
    SetPort(window);
    InvalRect(&(*s->eventlog)->rView);
    SetPort(saveport);
#endif
}

static void mac_activateeventlog(WindowPtr window, EventRecord *event)
{
    Session *s = mac_windowsession(window);
    int active = (event->modifiers & activeFlag) != 0;

    LActivate(active, s->eventlog);
    mac_draweventloggrowicon(s);
}

static void mac_updateeventlog(WindowPtr window)
{
    Session *s = mac_windowsession(window);
#if TARGET_API_MAC_CARBON
    RgnHandle visrgn;
#endif

    SetPort((GrafPtr)GetWindowPort(window));
    BeginUpdate(window);
#if TARGET_API_MAC_CARBON
    visrgn = NewRgn();
    GetPortVisibleRegion(GetWindowPort(window), visrgn);
    LUpdate(visrgn, s->eventlog);
    DisposeRgn(visrgn);
#else
    LUpdate(window->visRgn, s->eventlog);
#endif
    mac_draweventloggrowicon(s);
    EndUpdate(window);
}

static void mac_closeeventlog(WindowPtr window)
{

    HideWindow(window);
}

void mac_showeventlog(Session *s)
{

    SelectWindow(s->eventlog_window);
    ShowWindow(s->eventlog_window);
}

/*
 * Local Variables:
 * c-file-style: "simon"
 * End:
 */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
9色porny自拍视频一区二区| 奇米精品一区二区三区在线观看一 | 亚洲一区欧美一区| 97国产一区二区| 一区二区三区在线免费视频| 一本久久综合亚洲鲁鲁五月天| 亚洲欧洲三级电影| 日本高清不卡视频| 午夜欧美2019年伦理| 欧美一区二区播放| 国产综合一区二区| 国产精品久久久久婷婷| 色先锋资源久久综合| 五月天视频一区| 亚洲精品一区二区三区99| 大胆亚洲人体视频| 亚洲国产精品影院| www国产精品av| 95精品视频在线| 婷婷中文字幕综合| 久久久久成人黄色影片| 91黄色免费版| 激情综合亚洲精品| 亚洲色图一区二区三区| 91精品国产手机| 成人激情校园春色| 日韩精品一二三四| 欧美极品另类videosde| 欧美撒尿777hd撒尿| 久久99精品国产麻豆不卡| 亚洲私人黄色宅男| 欧美mv日韩mv国产网站app| 99久久精品免费精品国产| 丝袜诱惑亚洲看片| 国产精品二三区| 欧美一区二区私人影院日本| 国产91富婆露脸刺激对白| 亚洲福利电影网| 国产欧美日韩精品一区| 欧美精品第一页| jvid福利写真一区二区三区| 男男成人高潮片免费网站| 成人欧美一区二区三区视频网页 | 国产美女一区二区| 亚洲人精品午夜| 久久综合色之久久综合| 欧美日韩视频在线观看一区二区三区| 国产一区二区中文字幕| 午夜成人在线视频| 成人欧美一区二区三区白人 | 337p亚洲精品色噜噜狠狠| 国产成人啪午夜精品网站男同| 亚洲成av人影院| 亚洲日本一区二区| 中文文精品字幕一区二区| 日韩精品影音先锋| 欧美日韩精品三区| 91丝袜美女网| 成人激情小说乱人伦| 久久99国产精品久久99果冻传媒| 亚洲午夜一区二区三区| 亚洲欧美中日韩| 中文字幕永久在线不卡| 国产农村妇女毛片精品久久麻豆 | 欧美日韩五月天| 91欧美激情一区二区三区成人| 国产91色综合久久免费分享| 久久成人综合网| 蜜桃视频免费观看一区| 亚洲bt欧美bt精品777| 亚洲一区二区欧美| 国产婷婷色一区二区三区在线| 日韩一卡二卡三卡国产欧美| 欧美一区二区三区视频免费 | 26uuu国产电影一区二区| 91精品国产一区二区三区香蕉| 欧美人伦禁忌dvd放荡欲情| 欧美性感一类影片在线播放| 日本国产一区二区| 欧美在线观看视频一区二区 | 自拍偷自拍亚洲精品播放| 亚洲国产精品传媒在线观看| 国产精品视频一二三区 | xfplay精品久久| 久久久精品免费观看| 国产女主播一区| 国产精品少妇自拍| 成人免费一区二区三区视频| 国产精品成人午夜| 亚洲精品综合在线| 亚洲成av人片一区二区梦乃| 日本成人在线不卡视频| 精品一区二区三区免费播放| 精品一区二区三区不卡| 国产精品77777| av一区二区不卡| 欧美性生交片4| 日韩欧美一级精品久久| 久久久亚洲精品一区二区三区| 国产精品视频九色porn| 亚洲激情欧美激情| 免费观看30秒视频久久| 国产一区二区不卡| 不卡av在线网| 欧美麻豆精品久久久久久| 精品国产一区二区亚洲人成毛片 | 一区二区三区四区高清精品免费观看| 亚洲韩国一区二区三区| 久久99精品久久久| 91蝌蚪porny成人天涯| 日韩三级视频在线观看| 欧美高清在线视频| 午夜久久久久久久久 | 成人午夜电影久久影院| 欧美怡红院视频| 久久免费看少妇高潮| 一区二区三区四区高清精品免费观看| 日韩不卡一区二区| av在线不卡免费看| 日韩一区二区免费在线电影 | 一区二区三区毛片| 极品瑜伽女神91| 91黄色免费观看| 国产亚洲制服色| 亚洲线精品一区二区三区八戒| 久久精品国产99国产| 色综合中文字幕国产 | jvid福利写真一区二区三区| 欧美三级三级三级| 国产拍欧美日韩视频二区| 亚洲小说春色综合另类电影| 国产精品69久久久久水密桃 | 日韩视频永久免费| 亚洲码国产岛国毛片在线| 九九**精品视频免费播放| 色综合激情久久| 久久精品一区二区| 日本午夜一本久久久综合| jlzzjlzz欧美大全| 久久一留热品黄| 日韩不卡免费视频| 亚洲色图视频网| 亚洲高清在线精品| 成人免费看片app下载| 欧美一区二区成人6969| 亚洲国产欧美在线人成| 99久免费精品视频在线观看| 欧美精品一区二区在线观看| 7777精品久久久大香线蕉| 日韩国产欧美三级| 日韩女同互慰一区二区| 精品一二三四在线| 欧美国产精品劲爆| 91一区二区在线| 亚洲高清免费一级二级三级| 3d动漫精品啪啪一区二区竹菊| 免费在线观看不卡| 久久久久久电影| 菠萝蜜视频在线观看一区| 亚洲综合图片区| 日韩一区二区三免费高清| 国产成人精品免费一区二区| 中文字幕一区二区三区在线观看| 91福利社在线观看| 日韩高清不卡一区二区| 久久日一线二线三线suv| 99riav久久精品riav| 亚洲国产一区二区视频| 日韩免费福利电影在线观看| 国产传媒久久文化传媒| 一区二区三区国产精品| 日韩精品一区二区三区视频播放 | 美国av一区二区| 一区二区中文视频| 欧美精品成人一区二区三区四区| 极品美女销魂一区二区三区| 亚洲人一二三区| 日韩欧美一级二级三级| 成人h精品动漫一区二区三区| 亚洲国产三级在线| 国产午夜一区二区三区| 欧美日韩一级二级| 成人三级在线视频| 午夜a成v人精品| 亚洲三级电影网站| 亚洲精品一区二区三区精华液| 99久久精品国产一区| 蜜臀99久久精品久久久久久软件| 国产精品国产精品国产专区不蜜| 91精品视频网| 91麻豆免费视频| 国产精品1区2区| 日韩综合一区二区| 自拍视频在线观看一区二区| 精品精品国产高清一毛片一天堂| www.亚洲人| 国产精品一区二区免费不卡 | 亚洲国产精品久久久久秋霞影院 | 日韩精品久久久久久| 国产精品你懂的在线欣赏|