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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? functions.c

?? 安裝DDD之前
?? C
?? 第 1 頁 / 共 3 頁
字號(hào):
/* $Id: functions.c,v 1.1 2004/08/28 19:25:45 dannybackx Exp $ *//*****************************************************************************//**       Copyright 1988 by Evans & Sutherland Computer Corporation,        **//**                          Salt Lake City, Utah                           **//**  Portions Copyright 1989 by the Massachusetts Institute of Technology   **//**                        Cambridge, Massachusetts                         **//**                                                                         **//**                           All Rights Reserved                           **//**                                                                         **//**    Permission to use, copy, modify, and distribute this software and    **//**    its documentation  for  any  purpose  and  without  fee is hereby    **//**    granted, provided that the above copyright notice appear  in  all    **//**    copies and that both  that  copyright  notice  and  this  permis-    **//**    sion  notice appear in supporting  documentation,  and  that  the    **//**    names of Evans & Sutherland and M.I.T. not be used in advertising    **//**    in publicity pertaining to distribution of the  software  without    **//**    specific, written prior permission.                                  **//**                                                                         **//**    EVANS & SUTHERLAND AND M.I.T. DISCLAIM ALL WARRANTIES WITH REGARD    **//**    TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES  OF  MERCHANT-    **//**    ABILITY  AND  FITNESS,  IN  NO  EVENT SHALL EVANS & SUTHERLAND OR    **//**    M.I.T. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL  DAM-    **//**    AGES OR  ANY DAMAGES WHATSOEVER  RESULTING FROM LOSS OF USE, DATA    **//**    OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER    **//**    TORTIOUS ACTION, ARISING OUT OF OR IN  CONNECTION  WITH  THE  USE    **//**    OR PERFORMANCE OF THIS SOFTWARE.                                     **//*****************************************************************************//**************************************************************************** * This module is based on Twm, but has been siginificantly modified  * by Rob Nation ****************************************************************************//**************************************************************************** * The win_list function is * by Rob Nation * A little of it is borrowed from ctwm. * Copyright 1993 Robert Nation. No restrictions are placed on this code, * as long as the copyright notice is preserved ***********************************************************************//*********************************************************************** * The rest of it is all my fault -- MLM * mwm - "LessTif Window Manager" ***********************************************************************/#include <LTconfig.h>#include <stdlib.h>#include <stdio.h>#include <string.h>#include <ctype.h>#ifdef HAVE_UNISTD_H#include <unistd.h>#endif#ifdef HAVE_SYS_TYPES_H#include <sys/types.h>#endif#ifdef HAVE_SYS_TIME_H#include <sys/time.h>#endif#ifdef HAVE_SYS_SELECT_H#include <sys/select.h>#endif#ifdef __EMX__#include <process.h>#endif#include <Xm/Xm.h>#include <Xm/MwmUtil.h>#include <Xm/MessageB.h>#include "mwm.h"/* * this only works if what you're assigning to/comparing with is an int */#ifndef INT_MAX#define INT_MAX		((int)(~0U>>1))#endif#ifndef INT_MIN#define INT_MIN		(~0)#endif/* * Does `string' match `pattern'? '*' in pattern matches any sub-string * (including the null string) '?' matches any single char. For use * by filenameforall. Note that '*' matches across directory boundaries * * This code donated by  Paul Hudson <paulh@harlequin.co.uk>     * It is public domain, no strings attached. No guarantees either. */static intmatch_pattern(const char *pattern, const char *string){    if (string == NULL)    {	if (pattern == NULL)	    return True;	else if (strcmp(pattern, "*") == 0)	    return True;	else	    return False;    }    if (pattern == NULL)	return True;    while (*string && *pattern)    {	if (*pattern == '?')	{	    /* match any character */	    pattern += 1;	    string += 1;	}	else if (*pattern == '*')	{	    /* see if the rest of the pattern matches any trailing substring	       of the string. */	    pattern += 1;	    if (*pattern == 0)	    {		return True;	/* trailing * must match rest */	    }	    while (*string)	    {		if (match_pattern(pattern, string))		{		    return True;		}		string++;	    }	    return False;	}	else	{	    if (*pattern == '\\')		pattern++;	/* has strange, but harmless effects if the last				   character is a '\\' */	    if (*pattern++ != *string++)	    {		return False;	    }	}    }    if ((*pattern == 0) && (*string == 0))	return True;    if ((*string == 0) && (strcmp(pattern, "*") == 0))	return True;    return False;}/* * Checks the function "function", and sees if it * is an allowed function for window t,  according to the motif way of life. * This routine is used to decide if we should refuse to perform a function. */static intfunction_allowed(int function, MwmWindow *t){    if ((function == F_RESIZE) && (t) &&	(!(t->functions & MWM_FUNC_RESIZE)))	return 0;    if ((function == F_MOVE) && (t) &&	(!(t->functions & MWM_FUNC_MOVE)))	return 0;    if ((function == F_ICONIFY) && (t) &&	(!(t->flags & ICONIFIED)) &&	(!(t->functions & MWM_FUNC_MINIMIZE)))	return 0;    if ((function == F_MAXIMIZE) && (t) &&	(!(t->functions & MWM_FUNC_MAXIMIZE)))	return 0;    if ((function == F_CLOSE) && (t) &&	(!(t->functions & MWM_FUNC_CLOSE)))	return 0;    return 1;}/* * wait for the quit timeout to see if a window will exit itself */static voidwait_quit_timeout(ScreenInfo *sinfo, MwmWindow *win){#ifndef HAVE_GETITIMER    struct itimerval    {	struct timeval it_value;    };#endif    XEvent event;    struct itimerval value;    fd_set in_fdset, out_fdset;    Window child;    int retval, i;    ScreenInfo *scr;    int timeout;    timeout = Mwm.quit_timeout * 1000;    while (True)    {	/* Do this prior to the select() call, in case the timer already	 * expired, in which case the select would never return. */	if (alarmed)	{	    alarmed = False;	    for (i = 0; i < Mwm.number_of_screens; i++)	    {		scr = Mwm.screen_info[i];		XQueryPointer(dpy, scr->root_win, &JunkRoot, &child,			      &JunkX, &JunkY, &JunkX, &JunkY, &JunkMask);		if ((scr->mwm_focus != NULL) &&		    (child == scr->mwm_focus->frame))		{		    if (!(scr->mwm_focus->flags & VISIBLE) &&			scr->mwm_focus->focus_auto_raise)		    {			WIN_Raise(scr, scr->mwm_focus);			PAGER_Clear(scr);		    }		}	    }	    continue;	}	value.it_value.tv_usec = 10000;	value.it_value.tv_sec = 0;	FD_ZERO(&in_fdset);	FD_SET(x_fd, &in_fdset);	FD_ZERO(&out_fdset);	/* Do this IMMEDIATELY prior to select, to prevent any nasty	 * queued up X events from just hanging around waiting to be	 * flushed */	XFlush(dpy);	if (XPending(dpy))	{	    XNextEvent(dpy, &event);	    MISC_StashEventTime(&event);	    if ((event.type == UnmapNotify || event.type == DestroyNotify) &&		event.xany.window == win->w)	    {		EVENT_Dispatch(&event);		return;	    }	    EVENT_Dispatch(&event);	}	/* Zap all those zombies! */	/* If we get to here, then there are no X events waiting to be	 * processed.  Just take a moment to check for dead children. */	ReapChildren();	XFlush(dpy);#ifdef __hpux	retval = select(fd_width, (int *)&in_fdset, 0, 0, &value.it_value);#else	retval = select(fd_width, &in_fdset, 0, 0, &value.it_value);#endif	timeout -= value.it_value.tv_usec;	if (timeout <= 0)	{	    if (XGetGeometry(dpy, win->w, &JunkRoot, &JunkX, &JunkY,			     &JunkWidth, &JunkHeight, &JunkBW, &JunkDepth) == 0)		WIN_DestroyWindow(sinfo, win);	    else		XKillClient(dpy, win->w);	    XSync(dpy, 0);	    return;	}    }}/* * circulate a window */static MwmWindow *circulate(ScreenInfo *scr, MwmWindow *tmp_win, char *action, Bool Direction){    MwmWindow *t, *selected;    Bool found;    int count, pass = 1;    int base, best;    tmp_win = MISC_RootOfTree(tmp_win);    while (pass < 3)    {	if (tmp_win)	    base = tmp_win->focus_sequence;	else	    base = -1;	if (Direction == DOWN)	    best = -1;	else	    best = 10000;	selected = tmp_win;	/* move focus to the next window */	found = False;	t = tmp_win;	count = 0;	while (count < 3)	{	    if (Direction == DOWN)	    {		if ((t == (MwmWindow *)0) || (t->next == NULL))		{		    t = scr->mwm_root.next;		    count++;		}		else		    t = t->next;	    }	    else	    {			/* Direction Up */		if ((t == (MwmWindow *)0) || (t == &scr->mwm_root) ||		 (t->prev == &scr->mwm_root) || (t->prev == (MwmWindow *)NULL))		{		    for (t = scr->mwm_root.next; t->next != (MwmWindow *)NULL; t = t->next);		    count++;		}		else		    t = t->prev;	    }	    found = True;	    if (t->Desk != scr->current_desk)		found = False;	    if ((t) && (t->wmhints) && (t->wmhints->flags & InputHint) &&		(t->wmhints->input == False) &&		!(t->flags & WM_TAKES_FOCUS))		found = False;	    if (t->flags & CIRCULATESKIP)		found = False;	    /* optional skip over icons */	    if ((t->flags & ICONIFIED) && (scr->flags & CirculateSkipIcons))		found = False;	    /* Make CirculateUp and CirculateDown take args. by Y.NOMURA */	    if (action && (strlen(action) > 0) &&		!(match_pattern(action, t->name)) &&		!(match_pattern(action, t->icon_label)) &&		t->classhint.res_name &&		!(match_pattern(action, t->classhint.res_name)))		found = False;	    if ((found) && (Direction == DOWN) && (t->focus_sequence > best))	    {		best = t->focus_sequence;		selected = t;	    }	    if ((found) && (Direction != DOWN) && (t->focus_sequence < best)		&& (t->focus_sequence > base))	    {		best = t->focus_sequence;		selected = t;	    }	}	if ((selected) && (selected == tmp_win) && (base > 0))	{	    if (Direction == DOWN)	    {		MISC_SetFocusSequence(scr);		tmp_win->focus_sequence = 0;	    }	    else	    {		MwmWindow *temp;		temp = scr->mwm_root.next;		while (temp != NULL)		{		    temp->focus_sequence++;		    if (temp == tmp_win)			temp->focus_sequence = 0;		    temp = temp->next;		}	    }	    pass++;	}	else	    pass = 3;    }    return selected;}/*********************************************************************** * *  Procedure: *	(Un)maximize a window. * ***********************************************************************/static voidmaximize(ScreenInfo *scr, MwmWindow *tmp_win, int val1, int val2,	 int val1_unit, int val2_unit){    int new_width, new_height, new_x, new_y;    /* First make sure that window is de-iconified */    if (tmp_win->flags & ICONIFIED)    {	    if (val1 <= 0)		ICON_DeIconify(scr, tmp_win);    }    if (tmp_win->flags & MAXIMIZED)    {	tmp_win->flags &= ~MAXIMIZED;	DEC_ConfigureDecorations(scr, tmp_win, tmp_win->orig_x, tmp_win->orig_y,				 tmp_win->orig_wd, tmp_win->orig_ht, True);	DEC_DrawDecorations(scr, tmp_win, True, True, True, None);    }    else    {	new_width = tmp_win->frame_width;	new_height = tmp_win->frame_height;	new_x = tmp_win->frame_x;	new_y = tmp_win->frame_y;	if (val1 > 0)	{	    new_width = val1 * val1_unit / 100 - 2;	    new_x = 0;	}	if (val2 > 0)	{	    new_height = val2 * val2_unit / 100 - 2;	    new_y = 0;	}	if ((val1 == 0) && (val2 == 0))	{	    new_x = 0;	    new_y = 0;	    new_height = scr->d_height - 2;	    new_width = scr->d_width - 2;	}	tmp_win->flags |= MAXIMIZED;	WIN_ConstrainWindow(scr, tmp_win, &new_width, &new_height);	DEC_ConfigureDecorations(scr, tmp_win, new_x, new_y, new_width, new_height, True);	DEC_DrawDecorations(scr, tmp_win, scr->mwm_highlight == tmp_win,			    True, True, tmp_win->maximizeb);    }    PAGER_Clear(scr);}/* * Start a window move operation */static voidmove(ScreenInfo *scr, XEvent *eventp, Window w, MwmWindow *tmp_win,     int context, int val1, int val2, int val1_unit, int val2_unit){    int FinalX, FinalY;    /* gotta have a window */    if (tmp_win == NULL)	return;    w = tmp_win->frame;    if (tmp_win->flags & ICONIFIED)    {	if (tmp_win->icon_pixmap_w != None)	{	    XUnmapWindow(dpy, tmp_win->icon_w);	    w = tmp_win->icon_pixmap_w;	}	else	    w = tmp_win->icon_w;    }    if ((val1 != 0) || (val2 != 0))    {	FinalX = val1 * val1_unit / 100;	FinalY = val2 * val2_unit / 100;    }    else	MOVE_Interactive(scr, &w, tmp_win, &FinalX, &FinalY, eventp);    if (w == tmp_win->frame)    {	DEC_ConfigureDecorations(scr, tmp_win, FinalX, FinalY,			   tmp_win->frame_width, tmp_win->frame_height, False);    }    else    {				/* icon window */	tmp_win->flags |= ICON_MOVED;	tmp_win->icon_x_loc = FinalX;	tmp_win->icon_xl_loc = FinalX -	    (tmp_win->icon_w_width - tmp_win->icon_p_width) / 2;	tmp_win->icon_y_loc = FinalY;	XMoveWindow(dpy, tmp_win->icon_w,		    tmp_win->icon_xl_loc, FinalY + tmp_win->icon_p_height);	if (tmp_win->icon_pixmap_w != None)	{	    XMapWindow(dpy, tmp_win->icon_w);	    XMoveWindow(dpy, tmp_win->icon_pixmap_w, tmp_win->icon_x_loc, FinalY);	    XMapWindow(dpy, w);	}    }    PAGER_Clear(scr);}static voidcancel_cb(Widget w, XtPointer calldata, XtPointer cbs){

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本免费在线视频不卡一不卡二| 波波电影院一区二区三区| 一区二区三区日韩| 自拍视频在线观看一区二区| 日韩毛片高清在线播放| 国产精品福利影院| 国产精品国产三级国产a| 中文av一区特黄| 亚洲欧美在线视频观看| 自拍偷拍亚洲综合| 亚洲国产三级在线| 石原莉奈在线亚洲三区| 日韩影院免费视频| 老司机免费视频一区二区三区| 麻豆精品一二三| 国产一区二区三区久久久| 国产精品亚洲成人| 99re这里都是精品| 欧美性生活久久| 欧美一区二区三区在| 欧美成人欧美edvon| 久久久久国色av免费看影院| 国产亚洲婷婷免费| 亚洲欧美一区二区不卡| 亚洲一区二区三区视频在线播放| 偷拍日韩校园综合在线| 麻豆国产91在线播放| 国产精品一二三四| 91成人在线免费观看| 777久久久精品| 久久美女艺术照精彩视频福利播放 | 麻豆成人免费电影| 久国产精品韩国三级视频| 国产精品一区二区x88av| 91麻豆国产香蕉久久精品| 欧美三级一区二区| 制服丝袜日韩国产| 久久久噜噜噜久噜久久综合| 中文字幕在线观看一区二区| 亚洲成a人片综合在线| 激情亚洲综合在线| 色噜噜狠狠成人中文综合| 91精品国产入口| 日韩一区中文字幕| 奇米精品一区二区三区在线观看一 | 欧美在线你懂得| 日韩精品一区二区三区swag| 国产精品蜜臀在线观看| 三级欧美韩日大片在线看| 狠狠狠色丁香婷婷综合久久五月| 成人黄色片在线观看| 欧美日韩成人激情| 中文字幕精品在线不卡| 日本不卡1234视频| 色综合天天综合网天天看片| 精品国产亚洲一区二区三区在线观看| 国产精品国产馆在线真实露脸| 三级不卡在线观看| 99久久久无码国产精品| 日韩欧美国产精品| 亚洲综合色丁香婷婷六月图片| 国产一区二区免费在线| 欧美精品一级二级| 亚洲天堂av老司机| 国内久久精品视频| 欧美一区国产二区| 亚洲精品免费电影| 国产盗摄精品一区二区三区在线| 欧美日韩国产美女| 亚洲欧美日韩国产一区二区三区 | 久久激情综合网| 欧美日韩黄色影视| 亚洲精品水蜜桃| 国产宾馆实践打屁股91| 日韩精品综合一本久道在线视频| 亚洲综合激情另类小说区| 亚洲午夜电影网| 国产aⅴ综合色| 在线播放一区二区三区| 亚洲欧美国产77777| 国产suv一区二区三区88区| 日韩欧美精品三级| 天天做天天摸天天爽国产一区| jvid福利写真一区二区三区| 久久综合成人精品亚洲另类欧美 | 久久综合久久99| 亚洲国产成人av| 色偷偷久久一区二区三区| 国产精品国产三级国产aⅴ原创| 激情国产一区二区| 日韩欧美一卡二卡| 丝袜美腿一区二区三区| 欧美日韩精品欧美日韩精品| 一区二区在线观看视频在线观看| 丁香网亚洲国际| 欧美经典三级视频一区二区三区| 国产一区二区伦理| 久久久精品黄色| 国产精品综合视频| 久久伊99综合婷婷久久伊| 欧美精品粉嫩高潮一区二区| 欧美日韩久久久一区| 亚洲精品高清在线| 91啪亚洲精品| 综合久久久久久久| 色呦呦一区二区三区| 亚洲免费资源在线播放| 色综合久久久久网| 亚洲精选在线视频| 在线免费观看日本一区| 伊人一区二区三区| 欧美偷拍一区二区| 午夜精品福利一区二区三区av | 欧美综合欧美视频| 亚洲二区在线观看| 在线电影一区二区三区| 琪琪一区二区三区| 久久综合色8888| 国产精品一区二区视频| 国产精品美女www爽爽爽| 99久久国产综合色|国产精品| 亚洲精品菠萝久久久久久久| 欧美性猛交xxxx黑人交| 日韩电影在线观看电影| 精品电影一区二区| 国产高清成人在线| 亚洲精品中文字幕在线观看| 在线观看日韩毛片| 青青草成人在线观看| 久久女同精品一区二区| zzijzzij亚洲日本少妇熟睡| 亚洲欧美日韩在线不卡| 欧美人与z0zoxxxx视频| 六月丁香综合在线视频| 国产精品久久久久影院色老大| 99re66热这里只有精品3直播| 亚洲综合激情另类小说区| 91精品国产91久久综合桃花| 国产乱码一区二区三区| 最新国产の精品合集bt伙计| 欧美日韩国产片| 国产精品88av| 亚洲亚洲精品在线观看| 精品久久久久久久一区二区蜜臀| www.亚洲免费av| 偷偷要91色婷婷| 国产欧美精品一区| 欧美三级日本三级少妇99| 久久99国产精品麻豆| 最新不卡av在线| 日韩欧美一区二区在线视频| 国产久卡久卡久卡久卡视频精品| 亚洲免费观看高清完整版在线观看 | 亚洲精品水蜜桃| 欧美高清性hdvideosex| 国产成人精品免费看| 亚洲午夜一区二区| 久久综合色综合88| 在线一区二区视频| 亚洲激情成人在线| 国产精品传媒在线| 欧美喷潮久久久xxxxx| 精品无人区卡一卡二卡三乱码免费卡 | 中文字幕一区二区三区四区| 欧美中文字幕一区| 国产一区二区三区最好精华液 | 99re热视频这里只精品| 欧美a级理论片| 一卡二卡欧美日韩| 国产女同性恋一区二区| 91精品国产高清一区二区三区蜜臀| 成人av网在线| 精品一二三四在线| 午夜av电影一区| 亚洲人成7777| 亚洲国产精品成人综合色在线婷婷| 91麻豆精品国产综合久久久久久| 91丨九色porny丨蝌蚪| 国产成a人亚洲精| 精品亚洲免费视频| 图片区小说区区亚洲影院| 亚洲精品成人在线| 国产精品全国免费观看高清| 日韩免费观看高清完整版在线观看| 在线观看www91| 成人av午夜影院| 激情亚洲综合在线| 亚洲国产另类av| 一区二区理论电影在线观看| 久久亚洲影视婷婷| 69堂国产成人免费视频| 欧美午夜电影网| 欧美专区日韩专区| 欧美在线观看禁18| 色综合久久久久综合| 99精品欧美一区二区三区综合在线| 国产精品1区二区.| 国产一区二区美女| 国产一区二区三区四区五区入口 | 国产农村妇女毛片精品久久麻豆|