diff options
author | Matti Bickel <mabi@gentoo.org> | 2007-06-09 14:58:40 +0000 |
---|---|---|
committer | Matti Bickel <mabi@gentoo.org> | 2007-06-09 14:58:40 +0000 |
commit | 5865a3789dd602b188d26086df517b7eb216378e (patch) | |
tree | 7344bdc49e821982bc22f12b979af011758a4096 | |
parent | initial import from gentoo-x86 (diff) | |
download | mabi-5865a3789dd602b188d26086df517b7eb216378e.tar.gz mabi-5865a3789dd602b188d26086df517b7eb216378e.tar.bz2 mabi-5865a3789dd602b188d26086df517b7eb216378e.zip |
version bump
svn path=/; revision=2
-rw-r--r-- | ion3/ChangeLog | 11 | ||||
-rw-r--r-- | ion3/files/20070608/201_all_fix-paths.patch | 76 | ||||
-rw-r--r-- | ion3/files/20070608/202_all_fix-menus.patch | 13 | ||||
-rw-r--r-- | ion3/files/20070608/205_all_ion-lock.patch | 22 | ||||
-rw-r--r-- | ion3/files/20070608/208_all_as-needed.patch | 12 | ||||
-rw-r--r-- | ion3/files/xft-ion3-20070608.patch | 669 | ||||
-rw-r--r-- | ion3/ion3-20070608.ebuild | 196 |
7 files changed, 999 insertions, 0 deletions
diff --git a/ion3/ChangeLog b/ion3/ChangeLog index 211350b..006260f 100644 --- a/ion3/ChangeLog +++ b/ion3/ChangeLog @@ -2,6 +2,17 @@ # Copyright 2000-2007 Gentoo Foundation; Distributed under the GPL v2 # $Header: /var/cvsroot/gentoo-x86/x11-wm/ion3/ChangeLog,v 1.55 2007/06/05 13:29:53 mabi Exp $ +*ion3-20070608 (9 June 2007) + + 09 June 2007; Matti Bickel <mabi@gentoo.org> + +files/20070608/201_all_fix-paths.patch, + +files/20070608/202_all_fix-menus.patch, + +files/20070608/205_all_ion-lock.patch, + +files/20070608/208_all_as-needed.patch, +ion3-20070608.ebuild: + version bump. Please contact me in personal or assign bugs directly to + mabi@gentoo.org, so we reduce the load on gentoo infrastructure. + This release contains numerous bugfixes, so you all want it. + 05 Jun 2007; Matti Bickel <mabi@gentoo.org> ion3-20060326.ebuild, ion3-20061223.ebuild, ion3-20070318-r2.ebuild: Change all ion-truetype USE to ion3-voidupstreamsupport-truetype, thanks to diff --git a/ion3/files/20070608/201_all_fix-paths.patch b/ion3/files/20070608/201_all_fix-paths.patch new file mode 100644 index 0000000..a9cb080 --- /dev/null +++ b/ion3/files/20070608/201_all_fix-paths.patch @@ -0,0 +1,76 @@ +diff -uNr ion-3rc-20070608.orig/system.mk ion-3rc-20070608/system.mk +--- ion-3rc-20070608.orig/system.mk 2007-06-08 20:42:05.000000000 +0200 ++++ ion-3rc-20070608/system.mk 2007-06-08 20:47:39.000000000 +0200 +@@ -7,7 +7,7 @@ + ## Installation paths + ## + +-PREFIX=/usr/local ++PREFIX=/usr + + # Unless you are creating a package conforming to some OS's standards, you + # probably do not want to modify the following directories: +@@ -15,7 +15,7 @@ + # Main binaries + BINDIR=$(PREFIX)/bin + # Configuration .lua files +-ETCDIR=$(PREFIX)/etc/ion3 ++ETCDIR=/etc/X11/ion3 + # Some .lua files and ion-* shell scripts + SHAREDIR=$(PREFIX)/share/ion3 + # Manual pages +@@ -56,18 +56,18 @@ + + # If you have installed Lua 5.1 from the official tarball without changing + # paths, this should do it. +-LUA_DIR=/usr/local +-LUA_LIBS = -L$(LUA_DIR)/lib -llua +-LUA_INCLUDES = -I$(LUA_DIR)/include +-LUA=$(LUA_DIR)/bin/lua +-LUAC=$(LUA_DIR)/bin/luac ++#LUA_DIR=/usr/local ++#LUA_LIBS = -L$(LUA_DIR)/lib -llua ++#LUA_INCLUDES = -I$(LUA_DIR)/include ++#LUA=$(LUA_DIR)/bin/lua ++#LUAC=$(LUA_DIR)/bin/luac + + # If you are using the Debian packages, the following settings should be + # what you want. +-#LUA_LIBS=`pkg-config --libs lua5.1` +-#LUA_INCLUDES=`pkg-config --cflags lua5.1` +-#LUA=/usr/bin/lua5.1 +-#LUAC=/usr/bin/luac5.1 ++LUA_LIBS=`pkg-config --libs lua` ++LUA_INCLUDES=`pkg-config --cflags lua` ++LUA=/usr/bin/lua ++LUAC=/usr/bin/luac + + + ## +@@ -104,7 +104,7 @@ + # asprintf and vasprintf in the c library. (gnu libc has.) + # If HAS_SYSTEM_ASPRINTF is not defined, an implementation + # in sprintf_2.2/ is used. +-#HAS_SYSTEM_ASPRINTF=1 ++HAS_SYSTEM_ASPRINTF=1 + + # If you're on an archaic system (such as relatively recent *BSD releases) + # without even dummy multibyte/widechar and localisation support, you may +@@ -143,14 +143,14 @@ + + #C89_SOURCE=-ansi + +-#POSIX_SOURCE=-D_POSIX_SOURCE ++POSIX_SOURCE=-D_POSIX_C_SOURCE=200112L + + # Most systems +-#XOPEN_SOURCE=-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED ++XOPEN_SOURCE=-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED + # SunOS, (Irix) + #XOPEN_SOURCE=-D__EXTENSIONS__ + +-#C99_SOURCE=-std=c99 -DCF_HAS_VA_COPY ++C99_SOURCE=-std=c99 -DCF_HAS_VA_COPY + + # The -DCF_HAS_VA_COPY option should allow for some optimisations, and + # in some cases simply defining diff --git a/ion3/files/20070608/202_all_fix-menus.patch b/ion3/files/20070608/202_all_fix-menus.patch new file mode 100644 index 0000000..c2d77c8 --- /dev/null +++ b/ion3/files/20070608/202_all_fix-menus.patch @@ -0,0 +1,13 @@ +diff -Naur ../work/ion-3ds-20061223/etc/cfg_ioncore.lua ion-3ds-20061223/etc/cfg_ioncore.lua +--- ../work/ion-3ds-20061223/etc/cfg_ioncore.lua 2006-12-23 17:59:43.000000000 +0300 ++++ ion-3ds-20061223/etc/cfg_ioncore.lua 2006-12-31 15:35:59.000000000 +0300 +@@ -331,7 +331,8 @@ + defmenu("mainmenu", { + menuentry("Run...", "mod_query.query_exec(_)"), + menuentry("Terminal", "ioncore.exec_on(_, XTERM or 'xterm')"), +- menuentry("Lock screen", "ioncore.exec_on(_, 'xlock')"), ++ menuentry("Lock screen", ++ "ioncore.exec_on(_, ioncore.lookup_script('ion-lock'))"), + menuentry("Help", "mod_query.query_man(_)"), + menuentry("About Ion", "mod_query.show_about_ion(_)"), + submenu("Styles", "stylemenu"), diff --git a/ion3/files/20070608/205_all_ion-lock.patch b/ion3/files/20070608/205_all_ion-lock.patch new file mode 100644 index 0000000..dda2016 --- /dev/null +++ b/ion3/files/20070608/205_all_ion-lock.patch @@ -0,0 +1,22 @@ +diff -Nur ion3-20050322.orig/utils/Makefile ion3-20050322/utils/Makefile +--- ion3-20050322.orig/utils/Makefile 2005-03-22 14:31:06.000000000 +0000 ++++ ion3-20050322/utils/Makefile 2005-03-22 16:29:37.197355881 +0000 +@@ -11,7 +11,7 @@ + SUBDIRS=ion-completefile + INSTALL_SUBDIRS=$(SUBDIRS) + +-SHELLSCRIPTS = ion-runinxterm ion-completeman ++SHELLSCRIPTS = ion-runinxterm ion-completeman ion-lock + + TARGETS = ion-completeman + +diff -Nur ion3-20050322.orig/utils/ion-lock ion3-20050322/utils/ion-lock +--- ion3-20050322.orig/utils/ion-lock 1970-01-01 00:00:00.000000000 +0000 ++++ ion3-20050322/utils/ion-lock 2005-03-22 16:29:19.550092305 +0000 +@@ -0,0 +1,6 @@ ++#!/bin/sh ++if xscreensaver-command -version >/dev/null 2>&1; then ++ exec xscreensaver-command -lock ++else ++ exec xlock ++fi diff --git a/ion3/files/20070608/208_all_as-needed.patch b/ion3/files/20070608/208_all_as-needed.patch new file mode 100644 index 0000000..662a078 --- /dev/null +++ b/ion3/files/20070608/208_all_as-needed.patch @@ -0,0 +1,12 @@ +diff -uNr ion-3ds-20070318.orig/de/Makefile ion-3ds-20070318/de/Makefile +--- ion-3ds-20070318.orig/de/Makefile 2007-03-18 21:31:37.000000000 +0100 ++++ ion-3ds-20070318/de/Makefile 2007-04-30 17:30:23.000000000 +0200 +@@ -17,6 +17,8 @@ + + MAKE_EXPORTS=de + ++LDFLAGS+=-lXext ++ + ###################################### + + include $(TOPDIR)/build/rules.mk diff --git a/ion3/files/xft-ion3-20070608.patch b/ion3/files/xft-ion3-20070608.patch new file mode 100644 index 0000000..0cff558 --- /dev/null +++ b/ion3/files/xft-ion3-20070608.patch @@ -0,0 +1,669 @@ +diff -Naur ../work/ion-3/de/brush.c ion-3ds-20070203/de/brush.c +--- ../work/ion-3/de/brush.c 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/brush.c 2007-02-21 13:11:57.000000000 +0300 +@@ -47,6 +47,9 @@ + + gr_stylespec_init(&brush->current_attr); + ++#ifdef XFT ++ brush->draw=NULL; ++#endif /* XFT */ + style->usecount++; + + if(!grbrush_init(&(brush->grbrush))){ +@@ -127,6 +130,10 @@ + { + destyle_unref(brush->d); + brush->d=NULL; ++#ifdef XFT ++ if(brush->draw!=NULL) ++ XftDrawDestroy(brush->draw); ++#endif /* XFT */ + gr_stylespec_unalloc(&brush->current_attr); + grbrush_deinit(&(brush->grbrush)); + } +@@ -138,6 +145,21 @@ + } + + ++#ifdef XFT ++XftDraw *debrush_get_draw(DEBrush *brush, Drawable d) ++{ ++ if(brush->draw==NULL) ++ brush->draw=XftDrawCreate(ioncore_g.dpy, d, ++ XftDEDefaultVisual(), ++ DefaultColormap(ioncore_g.dpy, ++ 0)); ++ else ++ XftDrawChange(brush->draw, d); ++ ++ return brush->draw; ++} ++#endif ++ + /*}}}*/ + + +diff -Naur ../work/ion-3/de/brush.h ion-3ds-20070203/de/brush.h +--- ../work/ion-3/de/brush.h 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/brush.h 2007-02-21 13:11:57.000000000 +0300 +@@ -17,6 +17,9 @@ + #include <ioncore/common.h> + #include <ioncore/gr.h> + #include <ioncore/rectangle.h> ++#ifdef XFT ++#include <X11/Xft/Xft.h> ++#endif /* XFT */ + + INTRCLASS(DEBrush); + +@@ -36,6 +39,9 @@ + DECLCLASS(DEBrush){ + GrBrush grbrush; + DEStyle *d; ++#ifdef XFT ++ XftDraw *draw; ++#endif + DEBrushExtrasFn *extras_fn; + int indicator_w; + Window win; +@@ -111,5 +117,8 @@ + extern void debrush_fill_area(DEBrush *brush, const WRectangle *geom); + extern void debrush_clear_area(DEBrush *brush, const WRectangle *geom); + ++#ifdef XFT ++XftDraw *debrush_get_draw(DEBrush *brush, Drawable d); ++#endif + + #endif /* ION_DE_BRUSH_H */ +diff -Naur ../work/ion-3/de/colour.c ion-3ds-20070203/de/colour.c +--- ../work/ion-3/de/colour.c 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/colour.c 2007-02-21 13:11:57.000000000 +0300 +@@ -15,9 +15,21 @@ + + bool de_alloc_colour(WRootWin *rootwin, DEColour *ret, const char *name) + { ++#ifndef XFT + XColor c; + bool ok=FALSE; ++#else /* XFT */ ++ if(name==NULL) ++ return FALSE; ++ return XftColorAllocName( ++ ioncore_g.dpy, ++ XftDEDefaultVisual(), ++ rootwin->default_cmap, ++ name, ++ ret); ++#endif /* XFT */ + ++#ifndef XFT + if(name==NULL) + return FALSE; + +@@ -28,11 +40,13 @@ + } + + return ok; ++#endif /* ! XFT */ + } + + + bool de_duplicate_colour(WRootWin *rootwin, DEColour in, DEColour *out) + { ++#ifndef XFT + XColor c; + c.pixel=in; + XQueryColor(ioncore_g.dpy, rootwin->default_cmap, &c); +@@ -41,11 +55,20 @@ + return TRUE; + } + return FALSE; ++#else /* XFT */ ++ return XftColorAllocName( ++ ioncore_g.dpy, ++ XftDEDefaultVisual(), ++ rootwin->default_cmap, ++ &(in.color), ++ out); ++#endif /* XFT */ + } + + + void de_free_colour_group(WRootWin *rootwin, DEColourGroup *cg) + { ++#ifndef XFT + DEColour pixels[5]; + + pixels[0]=cg->bg; +@@ -57,15 +80,26 @@ + XFreeColors(ioncore_g.dpy, rootwin->default_cmap, pixels, 5, 0); + + gr_stylespec_unalloc(&cg->spec); ++#else /* XFT */ ++ de_free_colour(rootwin, cg->bg); ++ de_free_colour(rootwin, cg->fg); ++ de_free_colour(rootwin, cg->hl); ++ de_free_colour(rootwin, cg->sh); ++ de_free_colour(rootwin, cg->pad); ++#endif /* XFT */ + } + + + void de_free_colour(WRootWin *rootwin, DEColour col) + { ++#ifndef XFT + DEColour pixels[1]; + + pixels[0]=col; + + XFreeColors(ioncore_g.dpy, rootwin->default_cmap, pixels, 1, 0); ++#else /* XFT */ ++ XftColorFree(ioncore_g.dpy, XftDEDefaultVisual(), rootwin->default_cmap, &col); ++#endif /* XFT */ + } + +diff -Naur ../work/ion-3/de/colour.h ion-3ds-20070203/de/colour.h +--- ../work/ion-3/de/colour.h 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/colour.h 2007-02-21 13:11:57.000000000 +0300 +@@ -15,12 +15,19 @@ + #include <ioncore/common.h> + #include <ioncore/global.h> + #include <ioncore/rootwin.h> ++#ifdef XFT ++#include <X11/Xft/Xft.h> ++#endif /* XFT */ + + + INTRSTRUCT(DEColourGroup); + + ++#ifndef XFT + typedef unsigned long DEColour; ++#else /* XFT */ ++typedef XftColor DEColour; ++#endif /* XFT */ + + + DECLSTRUCT(DEColourGroup){ +@@ -37,5 +44,6 @@ + bool de_duplicate_colour(WRootWin *rootwin, DEColour in, DEColour *out); + void de_free_colour_group(WRootWin *rootwin, DEColourGroup *cg); + void de_free_colour(WRootWin *rootwin, DEColour col); ++#define XftDEDefaultVisual() DefaultVisual(ioncore_g.dpy, 0) + + #endif /* ION_DE_COLOUR_H */ +diff -Naur ../work/ion-3/de/draw.c ion-3ds-20070203/de/draw.c +--- ../work/ion-3/de/draw.c 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/draw.c 2007-02-21 13:11:57.000000000 +0300 +@@ -22,6 +22,14 @@ + #include <X11/extensions/shape.h> + + ++#ifndef XFT ++#define PIXEL(x) x ++#else /* XFT */ ++#define PIXEL(x) x.pixel ++#endif /* XFT */ ++ ++ ++ + /*{{{ Colour group lookup */ + + +@@ -86,8 +94,7 @@ + w--; + h--; + +- XSetForeground(ioncore_g.dpy, gc, tlc); +- ++ XSetForeground(ioncore_g.dpy, gc, PIXEL(tlc)); + + a=(br!=0); + b=0; +@@ -104,9 +111,8 @@ + + XDrawLines(ioncore_g.dpy, win, gc, points, 3, CoordModeOrigin); + } +- + +- XSetForeground(ioncore_g.dpy, gc, brc); ++ XSetForeground(ioncore_g.dpy, gc, PIXEL(brc)); + + a=(tl!=0); + b=0; +@@ -143,23 +143,23 @@ + GrBorderLine line) + { + if(line==GR_BORDERLINE_LEFT && geom->h>0 && tl>0){ +- XSetForeground(ioncore_g.dpy, gc, tlc); +- XSetBackground(ioncore_g.dpy, gc, tlc); ++ XSetForeground(ioncore_g.dpy, gc, PIXEL(tlc)); ++ XSetBackground(ioncore_g.dpy, gc, PIXEL(tlc)); + XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y, tl, geom->h); + geom->x+=tl; + }else if(line==GR_BORDERLINE_TOP && geom->w>0 && tl>0){ +- XSetForeground(ioncore_g.dpy, gc, tlc); +- XSetBackground(ioncore_g.dpy, gc, tlc); ++ XSetForeground(ioncore_g.dpy, gc, PIXEL(tlc)); ++ XSetBackground(ioncore_g.dpy, gc, PIXEL(tlc)); + XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y, geom->w, tl); + geom->y+=tl; + }else if(line==GR_BORDERLINE_RIGHT && geom->h>0 && br>0){ +- XSetForeground(ioncore_g.dpy, gc, brc); +- XSetBackground(ioncore_g.dpy, gc, brc); ++ XSetForeground(ioncore_g.dpy, gc, PIXEL(brc)); ++ XSetBackground(ioncore_g.dpy, gc, PIXEL(brc)); + XFillRectangle(ioncore_g.dpy, win, gc, geom->x+geom->w-br, geom->y, br, geom->h); + geom->w-=br; + }else if(line==GR_BORDERLINE_BOTTOM && geom->w>0 && br>0){ +- XSetForeground(ioncore_g.dpy, gc, brc); +- XSetBackground(ioncore_g.dpy, gc, brc); ++ XSetForeground(ioncore_g.dpy, gc, PIXEL(brc)); ++ XSetBackground(ioncore_g.dpy, gc, PIXEL(brc)); + XFillRectangle(ioncore_g.dpy, win, gc, geom->x, geom->y+geom->h-br, geom->w, br); + geom->h-=br; + } +@@ -293,7 +299,7 @@ + } + + if(ISSET(a2, GR_ATTR(tagged)) || ISSET(a1, GR_ATTR(tagged))){ +- XSetForeground(ioncore_g.dpy, d->copy_gc, cg->fg); ++ XSetForeground(ioncore_g.dpy, d->copy_gc, PIXEL(cg->fg)); + + copy_masked(brush, d->tag_pixmap, brush->win, 0, 0, + d->tag_pixmap_w, d->tag_pixmap_h, +@@ -348,7 +354,7 @@ + GC gc=brush->d->normal_gc; + + if(TRUE/*needfill*/){ +- XSetForeground(ioncore_g.dpy, gc, cg->bg); ++ XSetForeground(ioncore_g.dpy, gc, PIXEL(cg->bg)); + XFillRectangle(ioncore_g.dpy, brush->win, gc, geom->x, geom->y, + geom->w, geom->h); + } +@@ -513,7 +519,7 @@ + attr.background_pixmap=ParentRelative; + }else{ + attrflags=CWBackPixel; +- attr.background_pixel=brush->d->cgrp.bg; ++ attr.background_pixel=brush->d->PIXEL(cgrp.bg); + } + + XChangeWindowAttributes(ioncore_g.dpy, brush->win, attrflags, &attr); +@@ -529,7 +535,7 @@ + if(cg==NULL) + return; + +- XSetForeground(ioncore_g.dpy, gc, cg->bg); ++ XSetForeground(ioncore_g.dpy, gc, PIXEL(cg->bg)); + XFillRectangle(ioncore_g.dpy, brush->win, gc, + geom->x, geom->y, geom->w, geom->h); + } +diff -Naur ../work/ion-3/de/font.c ion-3ds-20070203/de/font.c +--- ../work/ion-3/de/font.c 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/font.c 2007-02-21 13:11:57.000000000 +0300 +@@ -14,7 +14,9 @@ + #include <libtu/objp.h> + #include <ioncore/common.h> + #include "font.h" ++#ifndef XFT + #include "fontset.h" ++#endif /* ! XFT */ + #include "brush.h" + + +@@ -26,6 +28,9 @@ + + DEFont *de_load_font(const char *fontname) + { ++#ifdef XFT ++ XftFont *font; ++#endif + DEFont *fnt; + XFontSet fontset=NULL; + XFontStruct *fontstruct=NULL; +@@ -40,6 +45,7 @@ + } + } + ++#ifndef XFT + if(ioncore_g.use_mb){ + fontset=de_create_font_set(fontname); + if(fontset!=NULL){ +@@ -66,13 +72,34 @@ + return NULL; + } + ++#else /* XFT */ ++ if(strncmp(fontname, "xft:", 4)==0){ ++ font=XftFontOpenName(ioncore_g.dpy, DefaultScreen(ioncore_g.dpy), ++ fontname+4); ++ }else{ ++ font=XftFontOpenXlfd(ioncore_g.dpy, DefaultScreen(ioncore_g.dpy), fontname); ++ } ++ ++ if(font==NULL){ ++ if(strcmp(fontname, CF_FALLBACK_FONT_NAME)!=0){ ++ warn(TR("Could not load font \"%s\", trying \"%s\""), ++ fontname, CF_FALLBACK_FONT_NAME); ++ return de_load_font(CF_FALLBACK_FONT_NAME); ++ } ++ return NULL; ++ } ++#endif /* XFT */ + fnt=ALLOC(DEFont); + + if(fnt==NULL) + return NULL; + ++#ifndef XFT + fnt->fontset=fontset; + fnt->fontstruct=fontstruct; ++#else ++ fnt->font=font; ++#endif + fnt->pattern=scopy(fontname); + fnt->next=NULL; + fnt->prev=NULL; +@@ -92,11 +119,13 @@ + style->font=font; + font->refcount++; + ++#ifndef XFT + if(style->font->fontstruct!=NULL){ + XSetFont(ioncore_g.dpy, style->normal_gc, + style->font->fontstruct->fid); + } + ++#endif /* ! XFT */ + return TRUE; + } + +@@ -111,11 +140,13 @@ + if(style->font==NULL) + return FALSE; + ++#ifndef XFT + if(style->font->fontstruct!=NULL){ + XSetFont(ioncore_g.dpy, style->normal_gc, + style->font->fontstruct->fid); + } + ++#endif /* ! XFT */ + return TRUE; + } + +@@ -125,10 +156,15 @@ + if(--font->refcount!=0) + return; + ++#ifndef XFT + if(font->fontset!=NULL) + XFreeFontSet(ioncore_g.dpy, font->fontset); + if(font->fontstruct!=NULL) + XFreeFont(ioncore_g.dpy, font->fontstruct); ++#else /* XFT */ ++ if(font->font!=NULL) ++ XftFontClose(ioncore_g.dpy, font->font); ++#endif /* XFT */ + if(font->pattern!=NULL) + free(font->pattern); + +@@ -156,6 +192,7 @@ + + void defont_get_font_extents(DEFont *font, GrFontExtents *fnte) + { ++#ifndef XFT + if(font->fontset!=NULL){ + XFontSetExtents *ext=XExtentsOfFontSet(font->fontset); + if(ext==NULL) +@@ -171,7 +208,14 @@ + fnte->baseline=fnt->ascent; + return; + } +- ++#else /* XFT */ ++ if(font->font!=NULL){ ++ fnte->max_height=font->font->ascent+font->font->descent; ++ fnte->max_width=font->font->max_advance_width; ++ fnte->baseline=font->font->ascent; ++ return; ++ } ++#endif /* XFT */ + fail: + DE_RESET_FONT_EXTENTS(fnte); + } +@@ -188,20 +232,35 @@ + + uint defont_get_text_width(DEFont *font, const char *text, uint len) + { ++#ifndef XFT + if(font->fontset!=NULL){ + XRectangle lext; + #ifdef CF_DE_USE_XUTF8 +- if(ioncore_g.enc_utf8) +- Xutf8TextExtents(font->fontset, text, len, NULL, &lext); +- else ++ if(ioncore_g.enc_utf8) ++ Xutf8TextExtents(font->fontset, text, len, NULL, &lext); ++ else + #endif +- XmbTextExtents(font->fontset, text, len, NULL, &lext); +- return lext.width; ++ XmbTextExtents(font->fontset, text, len, NULL, &lext); ++ return lext.width; + }else if(font->fontstruct!=NULL){ + return XTextWidth(font->fontstruct, text, len); + }else{ + return 0; + } ++#else /* XFT */ ++ if(font->font!=NULL){ ++ XGlyphInfo extents; ++ if(ioncore_g.enc_utf8) ++ XftTextExtentsUtf8(ioncore_g.dpy, font->font, (XftChar8 *)text, len, ++ &extents); ++ else ++ XftTextExtents8(ioncore_g.dpy, font->font, (XftChar8 *)text, len, ++ &extents); ++ return extents.xOff; ++ }else{ ++ return 0; ++ } ++#endif /* XFT */ + } + + +@@ -211,6 +270,7 @@ + /*{{{ String drawing */ + + ++#ifndef XFT + void debrush_do_draw_string_default(DEBrush *brush, int x, int y, + const char *str, int len, bool needfill, + DEColourGroup *colours) +@@ -256,6 +316,41 @@ + } + } + ++#else /* XFT */ ++void debrush_do_draw_string_default(DEBrush *brush, ++ int x, int y, const char *str, ++ int len, bool needfill, ++ DEColourGroup *colours) ++{ ++ Window win = brush->win; ++ GC gc=brush->d->normal_gc; ++ XftDraw *draw; ++ XftFont *font; ++ ++ if(brush->d->font==NULL) ++ return; ++ ++ font=brush->d->font->font; ++ draw=debrush_get_draw(brush, win); ++ ++ if(needfill){ ++ XGlyphInfo extents; ++ if(ioncore_g.enc_utf8) ++ XftTextExtentsUtf8(ioncore_g.dpy, font, (XftChar8 *)str, len, ++ &extents); ++ else ++ XftTextExtents8(ioncore_g.dpy, font, (XftChar8 *)str, len, &extents); ++ XftDrawRect(draw, &(colours->bg), x-extents.x, y-extents.y, ++ extents.width+10, extents.height); ++ } ++ ++ if(ioncore_g.enc_utf8) ++ XftDrawStringUtf8(draw, &(colours->fg), font, x, y, (XftChar8 *)str, ++ len); ++ else ++ XftDrawString8(draw, &(colours->fg), font, x, y, (XftChar8 *)str, len); ++} ++#endif /* XFT */ + + void debrush_do_draw_string(DEBrush *brush, int x, int y, + const char *str, int len, bool needfill, +diff -Naur ../work/ion-3/de/font.h ion-3ds-20070203/de/font.h +--- ../work/ion-3/de/font.h 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/font.h 2007-02-21 13:11:57.000000000 +0300 +@@ -14,6 +14,9 @@ + + #include <ioncore/common.h> + #include <ioncore/gr.h> ++#ifdef XFT ++#include <X11/Xft/Xft.h> ++#endif /* XFT */ + + INTRSTRUCT(DEFont); + +@@ -29,6 +32,9 @@ + int refcount; + XFontSet fontset; + XFontStruct *fontstruct; ++#ifdef XFT /* XFT */ ++ XftFont *font; ++#endif /* XFT */ + DEFont *next, *prev; + }; + +diff -Naur ../work/ion-3/de/init.c ion-3ds-20070203/de/init.c +--- ../work/ion-3/de/init.c 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/init.c 2007-02-21 13:11:57.000000000 +0300 +@@ -165,17 +165,26 @@ + { + bool bgset; + DEColour padinh; +- ++ DEColour black, white; ++ ++#ifdef XFT ++ de_alloc_colour(rootwin, &black, "black"); ++ de_alloc_colour(rootwin, &white, "white"); ++#else ++ black=DE_BLACK(rootwin); ++ white=DE_WHITE(rootwin); ++#endif ++ + de_get_colour(rootwin, &(cg->hl), tab, "highlight_colour", +- (based_on ? based_on->cgrp.hl : DE_WHITE(rootwin))); ++ (based_on ? based_on->cgrp.hl : white)); + de_get_colour(rootwin, &(cg->sh), tab, "shadow_colour", +- (based_on ? based_on->cgrp.sh : DE_WHITE(rootwin))); ++ (based_on ? based_on->cgrp.sh : white)); + de_get_colour(rootwin, &(cg->fg), tab, "foreground_colour", +- (based_on ? based_on->cgrp.fg : DE_WHITE(rootwin))); ++ (based_on ? based_on->cgrp.fg : white)); + bgset=de_get_colour(rootwin, &(cg->bg), tab, "background_colour", +- (based_on ? based_on->cgrp.bg : DE_BLACK(rootwin))); ++ (based_on ? based_on->cgrp.bg : black)); + +- padinh=(based_on ? based_on->cgrp.pad : DE_WHITE(rootwin)); ++ padinh=(based_on ? based_on->cgrp.pad : white); + + de_get_colour_(rootwin, &(cg->pad), tab, "padding_colour", + (bgset ? cg->bg : padinh), padinh); +diff -Naur ../work/ion-3/de/style.c ion-3ds-20070203/de/style.c +--- ../work/ion-3/de/style.c 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/style.c 2007-02-21 13:11:57.000000000 +0300 +@@ -74,10 +74,17 @@ + /*gcv.function=GXclear;*/ + gcv.stipple=stipple_pixmap; + gcvmask=GCFillStyle|GCStipple/*|GCFunction*/; ++#ifndef XFT + if(style->font!=NULL && style->font->fontstruct!=NULL){ + gcv.font=style->font->fontstruct->fid; + gcvmask|=GCFont; + } ++#else /* XFT */ ++// if(style->font!=NULL){ ++// gcv.font=style->font; ++// gcvmask|=GCFont; ++// } ++#endif /* XFT */ + + style->stipple_gc=XCreateGC(dpy, root, gcvmask, &gcv); + XCopyGC(dpy, style->normal_gc, +@@ -205,6 +212,14 @@ + + bool destyle_init(DEStyle *style, WRootWin *rootwin, const char *name) + { ++ DEColour black, white; ++#ifdef XFT ++ de_alloc_colour(rootwin, &black, "black"); ++ de_alloc_colour(rootwin, &white, "white"); ++#else ++ black=DE_BLACK(rootwin); ++ white=DE_WHITE(rootwin); ++#endif /* XFT */ + if(!gr_stylespec_load(&style->spec, name)) + return FALSE; + +@@ -226,11 +241,11 @@ + style->textalign=DEALIGN_CENTER; + + style->cgrp_alloced=FALSE; +- style->cgrp.bg=DE_BLACK(rootwin); +- style->cgrp.pad=DE_BLACK(rootwin); +- style->cgrp.fg=DE_WHITE(rootwin); +- style->cgrp.hl=DE_WHITE(rootwin); +- style->cgrp.sh=DE_WHITE(rootwin); ++ style->cgrp.bg=black; ++ style->cgrp.pad=black; ++ style->cgrp.fg=white; ++ style->cgrp.hl=white; ++ style->cgrp.sh=white; + gr_stylespec_init(&style->cgrp.spec); + + style->font=NULL; +diff -Naur ../work/ion-3/de/style.h ion-3ds-20070203/de/style.h +--- ../work/ion-3/de/style.h 2007-02-03 17:50:52.000000000 +0300 ++++ ion-3ds-20070203/de/style.h 2007-02-21 13:11:57.000000000 +0300 +@@ -76,6 +76,7 @@ + Pixmap tag_pixmap; + int tag_pixmap_w; + int tag_pixmap_h; ++ int xft_style; + + DEStyle *next, *prev; + }; +--- ../work/ion-3/system.mk 2007-05-10 22:45:16.000000000 +0400 ++++ ion-3ds-20070203/system.mk 2007-05-10 22:45:07.000000000 +0400 +@@ -115,6 +115,16 @@ + #EXTRA_LIBS += -lintl + #EXTRA_INCLUDES += + ++## ++## Xft support ++## ++ ++#USE_XFT=1 ++ ++ifeq ($(USE_XFT),1) ++EXTRA_INCLUDES += `xft-config --cflags` -DXFT ++EXTRA_LIBS += `xft-config --libs` ++endif + + ## + ## C compiler diff --git a/ion3/ion3-20070608.ebuild b/ion3/ion3-20070608.ebuild new file mode 100644 index 0000000..0c2dd04 --- /dev/null +++ b/ion3/ion3-20070608.ebuild @@ -0,0 +1,196 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-wm/ion3/ion3-20070506-r1.ebuild,v 1.3 2007/06/03 15:08:02 mabi Exp $ + +inherit eutils flag-o-matic + +MY_PV=${PV/_p/-} +MY_PN=ion-3rc-${MY_PV} + +SCRIPTS_PV=20070608 +SCRIPTS_PN=ion3-scripts + +IONFLUX_PV=20070512 +IONFLUX_PN=ion3-mod-ionflux + +IONXRANDR_PV=20070410 +IONXRANDR_PN=ion3-mod-xrandr + +IONDOC_PV=20070506 +IONDOC_PN=ion-doc-3rc + +DESCRIPTION="A tiling tabbed window manager designed with keyboard users in mind" +HOMEPAGE="http://www.iki.fi/tuomov/ion/" +SRC_URI="http://iki.fi/tuomov/dl/${MY_PN}.tar.gz + mirror://gentoo/${SCRIPTS_PN}-${SCRIPTS_PV}.tar.bz2 + mirror://gentoo/${IONXRANDR_PN}-${IONXRANDR_PV}.tar.bz2 + mirror://gentoo/${IONFLUX_PN}-${IONFLUX_PV}.tar.bz2 + doc? ( http://iki.fi/tuomov/dl/${IONDOC_PN}-${IONDOC_PV}.tar.gz )" + +LICENSE="LGPL-2.1+tuomov" +SLOT="0" +KEYWORDS="~amd64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86" +IUSE="unicode ion3-voidupstreamsupport-truetype doc" +DEPEND=" + || ( + ( + x11-libs/libICE + x11-libs/libXext + x11-libs/libSM + ion3-voidupstreamsupport-truetype? ( x11-libs/libXft ) + ) + virtual/x11 + ) + dev-util/pkgconfig + app-misc/run-mailcap + >=dev-lang/lua-5.1.1 + doc? ( dev-tex/latex2html + virtual/tetex )" + +S=${WORKDIR}/${MY_PN} + +SCRIPTS_DIRS="keybindings scripts statusbar statusd styles" +MODULES="${IONXRANDR_PN}-${IONXRANDR_PV} ${IONFLUX_PN}-${IONFLUX_PV}" + +src_unpack() { + unpack ${A} + + cd ${S} + EPATCH_SOURCE="${FILESDIR}/${PV}" EPATCH_SUFFIX="patch" epatch + if (use ion3-voidupstreamsupport-truetype); then + epatch ${FILESDIR}/xft-ion3-${PV}.patch + + sed -i -e "s:#USE_XFT=1:USE_XFT=1:" ${S}/system.mk + sed -i -e 's:\(#define ION_VERSION "3rc-20070608\):\1-voidupstreamsupport-xft-enabled:' ${S}/version.h + fi; + + # Allow user CFLAGS + sed -i "s:\(CFLAGS=\)-g -Os\(.*\):\1\2 ${CFLAGS}:" system.mk + + # Allow user LDFLAGS + sed -i "s:\(LDFLAGS=\)-g -Os\(.*\):\1\2 ${LDFLAGS}:" system.mk + + # XOPEN_SOURCE does give _POSIX_MONOTONIC_CLOCK, but not CLOCK_MONOTONIC, + # thus compile will fail + sed -e '/CFLAGS +=.*XOPEN_SOURCE.*C99_SOURCE/s:$: $\(POSIX_SOURCE\):' \ + -i libmainloop/Makefile + + # Don't strip ionflux + sed -i "s:-s::" "../${IONFLUX_PN}-${IONFLUX_PV}/ionflux/Makefile" + + # Rewrite install directories to be prefixed by DESTDIR for sake of portage's sandbox + sed -i 's!\($(INSTALL\w*)\|rm -f\|ln -s\)\(.*\)\($(\w\+DIR)\)!\1\2$(DESTDIR)\3!g' Makefile */Makefile */*/Makefile build/rules.mk + + for i in ${MODULES} + do + cd ${WORKDIR}/${i} + # Rewrite install directories to be prefixed by DESTDIR for sake of portage's sandbox + sed -i Makefile */Makefile \ + -e 's!\($(INSTALL\w*)\|rm -f\|ln -s\)\(.*\)\($(\w\+DIR)\)!\1\2$(DESTDIR)\3!g' + + done + cd ${S} + + # Hey guys! Implicit rules apply to include statements also. Be more careful! + # Fix an implicit rule that will kill the installation by rewriting a .mk + # should configure be given just the right set of options. + sed -i 's!%: %.in!ion-completeman: %: %.in!g' utils/Makefile + + # Fix prestripping of files + sed -i mod_statusbar/ion-statusd/Makefile utils/ion-completefile/Makefile \ + -e 's: -s::' + + # FIX for modules + cd ${WORKDIR} + ln -s ${MY_PN} ion-3 +} + +src_compile() { + local myconf="" + + # xfree + if has_version '>=x11-base/xfree-4.3.0'; then + sed -i -e "s:DEFINES += -DCF_XFREE86_TEXTPROP_BUG_WORKAROUND:#DEFINES += -DCF_XFREE86_TEXTPROP_BUG_WORKAROUND:" ${S}/system.mk + fi + + # help out this arch as it can't handle certain shared library linkage + use hppa && sed -i -e "s:#PRELOAD_MODULES=1:PRELOAD_MODULES=1:" ${S}/system.mk + + # unicode support + use unicode && sed -i -e "s:#DEFINES += -DCF_DE_USE_XUTF8:DEFINES += -DCF_DE_USE_XUTF8:" ${S}/system.mk + + cd ${S} + make \ + LIBDIR=/usr/$(get_libdir) \ + DOCDIR=/usr/share/doc/${PF} || die + + for i in ${MODULES} + do + cd ${WORKDIR}/${i} + + make \ + LIBDIR=/usr/$(get_libdir) + done + + if ( use doc ) + then + export MT_FEATURES=varfonts + mkdir -p ${T}/var/cache/fonts + export VARTEXFONTS=${T}/var/cache/fonts + + cd ${WORKDIR}/${IONDOC_PN}-${IONDOC_PV} + make all + make all-pdf + fi +} + +src_install() { + + emake \ + DESTDIR=${D} \ + DOCDIR=/usr/share/doc/${PF} \ + install || die + + echo -e "#!/bin/sh\n/usr/bin/ion3" > ${T}/ion3 + echo -e "#!/bin/sh\n/usr/bin/pwm3" > ${T}/pwm3 + exeinto /etc/X11/Sessions + doexe ${T}/ion3 ${T}/pwm3 + + insinto /usr/share/xsessions + doins ${FILESDIR}/ion3.desktop ${FILESDIR}/pwm3.desktop + + cd ${WORKDIR}/${SCRIPTS_PN}-${SCRIPTS_PV} + insinto /usr/share/ion3 + find $SCRIPTS_DIRS -type f |\ + while read FILE + do + doins $PWD/$FILE + done + + for i in ${MODULES} + do + cd ${WORKDIR}/${i} + + emake \ + DESTDIR=${D} \ + install || die + + done + + if ( use doc ) + then + cd ${WORKDIR}/${IONDOC_PN}-${IONDOC_PV} + dodoc *.pdf + fi + + sed -i -e '/dopath("mod_sp")/a\dopath("mod_xrandr")' ${D}/etc/X11/ion3/cfg_defaults.lua +} + +pkg_postinst() { + elog "This version of ion3 contains no xinerama support (removed upstream)." + elog "Remember that USE='ion3-voidupstreamsupport-truetype' will render" + elog "upstream support for your installation of ion3 void." + elog "Thus, if you encouter a bug in ion-3, be sure to to reproduce it with a" + elog "vanilla build before reporting it upstream. You are welcome to report" + elog "any problem as a bug on http://bugs.gentoo.org." +} |