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

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

?? win2ktrans.c

?? Linux下的多協(xié)議即時通訊程序源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * purple - Transparency plugin * * copyright (c) 1998-2002, rob flynn <rob@marko.net> * copyright (c) 2002-2003, Herman Bloggs <hermanator12002@yahoo.com> * copyright (c) 2005,      Daniel Atallah <daniel_atallah@yahoo.com> * * this program is free software; you can redistribute it and/or modify * it under the terms of the gnu general public license as published by * the free software foundation; either version 2 of the license, or * (at your option) any later version. * * this program is distributed in the hope that it will be useful, * but without any warranty; without even the implied warranty of * merchantability or fitness for a particular purpose.  see the * gnu general public license for more details. * * you should have received a copy of the gnu general public license * along with this program; if not, write to the free software * foundation, inc., 59 temple place, suite 330, boston, ma  02111-1307  usa * */#ifndef _WIN32_WINNT#define _WIN32_WINNT 0x0500#endif#include <gdk/gdkwin32.h>#include "internal.h"#include "core.h"#include "prefs.h"#include "debug.h"#include "gtkconv.h"#include "gtkplugin.h"#include "gtkprefs.h"#include "gtkblist.h"#include "gtkutils.h"#include "signals.h"#include "version.h"/* *  MACROS & DEFINES */#define WINTRANS_PLUGIN_ID	"gtk-win-trans"#define blist	(purple_get_blist() \		? (PIDGIN_BLIST(purple_get_blist()) \			? ((PIDGIN_BLIST(purple_get_blist()))->window) \			: NULL) \		: NULL)/* *  DATA STRUCTS */typedef struct {	GtkWidget *win;	GtkWidget *slider;} slider_win;/* *  LOCALS */static const char *OPT_WINTRANS_IM_ENABLED= "/plugins/gtk/win32/wintrans/im_enabled";static const char *OPT_WINTRANS_IM_ALPHA  = "/plugins/gtk/win32/wintrans/im_alpha";static const char *OPT_WINTRANS_IM_SLIDER = "/plugins/gtk/win32/wintrans/im_slider";static const char *OPT_WINTRANS_IM_ONFOCUS= "/plugins/gtk/win32/wintrans/im_solid_onfocus";static const char *OPT_WINTRANS_IM_ONTOP  = "/plugins/gtk/win32/wintrans/im_always_on_top";static const char *OPT_WINTRANS_BL_ENABLED= "/plugins/gtk/win32/wintrans/bl_enabled";static const char *OPT_WINTRANS_BL_ALPHA  = "/plugins/gtk/win32/wintrans/bl_alpha";static const char *OPT_WINTRANS_BL_ONFOCUS= "/plugins/gtk/win32/wintrans/bl_solid_onfocus";static const char *OPT_WINTRANS_BL_ONTOP  = "/plugins/gtk/win32/wintrans/bl_always_on_top";static GSList *window_list = NULL;static BOOL (*MySetLayeredWindowAttributes)(HWND hwnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags) = NULL;/* *  CODE */static GtkWidget *wpurple_button(const char *text, const char *pref, GtkWidget *page) {	GtkWidget *button;	button = gtk_check_button_new_with_mnemonic(text);	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button),		purple_prefs_get_bool(pref));	gtk_box_pack_start(GTK_BOX(page), button, FALSE, FALSE, 0);	gtk_widget_show(button);	return button;}/* Set window transparency level */static void set_wintrans(GtkWidget *window, int alpha, gboolean enabled,		gboolean always_on_top) {	if (MySetLayeredWindowAttributes) {		HWND hWnd = GDK_WINDOW_HWND(window->window);		LONG style = GetWindowLong(hWnd, GWL_EXSTYLE);		if (enabled) {			style |= WS_EX_LAYERED;		} else {			style &= ~WS_EX_LAYERED;		}		SetWindowLong(hWnd, GWL_EXSTYLE, style);		if (enabled) {			SetWindowPos(hWnd,				always_on_top ? HWND_TOPMOST : HWND_NOTOPMOST,				0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);			MySetLayeredWindowAttributes(hWnd, 0, alpha, LWA_ALPHA);		} else {			/* Ask the window and its children to repaint */			SetWindowPos(hWnd, HWND_NOTOPMOST, 0, 0, 0, 0,				SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE);			RedrawWindow(hWnd, NULL, NULL,				RDW_ERASE | RDW_INVALIDATE | RDW_FRAME | RDW_ALLCHILDREN);		}	}}/* When a conv window is focused, if we're only transparent when unfocused, * deal with transparency */static gboolean focus_conv_win_cb(GtkWidget *w, GdkEventFocus *e, gpointer d) {	if (purple_prefs_get_bool(OPT_WINTRANS_IM_ENABLED)			&& purple_prefs_get_bool(OPT_WINTRANS_IM_ONFOCUS)) {		GtkWidget *window = (GtkWidget *) d;		if (e->in) { /* Focused */			set_wintrans(window, 0, FALSE,				purple_prefs_get_bool(OPT_WINTRANS_IM_ONTOP));		} else {			set_wintrans(window,				purple_prefs_get_int(OPT_WINTRANS_IM_ALPHA),				TRUE,				purple_prefs_get_bool(OPT_WINTRANS_IM_ONTOP));		}	}	return FALSE;}/* When buddy list window is focused, * if we're only transparent when unfocused, deal with transparency */static gboolean focus_blist_win_cb(GtkWidget *w, GdkEventFocus *e, gpointer d) {	if (purple_prefs_get_bool(OPT_WINTRANS_BL_ENABLED)			&& purple_prefs_get_bool(OPT_WINTRANS_BL_ONFOCUS)) {		GtkWidget *window = (GtkWidget *) d;		if (e->in) { /* Focused */			set_wintrans(window, 0, FALSE,				purple_prefs_get_bool(OPT_WINTRANS_BL_ONTOP));		} else {			set_wintrans(window,				purple_prefs_get_int(OPT_WINTRANS_BL_ALPHA),				TRUE,				purple_prefs_get_bool(OPT_WINTRANS_BL_ONTOP));		}	}	return FALSE;}static void change_alpha(GtkWidget *w, gpointer data) {	int alpha = gtk_range_get_value(GTK_RANGE(w));	purple_prefs_set_int(OPT_WINTRANS_IM_ALPHA, alpha);	/* If we're in no-transparency on focus mode,	 * don't take effect immediately */	if (!purple_prefs_get_bool(OPT_WINTRANS_IM_ONFOCUS))		set_wintrans(GTK_WIDGET(data), alpha, TRUE,			purple_prefs_get_bool(OPT_WINTRANS_IM_ONTOP));}static GtkWidget *wintrans_slider(GtkWidget *win) {	GtkWidget *hbox;	GtkWidget *label, *slider;	GtkWidget *frame;	int imalpha = purple_prefs_get_int(OPT_WINTRANS_IM_ALPHA);	frame = gtk_frame_new(NULL);	gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_NONE);	gtk_widget_show(frame);	hbox = gtk_hbox_new(FALSE, 5);	gtk_container_add(GTK_CONTAINER(frame), hbox);	label = gtk_label_new(_("Opacity:"));	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);	gtk_widget_show(hbox);	slider = gtk_hscale_new_with_range(50, 255, 1);	gtk_range_set_value(GTK_RANGE(slider), imalpha);	gtk_widget_set_usize(GTK_WIDGET(slider), 200, -1);	/* On slider val change, update window's transparency level */	g_signal_connect(GTK_OBJECT(slider), "value-changed",		GTK_SIGNAL_FUNC(change_alpha), win);	gtk_box_pack_start(GTK_BOX(hbox), slider, FALSE, TRUE, 5);	/* Set the initial transparency level */	set_wintrans(win, imalpha, TRUE,		purple_prefs_get_bool(OPT_WINTRANS_IM_ONTOP));	gtk_widget_show_all(hbox);	return frame;}static slider_win* find_slidwin(GtkWidget *win) {	GSList *tmp = window_list;	while (tmp) {		if (((slider_win*) (tmp->data))->win == win)			return (slider_win*) tmp->data;		tmp = tmp->next;	}	return NULL;}/* Clean up transparency stuff for the conv window */static void cleanup_conv_window(PidginWindow *win) {	GtkWidget *window = win->window;	slider_win *slidwin = NULL;	/* Remove window from the window list */	purple_debug_info(WINTRANS_PLUGIN_ID,		"Conv window destroyed... removing from list\n");	if ((slidwin = find_slidwin(window))) {		window_list = g_slist_remove(window_list, slidwin);		g_free(slidwin);	}	/* Remove the focus cbs */	g_signal_handlers_disconnect_by_func(G_OBJECT(window),		G_CALLBACK(focus_conv_win_cb), window);}static void purple_conversation_delete(PurpleConversation *conv) {	PidginWindow *win = pidgin_conv_get_window(PIDGIN_CONVERSATION(conv));	/* If it is the last conversation in the window, cleanup */	if (pidgin_conv_window_get_gtkconv_count(win) == 1)		cleanup_conv_window(win);}static void set_blist_trans(GtkWidget *w, const char *pref) {	gboolean enabled = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w));	purple_prefs_set_bool(pref, enabled);	if (blist) {		set_wintrans(blist, purple_prefs_get_int(OPT_WINTRANS_BL_ALPHA),			purple_prefs_get_bool(OPT_WINTRANS_BL_ENABLED),			purple_prefs_get_bool(OPT_WINTRANS_IM_ONTOP));	}}static void add_slider(GtkWidget *win) {	GList *wl, *wl1;	GtkWidget *vbox = NULL;	/* Look up this window to see if it already has a slider */	if (!find_slidwin(win)) {		GtkWidget *slider_box = NULL;		slider_win *slidwin = NULL;		GtkRequisition slidereq;		gint width, height;		/* Get top vbox */		for (wl1 = wl = gtk_container_get_children(					GTK_CONTAINER(win));				wl != NULL;				wl = wl->next) {			if (GTK_IS_VBOX(GTK_OBJECT(wl->data)))				vbox = GTK_WIDGET(wl->data);			else {				purple_debug_error(WINTRANS_PLUGIN_ID,					"no vbox found\n");				return;			}		}		g_list_free(wl1);		slider_box = wintrans_slider(win);		/* Figure out how tall the slider wants to be */		gtk_widget_size_request(slider_box, &slidereq);		gtk_window_get_size(GTK_WINDOW(win), &width, &height);		gtk_box_pack_start(GTK_BOX(vbox),			slider_box, FALSE, FALSE, 0);		/* Make window taller so we don't slowly collapse its message area */		gtk_window_resize(GTK_WINDOW(win), width,			(height + slidereq.height));		/* Add window to list, to track that it has a slider */		slidwin = g_new0(slider_win, 1);		slidwin->win = win;		slidwin->slider = slider_box;		window_list = g_slist_append(window_list, slidwin);	}}static void remove_sliders() {	if (window_list) {		GSList *tmp = window_list;		while (tmp) {			slider_win *slidwin = (slider_win*) tmp->data;			if (slidwin != NULL &&					GTK_IS_WINDOW(slidwin->win)) {				GtkRequisition slidereq;				gint width, height;				/* Figure out how tall the slider was */				gtk_widget_size_request(					slidwin->slider, &slidereq);				gtk_window_get_size(					GTK_WINDOW(slidwin->win),					&width, &height);				gtk_widget_destroy(slidwin->slider);				gtk_window_resize(					GTK_WINDOW(slidwin->win),					width, (height - slidereq.height));			}			g_free(slidwin);			tmp = tmp->next;		}		g_slist_free(window_list);		window_list = NULL;	}}/* Remove all transparency related aspects from conversation windows */static void remove_convs_wintrans(gboolean remove_signal) {	GList *wins;	for (wins = pidgin_conv_windows_get_list(); wins; wins = wins->next) {		PidginWindow *win = wins->data;		GtkWidget *window = win->window;		if (purple_prefs_get_bool(OPT_WINTRANS_IM_ENABLED))			set_wintrans(window, 0, FALSE, FALSE);		/* Remove the focus cbs */		if (remove_signal)			g_signal_handlers_disconnect_by_func(G_OBJECT(window),				G_CALLBACK(focus_conv_win_cb), window);	}	remove_sliders();}static void set_conv_window_trans(PidginWindow *oldwin, PidginWindow *newwin) {	GtkWidget *win = newwin->window;	/* check prefs to see if we want trans */	if (purple_prefs_get_bool(OPT_WINTRANS_IM_ENABLED)) {		set_wintrans(win, purple_prefs_get_int(OPT_WINTRANS_IM_ALPHA),			TRUE, purple_prefs_get_bool(OPT_WINTRANS_IM_ONTOP));

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美肥大bbwbbw高潮| 麻豆一区二区三| 日本一区二区动态图| 国产精品激情偷乱一区二区∴| 国产日韩欧美综合一区| 精品国产伦一区二区三区免费 | 欧美男男青年gay1069videost| 欧美夫妻性生活| 日韩免费观看高清完整版| 久久色在线视频| 综合欧美一区二区三区| 亚洲gay无套男同| 国产精品一二二区| 欧美日韩精品一区视频| 久久久久久夜精品精品免费| 亚洲欧美aⅴ...| 国产在线不卡一卡二卡三卡四卡| 91香蕉国产在线观看软件| 91精品国产入口| 亚洲男女毛片无遮挡| 韩国精品主播一区二区在线观看 | 久久一日本道色综合| 亚洲国产日韩a在线播放性色| 韩国午夜理伦三级不卡影院| 一本到高清视频免费精品| 国产调教视频一区| 蜜臂av日日欢夜夜爽一区| 欧美日韩国产系列| 一区二区三区视频在线观看| 成人免费看的视频| 久久久精品国产免费观看同学| 亚洲国产欧美日韩另类综合| 一本色道亚洲精品aⅴ| 国产精品乱码一区二三区小蝌蚪| 日韩**一区毛片| 欧美一区二区三区在线视频| 亚洲成人三级小说| 欧美精品久久久久久久多人混战| 一区二区三区在线观看视频| 一本到三区不卡视频| 洋洋成人永久网站入口| 欧美中文字幕亚洲一区二区va在线 | 欧美最猛黑人xxxxx猛交| 亚洲欧洲日韩av| 日本韩国精品在线| 亚洲gay无套男同| 欧美一区二区黄| 国产乱子伦视频一区二区三区| 精品久久久久久久久久久久久久久久久| 奇米一区二区三区av| 26uuu国产一区二区三区| 国产一区二区视频在线| 中文字幕中文字幕在线一区| 精品视频123区在线观看| 久久国产精品一区二区| 国产精品国产成人国产三级 | 亚洲国产综合视频在线观看| 在线综合亚洲欧美在线视频| 韩国v欧美v日本v亚洲v| 自拍av一区二区三区| 日韩写真欧美这视频| 99久久婷婷国产综合精品电影| 日韩国产欧美一区二区三区| 国产欧美一区在线| 日韩一区二区在线看片| 不卡影院免费观看| 国产精品一区在线观看你懂的| 亚洲韩国一区二区三区| 国产精品三级电影| 26uuu色噜噜精品一区| 欧美三级日韩三级| 色成年激情久久综合| 国产91对白在线观看九色| 久草热8精品视频在线观看| 一区二区在线看| 亚洲精品日产精品乱码不卡| 精品对白一区国产伦| 欧美变态tickle挠乳网站| 欧美三级三级三级爽爽爽| 日本丶国产丶欧美色综合| av一区二区三区黑人| 不卡的av电影| 99re在线视频这里只有精品| 丁香啪啪综合成人亚洲小说| 国产一区二区调教| 国产成人免费网站| 99久久精品国产导航| 99久久精品99国产精品| 色猫猫国产区一区二在线视频| a4yy欧美一区二区三区| 91免费版在线| 欧美久久一区二区| 欧美不卡一区二区| 国产精品免费看片| 亚洲一卡二卡三卡四卡五卡| 午夜婷婷国产麻豆精品| 蜜臀av一区二区三区| 丁香婷婷深情五月亚洲| 91美女精品福利| 欧美一区二区三区白人| 久久精品欧美日韩精品| 亚洲午夜一区二区| 国产原创一区二区三区| 色婷婷国产精品综合在线观看| 欧美精品日日鲁夜夜添| 国产精品久久久久国产精品日日| 亚洲午夜一区二区| 成人免费黄色在线| 欧美一区二区三区人| 亚洲美女在线一区| 国产精品99久久久久久久vr| 欧美日韩一区二区在线观看视频| 久久影院视频免费| 婷婷夜色潮精品综合在线| 成人av在线播放网站| 欧美一级高清大全免费观看| 亚洲激情av在线| 不卡视频在线观看| 久久精品在线免费观看| 日韩中文字幕1| 欧美日韩精品是欧美日韩精品| 国产欧美一区二区精品婷婷| 久久精品国产精品青草| 69久久夜色精品国产69蝌蚪网| 亚洲国产精品一区二区www| 91色乱码一区二区三区| 国产精品久久久久精k8| 丁香激情综合国产| 中文字幕一区二区三区在线不卡| 国产老肥熟一区二区三区| 久久综合色婷婷| 国产精品一二二区| 亚洲欧美在线观看| 色噜噜狠狠色综合中国| 亚洲精品乱码久久久久| 在线视频观看一区| 日日摸夜夜添夜夜添精品视频| 538prom精品视频线放| 精品一区二区综合| 中文字幕第一区综合| 色综合久久久久综合99| 丝袜脚交一区二区| 久久欧美中文字幕| 91日韩一区二区三区| 捆绑变态av一区二区三区| 久久女同性恋中文字幕| 99久久免费国产| 日韩不卡在线观看日韩不卡视频| 久久久久国产免费免费 | 国产亚洲精品aa午夜观看| 91在线观看成人| 久88久久88久久久| 亚洲高清不卡在线| 国产欧美日韩中文久久| 欧美日本乱大交xxxxx| 大桥未久av一区二区三区中文| 亚洲成人综合视频| 亚洲桃色在线一区| 国产日韩一级二级三级| 日韩欧美你懂的| 欧美怡红院视频| 91麻豆精品在线观看| 国产精品一二三四| 国产在线精品一区二区不卡了| 亚洲午夜久久久久久久久电影网| 国产欧美一区二区精品久导航| 777亚洲妇女| 欧美一区二区视频免费观看| 一本一道综合狠狠老| 99视频一区二区| 粉嫩嫩av羞羞动漫久久久| 精品亚洲成a人在线观看| 免费欧美在线视频| 老色鬼精品视频在线观看播放| 亚洲成av人**亚洲成av**| 亚洲福利视频导航| 亚洲高清免费观看| 免费成人在线网站| 天堂午夜影视日韩欧美一区二区| 亚洲高清视频中文字幕| 日韩国产欧美一区二区三区| 日韩激情中文字幕| 激情欧美一区二区三区在线观看| 狠狠色丁香久久婷婷综| 国产成人亚洲综合a∨婷婷图片| 高清国产一区二区三区| 色综合亚洲欧洲| 欧美高清一级片在线| 久久久影视传媒| 亚洲一区二区高清| 久久精品av麻豆的观看方式| 高清国产午夜精品久久久久久| 不卡的av在线| 欧美成人猛片aaaaaaa| 国产精品天干天干在线综合| 亚洲国产人成综合网站| 国产精品一区二区三区网站| 91麻豆福利精品推荐| 欧美成人性战久久| 亚洲欧美影音先锋|