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

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

?? menubar.c

?? Mrxvt是一個小巧
?? C
?? 第 1 頁 / 共 5 頁
字號:
			cmd = '+';			break;		case '+':		case '-':			str++;			/* skip cmd character */			break;		case '<':			if (str[1] && str[2] == '>')	/* arrow commands */				rxvt_menuarrow_add(r, str);			break;		case '[':			/* extended command */			while (str[0] == '[')			{				unsigned char		   *next = (++str);	/* skip leading '[' */				if (str[0] == ':')		/* [:command:] */				{					do					  {						next++;						if ((next = (unsigned char*) STRCHR(next, ':')) == NULL)							return;	/* parse error */					  }					while (next[1] != ']');					/* remove and skip ':]' */					*next = '\0';					next += 2;				}				else				{					if ((next = (unsigned char*) STRCHR(next, ']')) == NULL)						return;	/* parse error */					/* remove and skip ']' */					*next = '\0';					next++;				}				if (str[0] == ':')					rxvt_menubar_dispatcher(r, str + 1);				else if (!STRCMP(str, "clear"))					rxvt_menubar_clear(r);				else if (							!STRCMP((char*) str, "done")							|| rxvt_str_match( (char*) str, "done:")						)				{					/* We shouldn't ever get here */					assert(0);				}				/*				 * 2006-02-02 gi1242: Using this command in config files will				 * override the users --showmenu option. Since there are other				 * escape sequences and shortcuts to do the same, we don't need				 * this here.				 */#if 0				else if (!STRCMP(str, "show"))				{					if (rxvt_menubar_show(r))						rxvt_resize_on_subwin (r, SHOW_MENUBAR);				}				else if (!STRCMP(str, "hide"))				{					if (rxvt_menubar_hide(r))						rxvt_resize_on_subwin (r, HIDE_MENUBAR);				}#endif				else if ((n = rxvt_str_match( (char*) str, "read:")) != 0)				{					/* read in a menu from a file */					str += n;					rxvt_menubar_load_file(r, str);				}				else if ((n = rxvt_str_match( (char*) str, "title:")) != 0)				{					str += n;					if (*str)					{						name = rxvt_realloc(r->h->MenuBar.title,							STRLEN(str) + 1);						if (name != NULL)						{							STRCPY(name, str);							r->h->MenuBar.title = name;						}					}					else					{						free(r->h->MenuBar.title);						r->h->MenuBar.title = NULL;					}				}				else if ((n = rxvt_str_match( (char*) str, "pixmap:")) != 0)				{					str += n;					rxvt_xterm_seq(r, ATAB(r), XTerm_Pixmap,							(char*) str, CHAR_ST);				}				str = next;				/*				 * 2006-02-04 gi1242: Don't clear the menu currently bieng				 * built. This will enable [read:...] commands to add to the				 * current menu, instead of the menubar.				 */#if 0				r->h->BuildMenu = r->h->ActiveMenu = NULL;				rxvt_menubar_expose(r);#endif			}			return;			break;	}	switch (cmd)	{		case '+':		case '-':			path = name = str;			name2 = NULL;			/* parse STR, allow spaces inside (name)  */			if (path[0] != '\0')			{				name = (unsigned char*) STRCHR(path, MENUITEM_BEG);				str = (unsigned char*) STRCHR(path, MENUITEM_END);				if (name != NULL || str != NULL)				{					if (							name == NULL || str == NULL || str <= (name + 1)							|| (name > path && name[-1] != '/')					   )					{						rxvt_print_error("menu error <%s>\n", path);						break;					}					if (str[1] == MENUITEM_BEG)					{						name2 = (str + 2);						str = (unsigned char*) STRCHR(name2, MENUITEM_END);						if (str == NULL)						{							rxvt_print_error("menu error <%s>\n", path);							break;						}						name2[-2] = '\0';	/* remove prev MENUITEM_END */					}					if (name > path && name[-1] == '/')						name[-1] = '\0';					*name++ = '\0';	/* delimit */					*str++ = '\0';	/* delimit */					while (isspace((int) *str))						str++;	/* skip space */				}# ifdef DEBUG_MENU				fprintf(stderr,					"`%c' path = <%s>, name = <%s>, name2 = <%s>, action = <%s>\n",					cmd, (path ? path : "(nil)"), (name ? name : "(nil)"),					(name2 ? name2 : "(nil)"), (str ? str : "(nil)")				);# endif			}			/* process the different commands */			switch (cmd)			{				case '+':		/* add/replace existing menu or menuitem */					if (path[0] != '\0')					{						int			 len;						DBG_MSG( 3, ( stderr, "Current menu %s\n",							r->h->BuildMenu ? r->h->BuildMenu->name : "(nil)"));						path = rxvt_menu_find_base(r, &(r->h->BuildMenu), path);						len = STRLEN(path);						/* don't allow menus called `*' */						if (path[0] == '*')						{							rxvt_menu_clear(r, r->h->BuildMenu);							break;						}						else if (len >= 2 && !STRCMP((path + len - 2), "/*"))						{							path[len - 2] = '\0';						}						if (path[0] != '\0')							r->h->BuildMenu =								rxvt_menu_add(r, r->h->BuildMenu, path);					}					if (name != NULL && name[0] != '\0')						rxvt_menuitem_add(r, r->h->BuildMenu,							  (STRCMP(name, SEPARATOR_NAME) ?									name : (unsigned char *) ""),							  name2, str);					break;				case '-':		/* delete menu entry */					if (							!STRCMP(path, "/*")							&& (name == NULL || name[0] == '\0')					   )					{						rxvt_menubar_clear(r);						r->h->BuildMenu = NULL;						break;					}					else if (path[0] != '\0')					{						int			 len;						menu_t		 *menu = r->h->BuildMenu;						path = rxvt_menu_find_base(r, &menu, path);						len = STRLEN(path);						/* submenu called `*' clears all menu items */						if (path[0] == '*')						{							rxvt_menu_clear(r, menu);							break;	/* done */						}						else if (len >= 2 && !STRCMP(&path[len - 2], "/*"))						{							/* done */							break;						}						else if (path[0] != '\0')						{							r->h->BuildMenu = NULL;							break;						}						else							r->h->BuildMenu = menu;					}					if (r->h->BuildMenu != NULL)					{						if (name == NULL || name[0] == '\0')							r->h->BuildMenu =								rxvt_menu_delete(r, r->h->BuildMenu);						else						{							const unsigned char	 *n1;							menuitem_t	 		 *item;							menu_t		 		 *BuildMenu = r->h->BuildMenu;							n1 = STRCMP(name, SEPARATOR_NAME)									? name : (unsigned char*) "";							item = rxvt_menuitem_find(BuildMenu, n1);							if (									item != NULL									&& item->entry.itemType != MenuSubMenu							   )							{								rxvt_menuitem_free(r, BuildMenu, item);								/* fix up the width */								BuildMenu->lwidth = BuildMenu->rwidth = 0;								for (item = BuildMenu->head; item != NULL;										item = item->next)								{									unsigned short l;																		l = PTEXTWIDTH( r, item->name, item->len);									MAX_IT(BuildMenu->lwidth, l);									l = PTEXTWIDTH( r, item->name2, item->len2);									MAX_IT(BuildMenu->rwidth, l);								}							}						}					}					break;			}			break;	}}/*** general dispatch routine,** it would be nice to have `sticky' menus*//* EXTPROTO */voidrxvt_menubar_control(rxvt_t *r, XButtonEvent *ev){	DBG_MSG( 2, (stderr, "rxvt_menubar_control()\n"));	switch (ev->type)	{		case ButtonPress:			if (ev->button == Button1)				rxvt_menubar_select(r, ev);			break;		case ButtonRelease:			if (ev->button == Button1)				rxvt_menu_select(r, ev);			break;		case MotionNotify:			while (XCheckTypedWindowEvent(r->Xdisplay, r->TermWin.parent,							  MotionNotify, (XEvent *) ev)) ;			if (r->h->ActiveMenu)				while (rxvt_menu_select(r, ev)) ;			else				ev->y = -1;			if (ev->y < 0)			{				Window		  unused_root, unused_child;				int			 unused_root_x, unused_root_y;				unsigned int	unused_mask;				XQueryPointer(r->Xdisplay, r->menuBar.win,					  &unused_root, &unused_child,					  &unused_root_x, &unused_root_y,					  &(ev->x), &(ev->y), &unused_mask);				rxvt_menubar_select(r, ev);			}			break;	}}/* * read in menubar commands from FILENAME * ignore all input before the tag line [menu] or [menu:???] * * Note that since File_find () is used, FILENAME can be semi-colon * delimited such that the second part can refer to a tag * so that a large `database' of menus can be collected together * * FILENAME = "file" * FILENAME = "file;" *	  read `file' starting with first [menu] or [menu:???] line * * FILENAME = "file;tag" *	  read `file' starting with [menu:tag] *//* EXTPROTO */voidrxvt_menubar_load_file(rxvt_t *r, const unsigned char *filename){/* read in a menu from a file */	FILE		   *fp;	unsigned char	buffer[256];	unsigned char  *p, *file, *tag = NULL;	DBG_MSG( 2, (stderr, "rxvt_menubar_load_file()\n"));	file = (unsigned char*) rxvt_File_find( (char*) filename,			".menu", r->h->rs[Rs_path]);	if (file == NULL)	{		rxvt_print_error( "Could not open file %s", filename);		return;	}	fp = fopen( (char*) file, "rb");	free(file);	if (fp == NULL)		return;	/* semi-colon delimited */	if ((tag = (unsigned char*) STRCHR(filename, ';')) != NULL)	{		tag++;		if (*tag == '\0') tag = NULL;	}# ifdef DEBUG_MENU	fprintf(stderr, "[read:%s]\n", filename);	if (tag)		fprintf(stderr, "looking for [menu:%s]\n", tag);# endif	while ((p = (unsigned char*) fgets( (char*) buffer, sizeof(buffer), fp))				!= NULL)	{		int			 n;		if ((n = rxvt_str_match( (char*) p, "[menu")) != 0)		{			if (tag)			{				/* looking for [menu:tag] */				if (p[n] == ':' && p[n + 1] != ']')				{					n++;					n += rxvt_str_match( (char*) p + n, (char*) tag);					if (p[n] == ']')					{# ifdef DEBUG_MENU						fprintf(stderr, "[menu:%s]\n", tag);# endif						break;					}				}			}			else if (p[n] == ':' || p[n] == ']')				break;		}	}	/* found [menu], [menu:???] tag */	while (p != NULL)	{		int			 n;# ifdef DEBUG_MENU		fprintf(stderr, "read line = %s\n", p);# endif		/* looking for [done:tag] or [done:] */		if ((n = rxvt_str_match( (char*) p, "[done")) != 0)		{			if (p[n] == ']')			{				break;			}			else if (p[n] == ':')			{				n++;				if (p[n] == ']')				{					break;				}				else if (tag)				{					n += rxvt_str_match( (char*) p + n, (char*) tag);					if (p[n] == ']')					{# ifdef DEBUG_MENU						fprintf(stderr, "[done:%s]\n", tag);# endif						break;					}				}				else				{					/* what? ... skip this line */					p[0] = COMMENT_CHAR;				}			}		}		/*		 * remove leading/trailing space and strip-off leading/trailing quotes		 * skip blank or comment lines		 */		rxvt_str_trim( (char*) p);		if (*p && *p != '#') rxvt_menubar_dispatcher(r, p);		/* get another line */		p = (unsigned char*) fgets( (char*) buffer, sizeof(buffer), fp);	}	fclose(fp);}/* EXTPROTO */unsigned shortrxvt_menubar_height(rxvt_t *r){	DBG_MSG( 3, (stderr, "rxvt_menubar_height()\n"));	/* If menubar is not created or not mapped, return 0 */	return  (None == r->menuBar.win || !r->menuBar.state) ?			0 : rxvt_menubar_rheight(r);}/* EXTPROTO */unsigned shortrxvt_menubar_rheight(rxvt_t *r){	DBG_MSG( 3, (stderr, "rxvt_menubar_rheight()\n"));# ifdef XFT_SUPPORT	if( r->Options & Opt_xft )		return (r->TermWin.pheight + 2*SHADOW + 2*MENUBAR_MARGIN);	else# endif		return (r->TermWin.fheight + 2*SHADOW + 2*MENUBAR_MARGIN);}/* EXTPROTO */intrxvt_is_menubar_win(rxvt_t *r, Window w){	DBG_MSG( 3, (stderr, "rxvt_is_menubar_win()\n"));	return (w == r->menuBar.win);}/* EXTPROTO */voidrxvt_menubar_resize(rxvt_t *r){	menu_t	*menu;	int		i;	DBG_MSG( 2, (stderr, "rxvt_menubar_resize()\n"));	if (None != r->menuBar.win && r->menuBar.state)		XMoveResizeWindow(r->Xdisplay, r->menuBar.win,			0, 0, TWIN_WIDTH(r), rxvt_menubar_rheight(r));	/*	 * All submenus now need to be traversed and resized.	 */	for (menu = r->h->MenuBar.head; menu != NULL; menu = menu->next)	{		resizeSubMenus( r, menu );		/* X coordinate of menu names in menubar need to be updated */		if( menu->prev )			menu->x = menu->prev->x + 2 * HSPACE_PIXEL				+ PTEXTWIDTH( r, menu->prev->name, menu->prev->len);	}	/*	 * Resize the popup menus if any.	 */	for( i=0; i < 3; i++)		if( r->h->popupMenu[i] ) resizeSubMenus( r, r->h->popupMenu[i]);}/* * Update menu->width for all submenus. *//* INTPROTO */voidresizeSubMenus( rxvt_t *r, menu_t *menu){	menuitem_t *item;	menu->lwidth = menu->rwidth = 0;	for( item = menu->head; item != NULL; item = item->next)	{		unsigned short width;				width = PTEXTWIDTH( r, item->name, item->len);		if( menu->lwidth < width ) menu->lwidth = width;		width = PTEXTWIDTH( r, item->name2, item->len2);		if( menu->rwidth < width ) menu->rwidth = width;		if( item->entry.itemType == MenuSubMenu && item->entry.submenu.menu)			resizeSubMenus( r, item->entry.submenu.menu );	}}#endif	/* HAVE_MENUBAR *//*----------------------- end-of-file (C source) -----------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产综合久久福利| 久久久一区二区三区| 亚洲高清视频在线| 2021久久国产精品不只是精品| 成人精品视频一区二区三区尤物| 国产成人综合精品三级| 国产三级一区二区| 亚洲色图欧洲色图婷婷| 亚洲欧洲日韩综合一区二区| 国产精选一区二区三区| 欧美亚洲精品一区| 日本高清视频一区二区| 精品三级av在线| 欧美精品粉嫩高潮一区二区| 国产精品小仙女| 成人性视频免费网站| 国产精品水嫩水嫩| 精品福利一区二区三区 | 亚洲va韩国va欧美va| 一区二区三区四区中文字幕| 国产偷国产偷亚洲高清人白洁| 不卡一区二区在线| 欧美日韩国产美女| 欧美午夜精品一区二区三区 | 成人免费av网站| 紧缚捆绑精品一区二区| 亚洲国产cao| 2024国产精品视频| 2014亚洲片线观看视频免费| 精品视频在线免费看| av电影在线不卡| 国产成人精品影视| 国产精品系列在线播放| 亚洲电影一级片| 成人听书哪个软件好| 丁香六月综合激情| 99精品热视频| 欧美婷婷六月丁香综合色| 日韩欧美久久一区| 2020国产成人综合网| 久久久.com| 久久久久高清精品| 欧美成人精品福利| 久久亚区不卡日本| 久久影院午夜论| 亚洲一区二区三区小说| 人人精品人人爱| 色婷婷av一区二区三区之一色屋| 91久久免费观看| 欧美精品一区二区三区很污很色的 | 国产日韩精品一区二区浪潮av| 亚洲一区二区免费视频| 成人精品免费视频| 久久精品亚洲一区二区三区浴池 | 久久丁香综合五月国产三级网站| 97成人超碰视| 艳妇臀荡乳欲伦亚洲一区| 国产精品中文字幕日韩精品| 国产一区二区中文字幕| aaa欧美色吧激情视频| 综合久久给合久久狠狠狠97色| 国产日韩欧美不卡| 亚洲一区二区三区影院| 免费成人在线播放| 91国产视频在线观看| 精品电影一区二区| 久久精品无码一区二区三区| 国产精品一区免费视频| 欧美一区二区三区男人的天堂| 国产夜色精品一区二区av| 国产河南妇女毛片精品久久久| 欧美无砖专区一中文字| 亚洲一区二区欧美日韩| 国产精品青草综合久久久久99| 国产欧美综合在线观看第十页| 国产一区二区三区在线观看免费视频| 91国偷自产一区二区三区成为亚洲经典 | 日韩欧美不卡一区| 亚洲v中文字幕| 成人一区二区三区视频在线观看 | 成a人片国产精品| 久久久av毛片精品| 精品一区二区免费看| 欧美久久久久久久久| 日本欧美韩国一区三区| 欧美成人伊人久久综合网| 国产二区国产一区在线观看 | 亚洲天天做日日做天天谢日日欢| 欧美最新大片在线看| 国产精品综合一区二区三区| 亚洲精品乱码久久久久久| 91久久国产综合久久| 偷偷要91色婷婷| 色婷婷综合在线| 91精品国产91久久久久久最新毛片 | 亚洲激情六月丁香| 国产拍欧美日韩视频二区 | 日韩欧美成人一区二区| 日韩免费视频线观看| 欧美成人一区二区三区片免费| 欧美二区在线观看| 欧洲国内综合视频| 麻豆国产欧美一区二区三区| 成人欧美一区二区三区1314| 久久免费偷拍视频| 中文字幕欧美国产| 亚洲丝袜制服诱惑| 欧美日韩一级片网站| 欧美精品久久天天躁| 欧美高清视频在线高清观看mv色露露十八 | 91成人免费电影| 在线欧美日韩精品| 欧美色精品天天在线观看视频| 国产一区二区福利| 91丨九色丨黑人外教| 91精品国产一区二区人妖| 日本韩国一区二区| 日日骚欧美日韩| 亚洲免费观看视频| 中文字幕在线观看不卡| 日韩精品一区二区三区四区 | 久久99精品国产.久久久久| 一区二区三区在线视频播放| 久久久久久一级片| 亚洲va韩国va欧美va精品| 国产一区在线看| av不卡免费电影| bt7086福利一区国产| 中文字幕亚洲一区二区va在线| 国产米奇在线777精品观看| 337p亚洲精品色噜噜| 制服视频三区第一页精品| 日本一区二区综合亚洲| 久久久久9999亚洲精品| 国产成人亚洲精品青草天美| 亚洲高清视频的网址| 久久精品国产亚洲高清剧情介绍| 精品国产一区二区三区不卡 | 奇米精品一区二区三区四区 | 在线免费观看成人短视频| 色综合中文综合网| 欧美一区二区三区播放老司机| 国产欧美一区二区精品仙草咪| 日韩一二三区不卡| 成人自拍视频在线观看| 久久久午夜电影| 亚洲午夜成aⅴ人片| 欧美日韩国产系列| 欧美中文一区二区三区| 色综合久久中文字幕| 欧美日韩亚洲国产综合| 91啦中文在线观看| 91丨九色porny丨蝌蚪| 国产精品亚洲第一| 美女www一区二区| 成人精品免费视频| 国产精品2024| 激情偷乱视频一区二区三区| 欧美中文字幕一区| 激情伊人五月天久久综合| 色丁香久综合在线久综合在线观看| 国产精品亚洲а∨天堂免在线| 日本一区二区不卡视频| 亚洲一区av在线| 91小视频在线| 久久99精品久久只有精品| 亚洲一区二区美女| 六月丁香综合在线视频| 久久亚洲私人国产精品va媚药| 欧美大度的电影原声| 日韩国产高清影视| 国产欧美一区二区三区网站| 久久综合久久久久88| 亚洲国产乱码最新视频| 久草中文综合在线| 色综合中文综合网| 日韩欧美国产不卡| 国产美女久久久久| 亚洲黄一区二区三区| 在线看不卡av| 紧缚奴在线一区二区三区| 亚洲女与黑人做爰| 久久精品夜色噜噜亚洲a∨| 欧美精品日韩一本| 成人一二三区视频| 亚洲免费观看高清| 欧美色国产精品| 日韩美一区二区三区| 麻豆精品视频在线| 久久久91精品国产一区二区精品| 不卡高清视频专区| 国产麻豆午夜三级精品| 精品久久国产字幕高潮| 国产精品久久久久aaaa樱花 | 欧美综合一区二区三区| 精品无人码麻豆乱码1区2区 | 亚洲欧洲成人自拍| 欧美久久一二区| 日韩精品久久理论片| 欧美国产日韩亚洲一区|