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

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

?? functions.c

?? 安裝DDD之前
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* $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){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产自在久精品国产| 99久久99久久精品国产片果冻| 欧美日韩性生活| 亚洲成人一区二区| 日韩色在线观看| 国内精品国产成人国产三级粉色| 久久久久久久久久久久久久久99| 国产精品白丝jk黑袜喷水| 中文字幕一区二区三区不卡| 色吧成人激情小说| 奇米一区二区三区| 欧美激情一区二区在线| 日本伦理一区二区| 麻豆成人av在线| 国产精品拍天天在线| 欧美三区在线视频| 国产酒店精品激情| 亚洲欧美日韩国产综合| 51精品视频一区二区三区| 国产一区二区0| 一区二区三区免费观看| 日韩欧美在线网站| 99国产精品一区| 日韩福利电影在线| 国产精品福利一区二区| 欧美性猛交xxxx乱大交退制版| 激情综合网av| 亚洲一区免费观看| 欧美国产精品专区| 欧美猛男男办公室激情| 大白屁股一区二区视频| 天堂蜜桃一区二区三区| 亚洲国产成人在线| 欧美一区二区三区啪啪| a美女胸又www黄视频久久| 午夜精品一区二区三区免费视频| 337p日本欧洲亚洲大胆色噜噜| 色噜噜久久综合| 国产精品夜夜爽| 日韩中文字幕麻豆| 亚洲激情中文1区| 国产午夜精品久久久久久久| 欧美日韩国产大片| 色婷婷综合视频在线观看| 韩国理伦片一区二区三区在线播放| 国产精品一区免费在线观看| 亚洲美女电影在线| 国产欧美一区二区在线| 欧美日韩精品免费| 一本色道久久综合狠狠躁的推荐| 国产一区二区调教| 麻豆一区二区三区| 性感美女久久精品| 亚洲午夜久久久久久久久久久 | 狠狠色丁香婷婷综合久久片| 日韩一区中文字幕| 国产欧美一区二区精品性色| 欧美日韩精品一区二区三区蜜桃 | 91在线国产福利| 国产一区二区三区免费| 男女性色大片免费观看一区二区| 亚洲伦在线观看| 国产精品每日更新| 中文字幕av不卡| 久久免费午夜影院| 精品乱人伦小说| 日韩精品一区二| 精品人在线二区三区| 日韩一级大片在线| 欧美一区二区高清| 日韩一区二区三区在线| 欧美日韩国产综合视频在线观看 | 欧美三级视频在线观看| 99热在这里有精品免费| 成人黄色电影在线 | xnxx国产精品| 久久精品人人做人人爽人人| 久久亚洲精品小早川怜子| 欧美tickling网站挠脚心| 精品国产一区二区三区av性色| 日韩女优av电影在线观看| 欧美成人精品3d动漫h| 精品sm捆绑视频| 久久久.com| 亚洲少妇最新在线视频| 一区二区日韩电影| 视频一区在线播放| 久久精品国产久精国产| 国产专区欧美精品| 成人aa视频在线观看| 99久久久精品免费观看国产蜜| 一本久久a久久精品亚洲| 欧美一a一片一级一片| 欧美日韩精品免费| 精品国产自在久精品国产| 国产日韩av一区| 亚洲在线视频免费观看| 毛片一区二区三区| 东方欧美亚洲色图在线| av不卡在线观看| 欧美色视频在线| 精品国产污网站| 国产精品久久久久久久岛一牛影视| 一区在线观看免费| 婷婷开心激情综合| 国产精品亚洲一区二区三区在线| 91小视频在线观看| 7777精品久久久大香线蕉| 久久女同精品一区二区| 最新热久久免费视频| 午夜一区二区三区视频| 国产麻豆一精品一av一免费 | 波多野结衣中文字幕一区二区三区 | 成人一区二区三区中文字幕| 99视频一区二区| 制服.丝袜.亚洲.另类.中文| 国产欧美视频一区二区| 一区二区三区蜜桃| 国产精品亚洲专一区二区三区| 91国产免费看| 久久久久久99久久久精品网站| 亚洲另类色综合网站| 久久99精品视频| 日本道免费精品一区二区三区| 欧美va在线播放| 一区二区三区精品视频在线| 国产一区二区免费视频| 欧美视频日韩视频在线观看| 国产日产欧美一区二区三区| 日韩精品一二三| 91色在线porny| 久久精品人人做| 日本aⅴ精品一区二区三区| 99久久er热在这里只有精品15 | 欧美性生交片4| 中文字幕乱码久久午夜不卡| 日韩精品高清不卡| 91影院在线观看| 国产欧美精品一区二区色综合朱莉| 亚洲成人一二三| 91国偷自产一区二区三区成为亚洲经典| 久久伊人蜜桃av一区二区| 亚洲成人手机在线| 一本大道综合伊人精品热热| 精品国产a毛片| 人人狠狠综合久久亚洲| 91福利区一区二区三区| 国产精品久久久久9999吃药| 精品一区二区在线看| 欧美精品久久一区二区三区| 亚洲欧美偷拍另类a∨色屁股| 国产精品伊人色| 久久婷婷国产综合精品青草| 日韩高清一区在线| 欧美高清视频一二三区| 亚洲一区二区三区爽爽爽爽爽 | 欧美高清精品3d| 亚洲一区二区三区三| 久久国产人妖系列| 26uuu国产电影一区二区| 亚洲午夜av在线| 在线观看日韩一区| 一区二区高清免费观看影视大全| 成人美女视频在线观看18| 久久影视一区二区| 国产精品亚洲专一区二区三区| 精品乱人伦小说| 国产一区二三区好的| 精品久久久久久久久久久院品网| 青娱乐精品在线视频| 在线成人免费观看| 免费人成在线不卡| 91精品久久久久久久99蜜桃| 婷婷丁香久久五月婷婷| 在线播放中文一区| 日本va欧美va欧美va精品| 欧美一区二区福利视频| 麻豆久久一区二区| 久久婷婷国产综合精品青草| 国产精品996| 中文字幕中文字幕一区| 成人高清视频在线| 亚洲免费观看视频| 欧美性videosxxxxx| 视频一区中文字幕国产| 精品国精品国产尤物美女| 国产成人日日夜夜| 亚洲免费在线看| 欧美妇女性影城| 国产精品一区一区三区| 最新不卡av在线| 欧美精品第1页| 国产精一品亚洲二区在线视频| 国产精品乱码一区二区三区软件 | 日韩一区二区三区电影 | 亚洲国产成人av好男人在线观看| 欧美乱妇一区二区三区不卡视频| 男人操女人的视频在线观看欧美| 国产午夜精品美女毛片视频| 色综合久久九月婷婷色综合|