コード例 #1
0
static char  *
match_string (ASDatabase * db, DBMatchType type, unsigned int index, Bool dup_strings)
{
	char         *res = NULL;
	register ASDatabaseRecord *db_rec;
	register int  i = 0;

	for( i = 0 ; db->match_list[i] >= 0 ; ++i ) 
	{
		db_rec = get_asdb_record (db, db->match_list[i]);
		if (get_flags (db_rec->set_data_flags, type))
		{
			switch (type)
			{
			 case MATCH_Icon:	 res = db_rec->icon_file;	 break;
			 case MATCH_Frame:	 res = db_rec->frame_name;	 break;
			 case MATCH_Windowbox: res = db_rec->windowbox_name; break;
			 case MATCH_MyStyle: res = db_rec->window_styles[(index < BACK_STYLES) ? index : 0];
				  break;
			 default:
				 break;
			}
		}
	}
	if (res != NULL && dup_strings)
		res = mystrdup (res);
	return res;
}
コード例 #2
0
static int
match_int (ASDatabase * db, DBMatchType type)
{
	register ASDatabaseRecord *db_rec;
	register int  i = 0;
	int value = 0 ;

	for( i = 0 ; db->match_list[i] >= 0 ; ++i ) 
	{
		db_rec = get_asdb_record (db, db->match_list[i]);
		if (get_flags (db_rec->set_data_flags, type))
		{
			switch (type)
			{
			 case MATCH_Desk:		 	value = db_rec->desk; break;
			 case MATCH_layer:		 	value = db_rec->layer; break;
			 case MATCH_ViewportX:
				 LOCAL_DEBUG_OUT( "viewport_x = %d", db_rec->viewport_x );
				 value = db_rec->viewport_x;
				  break;
			 case MATCH_ViewportY:   	value = db_rec->viewport_y; break;
			 case MATCH_border_width: 	value = db_rec->border_width; break;
			 case MATCH_resize_width: 	value = db_rec->resize_width; break;
			 case MATCH_gravity:	 	value = db_rec->gravity; break;
			 case MATCH_window_opacity:	value = db_rec->window_opacity; break;
			 default:
				 break;
			}
		}
	}
	return value;
}
コード例 #3
0
ファイル: asdatabase.c プロジェクト: Remmy/afterstep
static void
match_flags (unsigned long *pset_flags, unsigned long *pflags,
						 ASDatabase * db, DBMatchType type)
{
	if (pset_flags && pflags) {
		unsigned long curr_set_flags, on_flags;
		register ASDatabaseRecord *db_rec;
		register int i = 0;

		for (i = 0; db->match_list[i] >= 0; ++i) {
			db_rec = get_asdb_record (db, db->match_list[i]);
			curr_set_flags =
					(type ==
					 MATCH_Buttons) ? db_rec->set_buttons : db_rec->set_flags;
			on_flags = (type == MATCH_Buttons) ? db_rec->buttons : db_rec->flags;
			/* we should not touch flags that are already set - sure we do ! */
/* 			clear_flags (*pflags, get_flags (off_flags, ~(*pset_flags)));
			set_flags (*pflags, get_flags (on_flags, ~(*pset_flags)));
*/
			clear_flags (*pflags, curr_set_flags);
			set_flags (*pflags, on_flags);
			set_flags (*pset_flags, curr_set_flags);
		}
	}
}
コード例 #4
0
ファイル: asdatabase.c プロジェクト: Remmy/afterstep
static void match_data_flags (unsigned long *pset_flags, ASDatabase * db)
{
	if (pset_flags) {
		register ASDatabaseRecord *db_rec;
		register int i = 0;

		for (i = 0; db->match_list[i] >= 0; ++i) {
			db_rec = get_asdb_record (db, db->match_list[i]);
			set_flags (*pset_flags, db_rec->set_data_flags);
		}
	}
}
コード例 #5
0
ファイル: asdatabase.c プロジェクト: Remmy/afterstep
static void *match_struct (ASDatabase * db, DBMatchType type)
{
	register ASDatabaseRecord *db_rec;
	register int i = 0;
	void *value = NULL;

	for (i = 0; db->match_list[i] >= 0; ++i) {
		db_rec = get_asdb_record (db, db->match_list[i]);
		if (get_flags (db_rec->set_data_flags, type)) {
			switch (type) {
			case MATCH_DefaultGeometry:
				value = &(db_rec->default_geometry);
				break;
			default:
				break;
			}
		}
	}
	return value;
}
コード例 #6
0
ファイル: Ident.c プロジェクト: Remmy/afterstep
void 
fill_window_data()
{
	ASWindowData *wd;
	INT32 encoding;
	char *name, *names[5];
	static char buf[4096], buf2[4096];
	ASRawHints    raw ;
	ASDatabaseRecord db_rec ;

	wd = fetch_window_by_id( MyArgs.src_window );
	LOCAL_DEBUG_OUT( "src_window = %lX, wd = %p", MyArgs.src_window, wd );
	encoding = AS_Text_ASCII ;
	name = get_window_name(wd, ASN_Name, &encoding );
	   
	add_property( "Window name:", name, encoding, True );
	name = get_window_name(wd, ASN_NameMatched, &encoding );
	add_property( "Window name matched:", name, encoding, True );
	name = get_window_name(wd, ASN_IconName, &encoding );
	add_property( "Icon name:", name, encoding, True );		
	name = get_window_name(wd, ASN_ResClass, &encoding );
	add_property( "Resource class:", name, encoding, False );
	name = get_window_name(wd, ASN_ResName, &encoding );
	add_property( "Resource name:", name, encoding, False );

	sprintf( buf, "0x%lX ( %ld )", wd->client, wd->client );
	add_property("Client Window ID:", buf, AS_Text_ASCII, False);
	sprintf( buf, "0x%lX ( %ld )", wd->frame, wd->frame );
	add_property("Frame Window ID:", buf, AS_Text_ASCII, False);
	sprintf( buf, "%ldx%ld%+ld%+ld", wd->frame_rect.width, wd->frame_rect.height, wd->frame_rect.x, wd->frame_rect.y );
	add_property("Frame Geometry:", buf, AS_Text_ASCII, False);

#define SHOW_FLAG(flags,flg)   \
	do{ if( get_flags( flags, AS_##flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0)
#define SHOW_WM_FLAG(flags,flg)   \
	do{ if( get_flags( flags, flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0)
#define SHOW_MWM_FLAG(flags,type,flg)   \
	do{ if( get_flags( flags, MWM_##type##_##flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0)
#define SHOW_EXTWM_FLAG(flags,type,flg)   \
	do{ if( get_flags( flags, EXTWM_##type##flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0)
#define SHOW_GNOME_FLAG(flags,type,flg)   \
	do{ if( get_flags( flags, WIN_##type##_##flg)){ if( buf[0] != '\0' ) strcat( buf, ", "); strcat( buf, #flg );}}while(0)

	buf[0] = '\0' ;
	if( (wd->state_flags & (AS_MaximizedX|AS_MaximizedY)) == (AS_MaximizedX|AS_MaximizedY) )
	{
		strcpy( buf, "Maximized"); 
	}else
	{
		SHOW_FLAG(wd->state_flags,MaximizedX);
		SHOW_FLAG(wd->state_flags,MaximizedY);    
	}
	SHOW_FLAG(wd->state_flags,Iconic);
	SHOW_FLAG(wd->state_flags,Fullscreen);    
	SHOW_FLAG(wd->state_flags,Sticky);    
	SHOW_FLAG(wd->state_flags,Shaded);        
	SHOW_FLAG(wd->state_flags,Withdrawn);
	SHOW_FLAG(wd->state_flags,Dead);     
	SHOW_FLAG(wd->state_flags,Mapped);
	SHOW_FLAG(wd->state_flags,IconMapped);
	SHOW_FLAG(wd->state_flags,Hidden);
	SHOW_FLAG(wd->state_flags,Shaped);
	SHOW_FLAG(wd->state_flags,ShapedDecor);
	SHOW_FLAG(wd->state_flags,ShapedIcon);
	SHOW_FLAG(wd->state_flags,Urgent);
		   
	add_property("Current state flags:", buf, AS_Text_ASCII, True);
	
	buf[0] = '\0' ;
	SHOW_FLAG(wd->flags,Iconic);
	SHOW_FLAG(wd->flags,Transient);
	SHOW_FLAG(wd->flags,AcceptsFocus);
	SHOW_FLAG(wd->flags,ClickToFocus);
	SHOW_FLAG(wd->flags,Titlebar);
	SHOW_FLAG(wd->flags,VerticalTitle);
	SHOW_FLAG(wd->flags,Border);
	SHOW_FLAG(wd->flags,Handles);
	SHOW_FLAG(wd->flags,Frame);		
	SHOW_FLAG(wd->flags,SkipWinList); 
	SHOW_FLAG(wd->flags,DontCirculate); 
	SHOW_FLAG(wd->flags,AvoidCover);          
	SHOW_FLAG(wd->flags,IconTitle);
	SHOW_FLAG(wd->flags,Icon);          
	SHOW_FLAG(wd->client_icon_flags,ClientIcon);
	SHOW_FLAG(wd->client_icon_flags,ClientIconPixmap);    
	SHOW_FLAG(wd->client_icon_flags,ClientIconPosition);
	SHOW_FLAG(wd->flags,FocusOnMap);          
	SHOW_FLAG(wd->flags,ShortLived);
	SHOW_FLAG(wd->flags,Module);
	SHOW_FLAG(wd->flags,IgnoreConfigRequest);
	SHOW_FLAG(wd->flags,IgnoreRestackRequest);
	SHOW_FLAG(wd->flags,WMDockApp);
	
	add_property("Current hints flags:", buf, AS_Text_ASCII, True);
	
	buf[0] = '\0' ;
	SHOW_FLAG(wd->flags,Windowbox);           
	SHOW_FLAG(wd->flags,Aspect);
	SHOW_FLAG(wd->flags,PID);
	SHOW_FLAG(wd->flags,MinSize);
	SHOW_FLAG(wd->flags,MaxSize);
	SHOW_FLAG(wd->flags,SizeInc);
	SHOW_FLAG(wd->flags,BaseSize);
	SHOW_FLAG(wd->flags,Gravity);
	
	add_property("Specified hint values:", buf, AS_Text_ASCII, True);

    if( collect_hints( ASDefaultScr, wd->client, HINT_ANY, &raw ) )
	{
		ExtendedWMHints *eh = &(raw.extwm_hints);
		GnomeHints *gh = &(raw.gnome_hints);
		
		if (raw.wm_hints)
		{
			if( raw.wm_hints->flags != 0 ) 
			{
				buf[0] = '\0' ;
				SHOW_WM_FLAG(raw.wm_hints->flags,UrgencyHint );
				SHOW_WM_FLAG(raw.wm_hints->flags,InputHint);
				SHOW_WM_FLAG(raw.wm_hints->flags,StateHint);
				SHOW_WM_FLAG(raw.wm_hints->flags,IconPixmapHint);
				SHOW_WM_FLAG(raw.wm_hints->flags,IconWindowHint);
				SHOW_WM_FLAG(raw.wm_hints->flags,IconPositionHint);
				SHOW_WM_FLAG(raw.wm_hints->flags,IconMaskHint);
				SHOW_WM_FLAG(raw.wm_hints->flags,WindowGroupHint);
				add_property("WM Hints flags:", buf, AS_Text_ASCII, True);
				if( get_flags (raw.wm_hints->flags, WindowGroupHint) )
				{
					sprintf( buf, "0x%lX ( %ld )", raw.wm_hints->window_group, raw.wm_hints->window_group );
					add_property("WM Group leader:", buf, AS_Text_ASCII, True);
				}
			}
		}
		if (raw.wm_normal_hints)
		{
			if( raw.wm_normal_hints->flags != 0 ) 
			{
				buf[0] = '\0' ;
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,USPosition );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,USSize );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,PPosition );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,PSize );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,PMinSize );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,PMaxSize );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,PResizeInc );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,PAspect );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,PBaseSize );
				SHOW_WM_FLAG(raw.wm_normal_hints->flags,PWinGravity );
				add_property("WM Size Hints flags:", buf, AS_Text_ASCII, True);
			}
			if( get_flags(raw.wm_normal_hints->flags, PWinGravity ) && 
				raw.wm_normal_hints->win_gravity >= 0 && raw.wm_normal_hints->win_gravity <= StaticGravity ) 
			{
				static char *gravity_types[] = 
					{"Forget","NorthWest","North","NorthEast","West",
					 "Center","East","SouthWest","South","SouthEast",
					 "Static" };

					add_property("Gravity:", gravity_types[raw.wm_normal_hints->win_gravity], AS_Text_ASCII, True);
			}
		}
		if( raw.transient_for)
		{
			sprintf( buf, "0x%lX", raw.transient_for->flags );
			add_property("flags:", buf, AS_Text_ASCII, False);
			sprintf( buf, "0x%lX ( %ld )", raw.transient_for->parent, raw.transient_for->parent );
			add_property("Transient For:", buf, AS_Text_ASCII, False);
			sprintf( buf, "%+d%+d", raw.transient_for->viewport_x, raw.transient_for->viewport_y);
			add_property("Transient viewport:", buf, AS_Text_ASCII, False);
			sprintf( buf, "%d", raw.transient_for->desktop );
			add_property("Transient desktop:", buf, AS_Text_ASCII, False);
		}
		if (raw.motif_hints)
		{
			buf[0] = '\0' ;
			if (get_flags (raw.motif_hints->flags, MWM_HINTS_INPUT_MODE))
			{
				INT32 input_mode = raw.motif_hints->inputMode;
					  
				if (input_mode == MWM_INPUT_SYSTEM_MODAL)
					add_property("Motif Input mode:", "System modal", AS_Text_ASCII, False);
				else if (input_mode == MWM_INPUT_FULL_APPLICATION_MODAL)
					add_property("Motif Input mode:", "Full application modal", AS_Text_ASCII, False);
			}

 			check_motif_hints_sanity( raw.motif_hints );

			if (get_flags (raw.motif_hints->flags, MWM_HINTS_FUNCTIONS))
			{	
				ASFlagType funcs = raw.motif_hints->functions;
				buf[0] = '\0' ;
				SHOW_MWM_FLAG(funcs,FUNC,RESIZE);
				SHOW_MWM_FLAG(funcs,FUNC,MOVE);
				SHOW_MWM_FLAG(funcs,FUNC,MINIMIZE);
				SHOW_MWM_FLAG(funcs,FUNC,MAXIMIZE);
				SHOW_MWM_FLAG(funcs,FUNC,CLOSE);
				add_property("Motif Functionality hints:", buf, AS_Text_ASCII, False);
			}
			if (get_flags (raw.motif_hints->flags, MWM_HINTS_DECORATIONS))
			{	
				ASFlagType decor = raw.motif_hints->decorations;
				buf[0] = '\0' ;
				SHOW_MWM_FLAG(decor,DECOR,BORDER);
				SHOW_MWM_FLAG(decor,DECOR,RESIZEH);
				SHOW_MWM_FLAG(decor,DECOR,TITLE);
				SHOW_MWM_FLAG(decor,DECOR,MENU);
				SHOW_MWM_FLAG(decor,DECOR,MINIMIZE);
				SHOW_MWM_FLAG(decor,DECOR,MAXIMIZE);
				add_property("Motif decor hints:", buf, AS_Text_ASCII, False);
			}
		}	 
		/* window state hints : */
		if (get_flags (eh->state_flags, EXTWM_StateEverything))
		{
			buf[0] = '\0' ;
			SHOW_EXTWM_FLAG(eh->state_flags,State,Modal );
			SHOW_EXTWM_FLAG(eh->state_flags,State,Sticky );
			SHOW_EXTWM_FLAG(eh->state_flags,State,MaximizedV );
			SHOW_EXTWM_FLAG(eh->state_flags,State,MaximizedH );
			SHOW_EXTWM_FLAG(eh->state_flags,State,Shaded );
			SHOW_EXTWM_FLAG(eh->state_flags,State,SkipTaskbar );
			SHOW_EXTWM_FLAG(eh->state_flags,State,SkipPager );
			SHOW_EXTWM_FLAG(eh->state_flags,State,Fullscreen );
			SHOW_EXTWM_FLAG(eh->state_flags,State,Above );
			SHOW_EXTWM_FLAG(eh->state_flags,State,Below );
			SHOW_EXTWM_FLAG(eh->state_flags,State,Hidden );
			SHOW_EXTWM_FLAG(eh->state_flags,State,DemandsAttention );
			
			add_property("Extended WM status flags:", buf, AS_Text_ASCII, True);
		}
		/* window type hints : */
		if (get_flags (eh->type_flags, EXTWM_TypeEverything))
		{
			buf[0] = '\0' ;
			SHOW_EXTWM_FLAG(eh->type_flags,Type,Desktop);
			SHOW_EXTWM_FLAG(eh->type_flags,Type,Dock);
			SHOW_EXTWM_FLAG(eh->type_flags,Type,Toolbar);
			SHOW_EXTWM_FLAG(eh->type_flags,Type,Menu);
			SHOW_EXTWM_FLAG(eh->type_flags,Type,Dialog);
			SHOW_EXTWM_FLAG(eh->type_flags,Type,Normal);
			SHOW_EXTWM_FLAG(eh->type_flags,Type,Utility);
			SHOW_EXTWM_FLAG(eh->type_flags,Type,Splash);
			add_property("Extended WM type flags:", buf, AS_Text_ASCII, True);
		}
		
		if (get_flags (eh->flags, EXTWM_PID))
		{
			sprintf( buf, "%d", (int)eh->pid );
			add_property("Extended WM PID:", buf, AS_Text_ASCII, False);
		}

		if (get_flags (eh->flags, EXTWM_DoesWMPing))
			add_property("Extended WM protocols:", "DoesWMPing", AS_Text_ASCII, False);
		
		if (get_flags (eh->flags, EXTWM_WINDOW_OPACITY))
		{
			sprintf( buf, "%d", (int)eh->window_opacity );
			add_property("ExtWM Window Opacity :",  buf, AS_Text_ASCII, False);
		}
		
		if (get_flags (eh->flags, EXTWM_DESKTOP))
		{
			if (eh->desktop == 0xFFFFFFFF)
				strcpy(buf, "sticky");
			else
				sprintf( buf, "%d", (int)eh->desktop );
			add_property("Extended WM desktop:", buf, AS_Text_ASCII, False);
		}

		if (get_flags (gh->flags, GNOME_LAYER))
		{
			sprintf( buf, "%d", (int)gh->layer );
			add_property("Gnome hints layer:", buf, AS_Text_ASCII, False);
		}
		if (get_flags (gh->flags, GNOME_WORKSPACE))
		{
			sprintf( buf, "%d", (int)gh->workspace );
			add_property("Gnome hints desktop:", buf, AS_Text_ASCII, False);
		}
		if (get_flags (gh->flags, GNOME_STATE) && gh->state != 0)
		{
			buf[0] = '\0' ;
			SHOW_GNOME_FLAG(gh->state,STATE,STICKY);
			SHOW_GNOME_FLAG(gh->state,STATE,MINIMIZED);
			SHOW_GNOME_FLAG(gh->state,STATE,MAXIMIZED_VERT);
			SHOW_GNOME_FLAG(gh->state,STATE,MAXIMIZED_HORIZ);
			SHOW_GNOME_FLAG(gh->state,STATE,SHADED);
			add_property("Gnome state flags:", buf, AS_Text_ASCII, False);
		}

		if (get_flags (gh->flags, GNOME_HINTS) && gh->hints != 0)
		{	
			buf[0] = '\0' ;
			SHOW_GNOME_FLAG(gh->state,HINTS,SKIP_FOCUS);
			SHOW_GNOME_FLAG(gh->state,HINTS,SKIP_WINLIST);
			SHOW_GNOME_FLAG(gh->state,HINTS,SKIP_TASKBAR);
			SHOW_GNOME_FLAG(gh->state,HINTS,FOCUS_ON_CLICK);
			add_property("Gnome hints flags:", buf, AS_Text_ASCII, False);
		}
	}

	names[0] = get_window_name(wd, ASN_NameMatched, &encoding );
	names[1] = get_window_name(wd, ASN_IconName, &encoding );
	names[2] = get_window_name(wd, ASN_ResClass, &encoding );
	names[3] = get_window_name(wd, ASN_ResName, &encoding );
	names[4] = NULL ;

#define APPEND_DBSTYLE_TEXT(text) 	\
			do { if( !first ) strcat( buf, ", "); else first = False ; strcat( buf, text); } while(0)

	if ( fill_asdb_record (Database, names, &db_rec, False) != NULL )
	{
		int i ;
		add_property("Matched Styles:", "", AS_Text_ASCII, True);
		for( i = 0 ; Database->match_list[i] >= 0 ; ++i )
		{
			ASDatabaseRecord *dr = 	get_asdb_record (Database, Database->match_list[i]);
			int f ;
			Bool first = True ;
			if( is_default_asdb_record(Database, dr) ) 
				sprintf(buf, "\"*\" \t");
			else if( dr->regexp ) 
				sprintf( buf, "\"%s\" \t", dr->regexp->raw );
			else
				sprintf( buf, "\"(none)\" \t" );

			for( f = 0 ; DatabaseFlagsList[f].name_set != NULL ; ++f ) 
			{	
				if( get_flags( dr->set_flags, DatabaseFlagsList[f].flag ) ) 
				{	
					name = get_flags( dr->flags, DatabaseFlagsList[f].flag )?
									DatabaseFlagsList[f].name_set : DatabaseFlagsList[f].name_unset ;
					APPEND_DBSTYLE_TEXT(name);
				}
			}	

			if( get_flags( dr->set_data_flags, STYLE_ICON ) )
			{	
				sprintf( buf2, "Icon \"%s\"", dr->icon_file );
				APPEND_DBSTYLE_TEXT(buf2);
			}
#if 1			
			if( get_flags( dr->set_data_flags, STYLE_STARTUP_DESK ) )
			{	
				sprintf( buf2, "StartsOnDesk %d", dr->desk );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_BORDER_WIDTH ) )
			{	
				sprintf( buf2, "BorderWidth %d", dr->border_width );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_HANDLE_WIDTH ) )
			{	
				sprintf( buf2, "HandleWidth %d", dr->resize_width );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_DEFAULT_GEOMETRY ) )
			{	
				sprintf( buf2, "DefaultGeometry %dx%d%+d%+d", dr->default_geometry.width, dr->default_geometry.height, dr->default_geometry.x, dr->default_geometry.y );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_VIEWPORTX ) )
			{	
				sprintf( buf2, "ViewportX %d", dr->viewport_x );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_VIEWPORTY ) )
			{	
				sprintf( buf2, "ViewportY %d", dr->viewport_y );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_GRAVITY ) )
			{	
				sprintf( buf2, "OverrideGravity %s", Gravity2text[dr->gravity] );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_LAYER ) )
			{	
				sprintf( buf2, "Layer %d", dr->layer );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_FRAME ) )
			{	
				sprintf( buf2, "Frame \"%s\"", dr->frame_name );
				APPEND_DBSTYLE_TEXT(buf2);
			}
			if( get_flags( dr->set_data_flags, STYLE_WINDOWBOX ) )
			{	
				sprintf( buf2, "WindowBox \"%s\"", dr->windowbox_name );
				APPEND_DBSTYLE_TEXT(buf2);
			}
#endif		
			add_property("Style:", buf, AS_Text_ASCII, True);
		}	 
	}	 
	{
		ASDesktopEntry *de = fetch_desktop_entry( CombinedCategories, names[2]);
		if( de == NULL ) 
			de = fetch_desktop_entry( CombinedCategories, names[3]);				  
		if( de ) 
		{	
			char *categories = make_desktop_entry_categories( de );
			add_property("Categories:", categories?categories:"<none>", AS_Text_ASCII, False);
			destroy_string( &categories ) ;
			add_property(".desktop Entry Name:", de->Name, AS_Text_ASCII, False);
			add_property(".desktop Entry Comment:", de->Comment, AS_Text_ASCII, True);
			add_property(".desktop Entry Icon:", de->Icon, AS_Text_ASCII, True);
		}
	}
}