1
0
mirror of https://github.com/gryf/wmaker.git synced 2025-12-20 04:48:06 +01:00

updated translations and image files for WINGs, bug fixes in WINGs

font handling, bug fixes in wmaker and wraster
This commit is contained in:
kojima
1999-05-31 20:34:00 +00:00
parent 81d1ec430f
commit 7f36af4fdf
34 changed files with 3783 additions and 2987 deletions

View File

@@ -48,6 +48,10 @@ Changes since version 0.53.0:
- rewrote font code to use WINGs
- made autoraise only work for the active window
- fixed compilation problem with OpenWindows and other non-X11R6 systems..
- fixed crash bug when iconsize=24
- fixed portability prob with raise() in SunOS
- fixed icon placement bug (Markus Schoder <Markus.Schoder@online.de>)
Changes since version 0.52.0:
.............................

View File

@@ -32,9 +32,9 @@ If I18N support does not work for you, check these:
here:
ftp://ftp.linux.or.jp/pub/RPM/glibc
- if you'd like to display multibyte characters, wmaker have to
be compiled with multibyte character support. Add this option
to the configure, "--enable-kanji".
- if you'd like to display multibyte characters, set the
MultiByteText option to YES in ~/GNUstep/Defaults/WindowMaker
and ~/GNUstep/Defaults/WMGLOBAL
- the fonts you're using support your locale. if your font
setting on $HOME/GNUstep/Defaults/WindowMaker is like..

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -74,23 +74,35 @@ WMCreateNormalFont(WMScreen *scrPtr, char *fontName)
{
WMFont *font;
Display *display = scrPtr->display;
char *fname, *ptr;
font = WMHashGet(scrPtr->fontCache, fontName);
if ((ptr = strchr(fontName, ','))) {
fname = wmalloc(ptr - fontName + 1);
strncpy(fname, fontName, ptr - fontName);
fname[ptr - fontName] = 0;
} else {
fname = wstrdup(fontName);
}
font = WMHashGet(scrPtr->fontCache, fname);
if (font) {
WMRetainFont(font);
free(fname);
return font;
}
font = malloc(sizeof(WMFont));
if (!font)
if (!font) {
free(fname);
return NULL;
}
memset(font, 0, sizeof(WMFont));
font->notFontSet = 1;
font->screen = scrPtr;
font->font.normal = XLoadQueryFont(display, fontName);
font->font.normal = XLoadQueryFont(display, fname);
if (!font->font.normal) {
free(font);
return NULL;
@@ -101,7 +113,7 @@ WMCreateNormalFont(WMScreen *scrPtr, char *fontName)
font->refCount = 1;
font->name = wstrdup(fontName);
font->name = fname;
assert(WMHashInsert(scrPtr->fontCache, font->name, font)==NULL);
@@ -113,7 +125,7 @@ WMCreateNormalFont(WMScreen *scrPtr, char *fontName)
WMFont*
WMCreateFont(WMScreen *scrPtr, char *fontName)
{
if (WINGsConfiguration.useMultiByte)
if (scrPtr->useMultiByte)
return WMCreateFontSet(scrPtr, fontName);
else
return WMCreateNormalFont(scrPtr, fontName);
@@ -172,13 +184,13 @@ WMSystemFontOfSize(WMScreen *scrPtr, int size)
fontSpec = makeFontSetOfSize(WINGsConfiguration.systemFont, size);
if (WINGsConfiguration.useMultiByte)
if (scrPtr->useMultiByte)
font = WMCreateFontSet(scrPtr, fontSpec);
else
font = WMCreateNormalFont(scrPtr, fontSpec);
if (!font) {
if (WINGsConfiguration.useMultiByte) {
if (scrPtr->useMultiByte) {
wwarning("could not load font set %s. Trying fixed.", fontSpec);
font = WMCreateFontSet(scrPtr, "fixed");
if (!font) {
@@ -208,13 +220,13 @@ WMBoldSystemFontOfSize(WMScreen *scrPtr, int size)
fontSpec = makeFontSetOfSize(WINGsConfiguration.boldSystemFont, size);
if (WINGsConfiguration.useMultiByte)
if (scrPtr->useMultiByte)
font = WMCreateFontSet(scrPtr, fontSpec);
else
font = WMCreateNormalFont(scrPtr, fontSpec);
if (!font) {
if (WINGsConfiguration.useMultiByte) {
if (scrPtr->useMultiByte) {
wwarning("could not load font set %s. Trying fixed.", fontSpec);
font = WMCreateFontSet(scrPtr, "fixed");
if (!font) {

View File

@@ -512,6 +512,8 @@ gradAddCallback(WMWidget *w, void *data)
updateGradButtons(panel);
sliderChangeCallback(panel->ghueS, panel);
WMSetButtonEnabled(panel->okB, WMGetListNumberOfRows(panel->gcolL) > 1);
}
@@ -561,6 +563,8 @@ gradDeleteCallback(WMWidget *w, void *data)
updateGradButtons(panel);
gradClickCallback(panel->gcolL, panel);
WMSetButtonEnabled(panel->okB, WMGetListNumberOfRows(panel->gcolL) > 1);
}
@@ -603,9 +607,14 @@ updateImage(TexturePanel *panel, char *path)
WMRunAlertPanel(scr, panel->win, _("Error"), message,
_("OK"), NULL, NULL);
if (!panel->image)
WMSetButtonEnabled(panel->okB, False);
return;
}
WMSetButtonEnabled(panel->okB, True);
if (panel->image)
RDestroyImage(panel->image);
panel->image = image;
@@ -733,13 +742,19 @@ changeTypeCallback(WMWidget *w, void *data)
switch (newType) {
case TYPE_SGRADIENT:
updateSGradButtons(panel);
WMSetButtonEnabled(panel->okB, True);
break;
case TYPE_GRADIENT:
updateGradButtons(panel);
WMSetButtonEnabled(panel->okB, WMGetListNumberOfRows(panel->gcolL)>1);
break;
case TYPE_TGRADIENT:
case TYPE_PIXMAP:
updateImage(panel, NULL);
WMSetButtonEnabled(panel->okB, panel->image!=NULL);
break;
default:
WMSetButtonEnabled(panel->okB, True);
break;
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
defsdatadir = $(pkgdatadir)/Backgrounds

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
defsdatadir = $(sysconfdir)/WindowMaker

View File

@@ -1,5 +1,6 @@
{
SystemFont = "-*-helvetica-medium-r-normal-*-%d-*-*-*-*-*-*-*";
BoldSystemFont = "-*-helvetica-bold-r-normal-*-%d-*-*-*-*-*-*-*";
MultiByteText = NO;
DoubleClickTime = 250;
}

View File

@@ -1,8 +1,8 @@
{
Logo.WMDock = {Icon = GNUstep3D.#extension#;};
Logo.WMPanel = {Icon = GNUstep3D.#extension#;};
Logo.WMDock = {Icon = GNUstepGlow.#extension#;};
Logo.WMPanel = {Icon = GNUstepGlow.#extension#;};
Logo.WMClip = {Icon = clip.#extension#;};
Dockit = {Icon = GNUstep3D.#extension#;};
Dockit = {Icon = GNUstepGlow.#extension#;};
WMSoundServer = {Icon = sound.#extension#;};
XTerm = {Icon = GNUterm.#extension#;};
NXTerm = {Icon = GNUterm.#extension#;};

View File

@@ -1,4 +1,5 @@
{
MultiByteText = NO;
SmoothWorkspaceBack = YES;
WindozeCycling = NO;
PopupSwitchMenu = NO;

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
defsdatadir = $(pkgdatadir)/IconSets

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
defsdatadir = $(pkgdatadir)/Icons

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
SUBDIRS = Backgrounds Defaults IconSets Icons Pixmaps Styles Themes

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
defsdatadir = $(pkgdatadir)/Pixmaps

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
prefsdatadir = $(pkgdatadir)/Styles

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
SUBDIRS =

View File

@@ -3,7 +3,7 @@
("Info Panel...", INFO_PANEL),
("Legal...", LEGAL_PANEL),
("Console di sistema", EXEC, "xconsole"),
("Carico del Sistema", SHEXEC, "xosview || xload"),
("Carico del Sistema", EXEC, "xosview || xload"),
("Lista dei Processi", EXEC, "xterm -e top"),
("Ricerca Manuali", EXEC, "xman")
),
@@ -13,7 +13,7 @@
("Workspace", WORKSPACE_MENU),
("Programmi",
("Grafica",
("Gimp", SHEXEC, "gimp >/dev/null"),
("Gimp", EXEC, "gimp >/dev/null"),
("XV", EXEC, "xv"),
("XPaint", EXEC, "xpaint"),
("XFig", EXEC, "xfig")
@@ -22,26 +22,26 @@
("OffiX Files", EXEC, "files"),
("LyX", EXEC, "lyx"),
("Netscape", EXEC, "netscape"),
("Ghostview", EXEC, "ghostview %a(Enter file to view)"),
("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Enter PDF to view)"),
("Ghostview", EXEC, "ghostview %a(Ghostview, Scrivi il file da visualizzare)"),
("Acrobat", EXEC, "/usr/local/Acrobat3/bin/acroread %a(Acroread, Scrivi il file da visualizzare)"),
("TkDesk", EXEC, "tkdesk")
),
("Editor",
("XFte", EXEC, "xfte"),
("XEmacs", SHEXEC, "xemacs || emacs"),
("XEmacs", EXEC, "xemacs || emacs"),
("XJed", EXEC, "xjed"),
("NEdit", EXEC, "nedit"),
("Xedit", EXEC, "xedit"),
("VI", EXEC, "xterm -e vi")
),
("Varie",
("Xmcd", SHEXEC, "xmcd 2> /dev/null"),
("Xmcd", EXEC, "xmcd 2> /dev/null"),
("Xplaycd", EXEC, "xplaycd"),
("Xmixer", EXEC, "xmixer")
),
("Utilità",
("Calcolatrice", EXEC, "xcalc"),
("Proprietà finestra", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"),
("Proprietà finestra", EXEC, "xprop | xmessage -center -title 'xprop' -file -"),
("Selezione Font", EXEC, "xfontsel"),
("Emulatore di terminale", EXEC, "xminicom"),
("Lente", EXEC, "xmag"),
@@ -51,10 +51,10 @@
("Clipboard", EXEC, "xclipboard")
),
("Selezione",
("Copia", SHEXEC, "echo '%s' | wxcopy"),
("Copia", EXEC, "echo '%s' | wxcopy"),
("Spedisci a...", EXEC, "xterm -name mail -T Pine -e pine %s"),
("Naviga", EXEC, "netscape %s"),
("Cerca nei Manuali", SHEXEC, "MANUAL_SEARCH(%s)")
("Cerca nei Manuali", EXEC, "MANUAL_SEARCH(%s)")
),
("Workspace",
("Nascondi gli altri", HIDE_OTHERS),
@@ -92,8 +92,8 @@
),
("Immagini", OPEN_MENU, "-noext /usr/X11R6/share/WindowMaker/Backgrounds ~/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t")
),
("Salva il tema", SHEXEC, "getstyle -t ~/GNUstep/Library/WindowMaker/Themes/\"%a(Nome Tema)\""),
("Salva il set icone", SHEXEC, "geticonset ~/GNUstep/Library/WindowMaker/IconSets/\"%a(Nome IconSet)\"")
("Salva il tema", EXEC, "getstyle -t ~/GNUstep/Library/WindowMaker/Themes/\"%a(Nome Tema)\""),
("Salva il set icone", EXEC, "geticonset ~/GNUstep/Library/WindowMaker/IconSets/\"%a(Nome IconSet)\"")
),
("Esci",
("Riavvia", RESTART),

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
EXTRA_DIST = README single_click.diff

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
man_MANS = geticonset.1x setstyle.1x wxpaste.1x getstyle.1x wdwrite.1x wmsetbg.1x wsetfont.1x seticons.1x wmaker.1x wxcopy.1x

View File

@@ -89,6 +89,7 @@ XGETTEXT = @XGETTEXT@
XLFLAGS = @XLFLAGS@
XLIBS = @XLIBS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBRARY_PATH = @X_LIBRARY_PATH@
wprefsdir = @wprefsdir@
nlsdir = $(NLSDIR)

View File

@@ -38,9 +38,9 @@ msgid ""
"Any unsaved changes will be lost.\n"
"Please confirm."
msgstr ""
" sarà chiuso forzatamente.\n"
" sara' chiuso forzatamente.\n"
"Tutte le modifiche non salvate saranno perse.\n"
"Confermare."
"Sei sicuro?"
#: ../src/appicon.c:575 ../src/dock.c:286 ../src/winmenu.c:124
msgid "Kill Application"
@@ -374,8 +374,7 @@ msgstr "Avvia"
msgid "Settings..."
msgstr "Proprietà..."
#: ../src/dock.c:1465 ../src/dock.c:1479 ../src/dock.c:1493
../src/dock.c:1503
#: ../src/dock.c:1465 ../src/dock.c:1479 ../src/dock.c:1493 ../src/dock.c:1503
#, c-format
msgid "bad value in docked icon state info %s"
msgstr "Valore errato nelle informazioni di stato dell'icona sul Dock %s"
@@ -411,7 +410,7 @@ msgstr "Non riesco ad aprire il file icona: %s"
#: ../src/dockedapp.c:295
msgid "Start when WindowMaker is started"
msgstr "Avvia con WindowMaker"
msgstr "Esecuzione automatica all'avvio"
#: ../src/dockedapp.c:302
msgid "Application path and arguments"
@@ -502,8 +501,7 @@ msgstr " -display host:dpy\tDisplay da usare"
#: ../src/main.c:259
msgid " --no-cpp \t\tdisable preprocessing of configuration files"
msgstr " --no-cpp \t\tDisabilita il preprocessing dei file di
configurazione"
msgstr " --no-cpp \t\tDisabilita il preprocessing dei file di configurazione"
#: ../src/main.c:261
msgid " --no-dock\t\tdo not open the application Dock"
@@ -670,8 +668,7 @@ msgstr "Non riesco ad inviare il messaggio al gestore dello sfondo"
#: ../src/pixmap.c:235
#, c-format
msgid "could not load mask bitmap file \"%s\". Won't use mask"
msgstr "Non riesco a caricare la maschera dal file bitmap \"%s\". Non la
uso"
msgstr "Non riesco a caricare la maschera dal file bitmap \"%s\". Non la uso"
#: ../src/proplist.c:180
msgid "unterminated string"
@@ -738,7 +735,7 @@ msgstr "Mancano i seguenti set di caratteri in %s:"
#: ../src/resources.c:76
#, c-format
msgid "The string \"%s\" will be used in place"
msgstr "Sarà usata la stringa \"%s\" in sostituzione"
msgstr "Sara' usata la stringa \"%s\" in sostituzione"
#: ../src/resources.c:78
msgid "of any characters from those sets."
@@ -770,7 +767,7 @@ msgstr "Uscita"
#: ../src/rootmenu.c:187
msgid "Exit window manager?"
msgstr "Esco dal window manager?"
msgstr "Esco da Window Maker?"
#: ../src/rootmenu.c:223
msgid "Close X session"
@@ -884,8 +881,7 @@ msgstr "%s: errore di sintassi nel menu file: manca 'END'"
#: ../src/rootmenu.c:1094 ../src/rootmenu.c:1193
msgid "could not make arguments for menu file preprocessor"
msgstr "Non riesco a generare i parametri per il preprocessor del file di
menu"
msgstr "Non riesco a generare i parametri per il preprocessor del file di menu"
#: ../src/rootmenu.c:1100 ../src/rootmenu.c:1200
#, c-format
@@ -936,14 +932,12 @@ msgstr "Esci..."
#: ../src/rootmenu.c:1537
#, c-format
msgid "could not find menu file \"%s\" referenced in WMRootMenu"
msgstr "Non riesco a trovare il file di menu \"%s\" menzionato in
WMRootMenu"
msgstr "Non riesco a trovare il file di menu \"%s\" menzionato in WMRootMenu"
#: ../src/rootmenu.c:1544
#, c-format
msgid "could not access menu \"%s\" referenced in WMRootMenu"
msgstr "Non riesco ad accedere al file di menu \"%s\" menzionato in
WMRootMenu"
msgstr "Non riesco ad accedere al file di menu \"%s\" menzionato in WMRootMenu"
#: ../src/rootmenu.c:1555
#, c-format
@@ -1075,10 +1069,8 @@ msgstr "Provo ad avviare un window manager alternativo..."
#: ../src/startup.c:745
#, c-format
msgid "icon size is configured to %i, but it's too small. Using 16,
instead\n"
msgstr "La dimensione delle icone è configurata a %i, è troppo piccola. Uso
16.\n"
msgid "icon size is configured to %i, but it's too small. Using 16, instead\n"
msgstr "La dimensione delle icone è configurata a %i, è troppo piccola. Uso 16.\n"
#: ../src/startup.c:789
msgid "it seems that there already is a window manager running"
@@ -1145,9 +1137,9 @@ msgid ""
"Any unsaved changes will be lost.\n"
"Please confirm."
msgstr ""
"Questo ucciderà l'applicazione.\n"
"Tutte le modifiche non slavate saranno perse.\n"
"Conferma."
"Questo uccidera' l'applicazione.\n"
"Tutte le modifiche non salvate saranno perse.\n"
"Sei sicuro?"
#: ../src/winmenu.c:252 ../src/winmenu.c:260
msgid "Set Shortcut"
@@ -1266,7 +1258,7 @@ msgid ""
"windows that have their WM_CLASS property set to the above selected\n"
"name, when saved."
msgstr ""
"La configurazione sarà applicata a tutte\n"
"La configurazione sara' applicata a tutte\n"
"le finestre che hanno la loro proprietà WM_CLASS\n"
"uguale al nome selzionato (se salvato)"

868
po/ko.po

File diff suppressed because it is too large Load Diff

View File

@@ -1727,7 +1727,7 @@ wArrangeIcons(WScreen *scr, Bool arrangeAll)
wwin = wwin->prev;
while (wwin) {
if (wwin->icon && wwin->flags.miniaturized &&/*!wwin->flags.hidden &&*/
if (wwin->icon && wwin->flags.miniaturized && !wwin->flags.hidden &&
(wwin->frame->workspace==scr->current_workspace ||
IS_OMNIPRESENT(wwin) || wPreferences.sticky_icons)) {

View File

@@ -2115,6 +2115,9 @@ getFont(WScreen *scr, WDefaultEntry *entry, proplist_t value, void *addr,
val = PLGetString(value);
font = WMCreateFont(scr->wmscreen, val);
if (!font)
font = WMCreateFont(scr->wmscreen, "fixed");
if (!font) {
wfatal(_("could not load any usable font!!!"));
exit(1);

View File

@@ -83,17 +83,14 @@ iconPosition(WCoreWindow *wcore, int sx1, int sy1, int sx2, int sy2,
(((WIcon*)parent)->owner->frame->workspace == workspace
|| IS_OMNIPRESENT(((WIcon*)parent)->owner)
|| wPreferences.sticky_icons)
&& ((WIcon*)parent)->mapped
&& (!((WIcon*)parent)->owner->flags.hidden
|| wcore->screen_ptr->flags.startup)) {
&& ((WIcon*)parent)->mapped) {
*retX = ((WIcon*)parent)->owner->icon_x;
*retY = ((WIcon*)parent)->owner->icon_y;
ok = 1;
} else if (wcore->descriptor.parent_type == WCLASS_WINDOW
&& (((WWindow*)parent)->flags.icon_moved
|| ((WWindow*)parent)->flags.hidden)
&& ((WWindow*)parent)->flags.icon_moved
&& (((WWindow*)parent)->frame->workspace == workspace
|| IS_OMNIPRESENT((WWindow*)parent)
|| wPreferences.sticky_icons)) {

View File

@@ -1,4 +1,4 @@
/* resources.c - manage X resources (fonts, colors etc)
/* resources.c - manage X resources (colors etc)
*
* Window Maker window manager
*

View File

@@ -302,7 +302,7 @@ handleSig(int sig)
if (already_crashed) {
wfatal(_("crashed while trying to do some post-crash cleanup. Aborting immediatelly."));
signal(sig, SIG_DFL);
raise(sig);
kill(getpid(), sig);
return;
}
already_crashed = 1;
@@ -328,7 +328,7 @@ handleSig(int sig)
if (crashAction == WMAbort) {
signal(sig, SIG_DFL);
raise(sig);
kill(getpid(), sig);
return;
}
@@ -351,7 +351,7 @@ handleSig(int sig)
#endif /* !NO_EMERGENCY_AUTORESTART */
signal(sig, SIG_DFL);
raise(sig);
kill(getpid(), sig);
return;
}

View File

@@ -120,6 +120,7 @@ wWorkspaceNew(WScreen *scr)
list[i] = scr->workspaces[i];
}
list[i] = wspace;
if (scr->workspaces)
free(scr->workspaces);
scr->workspaces = list;
@@ -517,11 +518,14 @@ wWorkspaceForceChange(WScreen *scr, int workspace)
if (!wPreferences.sticky_icons) {
XUnmapWindow(dpy, tmp->icon->core->window);
tmp->icon->mapped = 0;
} else {
}
#if 0
else {
tmp->icon->mapped = 1;
/* Why is this here? -Alfredo */
XMapWindow(dpy, tmp->icon->core->window);
}
#endif
}
/* update current workspace of omnipresent windows */
if (IS_OMNIPRESENT(tmp)) {

View File

@@ -232,6 +232,66 @@ ROperatePixels(RImage *image, int operation, RPoint *points, int npoints,
}
static Bool
clipLineInRectangle(int xmin, int ymin, int xmax, int ymax,
int *x1, int *y1, int *x2, int *y2)
{
#define TOP (1<<0)
#define BOT (1<<1)
#define LEF (1<<2)
#define RIG (1<<3)
#define CHECK_OUT(X,Y) (((Y) > ymax ? TOP : ((Y) < ymin ? BOT : 0))\
| ((X) > xmax ? RIG : ((X) < xmin ? LEF : 0)))
int ocode1, ocode2, ocode;
int accept = 0;
int x, y;
ocode1 = CHECK_OUT(*x1, *y1);
ocode2 = CHECK_OUT(*x2, *y2);
for(;;) {
if (!ocode1 && !ocode2) { /* completely inside */
accept = 1;
break;
} else if (ocode1 & ocode2) {
break;
}
if (ocode1)
ocode = ocode1;
else
ocode = ocode2;
if (ocode & TOP) {
x = *x1 + (*x2 - *x1) * (ymax - *y1) / (*y2 - *y1);
y = ymax;
} else if (ocode & BOT) {
x = *x1 + (*x2 - *x1) * (ymin - *y1) / (*y2 - *y1);
y = ymin;
} else if (ocode & RIG) {
y = *y1 + (*y2 - *y1) * (xmax - *x1) / (*x2 - *x1);
x = xmax;
} else if (ocode & LEF) {
y = *y1 + (*y2 - *y1) * (xmax - *x1) / (*x2 - *x1);
x = xmin;
}
if (ocode == ocode1) {
*x1 = x;
*y1 = y;
ocode1 = CHECK_OUT(x, y);
} else {
*x2 = x;
*y2 = y;
ocode2 = CHECK_OUT(x, y);
}
}
return accept;
}
/*
* This routine is a generic drawing routine, based on Bresenham's line
* drawing algorithm.
@@ -243,10 +303,10 @@ genericLine(RImage *image, int x0, int y0, int x1, int y1, RColor *color,
int i, err, du, dv, du2, dv2, uofs, vofs, last;
assert(image!=NULL);
assert(x0 >= 0 && x0 <= image->width);
assert(x1 >= 0 && x1 <= image->width);
assert(y0 >= 0 && y0 <= image->height);
assert(y1 >= 0 && y1 <= image->height);
if (!clipLineInRectangle(0, 0, image->width-1, image->height-1,
&x0, &y0, &x1, &y1))
return True;
if (x0 < x1) {
du = x1 - x0;

View File

@@ -39,11 +39,10 @@ RGetImageFromXPMData(RContext *context, char **data)
Colormap cmap = context->cmap;
RImage *image;
XpmImage xpm;
unsigned char *color_table[3];
unsigned char *color_table[4];
unsigned char *r, *g, *b, *a;
int *p;
int i;
int transp=-1;
i = XpmCreateXpmImageFromData(data, &xpm, (XpmInfo *)NULL);
if (i!=XpmSuccess) {
@@ -81,7 +80,7 @@ RGetImageFromXPMData(RContext *context, char **data)
}
/* make color table */
for (i=0; i<3; i++) {
for (i=0; i<4; i++) {
color_table[i] = malloc(xpm.ncolors*sizeof(char));
if (!color_table[i]) {
for (i=i-1;i>=0; i--) {
@@ -102,17 +101,19 @@ RGetImageFromXPMData(RContext *context, char **data)
color_table[0][i]=0;
color_table[1][i]=0;
color_table[2][i]=0;
transp = i;
color_table[3][i]=0;
continue;
}
if (XParseColor(dpy, cmap, xpm.colorTable[i].c_color, &xcolor)) {
color_table[0][i] = xcolor.red>>8;
color_table[1][i] = xcolor.green>>8;
color_table[2][i] = xcolor.blue>>8;
color_table[3][i] = 0xff;
} else {
color_table[0][i] = 0xbe;
color_table[1][i] = 0xbe;
color_table[2][i] = 0xbe;
color_table[3][i] = 0xff;
}
}
memset(image->data[3], 255, xpm.width*xpm.height);
@@ -123,15 +124,13 @@ RGetImageFromXPMData(RContext *context, char **data)
b = image->data[2];
a = image->data[3];
for (i=0; i<xpm.width*xpm.height; i++) {
if (*p==transp)
*a=0;
a++;
*(r++)=color_table[0][*p];
*(g++)=color_table[1][*p];
*(b++)=color_table[2][*p];
*(a++)=color_table[3][*p];
p++;
}
for(i=0; i<3; i++) {
for(i=0; i<4; i++) {
free(color_table[i]);
}
XpmFreeXpmImage(&xpm);
@@ -147,11 +146,10 @@ RLoadXPM(RContext *context, char *file, int index)
Colormap cmap = context->cmap;
RImage *image;
XpmImage xpm;
unsigned char *color_table[3];
unsigned char *color_table[4];
unsigned char *r, *g, *b, *a;
int *p;
int i;
int transp=-1;
i = XpmReadFileToXpmImage(file, &xpm, (XpmInfo *)NULL);
if (i!=XpmSuccess) {
@@ -189,7 +187,7 @@ RLoadXPM(RContext *context, char *file, int index)
}
/* make color table */
for (i=0; i<3; i++) {
for (i=0; i<4; i++) {
color_table[i] = malloc(xpm.ncolors*sizeof(char));
if (!color_table[i]) {
for (i=i-1;i>=0; i--) {
@@ -210,20 +208,21 @@ RLoadXPM(RContext *context, char *file, int index)
color_table[0][i]=0;
color_table[1][i]=0;
color_table[2][i]=0;
transp = i;
color_table[3][i]=0;
continue;
}
if (XParseColor(dpy, cmap, xpm.colorTable[i].c_color, &xcolor)) {
color_table[0][i] = xcolor.red>>8;
color_table[1][i] = xcolor.green>>8;
color_table[2][i] = xcolor.blue>>8;
color_table[3][i] = 0xff;
} else {
color_table[0][i] = 0xbe;
color_table[1][i] = 0xbe;
color_table[2][i] = 0xbe;
color_table[3][i] = 0xff;
}
}
memset(image->data[3], 255, xpm.width*xpm.height);
/* convert pixmap to RImage */
p = (int*)xpm.data;
r = image->data[0];
@@ -231,15 +230,13 @@ RLoadXPM(RContext *context, char *file, int index)
b = image->data[2];
a = image->data[3];
for (i=0; i<xpm.width*xpm.height; i++) {
if (*p==transp)
*a=0;
a++;
*(r++)=color_table[0][*p];
*(g++)=color_table[1][*p];
*(b++)=color_table[2][*p];
*(a++)=color_table[3][*p];
p++;
}
for(i=0; i<3; i++) {
for(i=0; i<4; i++) {
free(color_table[i]);
}
XpmFreeXpmImage(&xpm);