forked from vitrine/wmaker
Compare commits
48 Commits
trial-rust
...
malloc-rs
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d91275d959 | ||
| 5325e2d455 | |||
| 82c8b0c9b4 | |||
| a67f7483fd | |||
| cf87f7e83b | |||
| b569889f21 | |||
| 383b3a1a7b | |||
| 4fd7d1e2c1 | |||
| 0131c493c0 | |||
| 5f1317b885 | |||
| 5817c1f032 | |||
| 6d09fbff93 | |||
| b38fa197d7 | |||
| 4c617034b4 | |||
| f5daf2a76a | |||
| 05895b40a2 | |||
| 4f4ef94400 | |||
| 023ab177b2 | |||
| 279f369256 | |||
| 0a2ff4f055 | |||
| 108c913c1d | |||
| 8c669d57b2 | |||
| 83fa8119d9 | |||
| 507e69e209 | |||
| 70814cc235 | |||
| 2ef6720890 | |||
| 493d3c9738 | |||
| 917cc29160 | |||
| 3234e15388 | |||
| 394b4d23cb | |||
| 274d1459aa | |||
| 9a886baef8 | |||
| 7ba66fbc00 | |||
| 289ceb2991 | |||
| ab7e188334 | |||
| 55d34ff0a1 | |||
| 0e7f125494 | |||
| 9404c21fa8 | |||
| 455aa71c19 | |||
| 18db22063c | |||
| b4d1dbe953 | |||
|
|
da676c9e9e | ||
|
|
4edf589a5b | ||
|
|
709eec4bce | ||
|
|
b179803c11 | ||
|
|
5cd40deb20 | ||
|
|
9db1ea580d | ||
|
|
9e56f58742 |
5
.gitignore
vendored
5
.gitignore
vendored
@@ -133,8 +133,13 @@ WPrefs.app/WPrefs.desktop
|
|||||||
/WPrefs.app/po/*.mo
|
/WPrefs.app/po/*.mo
|
||||||
/util/po/*.pot
|
/util/po/*.pot
|
||||||
/util/po/*.mo
|
/util/po/*.mo
|
||||||
|
/wrlib/po/*.pot
|
||||||
|
/wrlib/po/*.mo
|
||||||
|
|
||||||
# Some text editors generate backup files
|
# Some text editors generate backup files
|
||||||
*~
|
*~
|
||||||
|
|
||||||
.pc
|
.pc
|
||||||
|
|
||||||
|
# Rust stuff.
|
||||||
|
/*/target/**
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Changes since version 0.95.7:
|
|||||||
- debian: Ignore missing documentation for --runstatedir.
|
- debian: Ignore missing documentation for --runstatedir.
|
||||||
- debian: Use dh_autoreconf.
|
- debian: Use dh_autoreconf.
|
||||||
- debian: Simplify debian/rules.
|
- debian: Simplify debian/rules.
|
||||||
- debian: Fix typo occured. (Thanks, lintian.)
|
- debian: Fix typo occurred. (Thanks, lintian.)
|
||||||
- debian: wmaker manpage moved from 1x to 1.
|
- debian: wmaker manpage moved from 1x to 1.
|
||||||
(Andreas Metzler <ametzler@bebt.de>)
|
(Andreas Metzler <ametzler@bebt.de>)
|
||||||
- debian: Add wmiv to wmaker package.
|
- debian: Add wmiv to wmaker package.
|
||||||
@@ -498,7 +498,7 @@ Changes since version 0.95.6:
|
|||||||
- doc: Add manpage for wmiv.
|
- doc: Add manpage for wmiv.
|
||||||
(Doug Torrance <dtorrance@monmouthcollege.edu>)
|
(Doug Torrance <dtorrance@monmouthcollege.edu>)
|
||||||
- wmaker: replaced old email address with the official one
|
- wmaker: replaced old email address with the official one
|
||||||
- WINGs: Updated news with the API changes that occured between 0.95.6 and
|
- WINGs: Updated news with the API changes that occurred between 0.95.6 and
|
||||||
0.95.7
|
0.95.7
|
||||||
- WINGs: ran spell checker on the NEWS file
|
- WINGs: ran spell checker on the NEWS file
|
||||||
- WINGs: fix non-portable int conversion for printf in font panel size handling
|
- WINGs: fix non-portable int conversion for printf in font panel size handling
|
||||||
@@ -969,7 +969,7 @@ Changes since version 0.95.5:
|
|||||||
- WMaker: moved XGrab/XUngrabPointer into the conditional code
|
- WMaker: moved XGrab/XUngrabPointer into the conditional code
|
||||||
- News: created section dedicated to the changes related to 0.95.3
|
- News: created section dedicated to the changes related to 0.95.3
|
||||||
- News: added description of a change that may be interesting to users
|
- News: added description of a change that may be interesting to users
|
||||||
- News: added section to describe the changes that have occured in 0.95.4
|
- News: added section to describe the changes that have occurred in 0.95.4
|
||||||
- News: marked the current changes as part of 0.95.5 and describe the drawers
|
- News: marked the current changes as part of 0.95.5 and describe the drawers
|
||||||
feature
|
feature
|
||||||
- News: described the new features for future 0.95.6 release
|
- News: described the new features for future 0.95.6 release
|
||||||
@@ -1103,7 +1103,7 @@ Changes since version 0.95.5:
|
|||||||
#50158)
|
#50158)
|
||||||
- WPrefs: fix NULL pointer handling when getting the Modifiers (Coverity
|
- WPrefs: fix NULL pointer handling when getting the Modifiers (Coverity
|
||||||
#50200)
|
#50200)
|
||||||
- WPrefs: add warning when renderTexture encounters some unknow settings
|
- WPrefs: add warning when renderTexture encounters some unknown settings
|
||||||
(Christophe CURIS <christophe.curis@free.fr>)
|
(Christophe CURIS <christophe.curis@free.fr>)
|
||||||
- util/wmiv: add image auto orientation detection
|
- util/wmiv: add image auto orientation detection
|
||||||
(David Maciejak <david.maciejak@gmail.com>)
|
(David Maciejak <david.maciejak@gmail.com>)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ ACLOCAL_AMFLAGS = -I m4
|
|||||||
AM_DISTCHECK_CONFIGURE_FLAGS = --enable-silent-rules LINGUAS='*'
|
AM_DISTCHECK_CONFIGURE_FLAGS = --enable-silent-rules LINGUAS='*'
|
||||||
|
|
||||||
|
|
||||||
SUBDIRS = wrlib WINGs src util po WindowMaker wmlib WPrefs.app doc
|
SUBDIRS = wrlib WINGs wmaker-rs src util po WindowMaker wmlib WPrefs.app doc
|
||||||
DIST_SUBDIRS = $(SUBDIRS) test
|
DIST_SUBDIRS = $(SUBDIRS) test
|
||||||
|
|
||||||
EXTRA_DIST = TODO BUGS BUGFORM FAQ INSTALL \
|
EXTRA_DIST = TODO BUGS BUGFORM FAQ INSTALL \
|
||||||
|
|||||||
@@ -140,7 +140,7 @@ Changes since wmaker 0.64.0:
|
|||||||
- Moved all internal handlers (timer, idle and input) to handlers.c
|
- Moved all internal handlers (timer, idle and input) to handlers.c
|
||||||
- simplified wevent.c and wutil.c.
|
- simplified wevent.c and wutil.c.
|
||||||
- fixed handling of input with poll (was broken)
|
- fixed handling of input with poll (was broken)
|
||||||
- fixed mem leak that occured when input handling was done with poll
|
- fixed mem leak that occurred when input handling was done with poll
|
||||||
- simpler and more straightforward event handling for timer, idle, input
|
- simpler and more straightforward event handling for timer, idle, input
|
||||||
and X events (also fixed some problems the old handling logic had)
|
and X events (also fixed some problems the old handling logic had)
|
||||||
- moved timer, idle and input handler definitions and prototypes from
|
- moved timer, idle and input handler definitions and prototypes from
|
||||||
|
|||||||
@@ -456,7 +456,7 @@ int wcopy_file(const char *dest_dir, const char *src_file, const char *dest_file
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer = malloc(buffer_size); /* Don't use wmalloc to avoid the memset(0) we don't need */
|
buffer = wmalloc(buffer_size);
|
||||||
if (buffer == NULL) {
|
if (buffer == NULL) {
|
||||||
werror(_("could not allocate memory for the copy buffer"));
|
werror(_("could not allocate memory for the copy buffer"));
|
||||||
close(fd_dst);
|
close(fd_dst);
|
||||||
@@ -508,14 +508,14 @@ int wcopy_file(const char *dest_dir, const char *src_file, const char *dest_file
|
|||||||
if (close(fd_dst) != 0) {
|
if (close(fd_dst) != 0) {
|
||||||
werror(_("could not close the file \"%s\": %s"), path_dst, strerror(errno));
|
werror(_("could not close the file \"%s\": %s"), path_dst, strerror(errno));
|
||||||
cleanup_and_return_failure:
|
cleanup_and_return_failure:
|
||||||
free(buffer);
|
wfree(buffer);
|
||||||
close(fd_src);
|
close(fd_src);
|
||||||
unlink(path_dst);
|
unlink(path_dst);
|
||||||
wfree(path_dst);
|
wfree(path_dst);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(buffer);
|
wfree(buffer);
|
||||||
wfree(path_dst);
|
wfree(path_dst);
|
||||||
close(fd_src);
|
close(fd_src);
|
||||||
|
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ WMHandlerID WMAddTimerHandler(int milliseconds, WMCallback * callback, void *cda
|
|||||||
{
|
{
|
||||||
TimerHandler *handler;
|
TimerHandler *handler;
|
||||||
|
|
||||||
handler = malloc(sizeof(TimerHandler));
|
handler = wmalloc(sizeof(TimerHandler));
|
||||||
if (!handler)
|
if (!handler)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ WMHandlerID WMAddIdleHandler(WMCallback * callback, void *cdata)
|
|||||||
{
|
{
|
||||||
IdleHandler *handler;
|
IdleHandler *handler;
|
||||||
|
|
||||||
handler = malloc(sizeof(IdleHandler));
|
handler = wmalloc(sizeof(IdleHandler));
|
||||||
if (!handler)
|
if (!handler)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|||||||
176
WINGs/memory.c
176
WINGs/memory.c
@@ -19,34 +19,15 @@
|
|||||||
* MA 02110-1301, USA.
|
* MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "wconfig.h"
|
#include <sys/types.h>
|
||||||
|
|
||||||
#include "WUtil.h"
|
#include "WUtil.h"
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#ifdef HAVE_STDNORETURN
|
|
||||||
#include <stdnoreturn.h>
|
#include <stdnoreturn.h>
|
||||||
#endif
|
#include <unistd.h>
|
||||||
|
|
||||||
#ifdef USE_BOEHM_GC
|
|
||||||
#ifndef GC_DEBUG
|
|
||||||
#define GC_DEBUG
|
|
||||||
#endif /* !GC_DEBUG */
|
|
||||||
#include <gc/gc.h>
|
|
||||||
#endif /* USE_BOEHM_GC */
|
|
||||||
|
|
||||||
#ifndef False
|
|
||||||
# define False 0
|
|
||||||
#endif
|
|
||||||
#ifndef True
|
|
||||||
# define True 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void defaultHandler(int bla)
|
static void defaultHandler(int bla)
|
||||||
{
|
{
|
||||||
@@ -72,152 +53,3 @@ waborthandler *wsetabort(waborthandler * handler)
|
|||||||
|
|
||||||
return old;
|
return old;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int Aborting = 0; /* if we're in the middle of an emergency exit */
|
|
||||||
|
|
||||||
static WMHashTable *table = NULL;
|
|
||||||
|
|
||||||
void *wmalloc(size_t size)
|
|
||||||
{
|
|
||||||
void *tmp;
|
|
||||||
|
|
||||||
assert(size > 0);
|
|
||||||
|
|
||||||
#ifdef USE_BOEHM_GC
|
|
||||||
tmp = GC_MALLOC(size);
|
|
||||||
#else
|
|
||||||
tmp = malloc(size);
|
|
||||||
#endif
|
|
||||||
if (tmp == NULL) {
|
|
||||||
wwarning("malloc() failed. Retrying after 2s.");
|
|
||||||
sleep(2);
|
|
||||||
#ifdef USE_BOEHM_GC
|
|
||||||
tmp = GC_MALLOC(size);
|
|
||||||
#else
|
|
||||||
tmp = malloc(size);
|
|
||||||
#endif
|
|
||||||
if (tmp == NULL) {
|
|
||||||
if (Aborting) {
|
|
||||||
fputs("Really Bad Error: recursive malloc() failure.", stderr);
|
|
||||||
exit(-1);
|
|
||||||
} else {
|
|
||||||
wfatal("virtual memory exhausted");
|
|
||||||
Aborting = 1;
|
|
||||||
wAbort(False);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (tmp != NULL)
|
|
||||||
memset(tmp, 0, size);
|
|
||||||
return tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *wrealloc(void *ptr, size_t newsize)
|
|
||||||
{
|
|
||||||
void *nptr;
|
|
||||||
|
|
||||||
if (!ptr) {
|
|
||||||
nptr = wmalloc(newsize);
|
|
||||||
} else if (newsize == 0) {
|
|
||||||
wfree(ptr);
|
|
||||||
nptr = NULL;
|
|
||||||
} else {
|
|
||||||
#ifdef USE_BOEHM_GC
|
|
||||||
nptr = GC_REALLOC(ptr, newsize);
|
|
||||||
#else
|
|
||||||
nptr = realloc(ptr, newsize);
|
|
||||||
#endif
|
|
||||||
if (nptr == NULL) {
|
|
||||||
wwarning("realloc() failed. Retrying after 2s.");
|
|
||||||
sleep(2);
|
|
||||||
#ifdef USE_BOEHM_GC
|
|
||||||
nptr = GC_REALLOC(ptr, newsize);
|
|
||||||
#else
|
|
||||||
nptr = realloc(ptr, newsize);
|
|
||||||
#endif
|
|
||||||
if (nptr == NULL) {
|
|
||||||
if (Aborting) {
|
|
||||||
fputs("Really Bad Error: recursive realloc() failure.", stderr);
|
|
||||||
exit(-1);
|
|
||||||
} else {
|
|
||||||
wfatal("virtual memory exhausted");
|
|
||||||
Aborting = 1;
|
|
||||||
wAbort(False);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *wretain(void *ptr)
|
|
||||||
{
|
|
||||||
int *refcount;
|
|
||||||
|
|
||||||
if (!table) {
|
|
||||||
table = WMCreateHashTable(WMIntHashCallbacks);
|
|
||||||
}
|
|
||||||
|
|
||||||
refcount = WMHashGet(table, ptr);
|
|
||||||
if (!refcount) {
|
|
||||||
refcount = wmalloc(sizeof(int));
|
|
||||||
*refcount = 1;
|
|
||||||
WMHashInsert(table, ptr, refcount);
|
|
||||||
#ifdef VERBOSE
|
|
||||||
printf("== %i (%p)\n", *refcount, ptr);
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
(*refcount)++;
|
|
||||||
#ifdef VERBOSE
|
|
||||||
printf("+ %i (%p)\n", *refcount, ptr);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
return ptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void wfree(void *ptr)
|
|
||||||
{
|
|
||||||
if (ptr)
|
|
||||||
#ifdef USE_BOEHM_GC
|
|
||||||
/* This should eventually be removed, once the criss-cross
|
|
||||||
* of wmalloc()d memory being free()d, malloc()d memory being
|
|
||||||
* wfree()d, various misuses of calling wfree() on objects
|
|
||||||
* allocated by libc malloc() and calling libc free() on
|
|
||||||
* objects allocated by Boehm GC (think external libraries)
|
|
||||||
* is cleaned up.
|
|
||||||
*/
|
|
||||||
if (GC_base(ptr) != 0)
|
|
||||||
GC_FREE(ptr);
|
|
||||||
else
|
|
||||||
free(ptr);
|
|
||||||
#else
|
|
||||||
free(ptr);
|
|
||||||
#endif
|
|
||||||
ptr = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void wrelease(void *ptr)
|
|
||||||
{
|
|
||||||
int *refcount;
|
|
||||||
|
|
||||||
refcount = WMHashGet(table, ptr);
|
|
||||||
if (!refcount) {
|
|
||||||
wwarning("trying to release unexisting data %p", ptr);
|
|
||||||
} else {
|
|
||||||
(*refcount)--;
|
|
||||||
if (*refcount < 1) {
|
|
||||||
#ifdef VERBOSE
|
|
||||||
printf("RELEASING %p\n", ptr);
|
|
||||||
#endif
|
|
||||||
WMHashRemove(table, ptr);
|
|
||||||
wfree(refcount);
|
|
||||||
wfree(ptr);
|
|
||||||
}
|
|
||||||
#ifdef VERBOSE
|
|
||||||
else {
|
|
||||||
printf("- %i (%p)\n", *refcount, ptr);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2003-02-09 12:10+0200\n"
|
"PO-Revision-Date: 2003-02-09 12:10+0200\n"
|
||||||
"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
|
"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
|
||||||
"Language-Team: Bulgarian <dict@linux.zonebg.com>\n"
|
"Language-Team: Bulgarian <dict@linux.zonebg.com>\n"
|
||||||
|
"Language: bg\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2003-09-16 23:16+0200\n"
|
"PO-Revision-Date: 2003-09-16 23:16+0200\n"
|
||||||
"Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n"
|
"Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n"
|
||||||
"Language-Team: Catalan <ca@dodds.net>\n"
|
"Language-Team: Catalan <ca@dodds.net>\n"
|
||||||
|
"Language: ca\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-10-11 22:00+0100\n"
|
"PO-Revision-Date: 2001-10-11 22:00+0100\n"
|
||||||
"Last-Translator: Jiří Hnídek <jiri.hnidek@vslib.cz>\n"
|
"Last-Translator: Jiří Hnídek <jiri.hnidek@vslib.cz>\n"
|
||||||
"Language-Team: Czech <cz@li.org>\n"
|
"Language-Team: Czech <cz@li.org>\n"
|
||||||
|
"Language: cs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: unknown\n"
|
"Content-Transfer-Encoding: unknown\n"
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2004-11-05 23:48+0100\n"
|
"PO-Revision-Date: 2004-11-05 23:48+0100\n"
|
||||||
"Last-Translator: shlomme@gmx.net\n"
|
"Last-Translator: shlomme@gmx.net\n"
|
||||||
"Language-Team: German\n"
|
"Language-Team: German\n"
|
||||||
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2002-01-09 21:20+0100\n"
|
"PO-Revision-Date: 2002-01-09 21:20+0100\n"
|
||||||
"Last-Translator: Emmanuel Benoit <tseeker@neptune.fr>\n"
|
"Last-Translator: Emmanuel Benoit <tseeker@neptune.fr>\n"
|
||||||
"Language-Team: Français <fr@li.org>\n"
|
"Language-Team: Français <fr@li.org>\n"
|
||||||
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: unknown\n"
|
"Content-Transfer-Encoding: unknown\n"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2014-02-18 00:25+0100\n"
|
"PO-Revision-Date: 2014-02-18 00:25+0100\n"
|
||||||
"Last-Translator: BALATON Zoltán <balaton@eik.bme.hu>\n"
|
"Last-Translator: BALATON Zoltán <balaton@eik.bme.hu>\n"
|
||||||
"Language-Team: Hungarian\n"
|
"Language-Team: Hungarian\n"
|
||||||
"Language: \n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -843,9 +843,6 @@ msgstr "Kon invoerbestand \"%s\" niet openen"
|
|||||||
msgid "Could not create target file \"%s\""
|
msgid "Could not create target file \"%s\""
|
||||||
msgstr "Kon doelbestand \"%s\" niet aanmaken"
|
msgstr "Kon doelbestand \"%s\" niet aanmaken"
|
||||||
|
|
||||||
msgid "An error occured browsing '%s'."
|
|
||||||
msgstr "Er trad 'n fout op bij bladeren door '%s'."
|
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"invalid characted '%c' in arg-list for macro \"%s\" while expecting "
|
"invalid characted '%c' in arg-list for macro \"%s\" while expecting "
|
||||||
"parameter name"
|
"parameter name"
|
||||||
@@ -860,9 +857,6 @@ msgstr ""
|
|||||||
"ongeldig letterteken '%c' in arg.-lijst voor macro \"%s\", verwachtte ',' "
|
"ongeldig letterteken '%c' in arg.-lijst voor macro \"%s\", verwachtte ',' "
|
||||||
"of ')'"
|
"of ')'"
|
||||||
|
|
||||||
msgid "unknow directive '#%s'"
|
|
||||||
msgstr "onbekende aanwijzing '#%s'"
|
|
||||||
|
|
||||||
msgid "found #%s but have no matching #if"
|
msgid "found #%s but have no matching #if"
|
||||||
msgstr "#%s gevonden, maar heeft geen bijbehorende #if"
|
msgstr "#%s gevonden, maar heeft geen bijbehorende #if"
|
||||||
|
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-12-20 04:00+0100\n"
|
"PO-Revision-Date: 2001-12-20 04:00+0100\n"
|
||||||
"Last-Translator: Jan \"judas\" Tomka <judas@linux.sk>\n"
|
"Last-Translator: Jan \"judas\" Tomka <judas@linux.sk>\n"
|
||||||
"Language-Team: Slovak <sk@li.org>\n"
|
"Language-Team: Slovak <sk@li.org>\n"
|
||||||
|
"Language: sk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -610,10 +610,9 @@ WMScreen *WMCreateScreenWithRContext(Display * display, int screen, RContext * c
|
|||||||
assert(W_ApplicationInitialized());
|
assert(W_ApplicationInitialized());
|
||||||
}
|
}
|
||||||
|
|
||||||
scrPtr = malloc(sizeof(W_Screen));
|
scrPtr = wmalloc(sizeof(W_Screen));
|
||||||
if (!scrPtr)
|
if (!scrPtr)
|
||||||
return NULL;
|
return NULL;
|
||||||
memset(scrPtr, 0, sizeof(W_Screen));
|
|
||||||
|
|
||||||
scrPtr->aflags.hasAppIcon = 1;
|
scrPtr->aflags.hasAppIcon = 1;
|
||||||
|
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ static void autoDelayChanged(void *observerData, WMNotification *notification)
|
|||||||
}
|
}
|
||||||
char *value = WMGetTextFieldText(anAutoDelayT);
|
char *value = WMGetTextFieldText(anAutoDelayT);
|
||||||
adjustButtonSelectionBasedOnValue(panel, row, value);
|
adjustButtonSelectionBasedOnValue(panel, row, value);
|
||||||
free(value);
|
wfree(value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ static void storeData(_Panel * panel)
|
|||||||
if (sscanf(str, "%i", &i) != 1)
|
if (sscanf(str, "%i", &i) != 1)
|
||||||
i = 0;
|
i = 0;
|
||||||
SetIntegerForKey(i, "RaiseDelay");
|
SetIntegerForKey(i, "RaiseDelay");
|
||||||
free(str);
|
wfree(str);
|
||||||
|
|
||||||
SetBoolForKey(WMGetButtonSelected(panel->ignB), "IgnoreFocusClick");
|
SetBoolForKey(WMGetButtonSelected(panel->ignB), "IgnoreFocusClick");
|
||||||
SetBoolForKey(WMGetButtonSelected(panel->newB), "AutoFocus");
|
SetBoolForKey(WMGetButtonSelected(panel->newB), "AutoFocus");
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ static void storeData(_Panel * panel)
|
|||||||
if (sscanf(str, "%i", &i) != 1)
|
if (sscanf(str, "%i", &i) != 1)
|
||||||
i = 0;
|
i = 0;
|
||||||
SetIntegerForKey(i, "HotCornerDelay");
|
SetIntegerForKey(i, "HotCornerDelay");
|
||||||
free(str);
|
wfree(str);
|
||||||
|
|
||||||
SetIntegerForKey(WMGetSliderValue(panel->hceS), "HotCornerEdge");
|
SetIntegerForKey(WMGetSliderValue(panel->hceS), "HotCornerEdge");
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ WPrefs_DEPENDENCIES = $(top_builddir)/WINGs/libWINGs.la
|
|||||||
WPrefs_LDADD = \
|
WPrefs_LDADD = \
|
||||||
$(top_builddir)/WINGs/libWINGs.la\
|
$(top_builddir)/WINGs/libWINGs.la\
|
||||||
$(top_builddir)/WINGs/libWUtil.la\
|
$(top_builddir)/WINGs/libWUtil.la\
|
||||||
|
$(top_builddir)/wmaker-rs/target/debug/libwmaker_rs.a\
|
||||||
$(top_builddir)/wrlib/libwraster.la \
|
$(top_builddir)/wrlib/libwraster.la \
|
||||||
@XLFLAGS@ @XLIBS@ \
|
@XLFLAGS@ @XLIBS@ \
|
||||||
@LIBM@ \
|
@LIBM@ \
|
||||||
|
|||||||
@@ -5,7 +5,8 @@ CATALOGS = @WPREFSMOFILES@
|
|||||||
CLEANFILES = $(DOMAIN).pot $(CATALOGS)
|
CLEANFILES = $(DOMAIN).pot $(CATALOGS)
|
||||||
|
|
||||||
EXTRA_DIST = bg.po ca.po cs.po de.po es.po et.po fi.po fr.po fy.po hr.po hu.po \
|
EXTRA_DIST = bg.po ca.po cs.po de.po es.po et.po fi.po fr.po fy.po hr.po hu.po \
|
||||||
it.po ja.po ko.po nl.po pt.po ru.po sk.po tr.po uk.po zh_CN.po zh_TW.po
|
it.po ja.po ko.po nl.po pt.po ru.po sk.po sr.po tr.po uk.po zh_CN.po \
|
||||||
|
zh_TW.po
|
||||||
|
|
||||||
POTFILES = \
|
POTFILES = \
|
||||||
$(top_srcdir)/WPrefs.app/Appearance.c \
|
$(top_srcdir)/WPrefs.app/Appearance.c \
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-04-18 23:22+03:00\n"
|
"PO-Revision-Date: 2001-04-18 23:22+03:00\n"
|
||||||
"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
|
"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
|
||||||
"Language-Team: Bulgarian <dict@linux.zonebg.com>\n"
|
"Language-Team: Bulgarian <dict@linux.zonebg.com>\n"
|
||||||
|
"Language: bg\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2003-09-16 23:15+0200\n"
|
"PO-Revision-Date: 2003-09-16 23:15+0200\n"
|
||||||
"Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n"
|
"Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n"
|
||||||
"Language-Team: Catalan <ca@dodds.net>\n"
|
"Language-Team: Catalan <ca@dodds.net>\n"
|
||||||
|
"Language: ca\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-10-14 21:07+0000\n"
|
"PO-Revision-Date: 2001-10-14 21:07+0000\n"
|
||||||
"Last-Translator: Jiří Hnídek <jiri.hnidek@vslib.cz>\n"
|
"Last-Translator: Jiří Hnídek <jiri.hnidek@vslib.cz>\n"
|
||||||
"Language-Team: czech <cs@li.org>\n"
|
"Language-Team: czech <cs@li.org>\n"
|
||||||
|
"Language: cs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: unknown\n"
|
"Content-Transfer-Encoding: unknown\n"
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2010-02-02 10:49+0100\n"
|
"PO-Revision-Date: 2010-02-02 10:49+0100\n"
|
||||||
"Last-Translator: Carlos R. Mafra <crmafra@gmail.com>\n"
|
"Last-Translator: Carlos R. Mafra <crmafra@gmail.com>\n"
|
||||||
"Language-Team: German <>\n"
|
"Language-Team: German <>\n"
|
||||||
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2003-09-19 03:05-0400\n"
|
"PO-Revision-Date: 2003-09-19 03:05-0400\n"
|
||||||
"Last-Translator: Alberto Giménez <algibe@teleline.es>\n"
|
"Last-Translator: Alberto Giménez <algibe@teleline.es>\n"
|
||||||
"Language-Team: Spanish \n"
|
"Language-Team: Spanish \n"
|
||||||
|
"Language: es\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: unknown\n"
|
"Content-Transfer-Encoding: unknown\n"
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-09-05 09:40+0200\n"
|
"PO-Revision-Date: 2001-09-05 09:40+0200\n"
|
||||||
"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
|
"Last-Translator: Ivar Smolin <okul@linux.ee>\n"
|
||||||
"Language-Team: Estonian <linux-ee@eenet.ee>\n"
|
"Language-Team: Estonian <linux-ee@eenet.ee>\n"
|
||||||
|
"Language: et\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -475,7 +476,7 @@ msgstr "Window Maker vőttis vastu signaali %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1707
|
#: ../src/dialog.c:1707
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to bugs@windowmaker.info."
|
"BUGFORM and report it to bugs@windowmaker.info."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" See fataalviga on arvatavasti pőhjustatud programmi veast. Palun täitke "
|
" See fataalviga on arvatavasti pőhjustatud programmi veast. Palun täitke "
|
||||||
@@ -1437,7 +1438,7 @@ msgstr "ei őnnestu käivitada alternatiivset aknahaldurit. Annan alla."
|
|||||||
|
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"aset on leidnud fataalne viga, arvatavasti programmi viga. Palun täida "
|
"aset on leidnud fataalne viga, arvatavasti programmi viga. Palun täida "
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-09-03 22:18+03:00\n"
|
"PO-Revision-Date: 2001-09-03 22:18+03:00\n"
|
||||||
"Last-Translator: Tomi Kajala <tomi@iki.fi>\n"
|
"Last-Translator: Tomi Kajala <tomi@iki.fi>\n"
|
||||||
"Language-Team: Finnish <fi@li.org>\n"
|
"Language-Team: Finnish <fi@li.org>\n"
|
||||||
|
"Language: fi\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1999-07-28 16:31-0100\n"
|
"PO-Revision-Date: 1999-07-28 16:31-0100\n"
|
||||||
"Last-Translator: Antoine Hulin <antoine.hulin@origan.fdn.org>\n"
|
"Last-Translator: Antoine Hulin <antoine.hulin@origan.fdn.org>\n"
|
||||||
"Language-Team: French <fr@li.org>\n"
|
"Language-Team: French <fr@li.org>\n"
|
||||||
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1998-08-24 14:36:41-0300\n"
|
"PO-Revision-Date: 1998-08-24 14:36:41-0300\n"
|
||||||
"Last-Translator: Toni Bilić tbilic@oliver.efos.hr \n"
|
"Last-Translator: Toni Bilić tbilic@oliver.efos.hr \n"
|
||||||
"Language-Team: Croatian \n"
|
"Language-Team: Croatian \n"
|
||||||
|
"Language: hr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2014-02-18 00:33+0100\n"
|
"PO-Revision-Date: 2014-02-18 00:33+0100\n"
|
||||||
"Last-Translator: BALATON Zoltán <balaton@eik.bme.hu>\n"
|
"Last-Translator: BALATON Zoltán <balaton@eik.bme.hu>\n"
|
||||||
"Language-Team: Hungarian\n"
|
"Language-Team: Hungarian\n"
|
||||||
"Language: \n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-05-21\n"
|
"PO-Revision-Date: 2001-05-21\n"
|
||||||
"Last-Translator: Michele Campeotto <micampe@f2s.com\n"
|
"Last-Translator: Michele Campeotto <micampe@f2s.com\n"
|
||||||
"Language-Team: Italian\n"
|
"Language-Team: Italian\n"
|
||||||
|
"Language: it\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: unknown\n"
|
"Content-Transfer-Encoding: unknown\n"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2013-08-13 19:26+0900\n"
|
"PO-Revision-Date: 2013-08-13 19:26+0900\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Korean\n"
|
"Language-Team: Korean\n"
|
||||||
|
"Language: ko\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2000-01-04 18:25-0300\n"
|
"PO-Revision-Date: 2000-01-04 18:25-0300\n"
|
||||||
"Last-Translator: Eliphas Levy Theodoro <eliphas@conectiva.com.br>\n"
|
"Last-Translator: Eliphas Levy Theodoro <eliphas@conectiva.com.br>\n"
|
||||||
"Language-Team: Portuguese \n"
|
"Language-Team: Portuguese \n"
|
||||||
|
"Language: pt\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2002-09-12 17:45+0300\n"
|
"PO-Revision-Date: 2002-09-12 17:45+0300\n"
|
||||||
"Last-Translator: awn@bcs.zp.ua\n"
|
"Last-Translator: awn@bcs.zp.ua\n"
|
||||||
"Language-Team: Russian\n"
|
"Language-Team: Russian\n"
|
||||||
|
"Language: ru\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-10-15 20:40+0100\n"
|
"PO-Revision-Date: 2001-10-15 20:40+0100\n"
|
||||||
"Last-Translator: Jan \"judas\" Tomka <judas@linux.sk>\n"
|
"Last-Translator: Jan \"judas\" Tomka <judas@linux.sk>\n"
|
||||||
"Language-Team: Slovak <sk@li.org>\n"
|
"Language-Team: Slovak <sk@li.org>\n"
|
||||||
|
"Language: sk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2004-09-06 21:42+4000\n"
|
"PO-Revision-Date: 2004-09-06 21:42+4000\n"
|
||||||
"Last-Translator: Victor Forsyuk <victor@ksi-linux.com>\n"
|
"Last-Translator: Victor Forsyuk <victor@ksi-linux.com>\n"
|
||||||
"Language-Team: KSI Linux Ukrainian <uk@ksi-linux.com>\n"
|
"Language-Team: KSI Linux Ukrainian <uk@ksi-linux.com>\n"
|
||||||
|
"Language: uk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1999-07-05 23:20+0800\n"
|
"PO-Revision-Date: 1999-07-05 23:20+0800\n"
|
||||||
"Last-Translator: Wang Jian <larkw@263.net>\n"
|
"Last-Translator: Wang Jian <larkw@263.net>\n"
|
||||||
"Language-Team: chinese <zh@li.org>\n"
|
"Language-Team: chinese <zh@li.org>\n"
|
||||||
|
"Language: zh_CN\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2005-01-11 17:46+0800\n"
|
"PO-Revision-Date: 2005-01-11 17:46+0800\n"
|
||||||
"Last-Translator: Li Wei Jih <lwj83@cs.ccu.edu.tw>\n"
|
"Last-Translator: Li Wei Jih <lwj83@cs.ccu.edu.tw>\n"
|
||||||
"Language-Team: chinese <zh@li.org>\n"
|
"Language-Team: chinese <zh@li.org>\n"
|
||||||
|
"Language: zh_TW\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
28
autogen.sh
28
autogen.sh
@@ -1,26 +1,16 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
srcdir=$(dirname $0)
|
||||||
|
test -z "$srcdir" && srcdir=.
|
||||||
|
|
||||||
# Generate the documentation about compiling Window Maker
|
# Generate the documentation about compiling Window Maker
|
||||||
./script/generate-txt-from-texi.sh "doc/build/Compilation.texi" -o "INSTALL-WMAKER"
|
$srcdir/script/generate-txt-from-texi.sh "$srcdir/doc/build/Compilation.texi" \
|
||||||
./script/generate-txt-from-texi.sh "doc/build/Translations.texi" -o "README.i18n"
|
-o "$srcdir/INSTALL-WMAKER"
|
||||||
|
$srcdir/script/generate-txt-from-texi.sh "$srcdir/doc/build/Translations.texi" \
|
||||||
|
-o "$srcdir/README.i18n"
|
||||||
|
|
||||||
# Change date of the files to the past so they will be regenerated by 'make'
|
# Change date of the files to the past so they will be regenerated by 'make'
|
||||||
touch -d '2000-01-01' INSTALL-WMAKER README.i18n
|
touch -d '2000-01-01' $srcdir/INSTALL-WMAKER $srcdir/README.i18n
|
||||||
|
|
||||||
# Generate the configure script from the 'configure.ac'
|
# Generate the configure script from the 'configure.ac'
|
||||||
autoreconf -vfi -I m4
|
autoreconf -vfi -I m4 $srcdir
|
||||||
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
if [ -x config.status -a -z "$*" ]; then
|
|
||||||
./config.status --recheck
|
|
||||||
else
|
|
||||||
if test -z "$*"; then
|
|
||||||
echo "I am going to run ./configure with no arguments - if you wish "
|
|
||||||
echo "to pass any to it, please specify them on the $0 command line."
|
|
||||||
echo "If you do not wish to run ./configure, press Ctrl-C now."
|
|
||||||
trap 'echo "configure aborted" ; exit 0' 1 2 15
|
|
||||||
sleep 1
|
|
||||||
fi
|
|
||||||
./configure "$@"
|
|
||||||
fi
|
|
||||||
|
|||||||
13
configure.ac
13
configure.ac
@@ -49,6 +49,15 @@ AC_CONFIG_SRCDIR([src/WindowMaker.h])
|
|||||||
dnl Include at the end of 'config.h', this file is generated by top-level Makefile
|
dnl Include at the end of 'config.h', this file is generated by top-level Makefile
|
||||||
AH_BOTTOM([@%:@include "config-paths.h"])
|
AH_BOTTOM([@%:@include "config-paths.h"])
|
||||||
|
|
||||||
|
dnl Rust support
|
||||||
|
AC_CHECK_PROG(CARGO, [cargo], [yes], [no])
|
||||||
|
AS_IF(test x$CARGO = xno,
|
||||||
|
AC_MSG_ERROR([cargo is required. Please set the CARGO environment variable or install the Rust toolchain from https://www.rust-lang.org/])
|
||||||
|
)
|
||||||
|
AC_CHECK_PROG(RUSTC, [rustc], [yes], [no])
|
||||||
|
AS_IF(test x$RUSTC = xno,
|
||||||
|
AC_MSG_ERROR([rustc is required. Please set the RUSTC environment variable or install the Rust toolchain from https://www.rust-lang.org/])
|
||||||
|
)
|
||||||
|
|
||||||
dnl libtool library versioning
|
dnl libtool library versioning
|
||||||
dnl ==========================
|
dnl ==========================
|
||||||
@@ -97,7 +106,6 @@ dnl ===================
|
|||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
WM_PROG_CC_C11
|
WM_PROG_CC_C11
|
||||||
AC_PROG_LN_S
|
AC_PROG_LN_S
|
||||||
AC_PROG_GCC_TRADITIONAL
|
|
||||||
LT_INIT
|
LT_INIT
|
||||||
|
|
||||||
|
|
||||||
@@ -970,6 +978,9 @@ AC_CONFIG_FILES(
|
|||||||
WINGs/Documentation/Makefile WINGs/Resources/Makefile WINGs/Extras/Makefile
|
WINGs/Documentation/Makefile WINGs/Resources/Makefile WINGs/Extras/Makefile
|
||||||
WINGs/Examples/Makefile WINGs/Tests/Makefile
|
WINGs/Examples/Makefile WINGs/Tests/Makefile
|
||||||
|
|
||||||
|
dnl Rust implementation of Window Maker core
|
||||||
|
wmaker-rs/Makefile
|
||||||
|
|
||||||
dnl Window Maker's core
|
dnl Window Maker's core
|
||||||
src/Makefile src/wconfig.h po/Makefile
|
src/Makefile src/wconfig.h po/Makefile
|
||||||
doc/Makefile doc/build/Makefile
|
doc/Makefile doc/build/Makefile
|
||||||
|
|||||||
5
po/be.po
5
po/be.po
@@ -10,6 +10,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2002-10-17 19:02+0300\n"
|
"PO-Revision-Date: 2002-10-17 19:02+0300\n"
|
||||||
"Last-Translator: Ihar Viarheichyk <iverg@mail.ru>\n"
|
"Last-Translator: Ihar Viarheichyk <iverg@mail.ru>\n"
|
||||||
"Language-Team: Belarusian <be@li.org>\n"
|
"Language-Team: Belarusian <be@li.org>\n"
|
||||||
|
"Language: be\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -472,7 +473,7 @@ msgstr "Window Maker атрымаў сігнал %i."
|
|||||||
#: ../src/dialog.c:1632
|
#: ../src/dialog.c:1632
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Гэты крытычны збой магчыма вызваны памылкамі ў WindowMaker."
|
" Гэты крытычны збой магчыма вызваны памылкамі ў WindowMaker."
|
||||||
@@ -1433,7 +1434,7 @@ msgstr "не магчыма запусціць іншы ваконны мене
|
|||||||
|
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Гэты крытычны збой магчыма вызваны памылкамі ў WindowMaker."
|
" Гэты крытычны збой магчыма вызваны памылкамі ў WindowMaker."
|
||||||
|
|||||||
5
po/bg.po
5
po/bg.po
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2003-02-09 14:21+0200\n"
|
"PO-Revision-Date: 2003-02-09 14:21+0200\n"
|
||||||
"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
|
"Last-Translator: Anton Zinoviev <zinoviev@debian.org>\n"
|
||||||
"Language-Team: Bulgarian <dict@linux.zonebg.com>\n"
|
"Language-Team: Bulgarian <dict@linux.zonebg.com>\n"
|
||||||
|
"Language: bg\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -602,7 +603,7 @@ msgstr "Уиндоу Мейкър получи сигнал %i."
|
|||||||
#: ../src/dialog.c:1632
|
#: ../src/dialog.c:1632
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr "Възникналата критична грешка вероятно се дължи на програмен дефект. Моля попълнете формуляра от файла BUGFORM и го изпратете на адрес %s."
|
msgstr "Възникналата критична грешка вероятно се дължи на програмен дефект. Моля попълнете формуляра от файла BUGFORM и го изпратете на адрес %s."
|
||||||
|
|
||||||
@@ -1793,7 +1794,7 @@ msgstr ""
|
|||||||
# ../src/startup.c:352
|
# ../src/startup.c:352
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr "възникна критична грешка, вероятно дължаща се на програмен дефект. Моля попълнете формуляра от файла BUGFORM и ни уведомете "
|
msgstr "възникна критична грешка, вероятно дължаща се на програмен дефект. Моля попълнете формуляра от файла BUGFORM и ни уведомете "
|
||||||
|
|
||||||
|
|||||||
1
po/bs.po
1
po/bs.po
@@ -8,6 +8,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2004-08-30 00:23+0200\n"
|
"PO-Revision-Date: 2004-08-30 00:23+0200\n"
|
||||||
"Last-Translator: Ahmet Mulalić <am@lugzdk.ba>\n"
|
"Last-Translator: Ahmet Mulalić <am@lugzdk.ba>\n"
|
||||||
"Language-Team: Bosanski <lugzdk@lugzdk.ba>\n"
|
"Language-Team: Bosanski <lugzdk@lugzdk.ba>\n"
|
||||||
|
"Language: bs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
5
po/ca.po
5
po/ca.po
@@ -14,6 +14,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2003-09-16 23:13+0200\n"
|
"PO-Revision-Date: 2003-09-16 23:13+0200\n"
|
||||||
"Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n"
|
"Last-Translator: Ernest Adrogué <eadrogue@gmx.net>\n"
|
||||||
"Language-Team: Catalan <ca@dodds.net>\n"
|
"Language-Team: Catalan <ca@dodds.net>\n"
|
||||||
|
"Language: ca\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -494,7 +495,7 @@ msgstr "Window Maker ha rebut un senyal %i."
|
|||||||
#: ../src/dialog.c:1632
|
#: ../src/dialog.c:1632
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Aquest error fatal probablement ha estat causat per un \"bug\". Si us plau, "
|
" Aquest error fatal probablement ha estat causat per un \"bug\". Si us plau, "
|
||||||
@@ -1471,7 +1472,7 @@ msgstr "no s'ha pogut iniciar cap gestor de finestres alternatiu. S'avorta."
|
|||||||
|
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"s'ha produït un error fatal, probablement a causa d'un \"bug\". Si us plau, "
|
"s'ha produït un error fatal, probablement a causa d'un \"bug\". Si us plau, "
|
||||||
|
|||||||
5
po/cs.po
5
po/cs.po
@@ -15,6 +15,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-10-14 20:29+53:00\n"
|
"PO-Revision-Date: 2001-10-14 20:29+53:00\n"
|
||||||
"Last-Translator: Jiří Hnídek <jiri.hnidek@vslib.cz>\n"
|
"Last-Translator: Jiří Hnídek <jiri.hnidek@vslib.cz>\n"
|
||||||
"Language-Team: czech <cs@li.org>\n"
|
"Language-Team: czech <cs@li.org>\n"
|
||||||
|
"Language: cs\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: unknown\n"
|
"Content-Transfer-Encoding: unknown\n"
|
||||||
@@ -477,7 +478,7 @@ msgstr "Window Maker přijal signál %i."
|
|||||||
#: ../src/dialog.c:1632
|
#: ../src/dialog.c:1632
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Tato závažná chyba se vyskytla pravděpodobně v důsledku chyby v kódu Window "
|
" Tato závažná chyba se vyskytla pravděpodobně v důsledku chyby v kódu Window "
|
||||||
@@ -1392,7 +1393,7 @@ msgstr "alternativního správce oken nelze odstartovat. Konec."
|
|||||||
|
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"fatální chyba, pravděpodobně chyba ve Window Makeru. Prosím vyplňte soubor "
|
"fatální chyba, pravděpodobně chyba ve Window Makeru. Prosím vyplňte soubor "
|
||||||
|
|||||||
5
po/da.po
5
po/da.po
@@ -9,6 +9,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2002-02-20 20:56+0100\n"
|
"PO-Revision-Date: 2002-02-20 20:56+0100\n"
|
||||||
"Last-Translator: Birger Langkjer <birger.langkjer@image.dk>\n"
|
"Last-Translator: Birger Langkjer <birger.langkjer@image.dk>\n"
|
||||||
"Language-Team: Danish <sslug-locale@sslug.dk>\n"
|
"Language-Team: Danish <sslug-locale@sslug.dk>\n"
|
||||||
|
"Language: da\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
@@ -544,7 +545,7 @@ msgstr "Window Maker modtog signal %i"
|
|||||||
# ../src/dialog.c:1450
|
# ../src/dialog.c:1450
|
||||||
#: ../src/dialog.c:1790
|
#: ../src/dialog.c:1790
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"en fatal fejl er opstået, sikkert pga. en bug. Udfyld venligst den vedlagte "
|
"en fatal fejl er opstået, sikkert pga. en bug. Udfyld venligst den vedlagte "
|
||||||
@@ -1685,7 +1686,7 @@ msgstr "det lykkedes ikke at starte alternativ vindueshåndtering. Afbryder."
|
|||||||
# ../src/startup.c:349
|
# ../src/startup.c:349
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"en fatal fejl er opstået, sikkert pga. en bug. Udfyld venligst den vedlagte "
|
"en fatal fejl er opstået, sikkert pga. en bug. Udfyld venligst den vedlagte "
|
||||||
|
|||||||
3
po/de.po
3
po/de.po
@@ -16,6 +16,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2004-11-08 22:58+0100\n"
|
"PO-Revision-Date: 2004-11-08 22:58+0100\n"
|
||||||
"Last-Translator: shlomme@gmx.net\n"
|
"Last-Translator: shlomme@gmx.net\n"
|
||||||
"Language-Team: German\n"
|
"Language-Team: German\n"
|
||||||
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -471,7 +472,7 @@ msgstr "Window Maker erhielt Signal %i"
|
|||||||
|
|
||||||
#: ../src/dialog.c:1602
|
#: ../src/dialog.c:1602
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Dieser fatale Fehler trat möglicherweise wegen eines Bugs auf. Bitte füllen "
|
" Dieser fatale Fehler trat möglicherweise wegen eines Bugs auf. Bitte füllen "
|
||||||
|
|||||||
3
po/el.po
3
po/el.po
@@ -10,6 +10,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1999-09-04 01:39+0300\n"
|
"PO-Revision-Date: 1999-09-04 01:39+0300\n"
|
||||||
"Last-Translator: Nikolaos Papagrigoriou <papanikos@freemail.gr>\n"
|
"Last-Translator: Nikolaos Papagrigoriou <papanikos@freemail.gr>\n"
|
||||||
"Language-Team: Greek\n"
|
"Language-Team: Greek\n"
|
||||||
|
"Language: el\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
@@ -1173,7 +1174,7 @@ msgstr "αποτυχία εκκίνησης εναλλακτικού διαχε
|
|||||||
|
|
||||||
#: ../src/startup.c:349
|
#: ../src/startup.c:349
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|||||||
2
po/es.po
2
po/es.po
@@ -491,7 +491,7 @@ msgstr "Window Maker recibió la señal %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1576
|
#: ../src/dialog.c:1576
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Este error fatal ocurrió probablemente debido a un fallo.\n"
|
" Este error fatal ocurrió probablemente debido a un fallo.\n"
|
||||||
|
|||||||
2
po/et.po
2
po/et.po
@@ -487,7 +487,7 @@ msgstr "Window Maker võttis vastu signaali %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1573
|
#: ../src/dialog.c:1573
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" See fataalviga on arvatavasti põhjustatud programmi enese veast. Palun "
|
" See fataalviga on arvatavasti põhjustatud programmi enese veast. Palun "
|
||||||
|
|||||||
5
po/fi.po
5
po/fi.po
@@ -13,6 +13,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-09-03 21:56+03:00\n"
|
"PO-Revision-Date: 2001-09-03 21:56+03:00\n"
|
||||||
"Last-Translator: Tomi Kajala <tomi@iki.fi>\n"
|
"Last-Translator: Tomi Kajala <tomi@iki.fi>\n"
|
||||||
"Language-Team: Finnish <fi@li.org>\n"
|
"Language-Team: Finnish <fi@li.org>\n"
|
||||||
|
"Language: fi\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
@@ -465,7 +466,7 @@ msgstr "Window Maker vastaanotti signaalin %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1707
|
#: ../src/dialog.c:1707
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Tämä vakava virhe tapahtui luultavasti bugin johdosta. Ole hyvä ja täytä "
|
" Tämä vakava virhe tapahtui luultavasti bugin johdosta. Ole hyvä ja täytä "
|
||||||
@@ -1389,7 +1390,7 @@ msgstr "vaihtoehtoisen ikkunamanagerin käynnistys epäonnistui. Keskeytetään.
|
|||||||
|
|
||||||
#: ../src/startup.c:412
|
#: ../src/startup.c:412
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"vakava virhe on tapahtunut - luultavasti bugin johdosta. Ole hyvä ja täytä "
|
"vakava virhe on tapahtunut - luultavasti bugin johdosta. Ole hyvä ja täytä "
|
||||||
|
|||||||
3
po/fr.po
3
po/fr.po
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2002-01-21 07:08+0100\n"
|
"PO-Revision-Date: 2002-01-21 07:08+0100\n"
|
||||||
"Last-Translator: Antoine Hulin <antoine.hulin@origan.fdn.org>\n"
|
"Last-Translator: Antoine Hulin <antoine.hulin@origan.fdn.org>\n"
|
||||||
"Language-Team: French <fr@li.org>\n"
|
"Language-Team: French <fr@li.org>\n"
|
||||||
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
@@ -481,7 +482,7 @@ msgstr "Window Maker a reçu le signal %i."
|
|||||||
#: ../src/dialog.c:1632
|
#: ../src/dialog.c:1632
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Cette erreur est probablement due à un bogue. Remplissez le formulaire "
|
" Cette erreur est probablement due à un bogue. Remplissez le formulaire "
|
||||||
|
|||||||
8
po/fy.po
8
po/fy.po
@@ -2086,11 +2086,3 @@ msgstr "toets %s (0x%x) generearret sawol %s as %s, wat ûnsinnich is"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't convert keymask 0x%04X to a shortcut label"
|
msgid "Can't convert keymask 0x%04X to a shortcut label"
|
||||||
msgstr "Kin 'keymask' 0x%04X net omsette nei fluchtoetsbeneaming"
|
msgstr "Kin 'keymask' 0x%04X net omsette nei fluchtoetsbeneaming"
|
||||||
|
|
||||||
# Keep next entry for wmaker-0.95.7
|
|
||||||
msgid ""
|
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
|
||||||
"BUGFORM and report it to %s."
|
|
||||||
msgstr ""
|
|
||||||
" Dizze ûnwerstelbere flater trede mooglik op troch in bug. Folje a.j.w. "
|
|
||||||
"bygeand BUGFORM yn, en rapportearje it oan %s."
|
|
||||||
|
|||||||
5
po/gl.po
5
po/gl.po
@@ -14,6 +14,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2000-10-15 17:57+0200\n"
|
"PO-Revision-Date: 2000-10-15 17:57+0200\n"
|
||||||
"Last-Translator: Jesús Bravo Álvarez <jba@pobox.com>\n"
|
"Last-Translator: Jesús Bravo Álvarez <jba@pobox.com>\n"
|
||||||
"Language-Team: Galician <trasno@ceu.fi.udc.es>\n"
|
"Language-Team: Galician <trasno@ceu.fi.udc.es>\n"
|
||||||
|
"Language: gl\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -359,7 +360,7 @@ msgstr "O Window Maker recibiu un sinal %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1564
|
#: ../src/dialog.c:1564
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Este erro grave ocorreu probablemente por mor dun erro do programa. Por "
|
" Este erro grave ocorreu probablemente por mor dun erro do programa. Por "
|
||||||
@@ -1240,7 +1241,7 @@ msgstr "fallou o inicio dun xestor de fiestras alternativo. Abortando."
|
|||||||
|
|
||||||
#: ../src/startup.c:352
|
#: ../src/startup.c:352
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ocorreu un erro moi grave, probablemente por mor dun erro de programación. "
|
"ocorreu un erro moi grave, probablemente por mor dun erro de programación. "
|
||||||
|
|||||||
1
po/hr.po
1
po/hr.po
@@ -8,6 +8,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1998-08-18 16:28:19+0200\n"
|
"PO-Revision-Date: 1998-08-18 16:28:19+0200\n"
|
||||||
"Last-Translator: Toni Bilić <tbilic@oliver.efos.hr>\n"
|
"Last-Translator: Toni Bilić <tbilic@oliver.efos.hr>\n"
|
||||||
"Language-Team: Croatian\n"
|
"Language-Team: Croatian\n"
|
||||||
|
"Language: hr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|||||||
6
po/hu.po
6
po/hu.po
@@ -11,7 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2014-02-18 00:23+0100\n"
|
"PO-Revision-Date: 2014-02-18 00:23+0100\n"
|
||||||
"Last-Translator: BALATON Zoltán <balaton@eik.bme.hu>\n"
|
"Last-Translator: BALATON Zoltán <balaton@eik.bme.hu>\n"
|
||||||
"Language-Team: Hungarian\n"
|
"Language-Team: Hungarian\n"
|
||||||
"Language: \n"
|
"Language: hu\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -491,7 +491,7 @@ msgstr "A Window Maker %i jelzést kapott."
|
|||||||
|
|
||||||
#: ../../wmaker-crm/src/dialog.c:1599
|
#: ../../wmaker-crm/src/dialog.c:1599
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr " Ezt a végzetes hibát valószínűleg egy programozási hiba okozta. Légy szíves töltsd ki a mellékelt BUGFORM kérdőívet és küldd el a %s e-mail címre!"
|
msgstr " Ezt a végzetes hibát valószínűleg egy programozási hiba okozta. Légy szíves töltsd ki a mellékelt BUGFORM kérdőívet és küldd el a %s e-mail címre!"
|
||||||
|
|
||||||
@@ -800,7 +800,7 @@ msgstr "a beállítás adatbázist tartalmazó egységet lecsatolták. \"--stati
|
|||||||
msgid "Inotify: Reading config files in defaults database."
|
msgid "Inotify: Reading config files in defaults database."
|
||||||
msgstr "Inotify: újraolvasom a konfigurációs fájlokat a beállítás adatbázisból."
|
msgstr "Inotify: újraolvasom a konfigurációs fájlokat a beállítás adatbázisból."
|
||||||
|
|
||||||
#. an error has occured
|
#. an error has occurred
|
||||||
#: ../../wmaker-crm/src/event.c:391
|
#: ../../wmaker-crm/src/event.c:391
|
||||||
msgid ""
|
msgid ""
|
||||||
"select failed. The inotify instance will be closed. Changes to the defaults "
|
"select failed. The inotify instance will be closed. Changes to the defaults "
|
||||||
|
|||||||
3
po/it.po
3
po/it.po
@@ -11,6 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2005-03-04 16:33+0000\n"
|
"PO-Revision-Date: 2005-03-04 16:33+0000\n"
|
||||||
"Last-Translator: Marco Colombo <m.colombo@ed.ac.uk>\n"
|
"Last-Translator: Marco Colombo <m.colombo@ed.ac.uk>\n"
|
||||||
"Language-Team: Italian <tp@lists.linux.it@li.org>\n"
|
"Language-Team: Italian <tp@lists.linux.it@li.org>\n"
|
||||||
|
"Language: it\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -526,7 +527,7 @@ msgstr "Window Maker ha ricevuto il segnale %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1768
|
#: ../src/dialog.c:1768
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Questo errore fatale è probabilmente dovuto ad un bug. Si prega di "
|
" Questo errore fatale è probabilmente dovuto ad un bug. Si prega di "
|
||||||
|
|||||||
2
po/ja.po
2
po/ja.po
@@ -460,7 +460,7 @@ msgstr "Window Maker は シグナル %i を受けました."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1576
|
#: ../src/dialog.c:1576
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"この致命的なエラーはバグによるものかもしれません. 同梱のバグフォームを使って "
|
"この致命的なエラーはバグによるものかもしれません. 同梱のバグフォームを使って "
|
||||||
|
|||||||
5
po/ko.po
5
po/ko.po
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2013-08-12 23:57+0900\n"
|
"PO-Revision-Date: 2013-08-12 23:57+0900\n"
|
||||||
"Last-Translator: \n"
|
"Last-Translator: \n"
|
||||||
"Language-Team: Korean\n"
|
"Language-Team: Korean\n"
|
||||||
|
"Language: ko\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -471,7 +472,7 @@ msgstr "윈도우 메이커가 %i 신호를 받음."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1596
|
#: ../src/dialog.c:1596
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"버그로 인해 치명적인 오류가 발생했습니다. BUGFORM을 작성하여 "
|
"버그로 인해 치명적인 오류가 발생했습니다. BUGFORM을 작성하여 "
|
||||||
@@ -1953,7 +1954,7 @@ msgstr "마지막으로 사용됨"
|
|||||||
#~ msgstr "대체용 창 관리자를 실행 실패. 종료."
|
#~ msgstr "대체용 창 관리자를 실행 실패. 종료."
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "a fatal error has occured, probably due to a bug. Please fill the "
|
#~ "a fatal error has occurred, probably due to a bug. Please fill the "
|
||||||
#~ "included BUGFORM and report it."
|
#~ "included BUGFORM and report it."
|
||||||
#~ msgstr ""
|
#~ msgstr ""
|
||||||
#~ "치명적인 오류 발생, 아마도 버그인 것 같습니다. BUGFORM을 작성해 보내주시"
|
#~ "치명적인 오류 발생, 아마도 버그인 것 같습니다. BUGFORM을 작성해 보내주시"
|
||||||
|
|||||||
5
po/ms.po
5
po/ms.po
@@ -10,6 +10,7 @@ msgstr ""
|
|||||||
"Last-Translator: Hasbullah Bin Pit <sebol@ikhlas.com>\n"
|
"Last-Translator: Hasbullah Bin Pit <sebol@ikhlas.com>\n"
|
||||||
"Language-Team: Projek Gabai (Bahasa Melayu) <gabai-penyumbang@lists."
|
"Language-Team: Projek Gabai (Bahasa Melayu) <gabai-penyumbang@lists."
|
||||||
"sourceforge.net>\n"
|
"sourceforge.net>\n"
|
||||||
|
"Language: ms\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -456,7 +457,7 @@ msgstr "Window Maker menerima isyarat %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1786
|
#: ../src/dialog.c:1786
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Ralat fatal ini berlaku kemungkinan disebabkan pepijat. Sila ini BUGFORM "
|
" Ralat fatal ini berlaku kemungkinan disebabkan pepijat. Sila ini BUGFORM "
|
||||||
@@ -1414,7 +1415,7 @@ msgstr "gagl menghidupkan pengurus tetingkap lain. Diabaikan."
|
|||||||
|
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"ralat fatal berlaku, mungkin kerana pepijat. Sila ini BUGFORM yang "
|
"ralat fatal berlaku, mungkin kerana pepijat. Sila ini BUGFORM yang "
|
||||||
|
|||||||
8
po/nl.po
8
po/nl.po
@@ -2090,11 +2090,3 @@ msgstr "toets %s (0x%x) genereert zowel %s als %s, wat onzinnig is"
|
|||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't convert keymask 0x%04X to a shortcut label"
|
msgid "Can't convert keymask 0x%04X to a shortcut label"
|
||||||
msgstr "Kan 'keymask' 0x%04X niet omzetten naar sneltoetsbenaming"
|
msgstr "Kan 'keymask' 0x%04X niet omzetten naar sneltoetsbenaming"
|
||||||
|
|
||||||
# Keep next entry for wmaker-0.95.7
|
|
||||||
msgid ""
|
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
|
||||||
"BUGFORM and report it to %s."
|
|
||||||
msgstr ""
|
|
||||||
" Deze onherstelbare fout trad mogelijk op door 'n bug. Vul a.u.b. "
|
|
||||||
"bijgaand BUGFORM in, en rapporteer 't aan %s."
|
|
||||||
|
|||||||
1
po/no.po
1
po/no.po
@@ -9,6 +9,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1998-05-23 H12:54+0200\n"
|
"PO-Revision-Date: 1998-05-23 H12:54+0200\n"
|
||||||
"Last-Translator: Marcus Ramberg <draven@mo.himolde.no>\n"
|
"Last-Translator: Marcus Ramberg <draven@mo.himolde.no>\n"
|
||||||
"Language-Team: Norwegian \n"
|
"Language-Team: Norwegian \n"
|
||||||
|
"Language: no\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
3
po/pl.po
3
po/pl.po
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2003-04-15 20:21+0200\n"
|
"PO-Revision-Date: 2003-04-15 20:21+0200\n"
|
||||||
"Last-Translator: Piotr Dembiński <pdemb@fanthom.math.put.poznan.pl>\n"
|
"Last-Translator: Piotr Dembiński <pdemb@fanthom.math.put.poznan.pl>\n"
|
||||||
"Language-Team: Polish <pl@li.org>\n"
|
"Language-Team: Polish <pl@li.org>\n"
|
||||||
|
"Language: pl\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
@@ -982,7 +983,7 @@ msgid "crashed while trying to do some post-crash cleanup. Aborting immediatelly
|
|||||||
msgstr "załamanie podczas próby uporządkowania po załamaniu. Wyjście awaryjne."
|
msgstr "załamanie podczas próby uporządkowania po załamaniu. Wyjście awaryjne."
|
||||||
|
|
||||||
#: ../src/startup.c:304
|
#: ../src/startup.c:304
|
||||||
msgid "a fatal error has occured, probably due to a bug. Please fill the included BUGFORM and report it."
|
msgid "a fatal error has occurred, probably due to a bug. Please fill the included BUGFORM and report it."
|
||||||
msgstr "wystąpił poważny błąd, prawdopodobnie pluskwa. Prosimy o wypełnienie formularza BUGFORM i wysłanie go do nas."
|
msgstr "wystąpił poważny błąd, prawdopodobnie pluskwa. Prosimy o wypełnienie formularza BUGFORM i wysłanie go do nas."
|
||||||
|
|
||||||
#. restart another window manager so that the X session doesn't
|
#. restart another window manager so that the X session doesn't
|
||||||
|
|||||||
5
po/pt.po
5
po/pt.po
@@ -12,6 +12,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2000-06-06 14:11-03:00\n"
|
"PO-Revision-Date: 2000-06-06 14:11-03:00\n"
|
||||||
"Last-Translator: Marcia Norie Nakaza <norie@conectiva.com.br>\n"
|
"Last-Translator: Marcia Norie Nakaza <norie@conectiva.com.br>\n"
|
||||||
"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br> \n"
|
"Language-Team: Brazilian Portuguese <ldp-br@bazar.conectiva.com.br> \n"
|
||||||
|
"Language: pt\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
@@ -352,7 +353,7 @@ msgstr "O Window Maker recebeu o sinal %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1564
|
#: ../src/dialog.c:1564
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Este erro fatal ocorreu provavelmente devido a uma falha.\n"
|
" Este erro fatal ocorreu provavelmente devido a uma falha.\n"
|
||||||
@@ -1230,7 +1231,7 @@ msgstr "tentativa de iniciar gerenciador alternativo falhou. Abortando."
|
|||||||
|
|
||||||
#: ../src/startup.c:352
|
#: ../src/startup.c:352
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"um erro fatal ocorreu, provavelmente devido a uma falha. Por favor preencha "
|
"um erro fatal ocorreu, provavelmente devido a uma falha. Por favor preencha "
|
||||||
|
|||||||
1
po/ro.po
1
po/ro.po
@@ -6,6 +6,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1998-09-08 22:00:00-0300\n"
|
"PO-Revision-Date: 1998-09-08 22:00:00-0300\n"
|
||||||
"Last-Translator: AndreiVuta(gigi_man@manag.pub.ro)\n"
|
"Last-Translator: AndreiVuta(gigi_man@manag.pub.ro)\n"
|
||||||
"Language-Team: Romanian \n"
|
"Language-Team: Romanian \n"
|
||||||
|
"Language: ro\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
5
po/ru.po
5
po/ru.po
@@ -16,6 +16,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2002-10-04 08:56+0300\n"
|
"PO-Revision-Date: 2002-10-04 08:56+0300\n"
|
||||||
"Last-Translator: awn@bcs.zp.ua\n"
|
"Last-Translator: awn@bcs.zp.ua\n"
|
||||||
"Language-Team: Russian\n"
|
"Language-Team: Russian\n"
|
||||||
|
"Language: ru\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -487,7 +488,7 @@ msgstr "Window Maker: получен сигнал %i."
|
|||||||
#: ../src/dialog.c:1632
|
#: ../src/dialog.c:1632
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Эта критическая ошибка, возможно, является результатом ошибки в программе. "
|
" Эта критическая ошибка, возможно, является результатом ошибки в программе. "
|
||||||
@@ -1438,7 +1439,7 @@ msgstr "не удалось запустить альтернативный ди
|
|||||||
|
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"возникла критическая ошибка. Возможно, это результат ошибки в программе. "
|
"возникла критическая ошибка. Возможно, это результат ошибки в программе. "
|
||||||
|
|||||||
5
po/sk.po
5
po/sk.po
@@ -21,6 +21,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2001-12-20 03:53+0100\n"
|
"PO-Revision-Date: 2001-12-20 03:53+0100\n"
|
||||||
"Last-Translator: Jan \"judas\" Tomka <judas@linux.sk>\n"
|
"Last-Translator: Jan \"judas\" Tomka <judas@linux.sk>\n"
|
||||||
"Language-Team: Slovak <sk@li.org>\n"
|
"Language-Team: Slovak <sk@li.org>\n"
|
||||||
|
"Language: sk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -498,7 +499,7 @@ msgstr "Window Maker prijal signál %i."
|
|||||||
#: ../src/dialog.c:1632
|
#: ../src/dialog.c:1632
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Táto fatálna chyba sa vyskytla "
|
"Táto fatálna chyba sa vyskytla "
|
||||||
@@ -1480,7 +1481,7 @@ msgstr "nepodarilo sa spustiť alternatívny manažér okien. Koniec."
|
|||||||
|
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"fatálna chyba nastala pravdepodobne v dôsledku chyby vo Window Makery. "
|
"fatálna chyba nastala pravdepodobne v dôsledku chyby vo Window Makery. "
|
||||||
|
|||||||
1
po/sv.po
1
po/sv.po
@@ -7,6 +7,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1997-06-02 18:29:09-0300\n"
|
"PO-Revision-Date: 1997-06-02 18:29:09-0300\n"
|
||||||
"Last-Translator: John <forgoil@rsn.hk-r.se>\n"
|
"Last-Translator: John <forgoil@rsn.hk-r.se>\n"
|
||||||
"Language-Team: Swedish \n"
|
"Language-Team: Swedish \n"
|
||||||
|
"Language: sv\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
1
po/tr.po
1
po/tr.po
@@ -4,6 +4,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1998-03-12 18:29:09+EET\n"
|
"PO-Revision-Date: 1998-03-12 18:29:09+EET\n"
|
||||||
"Last-Translator: KGF <kgf@wpi.edu>\n"
|
"Last-Translator: KGF <kgf@wpi.edu>\n"
|
||||||
"Language-Team: Turkish \n"
|
"Language-Team: Turkish \n"
|
||||||
|
"Language: tr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
|
|||||||
5
po/uk.po
5
po/uk.po
@@ -5,6 +5,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2005-09-06 08:56+0300\n"
|
"PO-Revision-Date: 2005-09-06 08:56+0300\n"
|
||||||
"Last-Translator: Victor Forsyuk <victor@ksi-linux.com>\n"
|
"Last-Translator: Victor Forsyuk <victor@ksi-linux.com>\n"
|
||||||
"Language-Team: KSI Linux Ukrainian <uk@ksi-linux.com>\n"
|
"Language-Team: KSI Linux Ukrainian <uk@ksi-linux.com>\n"
|
||||||
|
"Language: uk\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
@@ -479,7 +480,7 @@ msgstr "Window Maker: отримано сигнал %i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1790
|
#: ../src/dialog.c:1790
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
" Ця критична помилка, можливо, є результатом помилки в програмі. Будь ласка, "
|
" Ця критична помилка, можливо, є результатом помилки в програмі. Будь ласка, "
|
||||||
@@ -1448,7 +1449,7 @@ msgstr "не вдалось запустити альтернативний ме
|
|||||||
|
|
||||||
#: ../src/startup.c:419
|
#: ../src/startup.c:419
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"виникла критична помилка. Можливо, це результат помилки в програмі. Будь "
|
"виникла критична помилка. Можливо, це результат помилки в програмі. Будь "
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 1999-07-05 21:30+0800\n"
|
"PO-Revision-Date: 1999-07-05 21:30+0800\n"
|
||||||
"Last-Translator: Wang Jian <larkw@263.net>\n"
|
"Last-Translator: Wang Jian <larkw@263.net>\n"
|
||||||
"Language-Team: chinese <zh@li.org>\n"
|
"Language-Team: chinese <zh@li.org>\n"
|
||||||
|
"Language: zh_CN\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
@@ -300,7 +301,7 @@ msgstr "Window Maker收到信号%i."
|
|||||||
|
|
||||||
#: ../src/dialog.c:1450
|
#: ../src/dialog.c:1450
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"发生一个致命错误,也许是因为一个 bug.请填写好软件中包含的 BUGFORM 并向"
|
"发生一个致命错误,也许是因为一个 bug.请填写好软件中包含的 BUGFORM 并向"
|
||||||
@@ -1163,7 +1164,7 @@ msgstr "无法启动替代的窗口管理器.中止."
|
|||||||
|
|
||||||
#: ../src/startup.c:349
|
#: ../src/startup.c:349
|
||||||
msgid ""
|
msgid ""
|
||||||
"a fatal error has occured, probably due to a bug. Please fill the included "
|
"a fatal error has occurred, probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it."
|
"BUGFORM and report it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"发生一个致命错误,也许是因为一个 bug.请填写好软件中包含的 BUGFORM 并报告 bug."
|
"发生一个致命错误,也许是因为一个 bug.请填写好软件中包含的 BUGFORM 并报告 bug."
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ msgstr ""
|
|||||||
"PO-Revision-Date: 2005-01-11 17:45+0800\n"
|
"PO-Revision-Date: 2005-01-11 17:45+0800\n"
|
||||||
"Last-Translator: Li Wei Jih <lwj83@cs.ccu.edu.tw>\n"
|
"Last-Translator: Li Wei Jih <lwj83@cs.ccu.edu.tw>\n"
|
||||||
"Language-Team: chinese <zh@li.org>\n"
|
"Language-Team: chinese <zh@li.org>\n"
|
||||||
|
"Language: zh_TW\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8-bit\n"
|
"Content-Transfer-Encoding: 8-bit\n"
|
||||||
@@ -512,7 +513,7 @@ msgstr "Window Maker 收到訊號 %i。"
|
|||||||
|
|
||||||
#: ../src/dialog.c:1768
|
#: ../src/dialog.c:1768
|
||||||
msgid ""
|
msgid ""
|
||||||
" This fatal error occured probably due to a bug. Please fill the included "
|
" This fatal error occurred probably due to a bug. Please fill the included "
|
||||||
"BUGFORM and report it to %s."
|
"BUGFORM and report it to %s."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"這個嚴重錯誤可能是因為程式錯誤所致。請填寫附帶的 BUGFORM 並向 "
|
"這個嚴重錯誤可能是因為程式錯誤所致。請填寫附帶的 BUGFORM 並向 "
|
||||||
@@ -1927,7 +1928,7 @@ msgstr "刪除最後的工作區"
|
|||||||
#~ msgstr "另一套視窗管理員啟動失敗。放棄中。"
|
#~ msgstr "另一套視窗管理員啟動失敗。放棄中。"
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "a fatal error has occured, probably due to a bug. Please fill the "
|
#~ "a fatal error has occurred, probably due to a bug. Please fill the "
|
||||||
#~ "included BUGFORM and report it."
|
#~ "included BUGFORM and report it."
|
||||||
#~ msgstr "發生嚴重錯誤,可能因為程式錯誤。請填寫 BUGFORM 並提出報告。"
|
#~ msgstr "發生嚴重錯誤,可能因為程式錯誤。請填寫 BUGFORM 並提出報告。"
|
||||||
|
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ while [ $# -gt 0 ]; do
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
-h|-help|--help) print_help ;;
|
-h|-help|--help) print_help ;;
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
arg_error "argument '$1' is not understood"
|
arg_error "argument '$1' is not understood"
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ while [ $# -gt 0 ]; do
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
-h|-help|--help) print_help ;;
|
-h|-help|--help) print_help ;;
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
[ "x$trans_dir" != "x" ] || arg_error "only 1 directory can be specified for translation"
|
[ "x$trans_dir" != "x" ] || arg_error "only 1 directory can be specified for translation"
|
||||||
@@ -226,7 +226,7 @@ END {
|
|||||||
error_count++;
|
error_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
# If error(s) occured, use non-zero status to stop 'make'
|
# If error(s) occurred, use non-zero status to stop 'make'
|
||||||
# We use 3 to distinguish for awk's possible own problems (status 1 or 2)
|
# We use 3 to distinguish for awk's possible own problems (status 1 or 2)
|
||||||
if (error_count > 0) { exit 3 }
|
if (error_count > 0) { exit 3 }
|
||||||
}"
|
}"
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ $1"
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
-h|-help|--help) print_help ;;
|
-h|-help|--help) print_help ;;
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
arg_error "argument '$1' is not understood"
|
arg_error "argument '$1' is not understood"
|
||||||
|
|||||||
@@ -119,7 +119,7 @@ while [ $# -gt 0 ]; do
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
-h|-help|--help) print_help ;;
|
-h|-help|--help) print_help ;;
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
[ -z "$input_file" ] || arg_error "only 1 man page can be specified"
|
[ -z "$input_file" ] || arg_error "only 1 man page can be specified"
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ while [ $# -gt 0 ]; do
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
-h|-help|--help) print_help ;;
|
-h|-help|--help) print_help ;;
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
[ -r "$1" ] || arg_error "source file \"$1\" is not readable"
|
[ -r "$1" ] || arg_error "source file \"$1\" is not readable"
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ while [ $# -gt 0 ]; do
|
|||||||
project_version="$1"
|
project_version="$1"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
[ "x$lang_file" = "x" ] || arg_error "only 1 po file can be specified, not \"$lang_file\" and \"$1\""
|
[ "x$lang_file" = "x" ] || arg_error "only 1 po file can be specified, not \"$lang_file\" and \"$1\""
|
||||||
|
|||||||
@@ -151,7 +151,7 @@ while [ $# -gt 0 ]; do
|
|||||||
project_version="$1"
|
project_version="$1"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
[ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\""
|
[ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\""
|
||||||
@@ -903,7 +903,7 @@ function execute_commands(line, replaced_line, command) {
|
|||||||
# Variable and Conditional commands ########################################
|
# Variable and Conditional commands ########################################
|
||||||
} else if (command == "value") {
|
} else if (command == "value") {
|
||||||
if (variable[cmdargs] == "") {
|
if (variable[cmdargs] == "") {
|
||||||
report_error("variable '" cmdargs "' is unknow, for @value at line " NR);
|
report_error("variable '" cmdargs "' is unknown, for @value at line " NR);
|
||||||
}
|
}
|
||||||
line = variable[cmdargs] line;
|
line = variable[cmdargs] line;
|
||||||
|
|
||||||
@@ -913,7 +913,7 @@ function execute_commands(line, replaced_line, command) {
|
|||||||
line = "";
|
line = "";
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
report_error("unknow command @" command " at line " NR);
|
report_error("unknown command @" command " at line " NR);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -971,7 +971,7 @@ function process_end(line) {
|
|||||||
par_indent = 0;
|
par_indent = 0;
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
report_error("unknow command @end " line " at line " NR);
|
report_error("unknown command @end " line " at line " NR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -108,7 +108,7 @@ while [ $# -gt 0 ]; do
|
|||||||
|
|
||||||
-h|-help|--help) print_help ;;
|
-h|-help|--help) print_help ;;
|
||||||
-o) shift ; output_file="$1" ;;
|
-o) shift ; output_file="$1" ;;
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
[ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\""
|
[ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\""
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ while [ $# -gt 0 ]; do
|
|||||||
list_replaces="$list_replaces $1"
|
list_replaces="$list_replaces $1"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
[ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\""
|
[ "x$input_file" = "x" ] || arg_error "only 1 input file can be specified, not \"$input_file\" and \"$1\""
|
||||||
|
|||||||
@@ -93,7 +93,7 @@ while [ $# -gt 0 ]; do
|
|||||||
;;
|
;;
|
||||||
|
|
||||||
-h|-help|--help) print_help ;;
|
-h|-help|--help) print_help ;;
|
||||||
-*) arg_error "unknow option '$1'" ;;
|
-*) arg_error "unknown option '$1'" ;;
|
||||||
|
|
||||||
*)
|
*)
|
||||||
[ -z "$edit_file" ] || arg_error "only 1 file to modify can be specified"
|
[ -z "$edit_file" ] || arg_error "only 1 file to modify can be specified"
|
||||||
|
|||||||
@@ -134,7 +134,7 @@ else
|
|||||||
nodist_wmaker_SOURCES = misc.hack_nf.c \
|
nodist_wmaker_SOURCES = misc.hack_nf.c \
|
||||||
xmodifier.hack_nf.c
|
xmodifier.hack_nf.c
|
||||||
|
|
||||||
CLEANFILES = $(nodist_wmaker_SOURCES)
|
CLEANFILES = $(nodist_wmaker_SOURCES) ../wmaker-rs/target
|
||||||
|
|
||||||
misc.hack_nf.c: misc.c $(top_srcdir)/script/nested-func-to-macro.sh
|
misc.hack_nf.c: misc.c $(top_srcdir)/script/nested-func-to-macro.sh
|
||||||
$(AM_V_GEN)$(top_srcdir)/script/nested-func-to-macro.sh \
|
$(AM_V_GEN)$(top_srcdir)/script/nested-func-to-macro.sh \
|
||||||
@@ -160,6 +160,7 @@ wmaker_LDADD = \
|
|||||||
$(top_builddir)/WINGs/libWINGs.la\
|
$(top_builddir)/WINGs/libWINGs.la\
|
||||||
$(top_builddir)/WINGs/libWUtil.la\
|
$(top_builddir)/WINGs/libWUtil.la\
|
||||||
$(top_builddir)/wrlib/libwraster.la\
|
$(top_builddir)/wrlib/libwraster.la\
|
||||||
|
$(top_builddir)/wmaker-rs/target/debug/libwmaker_rs.a\
|
||||||
@XLFLAGS@ \
|
@XLFLAGS@ \
|
||||||
@LIBXRANDR@ \
|
@LIBXRANDR@ \
|
||||||
@LIBXINERAMA@ \
|
@LIBXINERAMA@ \
|
||||||
|
|||||||
@@ -504,6 +504,12 @@ extern struct WPreferences {
|
|||||||
/****** Global Variables ******/
|
/****** Global Variables ******/
|
||||||
extern Display *dpy;
|
extern Display *dpy;
|
||||||
|
|
||||||
|
struct wmaker_global_variables_context {
|
||||||
|
XContext client_win;
|
||||||
|
XContext app_win;
|
||||||
|
XContext stack;
|
||||||
|
};
|
||||||
|
|
||||||
extern struct wmaker_global_variables {
|
extern struct wmaker_global_variables {
|
||||||
/* Tracking of the state of the program */
|
/* Tracking of the state of the program */
|
||||||
struct {
|
struct {
|
||||||
@@ -603,11 +609,7 @@ extern struct wmaker_global_variables {
|
|||||||
} atom;
|
} atom;
|
||||||
|
|
||||||
/* X Contexts */
|
/* X Contexts */
|
||||||
struct {
|
struct wmaker_global_variables_context context;
|
||||||
XContext client_win;
|
|
||||||
XContext app_win;
|
|
||||||
XContext stack;
|
|
||||||
} context;
|
|
||||||
|
|
||||||
/* X Extensions */
|
/* X Extensions */
|
||||||
struct {
|
struct {
|
||||||
@@ -666,4 +668,9 @@ extern const char WMNWorkspaceNameChanged[];
|
|||||||
|
|
||||||
extern const char WMNResetStacking[];
|
extern const char WMNResetStacking[];
|
||||||
|
|
||||||
|
|
||||||
|
/****** Accessors/mutators for Rust ******/
|
||||||
|
struct wmaker_global_variables_context *wGlobalGetContext();
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -148,7 +148,7 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
|
|||||||
wWindowUnfocus(old_focused);
|
wWindowUnfocus(old_focused);
|
||||||
|
|
||||||
if (oapp) {
|
if (oapp) {
|
||||||
wAppMenuUnmap(oapp->menu);
|
wAppMenuUnmap(wApplicationGetMenu(oapp));
|
||||||
if (wPreferences.highlight_active_app)
|
if (wPreferences.highlight_active_app)
|
||||||
wApplicationDeactivate(oapp);
|
wApplicationDeactivate(oapp);
|
||||||
}
|
}
|
||||||
@@ -165,7 +165,7 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
|
|||||||
|
|
||||||
/* remember last workspace where the app has been */
|
/* remember last workspace where the app has been */
|
||||||
if (napp)
|
if (napp)
|
||||||
napp->last_workspace = wwin->frame->workspace;
|
wApplicationSetLastWorkspace(napp, wwin->frame->workspace);
|
||||||
|
|
||||||
if (wwin->flags.mapped && !WFLAGP(wwin, no_focusable)) {
|
if (wwin->flags.mapped && !WFLAGP(wwin, no_focusable)) {
|
||||||
/* install colormap if colormap mode is lock mode */
|
/* install colormap if colormap mode is lock mode */
|
||||||
@@ -212,7 +212,7 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
|
|||||||
scr->focused_window = wwin;
|
scr->focused_window = wwin;
|
||||||
|
|
||||||
if (oapp && oapp != napp) {
|
if (oapp && oapp != napp) {
|
||||||
wAppMenuUnmap(oapp->menu);
|
wAppMenuUnmap(wApplicationGetMenu(oapp));
|
||||||
if (wPreferences.highlight_active_app)
|
if (wPreferences.highlight_active_app)
|
||||||
wApplicationDeactivate(oapp);
|
wApplicationDeactivate(oapp);
|
||||||
}
|
}
|
||||||
@@ -226,12 +226,12 @@ void wSetFocusTo(WScreen *scr, WWindow *wwin)
|
|||||||
|
|
||||||
if (napp && !wasfocused) {
|
if (napp && !wasfocused) {
|
||||||
#ifdef USER_MENU
|
#ifdef USER_MENU
|
||||||
wUserMenuRefreshInstances(napp->menu, wwin);
|
wUserMenuRefreshInstances(wApplicationGetMenu(napp), wwin);
|
||||||
#endif /* USER_MENU */
|
#endif /* USER_MENU */
|
||||||
|
|
||||||
/* kix: Only menu map with mouse, not alt+tab! */
|
/* kix: Only menu map with mouse, not alt+tab! */
|
||||||
if (wwin->flags.mapped)
|
if (wwin->flags.mapped)
|
||||||
wAppMenuMap(napp->menu, wwin);
|
wAppMenuMap(wApplicationGetMenu(napp), wwin);
|
||||||
}
|
}
|
||||||
if (napp && wPreferences.highlight_active_app)
|
if (napp && wPreferences.highlight_active_app)
|
||||||
wApplicationActivate(napp);
|
wApplicationActivate(napp);
|
||||||
@@ -1783,7 +1783,7 @@ void wHideOtherApplications(WWindow *awin)
|
|||||||
} else if (wwin->main_window != None && awin->main_window != wwin->main_window) {
|
} else if (wwin->main_window != None && awin->main_window != wwin->main_window) {
|
||||||
tapp = wApplicationOf(wwin->main_window);
|
tapp = wApplicationOf(wwin->main_window);
|
||||||
if (tapp) {
|
if (tapp) {
|
||||||
tapp->flags.skip_next_animation = 1;
|
wApplicationSetSkipNextAnimation(tapp, 1);
|
||||||
wHideApplication(tapp);
|
wHideApplication(tapp);
|
||||||
} else {
|
} else {
|
||||||
if (!WFLAGP(wwin, no_miniaturizable)) {
|
if (!WFLAGP(wwin, no_miniaturizable)) {
|
||||||
@@ -1811,37 +1811,39 @@ void wHideApplication(WApplication *wapp)
|
|||||||
wwarning("trying to hide a non grouped window");
|
wwarning("trying to hide a non grouped window");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!wapp->main_window_desc) {
|
if (!wApplicationGetMainWindowDesc(wapp)) {
|
||||||
wwarning("group leader not found for window group");
|
wwarning("group leader not found for window group");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
scr = wapp->main_window_desc->screen_ptr;
|
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
|
||||||
hadfocus = 0;
|
hadfocus = 0;
|
||||||
wlist = scr->focused_window;
|
wlist = scr->focused_window;
|
||||||
if (!wlist)
|
if (!wlist)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (wlist->main_window == wapp->main_window)
|
if (wlist->main_window == wApplicationGetMainWindow(wapp))
|
||||||
wapp->last_focused = wlist;
|
wApplicationSetLastFocused(wapp, wlist);
|
||||||
else
|
else
|
||||||
wapp->last_focused = NULL;
|
wApplicationSetLastFocused(wapp, NULL);
|
||||||
|
|
||||||
animate = !wapp->flags.skip_next_animation;
|
animate = !wApplicationGetSkipNextAnimation(wapp);
|
||||||
|
|
||||||
while (wlist) {
|
while (wlist) {
|
||||||
if (wlist->main_window == wapp->main_window) {
|
if (wlist->main_window == wApplicationGetMainWindow(wapp)) {
|
||||||
if (wlist->flags.focused)
|
if (wlist->flags.focused)
|
||||||
hadfocus = 1;
|
hadfocus = 1;
|
||||||
if (wapp->app_icon) {
|
if (wApplicationGetAppIcon(wapp)) {
|
||||||
hideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos,
|
hideWindow(wAppIconGetIcon(wApplicationGetAppIcon(wapp)),
|
||||||
wapp->app_icon->y_pos, wlist, animate);
|
wAppIconGetXPos(wApplicationGetAppIcon(wapp)),
|
||||||
|
wAppIconGetYPos(wApplicationGetAppIcon(wapp)),
|
||||||
|
wlist, animate);
|
||||||
animate = False;
|
animate = False;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wlist = wlist->prev;
|
wlist = wlist->prev;
|
||||||
}
|
}
|
||||||
|
|
||||||
wapp->flags.skip_next_animation = 0;
|
wApplicationSetSkipNextAnimation(wapp, 0);
|
||||||
|
|
||||||
if (hadfocus) {
|
if (hadfocus) {
|
||||||
if (wPreferences.focus_mode == WKF_CLICK) {
|
if (wPreferences.focus_mode == WKF_CLICK) {
|
||||||
@@ -1858,14 +1860,14 @@ void wHideApplication(WApplication *wapp)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
wapp->flags.hidden = 1;
|
wApplicationSetHidden(wapp, 1);
|
||||||
|
|
||||||
if (wPreferences.auto_arrange_icons)
|
if (wPreferences.auto_arrange_icons)
|
||||||
wArrangeIcons(scr, True);
|
wArrangeIcons(scr, True);
|
||||||
|
|
||||||
#ifdef HIDDENDOT
|
#ifdef HIDDENDOT
|
||||||
if (wapp->app_icon)
|
if (wApplicationGetAppIcon(wapp))
|
||||||
wAppIconPaint(wapp->app_icon);
|
wAppIconPaint(wApplicationGetAppIcon(wapp));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1914,7 +1916,7 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
|
|||||||
if (!wapp)
|
if (!wapp)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
scr = wapp->main_window_desc->screen_ptr;
|
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
|
||||||
wlist = scr->focused_window;
|
wlist = scr->focused_window;
|
||||||
if (!wlist)
|
if (!wlist)
|
||||||
return;
|
return;
|
||||||
@@ -1923,12 +1925,12 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
|
|||||||
while (wlist->prev)
|
while (wlist->prev)
|
||||||
wlist = wlist->prev;
|
wlist = wlist->prev;
|
||||||
|
|
||||||
animate = !wapp->flags.skip_next_animation;
|
animate = !wApplicationGetSkipNextAnimation(wapp);
|
||||||
|
|
||||||
while (wlist) {
|
while (wlist) {
|
||||||
next = wlist->next;
|
next = wlist->next;
|
||||||
|
|
||||||
if (wlist->main_window == wapp->main_window) {
|
if (wlist->main_window == wApplicationGetMainWindow(wapp)) {
|
||||||
if (wlist->flags.focused)
|
if (wlist->flags.focused)
|
||||||
focused = wlist;
|
focused = wlist;
|
||||||
else if (!focused || !focused->flags.focused)
|
else if (!focused || !focused->flags.focused)
|
||||||
@@ -1968,8 +1970,8 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
|
|||||||
}
|
}
|
||||||
WMPostNotificationName(WMNChangedState, wlist, "hide");
|
WMPostNotificationName(WMNChangedState, wlist, "hide");
|
||||||
} else if (wlist->flags.hidden) {
|
} else if (wlist->flags.hidden) {
|
||||||
unhideWindow(wapp->app_icon->icon, wapp->app_icon->x_pos,
|
unhideWindow(wAppIconGetIcon(wApplicationGetAppIcon(wapp)), wAppIconGetXPos(wApplicationGetAppIcon(wapp)),
|
||||||
wapp->app_icon->y_pos, wlist, animate, bringToCurrentWS);
|
wAppIconGetYPos(wApplicationGetAppIcon(wapp)), wlist, animate, bringToCurrentWS);
|
||||||
animate = False;
|
animate = False;
|
||||||
} else {
|
} else {
|
||||||
if (bringToCurrentWS && wlist->frame->workspace != scr->current_workspace)
|
if (bringToCurrentWS && wlist->frame->workspace != scr->current_workspace)
|
||||||
@@ -1981,21 +1983,21 @@ void wUnhideApplication(WApplication *wapp, Bool miniwindows, Bool bringToCurren
|
|||||||
wlist = next;
|
wlist = next;
|
||||||
}
|
}
|
||||||
|
|
||||||
wapp->flags.skip_next_animation = 0;
|
wApplicationSetSkipNextAnimation(wapp, 0);
|
||||||
wapp->flags.hidden = 0;
|
wApplicationSetHidden(wapp, 0);
|
||||||
|
|
||||||
if (wapp->last_focused && wapp->last_focused->flags.mapped) {
|
if (wApplicationGetLastWorkspace(wapp) && wApplicationGetLastFocused(wapp)->flags.mapped) {
|
||||||
wRaiseFrame(wapp->last_focused->frame->core);
|
wRaiseFrame(wApplicationGetLastFocused(wapp)->frame->core);
|
||||||
wSetFocusTo(scr, wapp->last_focused);
|
wSetFocusTo(scr, wApplicationGetLastFocused(wapp));
|
||||||
} else if (focused) {
|
} else if (focused) {
|
||||||
wSetFocusTo(scr, focused);
|
wSetFocusTo(scr, focused);
|
||||||
}
|
}
|
||||||
wapp->last_focused = NULL;
|
wApplicationSetLastFocused(wapp, NULL);
|
||||||
if (wPreferences.auto_arrange_icons)
|
if (wPreferences.auto_arrange_icons)
|
||||||
wArrangeIcons(scr, True);
|
wArrangeIcons(scr, True);
|
||||||
|
|
||||||
#ifdef HIDDENDOT
|
#ifdef HIDDENDOT
|
||||||
wAppIconPaint(wapp->app_icon);
|
wAppIconPaint(wApplicationGetAppIcon(wapp));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2073,7 +2075,7 @@ void wArrangeIcons(WScreen *scr, Bool arrangeAll)
|
|||||||
if (scr->dock) {
|
if (scr->dock) {
|
||||||
int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE;
|
int offset = wPreferences.icon_size + DOCK_EXTRA_SPACE;
|
||||||
|
|
||||||
if (scr->dock->on_right_side)
|
if (wDockIsOnRightSide(scr->dock))
|
||||||
area.x2 -= offset;
|
area.x2 -= offset;
|
||||||
else
|
else
|
||||||
area.x1 += offset;
|
area.x1 += offset;
|
||||||
@@ -2128,20 +2130,20 @@ void wArrangeIcons(WScreen *scr, Bool arrangeAll)
|
|||||||
/* arrange application icons */
|
/* arrange application icons */
|
||||||
aicon = scr->app_icon_list;
|
aicon = scr->app_icon_list;
|
||||||
/* reverse them to avoid unnecessarily sliding of icons */
|
/* reverse them to avoid unnecessarily sliding of icons */
|
||||||
while (aicon && aicon->next)
|
while (aicon && wAppIconGetNext(aicon))
|
||||||
aicon = aicon->next;
|
aicon = wAppIconGetNext(aicon);
|
||||||
|
|
||||||
while (aicon) {
|
while (aicon) {
|
||||||
if (!aicon->docked) {
|
if (!wAppIconIsDocked(aicon)) {
|
||||||
/* CHECK: can icon be NULL here ? */
|
/* CHECK: can icon be NULL here ? */
|
||||||
/* The intention here is to place the AppIcon on the head that
|
/* The intention here is to place the AppIcon on the head that
|
||||||
* contains most of the applications _main_ window. */
|
* contains most of the applications _main_ window. */
|
||||||
head = wGetHeadForWindow(aicon->icon->owner);
|
head = wGetHeadForWindow(wAppIconGetIcon(aicon)->owner);
|
||||||
|
|
||||||
if (aicon->x_pos != X || aicon->y_pos != Y) {
|
if (wAppIconGetXPos(aicon) != X || wAppIconGetYPos(aicon) != Y) {
|
||||||
#ifdef USE_ANIMATIONS
|
#ifdef USE_ANIMATIONS
|
||||||
if (!wPreferences.no_animations)
|
if (!wPreferences.no_animations)
|
||||||
slide_window(aicon->icon->core->window, aicon->x_pos, aicon->y_pos, X, Y);
|
slide_window(wAppIconGetIcon(aicon)->core->window, wAppIconGetXPos(aicon), wAppIconGetYPos(aicon), X, Y);
|
||||||
#endif /* USE_ANIMATIONS */
|
#endif /* USE_ANIMATIONS */
|
||||||
}
|
}
|
||||||
wAppIconMove(aicon, X, Y);
|
wAppIconMove(aicon, X, Y);
|
||||||
@@ -2151,7 +2153,7 @@ void wArrangeIcons(WScreen *scr, Bool arrangeAll)
|
|||||||
vars[head].si++;
|
vars[head].si++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
aicon = aicon->prev;
|
aicon = wAppIconGetPrev(aicon);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* arrange miniwindows */
|
/* arrange miniwindows */
|
||||||
@@ -2243,7 +2245,7 @@ void wMakeWindowVisible(WWindow *wwin)
|
|||||||
app = wApplicationOf(wwin->main_window);
|
app = wApplicationOf(wwin->main_window);
|
||||||
if (app) {
|
if (app) {
|
||||||
/* trick to get focus to this window */
|
/* trick to get focus to this window */
|
||||||
app->last_focused = wwin;
|
wApplicationSetLastFocused(app, wwin);
|
||||||
wUnhideApplication(app, False, False);
|
wUnhideApplication(app, False, False);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
469
src/appicon.c
469
src/appicon.c
@@ -55,6 +55,255 @@
|
|||||||
#include "xdnd.h"
|
#include "xdnd.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
struct WAppIcon {
|
||||||
|
short xindex;
|
||||||
|
short yindex;
|
||||||
|
struct WAppIcon *next;
|
||||||
|
struct WAppIcon *prev;
|
||||||
|
WIcon *icon;
|
||||||
|
int x_pos, y_pos; /* absolute screen coordinate */
|
||||||
|
char *command; /* command used to launch app */
|
||||||
|
#ifdef USE_DOCK_XDND
|
||||||
|
char *dnd_command; /* command to use when something is */
|
||||||
|
/* dropped on us */
|
||||||
|
#endif
|
||||||
|
char *paste_command; /* command to run when
|
||||||
|
* something is pasted */
|
||||||
|
char *wm_class;
|
||||||
|
char *wm_instance;
|
||||||
|
pid_t pid; /* for apps launched from the dock */
|
||||||
|
Window main_window;
|
||||||
|
struct WDock *dock; /* In which dock is docked. */
|
||||||
|
struct _AppSettingsPanel *panel; /* Settings Panel */
|
||||||
|
unsigned int docked:1;
|
||||||
|
unsigned int omnipresent:1; /* If omnipresent when
|
||||||
|
* docked in clip */
|
||||||
|
unsigned int attracted:1; /* If it was attracted by the clip */
|
||||||
|
unsigned int launching:1;
|
||||||
|
unsigned int running:1; /* application is already running */
|
||||||
|
unsigned int relaunching:1; /* launching 2nd instance */
|
||||||
|
unsigned int forced_dock:1;
|
||||||
|
unsigned int auto_launch:1; /* launch app on startup */
|
||||||
|
unsigned int remote_start:1;
|
||||||
|
unsigned int updated:1;
|
||||||
|
unsigned int editing:1; /* editing docked icon */
|
||||||
|
unsigned int drop_launch:1; /* launching from drop action */
|
||||||
|
unsigned int paste_launch:1; /* launching from paste action */
|
||||||
|
unsigned int destroyed:1; /* appicon was destroyed */
|
||||||
|
unsigned int buggy_app:1; /* do not make dock rely on hints
|
||||||
|
* set by app */
|
||||||
|
unsigned int lock:1; /* do not allow to be destroyed */
|
||||||
|
};
|
||||||
|
|
||||||
|
/******** Accessors/mutators ********/
|
||||||
|
short wAppIconGetXIndex(WAppIcon *aicon) {
|
||||||
|
return aicon->xindex;
|
||||||
|
}
|
||||||
|
void wAppIconSetXIndex(WAppIcon *aicon, short xindex) {
|
||||||
|
aicon->xindex = xindex;
|
||||||
|
}
|
||||||
|
|
||||||
|
short wAppIconGetYIndex(WAppIcon *aicon) {
|
||||||
|
return aicon->yindex;
|
||||||
|
}
|
||||||
|
void wAppIconSetYIndex(WAppIcon *aicon, short yindex) {
|
||||||
|
aicon->yindex = yindex;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct WAppIcon *wAppIconGetNext(WAppIcon *aicon) {
|
||||||
|
return aicon->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct WAppIcon *wAppIconGetPrev(WAppIcon *aicon) {
|
||||||
|
return aicon->prev;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconGetXPos(WAppIcon *aicon) {
|
||||||
|
return aicon->x_pos;
|
||||||
|
}
|
||||||
|
void wAppIconSetXPos(WAppIcon *aicon, int x_pos) {
|
||||||
|
aicon->x_pos = x_pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconGetYPos(WAppIcon *aicon) {
|
||||||
|
return aicon->y_pos;
|
||||||
|
}
|
||||||
|
void wAppIconSetYPos(WAppIcon *aicon, int y_pos) {
|
||||||
|
aicon->y_pos = y_pos;
|
||||||
|
}
|
||||||
|
|
||||||
|
WIcon *wAppIconGetIcon(WAppIcon *aicon) {
|
||||||
|
return aicon->icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *wAppIconGetCommand(WAppIcon *aicon) {
|
||||||
|
return aicon->command;
|
||||||
|
}
|
||||||
|
void wAppIconSetCommand(WAppIcon *aicon, char *command) {
|
||||||
|
if (aicon->command)
|
||||||
|
wfree(aicon->command);
|
||||||
|
if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) {
|
||||||
|
wfree(command);
|
||||||
|
command = NULL;
|
||||||
|
}
|
||||||
|
aicon->command = command;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef USE_DOCK_XDND
|
||||||
|
char *wAppIconGetDnDCommand(WAppIcon *aicon) {
|
||||||
|
return aicon->dnd_command;
|
||||||
|
}
|
||||||
|
void wAppIconSetDnDCommand(WAppIcon *aicon, char *command) {
|
||||||
|
if (aicon->dnd_command)
|
||||||
|
wfree(aicon->dnd_command);
|
||||||
|
if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) {
|
||||||
|
wfree(command);
|
||||||
|
command = NULL;
|
||||||
|
}
|
||||||
|
aicon->dnd_command = command;
|
||||||
|
}
|
||||||
|
#endif // USE_DOCK_XDND
|
||||||
|
|
||||||
|
char *wAppIconGetPasteCommand(WAppIcon *aicon) {
|
||||||
|
return aicon->paste_command;
|
||||||
|
}
|
||||||
|
void wAppIconSetPasteCommand(WAppIcon *aicon, char *command) {
|
||||||
|
if (aicon->paste_command)
|
||||||
|
wfree(aicon->paste_command);
|
||||||
|
if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) {
|
||||||
|
wfree(command);
|
||||||
|
command = NULL;
|
||||||
|
}
|
||||||
|
aicon->paste_command = command;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *wAppIconGetWmClass(WAppIcon *aicon) {
|
||||||
|
return aicon->wm_class;
|
||||||
|
}
|
||||||
|
|
||||||
|
char *wAppIconGetWmInstance(WAppIcon *aicon) {
|
||||||
|
return aicon->wm_instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
pid_t wAppIconGetPid(WAppIcon *aicon) {
|
||||||
|
return aicon->pid;
|
||||||
|
}
|
||||||
|
void wAppIconSetPid(WAppIcon *aicon, pid_t pid) {
|
||||||
|
aicon->pid = pid;
|
||||||
|
}
|
||||||
|
|
||||||
|
Window wAppIconGetMainWindow(WAppIcon *aicon) {
|
||||||
|
return aicon->main_window;
|
||||||
|
}
|
||||||
|
void wAppIconSetMainWindow(WAppIcon *aicon, Window main_window) {
|
||||||
|
aicon->main_window = main_window;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct WDock *wAppIconGetDock(WAppIcon *aicon) {
|
||||||
|
return aicon->dock;
|
||||||
|
}
|
||||||
|
void wAppIconSetDock(WAppIcon *aicon, struct WDock *dock) {
|
||||||
|
aicon->dock = dock;
|
||||||
|
}
|
||||||
|
|
||||||
|
struct _AppSettingsPanel *wAppIconGetPanel(WAppIcon *aicon) {
|
||||||
|
return aicon->panel;
|
||||||
|
}
|
||||||
|
void wAppIconSetPanel(WAppIcon *aicon, struct _AppSettingsPanel *panel) {
|
||||||
|
aicon->panel = panel;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsDocked(WAppIcon *aicon) {
|
||||||
|
return aicon->docked;
|
||||||
|
}
|
||||||
|
void wAppIconSetDocked(WAppIcon *aicon, int docked) {
|
||||||
|
aicon->docked = !!docked;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsOmnipresent(WAppIcon *aicon) {
|
||||||
|
return aicon->omnipresent;
|
||||||
|
}
|
||||||
|
void wAppIconSetOmnipresent(WAppIcon *aicon, int omnipresent) {
|
||||||
|
aicon->omnipresent = !!omnipresent;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsAttracted(WAppIcon *aicon) {
|
||||||
|
return aicon->attracted;
|
||||||
|
}
|
||||||
|
void wAppIconSetAttracted(WAppIcon *aicon, int attracted) {
|
||||||
|
aicon->attracted = !!attracted;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsLaunching(WAppIcon *aicon) {
|
||||||
|
return aicon->launching;
|
||||||
|
}
|
||||||
|
void wAppIconSetLaunching(WAppIcon *aicon, int launching) {
|
||||||
|
aicon->launching = !!launching;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsRunning(WAppIcon *aicon) {
|
||||||
|
return aicon->running;
|
||||||
|
}
|
||||||
|
void wAppIconSetRunning(WAppIcon *aicon, int running) {
|
||||||
|
aicon->running = !!running;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsRelaunching(WAppIcon *aicon) {
|
||||||
|
return aicon->relaunching;
|
||||||
|
}
|
||||||
|
void wAppIconSetRelaunching(WAppIcon *aicon, int relaunching) {
|
||||||
|
aicon->relaunching = !!relaunching;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsForceDocked(WAppIcon *aicon) {
|
||||||
|
return aicon->forced_dock;
|
||||||
|
}
|
||||||
|
void wAppIconSetForceDocked(WAppIcon *aicon, int forced_dock) {
|
||||||
|
aicon->forced_dock = !!forced_dock;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsAutoLaunch(WAppIcon *aicon) {
|
||||||
|
return aicon->auto_launch;
|
||||||
|
}
|
||||||
|
void wAppIconSetAutoLaunch(WAppIcon *aicon, int auto_launch) {
|
||||||
|
aicon->auto_launch = !!auto_launch;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsEditing(WAppIcon *aicon) {
|
||||||
|
return aicon->editing;
|
||||||
|
}
|
||||||
|
void wAppIconSetEditing(WAppIcon *aicon, int editing) {
|
||||||
|
aicon->editing = !!editing;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsDropLaunch(WAppIcon *aicon) {
|
||||||
|
return aicon->drop_launch;
|
||||||
|
}
|
||||||
|
void wAppIconSetDropLaunch(WAppIcon *aicon, int drop_launch) {
|
||||||
|
aicon->drop_launch = !!drop_launch;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsPasteLaunch(WAppIcon *aicon) {
|
||||||
|
return aicon->paste_launch;
|
||||||
|
}
|
||||||
|
void wAppIconSetPasteLaunch(WAppIcon *aicon, int paste_launch) {
|
||||||
|
aicon->paste_launch = !!paste_launch;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsBuggyApp(WAppIcon *aicon) {
|
||||||
|
return aicon->buggy_app;
|
||||||
|
}
|
||||||
|
void wAppIconSetBuggyApp(WAppIcon *aicon, int buggy_app) {
|
||||||
|
aicon->buggy_app = !!buggy_app;
|
||||||
|
}
|
||||||
|
|
||||||
|
int wAppIconIsLocked(WAppIcon *aicon) {
|
||||||
|
return aicon->lock;
|
||||||
|
}
|
||||||
|
void wAppIconSetLocked(WAppIcon *aicon, int lock) {
|
||||||
|
aicon->lock = !!lock;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* icon_file for the dock is got from the preferences file by
|
* icon_file for the dock is got from the preferences file by
|
||||||
* using the classname/instancename
|
* using the classname/instancename
|
||||||
@@ -147,16 +396,16 @@ WAppIcon *wAppIconCreateForDock(WScreen *scr, const char *command, const char *w
|
|||||||
void create_appicon_for_application(WApplication *wapp, WWindow *wwin)
|
void create_appicon_for_application(WApplication *wapp, WWindow *wwin)
|
||||||
{
|
{
|
||||||
/* Try to create an icon from the dock or clip */
|
/* Try to create an icon from the dock or clip */
|
||||||
create_appicon_from_dock(wwin, wapp, wapp->main_window);
|
create_appicon_from_dock(wwin, wapp, wApplicationGetMainWindow(wapp));
|
||||||
|
|
||||||
/* If app_icon was not found, create it */
|
/* If app_icon was not found, create it */
|
||||||
if (!wapp->app_icon) {
|
if (!wApplicationGetAppIcon(wapp)) {
|
||||||
/* Create the icon */
|
/* Create the icon */
|
||||||
wapp->app_icon = wAppIconCreate(wapp->main_window_desc);
|
wApplicationSetAppIcon(wapp, wAppIconCreate(wApplicationGetMainWindowDesc(wapp)));
|
||||||
wIconUpdate(wapp->app_icon->icon);
|
wIconUpdate(wApplicationGetAppIcon(wapp)->icon);
|
||||||
|
|
||||||
/* Now, paint the icon */
|
/* Now, paint the icon */
|
||||||
if (!WFLAGP(wapp->main_window_desc, no_appicon))
|
if (!WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon))
|
||||||
paint_app_icon(wapp);
|
paint_app_icon(wapp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -164,8 +413,8 @@ void create_appicon_for_application(WApplication *wapp, WWindow *wwin)
|
|||||||
* window data are known - so try to save the icon file for docked
|
* window data are known - so try to save the icon file for docked
|
||||||
* applications to ensure that the file exists when window maker
|
* applications to ensure that the file exists when window maker
|
||||||
* starts up next time. */
|
* starts up next time. */
|
||||||
if (wapp->app_icon->docked && !WFLAGP(wapp->main_window_desc, no_appicon))
|
if (wApplicationGetAppIcon(wapp)->docked && !WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon))
|
||||||
save_appicon(wapp->app_icon);
|
save_appicon(wApplicationGetAppIcon(wapp));
|
||||||
}
|
}
|
||||||
|
|
||||||
void unpaint_app_icon(WApplication *wapp)
|
void unpaint_app_icon(WApplication *wapp)
|
||||||
@@ -174,19 +423,19 @@ void unpaint_app_icon(WApplication *wapp)
|
|||||||
WScreen *scr;
|
WScreen *scr;
|
||||||
WDock *clip;
|
WDock *clip;
|
||||||
|
|
||||||
if (!wapp || !wapp->app_icon)
|
if (!wapp || !wApplicationGetAppIcon(wapp))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
aicon = wapp->app_icon;
|
aicon = wApplicationGetAppIcon(wapp);
|
||||||
|
|
||||||
/* If the icon is docked, don't continue */
|
/* If the icon is docked, don't continue */
|
||||||
if (aicon->docked)
|
if (aicon->docked)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
scr = wapp->main_window_desc->screen_ptr;
|
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
|
||||||
clip = scr->workspaces[scr->current_workspace]->clip;
|
clip = scr->workspaces[scr->current_workspace]->clip;
|
||||||
|
|
||||||
if (!clip || !aicon->attracted || !clip->collapsed)
|
if (!clip || !aicon->attracted || !wDockIsCollapsed(clip))
|
||||||
XUnmapWindow(dpy, aicon->icon->core->window);
|
XUnmapWindow(dpy, aicon->icon->core->window);
|
||||||
|
|
||||||
/* We want to avoid having it on the list because otherwise
|
/* We want to avoid having it on the list because otherwise
|
||||||
@@ -206,35 +455,35 @@ void paint_app_icon(WApplication *wapp)
|
|||||||
int x = 0, y = 0;
|
int x = 0, y = 0;
|
||||||
Bool update_icon = False;
|
Bool update_icon = False;
|
||||||
|
|
||||||
if (!wapp || !wapp->app_icon || !wapp->main_window_desc)
|
if (!wapp || !wApplicationGetAppIcon(wapp) || !wApplicationGetMainWindowDesc(wapp))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
icon = wapp->app_icon->icon;
|
icon = wApplicationGetAppIcon(wapp)->icon;
|
||||||
scr = wapp->main_window_desc->screen_ptr;
|
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
|
||||||
wapp->app_icon->main_window = wapp->main_window;
|
wApplicationGetAppIcon(wapp)->main_window = wApplicationGetMainWindow(wapp);
|
||||||
|
|
||||||
/* If the icon is docked, don't continue */
|
/* If the icon is docked, don't continue */
|
||||||
if (wapp->app_icon->docked)
|
if (wApplicationGetAppIcon(wapp)->docked)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
attracting_dock = scr->attracting_drawer != NULL ?
|
attracting_dock = scr->attracting_drawer != NULL ?
|
||||||
scr->attracting_drawer :
|
scr->attracting_drawer :
|
||||||
scr->workspaces[scr->current_workspace]->clip;
|
scr->workspaces[scr->current_workspace]->clip;
|
||||||
if (attracting_dock && attracting_dock->attract_icons &&
|
if (attracting_dock && wDockGetAttractIcons(attracting_dock) &&
|
||||||
wDockFindFreeSlot(attracting_dock, &x, &y)) {
|
wDockFindFreeSlot(attracting_dock, &x, &y)) {
|
||||||
wapp->app_icon->attracted = 1;
|
wApplicationGetAppIcon(wapp)->attracted = 1;
|
||||||
if (!icon->shadowed) {
|
if (!icon->shadowed) {
|
||||||
icon->shadowed = 1;
|
icon->shadowed = 1;
|
||||||
update_icon = True;
|
update_icon = True;
|
||||||
}
|
}
|
||||||
wDockAttachIcon(attracting_dock, wapp->app_icon, x, y, update_icon);
|
wDockAttachIcon(attracting_dock, wApplicationGetAppIcon(wapp), x, y, update_icon);
|
||||||
} else {
|
} else {
|
||||||
/* We must know if the icon is painted in the screen,
|
/* We must know if the icon is painted in the screen,
|
||||||
* because if painted, then PlaceIcon will return the next
|
* because if painted, then PlaceIcon will return the next
|
||||||
* space on the screen, and the icon will move */
|
* space on the screen, and the icon will move */
|
||||||
if (wapp->app_icon->next == NULL && wapp->app_icon->prev == NULL) {
|
if (wApplicationGetAppIcon(wapp)->next == NULL && wApplicationGetAppIcon(wapp)->prev == NULL) {
|
||||||
PlaceIcon(scr, &x, &y, wGetHeadForWindow(wapp->main_window_desc));
|
PlaceIcon(scr, &x, &y, wGetHeadForWindow(wApplicationGetMainWindowDesc(wapp)));
|
||||||
wAppIconMove(wapp->app_icon, x, y);
|
wAppIconMove(wApplicationGetAppIcon(wapp), x, y);
|
||||||
wLowerFrame(icon->core);
|
wLowerFrame(icon->core);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -242,57 +491,57 @@ void paint_app_icon(WApplication *wapp)
|
|||||||
/* If we want appicon (no_appicon is not set) and the icon is not
|
/* If we want appicon (no_appicon is not set) and the icon is not
|
||||||
* in the appicon_list, we must add it. Else, we want to avoid
|
* in the appicon_list, we must add it. Else, we want to avoid
|
||||||
* having it on the list */
|
* having it on the list */
|
||||||
if (!WFLAGP(wapp->main_window_desc, no_appicon) &&
|
if (!WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon) &&
|
||||||
wapp->app_icon->next == NULL && wapp->app_icon->prev == NULL)
|
wApplicationGetAppIcon(wapp)->next == NULL && wApplicationGetAppIcon(wapp)->prev == NULL)
|
||||||
add_to_appicon_list(scr, wapp->app_icon);
|
add_to_appicon_list(scr, wApplicationGetAppIcon(wapp));
|
||||||
|
|
||||||
if (!attracting_dock || !wapp->app_icon->attracted || !attracting_dock->collapsed)
|
if (!attracting_dock || !wApplicationGetAppIcon(wapp)->attracted || !wDockIsCollapsed(attracting_dock))
|
||||||
XMapWindow(dpy, icon->core->window);
|
XMapWindow(dpy, icon->core->window);
|
||||||
|
|
||||||
if (wPreferences.auto_arrange_icons && !wapp->app_icon->attracted)
|
if (wPreferences.auto_arrange_icons && !wApplicationGetAppIcon(wapp)->attracted)
|
||||||
wArrangeIcons(scr, True);
|
wArrangeIcons(scr, True);
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeAppIconFor(WApplication *wapp)
|
void removeAppIconFor(WApplication *wapp)
|
||||||
{
|
{
|
||||||
if (!wapp->app_icon)
|
if (!wApplicationGetAppIcon(wapp))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (wPreferences.highlight_active_app)
|
if (wPreferences.highlight_active_app)
|
||||||
wIconSetHighlited(wapp->app_icon->icon, False);
|
wIconSetHighlited(wApplicationGetAppIcon(wapp)->icon, False);
|
||||||
if (wapp->app_icon->docked && !wapp->app_icon->attracted) {
|
if (wApplicationGetAppIcon(wapp)->docked && !wApplicationGetAppIcon(wapp)->attracted) {
|
||||||
wapp->app_icon->running = 0;
|
wApplicationGetAppIcon(wapp)->running = 0;
|
||||||
/* since we keep it, we don't care if it was attracted or not */
|
/* since we keep it, we don't care if it was attracted or not */
|
||||||
wapp->app_icon->attracted = 0;
|
wApplicationGetAppIcon(wapp)->attracted = 0;
|
||||||
wapp->app_icon->icon->shadowed = 0;
|
wApplicationGetAppIcon(wapp)->icon->shadowed = 0;
|
||||||
wapp->app_icon->main_window = None;
|
wApplicationGetAppIcon(wapp)->main_window = None;
|
||||||
wapp->app_icon->pid = 0;
|
wApplicationGetAppIcon(wapp)->pid = 0;
|
||||||
wapp->app_icon->icon->owner = NULL;
|
wApplicationGetAppIcon(wapp)->icon->owner = NULL;
|
||||||
wapp->app_icon->icon->icon_win = None;
|
wApplicationGetAppIcon(wapp)->icon->icon_win = None;
|
||||||
|
|
||||||
/* Set the icon image */
|
/* Set the icon image */
|
||||||
set_icon_image_from_database(wapp->app_icon->icon, wapp->app_icon->wm_instance,
|
set_icon_image_from_database(wApplicationGetAppIcon(wapp)->icon, wApplicationGetAppIcon(wapp)->wm_instance,
|
||||||
wapp->app_icon->wm_class, wapp->app_icon->command);
|
wApplicationGetAppIcon(wapp)->wm_class, wApplicationGetAppIcon(wapp)->command);
|
||||||
|
|
||||||
/* Update the icon, because wapp->app_icon->icon could be NULL */
|
/* Update the icon, because wApplicationGetAppIcon(wapp)->icon could be NULL */
|
||||||
wIconUpdate(wapp->app_icon->icon);
|
wIconUpdate(wApplicationGetAppIcon(wapp)->icon);
|
||||||
|
|
||||||
/* Paint it */
|
/* Paint it */
|
||||||
wAppIconPaint(wapp->app_icon);
|
wAppIconPaint(wApplicationGetAppIcon(wapp));
|
||||||
} else if (wapp->app_icon->docked) {
|
} else if (wApplicationGetAppIcon(wapp)->docked) {
|
||||||
wapp->app_icon->running = 0;
|
wApplicationGetAppIcon(wapp)->running = 0;
|
||||||
if (wapp->app_icon->dock->type == WM_DRAWER) {
|
if (wDockGetType(wApplicationGetAppIcon(wapp)->dock) == WM_DRAWER) {
|
||||||
wDrawerFillTheGap(wapp->app_icon->dock, wapp->app_icon, True);
|
wDrawerFillTheGap(wApplicationGetAppIcon(wapp)->dock, wApplicationGetAppIcon(wapp), True);
|
||||||
}
|
}
|
||||||
wDockDetach(wapp->app_icon->dock, wapp->app_icon);
|
wDockDetach(wApplicationGetAppIcon(wapp)->dock, wApplicationGetAppIcon(wapp));
|
||||||
} else {
|
} else {
|
||||||
wAppIconDestroy(wapp->app_icon);
|
wAppIconDestroy(wApplicationGetAppIcon(wapp));
|
||||||
}
|
}
|
||||||
|
|
||||||
wapp->app_icon = NULL;
|
wApplicationSetAppIcon(wapp, NULL);
|
||||||
|
|
||||||
if (wPreferences.auto_arrange_icons)
|
if (wPreferences.auto_arrange_icons)
|
||||||
wArrangeIcons(wapp->main_window_desc->screen_ptr, True);
|
wArrangeIcons(wApplicationGetMainWindowDesc(wapp)->screen_ptr, True);
|
||||||
}
|
}
|
||||||
|
|
||||||
static WAppIcon *wAppIconCreate(WWindow *leader_win)
|
static WAppIcon *wAppIconCreate(WWindow *leader_win)
|
||||||
@@ -381,7 +630,7 @@ static void updateDockNumbers(WScreen *scr)
|
|||||||
{
|
{
|
||||||
int length;
|
int length;
|
||||||
char ws_numbers[20];
|
char ws_numbers[20];
|
||||||
WAppIcon *dicon = scr->dock->icon_array[0];
|
WAppIcon *dicon = wDockGetIcon(scr->dock, 0);
|
||||||
|
|
||||||
snprintf(ws_numbers, sizeof(ws_numbers), "%i [ %i ]", scr->current_workspace + 1, ((scr->current_workspace / 10) + 1));
|
snprintf(ws_numbers, sizeof(ws_numbers), "%i [ %i ]", scr->current_workspace + 1, ((scr->current_workspace / 10) + 1));
|
||||||
length = strlen(ws_numbers);
|
length = strlen(ws_numbers);
|
||||||
@@ -419,7 +668,7 @@ void wAppIconPaint(WAppIcon *aicon)
|
|||||||
scr->copy_gc, 0, 0, scr->dock_dots->width, scr->dock_dots->height, 0, 0);
|
scr->copy_gc, 0, 0, scr->dock_dots->width, scr->dock_dots->height, 0, 0);
|
||||||
}
|
}
|
||||||
#ifdef HIDDENDOT
|
#ifdef HIDDENDOT
|
||||||
if (wapp && wapp->flags.hidden) {
|
if (wapp && wApplicationIsHidden(wapp)) {
|
||||||
XSetClipMask(dpy, scr->copy_gc, scr->dock_dots->mask);
|
XSetClipMask(dpy, scr->copy_gc, scr->dock_dots->mask);
|
||||||
XSetClipOrigin(dpy, scr->copy_gc, 0, 0);
|
XSetClipOrigin(dpy, scr->copy_gc, 0, 0);
|
||||||
XCopyArea(dpy, scr->dock_dots->image,
|
XCopyArea(dpy, scr->dock_dots->image,
|
||||||
@@ -463,7 +712,7 @@ static void relaunchApplication(WApplication *wapp)
|
|||||||
WScreen *scr;
|
WScreen *scr;
|
||||||
WWindow *wlist, *next;
|
WWindow *wlist, *next;
|
||||||
|
|
||||||
scr = wapp->main_window_desc->screen_ptr;
|
scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
|
||||||
wlist = scr->focused_window;
|
wlist = scr->focused_window;
|
||||||
if (! wlist)
|
if (! wlist)
|
||||||
return;
|
return;
|
||||||
@@ -474,7 +723,7 @@ static void relaunchApplication(WApplication *wapp)
|
|||||||
while (wlist) {
|
while (wlist) {
|
||||||
next = wlist->next;
|
next = wlist->next;
|
||||||
|
|
||||||
if (wlist->main_window == wapp->main_window) {
|
if (wlist->main_window == wApplicationGetMainWindow(wapp)) {
|
||||||
if (RelaunchWindow(wlist))
|
if (RelaunchWindow(wlist))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -497,8 +746,8 @@ static void hideCallback(WMenu * menu, WMenuEntry * entry)
|
|||||||
{
|
{
|
||||||
WApplication *wapp = (WApplication *) entry->clientdata;
|
WApplication *wapp = (WApplication *) entry->clientdata;
|
||||||
|
|
||||||
if (wapp->flags.hidden) {
|
if (wApplicationIsHidden(wapp)) {
|
||||||
wWorkspaceChange(menu->menu->screen_ptr, wapp->last_workspace);
|
wWorkspaceChange(menu->menu->screen_ptr, wApplicationGetLastWorkspace(wapp));
|
||||||
wUnhideApplication(wapp, False, False);
|
wUnhideApplication(wapp, False, False);
|
||||||
} else {
|
} else {
|
||||||
wHideApplication(wapp);
|
wHideApplication(wapp);
|
||||||
@@ -517,7 +766,7 @@ static void unhideHereCallback(WMenu * menu, WMenuEntry * entry)
|
|||||||
|
|
||||||
static void setIconCallback(WMenu *menu, WMenuEntry *entry)
|
static void setIconCallback(WMenu *menu, WMenuEntry *entry)
|
||||||
{
|
{
|
||||||
WAppIcon *icon = ((WApplication *) entry->clientdata)->app_icon;
|
WAppIcon *icon = wApplicationGetAppIcon((WApplication *) entry->clientdata);
|
||||||
char *file = NULL;
|
char *file = NULL;
|
||||||
WScreen *scr;
|
WScreen *scr;
|
||||||
int result;
|
int result;
|
||||||
@@ -569,33 +818,33 @@ static void killCallback(WMenu * menu, WMenuEntry * entry)
|
|||||||
|
|
||||||
assert(entry->clientdata != NULL);
|
assert(entry->clientdata != NULL);
|
||||||
|
|
||||||
shortname = basename(wapp->app_icon->wm_instance);
|
shortname = basename(wApplicationGetAppIcon(wapp)->wm_instance);
|
||||||
|
|
||||||
buffer = wstrconcat(wapp->app_icon ? shortname : NULL,
|
buffer = wstrconcat(wApplicationGetAppIcon(wapp) ? shortname : NULL,
|
||||||
_(" will be forcibly closed.\n"
|
_(" will be forcibly closed.\n"
|
||||||
"Any unsaved changes will be lost.\n" "Please confirm."));
|
"Any unsaved changes will be lost.\n" "Please confirm."));
|
||||||
|
|
||||||
fPtr = wapp->main_window_desc->fake_group;
|
fPtr = wApplicationGetMainWindowDesc(wapp)->fake_group;
|
||||||
|
|
||||||
wretain(wapp->main_window_desc);
|
wretain(wApplicationGetMainWindowDesc(wapp));
|
||||||
if (wPreferences.dont_confirm_kill
|
if (wPreferences.dont_confirm_kill
|
||||||
|| wMessageDialog(menu->frame->screen_ptr, _("Kill Application"),
|
|| wMessageDialog(menu->frame->screen_ptr, _("Kill Application"),
|
||||||
buffer, _("Yes"), _("No"), NULL) == WAPRDefault) {
|
buffer, _("Yes"), _("No"), NULL) == WAPRDefault) {
|
||||||
if (fPtr != NULL) {
|
if (fPtr != NULL) {
|
||||||
WWindow *wwin, *twin;
|
WWindow *wwin, *twin;
|
||||||
|
|
||||||
wwin = wapp->main_window_desc->screen_ptr->focused_window;
|
wwin = wApplicationGetMainWindowDesc(wapp)->screen_ptr->focused_window;
|
||||||
while (wwin) {
|
while (wwin) {
|
||||||
twin = wwin->prev;
|
twin = wwin->prev;
|
||||||
if (wwin->fake_group == fPtr)
|
if (wwin->fake_group == fPtr)
|
||||||
wClientKill(wwin);
|
wClientKill(wwin);
|
||||||
wwin = twin;
|
wwin = twin;
|
||||||
}
|
}
|
||||||
} else if (!wapp->main_window_desc->flags.destroyed) {
|
} else if (!wApplicationGetMainWindowDesc(wapp)->flags.destroyed) {
|
||||||
wClientKill(wapp->main_window_desc);
|
wClientKill(wApplicationGetMainWindowDesc(wapp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
wrelease(wapp->main_window_desc);
|
wrelease(wApplicationGetMainWindowDesc(wapp));
|
||||||
wfree(buffer);
|
wfree(buffer);
|
||||||
WCHANGE_STATE(WSTATE_NORMAL);
|
WCHANGE_STATE(WSTATE_NORMAL);
|
||||||
}
|
}
|
||||||
@@ -617,7 +866,7 @@ static WMenu *createApplicationMenu(WScreen *scr)
|
|||||||
static void openApplicationMenu(WApplication * wapp, int x, int y)
|
static void openApplicationMenu(WApplication * wapp, int x, int y)
|
||||||
{
|
{
|
||||||
WMenu *menu;
|
WMenu *menu;
|
||||||
WScreen *scr = wapp->main_window_desc->screen_ptr;
|
WScreen *scr = wApplicationGetMainWindowDesc(wapp)->screen_ptr;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!scr->icon_menu) {
|
if (!scr->icon_menu) {
|
||||||
@@ -627,7 +876,7 @@ static void openApplicationMenu(WApplication * wapp, int x, int y)
|
|||||||
|
|
||||||
menu = scr->icon_menu;
|
menu = scr->icon_menu;
|
||||||
|
|
||||||
if (wapp->flags.hidden)
|
if (wApplicationIsHidden(wapp))
|
||||||
menu->entries[1]->text = _("Unhide");
|
menu->entries[1]->text = _("Unhide");
|
||||||
else
|
else
|
||||||
menu->entries[1]->text = _("Hide");
|
menu->entries[1]->text = _("Hide");
|
||||||
@@ -677,8 +926,8 @@ static void iconDblClick(WObjDescriptor *desc, XEvent *event)
|
|||||||
|
|
||||||
unhideHere = (event->xbutton.state & ShiftMask);
|
unhideHere = (event->xbutton.state & ShiftMask);
|
||||||
/* go to the last workspace that the user worked on the app */
|
/* go to the last workspace that the user worked on the app */
|
||||||
if (!unhideHere && wapp->last_workspace != scr->current_workspace)
|
if (!unhideHere && wApplicationGetLastWorkspace(wapp) != scr->current_workspace)
|
||||||
wWorkspaceChange(scr, wapp->last_workspace);
|
wWorkspaceChange(scr, wApplicationGetLastWorkspace(wapp));
|
||||||
|
|
||||||
wUnhideApplication(wapp, event->xbutton.button == Button2, unhideHere);
|
wUnhideApplication(wapp, event->xbutton.button == Button2, unhideHere);
|
||||||
|
|
||||||
@@ -905,26 +1154,26 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||||||
}
|
}
|
||||||
if (lastDock != NULL && lastDock != theNewDock) {
|
if (lastDock != NULL && lastDock != theNewDock) {
|
||||||
/* Leave lastDock in the state we found it */
|
/* Leave lastDock in the state we found it */
|
||||||
if (lastDock->type == WM_DRAWER) {
|
if (wDockGetType(lastDock) == WM_DRAWER) {
|
||||||
wDrawerFillTheGap(lastDock, aicon, (lastDock == originalDock));
|
wDrawerFillTheGap(lastDock, aicon, (lastDock == originalDock));
|
||||||
}
|
}
|
||||||
if (collapsed) {
|
if (collapsed) {
|
||||||
lastDock->collapsed = 1;
|
wDockSetCollapsed(lastDock, 1);
|
||||||
wDockHideIcons(lastDock);
|
wDockHideIcons(lastDock);
|
||||||
collapsed = False;
|
collapsed = False;
|
||||||
}
|
}
|
||||||
if (lastDock->auto_raise_lower) {
|
if (wDockIsAutoRaiseLower(lastDock)) {
|
||||||
wDockLower(lastDock);
|
wDockLower(lastDock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (theNewDock != NULL) {
|
if (theNewDock != NULL) {
|
||||||
if (lastDock != theNewDock) {
|
if (lastDock != theNewDock) {
|
||||||
collapsed = theNewDock->collapsed;
|
collapsed = wDockIsCollapsed(theNewDock);
|
||||||
if (collapsed) {
|
if (collapsed) {
|
||||||
theNewDock->collapsed = 0;
|
wDockSetCollapsed(theNewDock, 0);
|
||||||
wDockShowIcons(theNewDock);
|
wDockShowIcons(theNewDock);
|
||||||
}
|
}
|
||||||
if (theNewDock->auto_raise_lower) {
|
if (wDockIsAutoRaiseLower(theNewDock)) {
|
||||||
wDockRaise(theNewDock);
|
wDockRaise(theNewDock);
|
||||||
/* And raise the moving tile above it */
|
/* And raise the moving tile above it */
|
||||||
wRaiseFrame(aicon->icon->core);
|
wRaiseFrame(aicon->icon->core);
|
||||||
@@ -932,8 +1181,8 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||||||
lastDock = theNewDock;
|
lastDock = theNewDock;
|
||||||
}
|
}
|
||||||
|
|
||||||
shad_x = lastDock->x_pos + ix*wPreferences.icon_size;
|
shad_x = wDockGetXPos(lastDock) + ix*wPreferences.icon_size;
|
||||||
shad_y = lastDock->y_pos + iy*wPreferences.icon_size;
|
shad_y = wDockGetYPos(lastDock) + iy*wPreferences.icon_size;
|
||||||
|
|
||||||
XMoveWindow(dpy, scr->dock_shadow, shad_x, shad_y);
|
XMoveWindow(dpy, scr->dock_shadow, shad_x, shad_y);
|
||||||
|
|
||||||
@@ -977,7 +1226,7 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||||||
command for that appicon, and the user cancels the
|
command for that appicon, and the user cancels the
|
||||||
wInputDialog asking for one). Make the rejection obvious by
|
wInputDialog asking for one). Make the rejection obvious by
|
||||||
sliding the icon to its old position */
|
sliding the icon to its old position */
|
||||||
if (lastDock->type == WM_DRAWER) {
|
if (wDockGetType(lastDock) == WM_DRAWER) {
|
||||||
// Also fill the gap left in the drawer
|
// Also fill the gap left in the drawer
|
||||||
wDrawerFillTheGap(lastDock, aicon, False);
|
wDrawerFillTheGap(lastDock, aicon, False);
|
||||||
}
|
}
|
||||||
@@ -995,25 +1244,25 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||||||
/* Possible scenario: user moved an auto-attracted appicon
|
/* Possible scenario: user moved an auto-attracted appicon
|
||||||
from the clip to the dock, and cancelled the wInputDialog
|
from the clip to the dock, and cancelled the wInputDialog
|
||||||
asking for a command */
|
asking for a command */
|
||||||
if (lastDock->type == WM_DRAWER) {
|
if (wDockGetType(lastDock) == WM_DRAWER) {
|
||||||
wDrawerFillTheGap(lastDock, aicon, False);
|
wDrawerFillTheGap(lastDock, aicon, False);
|
||||||
}
|
}
|
||||||
/* If aicon comes from a drawer, make some room to reattach it */
|
/* If aicon comes from a drawer, make some room to reattach it */
|
||||||
if (originalDock->type == WM_DRAWER) {
|
if (wDockGetType(originalDock) == WM_DRAWER) {
|
||||||
WAppIcon *aiconsToShift[ originalDock->icon_count ];
|
WAppIcon *aiconsToShift[ wDockGetIconCount(originalDock) ];
|
||||||
int j = 0;
|
int j = 0;
|
||||||
|
|
||||||
for (i = 0; i < originalDock->max_icons; i++) {
|
for (i = 0; i < wDockGetMaxIcons(originalDock); i++) {
|
||||||
WAppIcon *ai = originalDock->icon_array[ i ];
|
WAppIcon *ai = wDockGetIcon(originalDock, i);
|
||||||
if (ai && ai != aicon &&
|
if (ai && ai != aicon &&
|
||||||
abs(ai->xindex) >= abs(aicon->xindex))
|
abs(ai->xindex) >= abs(aicon->xindex))
|
||||||
aiconsToShift[j++] = ai;
|
aiconsToShift[j++] = ai;
|
||||||
}
|
}
|
||||||
if (j != originalDock->icon_count - abs(aicon->xindex) - 1)
|
if (j != wDockGetIconCount(originalDock) - abs(aicon->xindex) - 1)
|
||||||
// Trust this never happens?
|
// Trust this never happens?
|
||||||
wwarning("Shifting j=%d appicons (instead of %d!) to reinsert aicon at index %d.",
|
wwarning("Shifting j=%d appicons (instead of %d!) to reinsert aicon at index %d.",
|
||||||
j, originalDock->icon_count - abs(aicon->xindex) - 1, aicon->xindex);
|
j, wDockGetIconCount(originalDock) - abs(aicon->xindex) - 1, aicon->xindex);
|
||||||
wSlideAppicons(aiconsToShift, j, originalDock->on_right_side);
|
wSlideAppicons(aiconsToShift, j, wDockIsOnRightSide(originalDock));
|
||||||
// Trust the appicon is inserted at exactly the same place, so its oldX/oldY are consistent with its "new" location?
|
// Trust the appicon is inserted at exactly the same place, so its oldX/oldY are consistent with its "new" location?
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1021,11 +1270,11 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||||||
wDockReattachIcon(originalDock, aicon, aicon->xindex, aicon->yindex);
|
wDockReattachIcon(originalDock, aicon, aicon->xindex, aicon->yindex);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (originalDock->auto_collapse && !originalDock->collapsed) {
|
if (wDockIsAutoCollapse(originalDock) && !wDockIsCollapsed(originalDock)) {
|
||||||
originalDock->collapsed = 1;
|
wDockSetCollapsed(originalDock, 1);
|
||||||
wDockHideIcons(originalDock);
|
wDockHideIcons(originalDock);
|
||||||
}
|
}
|
||||||
if (originalDock->auto_raise_lower)
|
if (wDockIsAutoRaiseLower(originalDock))
|
||||||
wDockLower(originalDock);
|
wDockLower(originalDock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1037,7 +1286,7 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||||||
/* If docked (or tried to dock) to a auto_collapsing dock, unset
|
/* If docked (or tried to dock) to a auto_collapsing dock, unset
|
||||||
* collapsed, so that wHandleAppIconMove doesn't collapse it
|
* collapsed, so that wHandleAppIconMove doesn't collapse it
|
||||||
* right away (the timer will take care of it) */
|
* right away (the timer will take care of it) */
|
||||||
if (lastDock->auto_collapse)
|
if (wDockIsAutoCollapse(lastDock))
|
||||||
collapsed = 0;
|
collapsed = 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -1053,11 +1302,11 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
wDockDetach(originalDock, aicon);
|
wDockDetach(originalDock, aicon);
|
||||||
if (originalDock->auto_collapse && !originalDock->collapsed) {
|
if (wDockIsAutoCollapse(originalDock) && !wDockIsCollapsed(originalDock)) {
|
||||||
originalDock->collapsed = 1;
|
wDockSetCollapsed(originalDock, 1);
|
||||||
wDockHideIcons(originalDock);
|
wDockHideIcons(originalDock);
|
||||||
}
|
}
|
||||||
if (originalDock->auto_raise_lower)
|
if (wDockIsAutoRaiseLower(originalDock))
|
||||||
wDockLower(originalDock);
|
wDockLower(originalDock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1147,53 +1396,53 @@ static WAppIcon *findDockIconFor(WDock *dock, Window main_window)
|
|||||||
static void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window main_window)
|
static void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window main_window)
|
||||||
{
|
{
|
||||||
WScreen *scr = wwin->screen_ptr;
|
WScreen *scr = wwin->screen_ptr;
|
||||||
wapp->app_icon = NULL;
|
wApplicationSetAppIcon(wapp, NULL);
|
||||||
|
|
||||||
if (scr->last_dock)
|
if (scr->last_dock)
|
||||||
wapp->app_icon = findDockIconFor(scr->last_dock, main_window);
|
wApplicationSetAppIcon(wapp, findDockIconFor(scr->last_dock, main_window));
|
||||||
|
|
||||||
/* check main dock if we did not find it in last dock */
|
/* check main dock if we did not find it in last dock */
|
||||||
if (!wapp->app_icon && scr->dock)
|
if (!wApplicationGetAppIcon(wapp) && scr->dock)
|
||||||
wapp->app_icon = findDockIconFor(scr->dock, main_window);
|
wApplicationSetAppIcon(wapp, findDockIconFor(scr->dock, main_window));
|
||||||
|
|
||||||
/* check clips */
|
/* check clips */
|
||||||
if (!wapp->app_icon) {
|
if (!wApplicationGetAppIcon(wapp)) {
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < scr->workspace_count; i++) {
|
for (i = 0; i < scr->workspace_count; i++) {
|
||||||
WDock *dock = scr->workspaces[i]->clip;
|
WDock *dock = scr->workspaces[i]->clip;
|
||||||
|
|
||||||
if (dock)
|
if (dock)
|
||||||
wapp->app_icon = findDockIconFor(dock, main_window);
|
wApplicationSetAppIcon(wapp, findDockIconFor(dock, main_window));
|
||||||
|
|
||||||
if (wapp->app_icon)
|
if (wApplicationGetAppIcon(wapp))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Finally check drawers */
|
/* Finally check drawers */
|
||||||
if (!wapp->app_icon) {
|
if (!wApplicationGetAppIcon(wapp)) {
|
||||||
WDrawerChain *dc;
|
WDrawerChain *dc;
|
||||||
for (dc = scr->drawers; dc != NULL; dc = dc->next) {
|
for (dc = scr->drawers; dc != NULL; dc = dc->next) {
|
||||||
wapp->app_icon = findDockIconFor(dc->adrawer, main_window);
|
wApplicationSetAppIcon(wapp, findDockIconFor(dc->adrawer, main_window));
|
||||||
if (wapp->app_icon)
|
if (wApplicationGetAppIcon(wapp))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If created, then set some flags */
|
/* If created, then set some flags */
|
||||||
if (wapp->app_icon && !WFLAGP(wapp->main_window_desc, no_appicon)) {
|
if (wApplicationGetAppIcon(wapp) && !WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon)) {
|
||||||
WWindow *mainw = wapp->main_window_desc;
|
WWindow *mainw = wApplicationGetMainWindowDesc(wapp);
|
||||||
|
|
||||||
wapp->app_icon->running = 1;
|
wApplicationGetAppIcon(wapp)->running = 1;
|
||||||
wapp->app_icon->icon->owner = mainw;
|
wApplicationGetAppIcon(wapp)->icon->owner = mainw;
|
||||||
if (mainw->wm_hints && (mainw->wm_hints->flags & IconWindowHint))
|
if (mainw->wm_hints && (mainw->wm_hints->flags & IconWindowHint))
|
||||||
wapp->app_icon->icon->icon_win = mainw->wm_hints->icon_window;
|
wApplicationGetAppIcon(wapp)->icon->icon_win = mainw->wm_hints->icon_window;
|
||||||
|
|
||||||
/* Update the icon images */
|
/* Update the icon images */
|
||||||
wIconUpdate(wapp->app_icon->icon);
|
wIconUpdate(wApplicationGetAppIcon(wapp)->icon);
|
||||||
|
|
||||||
/* Paint it */
|
/* Paint it */
|
||||||
wAppIconPaint(wapp->app_icon);
|
wAppIconPaint(wApplicationGetAppIcon(wapp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
126
src/appicon.h
126
src/appicon.h
@@ -29,46 +29,94 @@
|
|||||||
#include "icon.h"
|
#include "icon.h"
|
||||||
#include "application.h"
|
#include "application.h"
|
||||||
|
|
||||||
typedef struct WAppIcon {
|
typedef struct WAppIcon WAppIcon;
|
||||||
short xindex;
|
|
||||||
short yindex;
|
|
||||||
struct WAppIcon *next;
|
|
||||||
struct WAppIcon *prev;
|
|
||||||
WIcon *icon;
|
|
||||||
int x_pos, y_pos; /* absolute screen coordinate */
|
|
||||||
char *command; /* command used to launch app */
|
|
||||||
#ifdef USE_DOCK_XDND
|
|
||||||
char *dnd_command; /* command to use when something is */
|
|
||||||
/* dropped on us */
|
|
||||||
#endif
|
|
||||||
char *paste_command; /* command to run when
|
|
||||||
* something is pasted */
|
|
||||||
char *wm_class;
|
|
||||||
char *wm_instance;
|
|
||||||
pid_t pid; /* for apps launched from the dock */
|
|
||||||
Window main_window;
|
|
||||||
struct WDock *dock; /* In which dock is docked. */
|
|
||||||
struct _AppSettingsPanel *panel; /* Settings Panel */
|
|
||||||
unsigned int docked:1;
|
|
||||||
unsigned int omnipresent:1; /* If omnipresent when
|
|
||||||
* docked in clip */
|
|
||||||
unsigned int attracted:1; /* If it was attracted by the clip */
|
|
||||||
unsigned int launching:1;
|
|
||||||
unsigned int running:1; /* application is already running */
|
|
||||||
unsigned int relaunching:1; /* launching 2nd instance */
|
|
||||||
unsigned int forced_dock:1;
|
|
||||||
unsigned int auto_launch:1; /* launch app on startup */
|
|
||||||
unsigned int remote_start:1;
|
|
||||||
unsigned int updated:1;
|
|
||||||
unsigned int editing:1; /* editing docked icon */
|
|
||||||
unsigned int drop_launch:1; /* launching from drop action */
|
|
||||||
unsigned int paste_launch:1; /* launching from paste action */
|
|
||||||
unsigned int destroyed:1; /* appicon was destroyed */
|
|
||||||
unsigned int buggy_app:1; /* do not make dock rely on hints
|
|
||||||
* set by app */
|
|
||||||
unsigned int lock:1; /* do not allow to be destroyed */
|
|
||||||
} WAppIcon;
|
|
||||||
|
|
||||||
|
/******** Accessors/mutators ********/
|
||||||
|
short wAppIconGetXIndex(WAppIcon *aicon);
|
||||||
|
void wAppIconSetXIndex(WAppIcon *aicon, short x_index);
|
||||||
|
|
||||||
|
short wAppIconGetYIndex(WAppIcon *aicon);
|
||||||
|
void wAppIconSetYIndex(WAppIcon *aicon, short y_index);
|
||||||
|
|
||||||
|
struct WAppIcon *wAppIconGetNext(WAppIcon *aicon);
|
||||||
|
|
||||||
|
struct WAppIcon *wAppIconGetPrev(WAppIcon *aicon);
|
||||||
|
|
||||||
|
int wAppIconGetXPos(WAppIcon *aicon);
|
||||||
|
void wAppIconSetXPos(WAppIcon *aicon, int x_pos);
|
||||||
|
|
||||||
|
int wAppIconGetYPos(WAppIcon *aicon);
|
||||||
|
void wAppIconSetYPos(WAppIcon *aicon, int y_pos);
|
||||||
|
|
||||||
|
WIcon *wAppIconGetIcon(WAppIcon *aicon);
|
||||||
|
|
||||||
|
char *wAppIconGetCommand(WAppIcon *aicon);
|
||||||
|
void wAppIconSetCommand(WAppIcon *aicon, char *command);
|
||||||
|
|
||||||
|
#ifdef USE_DOCK_XDND
|
||||||
|
char *wAppIconGetDnDCommand(WAppIcon *aicon);
|
||||||
|
void wAppIconSetDnDCommand(WAppIcon *aicon, char *command);
|
||||||
|
#endif // USE_DOCK_XDND
|
||||||
|
|
||||||
|
char *wAppIconGetPasteCommand(WAppIcon *aicon);
|
||||||
|
void wAppIconSetPasteCommand(WAppIcon *aicon, char *command);
|
||||||
|
|
||||||
|
char *wAppIconGetWmClass(WAppIcon *aicon);
|
||||||
|
|
||||||
|
char *wAppIconGetWmInstance(WAppIcon *aicon);
|
||||||
|
|
||||||
|
pid_t wAppIconGetPid(WAppIcon *aicon);
|
||||||
|
void wAppIconSetPid(WAppIcon *aicon, pid_t pid);
|
||||||
|
|
||||||
|
Window wAppIconGetMainWindow(WAppIcon *aicon);
|
||||||
|
void wAppIconSetMainWindow(WAppIcon *aicon, Window main_window);
|
||||||
|
|
||||||
|
struct WDock *wAppIconGetDock(WAppIcon *aicon);
|
||||||
|
void wAppIconSetDock(WAppIcon *aicon, struct WDock *dock);
|
||||||
|
|
||||||
|
struct _AppSettingsPanel *wAppIconGetPanel(WAppIcon *aicon);
|
||||||
|
void wAppIconSetPanel(WAppIcon *aicon, struct _AppSettingsPanel *panel);
|
||||||
|
|
||||||
|
int wAppIconIsDocked(WAppIcon *aicon);
|
||||||
|
void wAppIconSetDocked(WAppIcon *aicon, int docked);
|
||||||
|
|
||||||
|
int wAppIconIsOmnipresent(WAppIcon *aicon);
|
||||||
|
void wAppIconSetOmnipresent(WAppIcon *aicon, int omnipresent);
|
||||||
|
|
||||||
|
int wAppIconIsAttracted(WAppIcon *aicon);
|
||||||
|
void wAppIconSetAttracted(WAppIcon *aicon, int attracted);
|
||||||
|
|
||||||
|
int wAppIconIsLaunching(WAppIcon *aicon);
|
||||||
|
void wAppIconSetLaunching(WAppIcon *aicon, int launching);
|
||||||
|
|
||||||
|
int wAppIconIsRunning(WAppIcon *aicon);
|
||||||
|
void wAppIconSetRunning(WAppIcon *aicon, int running);
|
||||||
|
|
||||||
|
int wAppIconIsRelaunching(WAppIcon *aicon);
|
||||||
|
void wAppIconSetRelaunching(WAppIcon *aicon, int relaunching);
|
||||||
|
|
||||||
|
int wAppIconIsForceDocked(WAppIcon *aicon);
|
||||||
|
void wAppIconSetForceDocked(WAppIcon *aicon, int forced_dock);
|
||||||
|
|
||||||
|
int wAppIconIsAutoLaunch(WAppIcon *aicon);
|
||||||
|
void wAppIconSetAutoLaunch(WAppIcon *aicon, int auto_launch);
|
||||||
|
|
||||||
|
int wAppIconIsEditing(WAppIcon *aicon);
|
||||||
|
void wAppIconSetEditing(WAppIcon *aicon, int editing);
|
||||||
|
|
||||||
|
int wAppIconIsDropLaunch(WAppIcon *aicon);
|
||||||
|
void wAppIconSetDropLaunch(WAppIcon *aicon, int drop_launch);
|
||||||
|
|
||||||
|
int wAppIconIsPasteLaunch(WAppIcon *aicon);
|
||||||
|
void wAppIconSetPasteLaunch(WAppIcon *aicon, int paste_launch);
|
||||||
|
|
||||||
|
int wAppIconIsBuggyApp(WAppIcon *aicon);
|
||||||
|
void wAppIconSetBuggyApp(WAppIcon *aicon, int buggy_app);
|
||||||
|
|
||||||
|
int wAppIconIsLocked(WAppIcon *aicon);
|
||||||
|
void wAppIconSetLocked(WAppIcon *aicon, int locked);
|
||||||
|
|
||||||
|
/******** Lifecycle/resource management ********/
|
||||||
WAppIcon *wAppIconCreateForDock(WScreen *scr, const char *command, const char *wm_instance,
|
WAppIcon *wAppIconCreateForDock(WScreen *scr, const char *command, const char *wm_instance,
|
||||||
const char *wm_class, int tile);
|
const char *wm_class, int tile);
|
||||||
Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event);
|
Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event);
|
||||||
|
|||||||
@@ -37,179 +37,33 @@
|
|||||||
#include "dock.h"
|
#include "dock.h"
|
||||||
#include "defaults.h"
|
#include "defaults.h"
|
||||||
|
|
||||||
|
/******** Decls of functions defined in application.rs. ********/
|
||||||
|
WApplication* wApplicationOfRust(Display *dpy, Window window);
|
||||||
|
|
||||||
/******** Local variables ********/
|
WApplication *wApplicationCreateRust(Display *dpy, WWindow *wwin, int enable_user_menu);
|
||||||
|
|
||||||
static WWindow *makeMainWindow(WScreen * scr, Window window)
|
void wApplicationDestroyRust(Display *dpy, WApplication *wapp);
|
||||||
{
|
|
||||||
WWindow *wwin;
|
|
||||||
XWindowAttributes attr;
|
|
||||||
|
|
||||||
if (!XGetWindowAttributes(dpy, window, &attr))
|
/******** Lifecycle/etc. ********/
|
||||||
return NULL;
|
|
||||||
|
|
||||||
wwin = wWindowCreate();
|
|
||||||
wwin->screen_ptr = scr;
|
|
||||||
wwin->client_win = window;
|
|
||||||
wwin->main_window = window;
|
|
||||||
wwin->wm_hints = XGetWMHints(dpy, window);
|
|
||||||
|
|
||||||
PropGetWMClass(window, &wwin->wm_class, &wwin->wm_instance);
|
|
||||||
|
|
||||||
wDefaultFillAttributes(wwin->wm_instance, wwin->wm_class, &wwin->user_flags,
|
|
||||||
&wwin->defined_user_flags, True);
|
|
||||||
|
|
||||||
XSelectInput(dpy, window, attr.your_event_mask | PropertyChangeMask | StructureNotifyMask);
|
|
||||||
return wwin;
|
|
||||||
}
|
|
||||||
|
|
||||||
WApplication *wApplicationOf(Window window)
|
WApplication *wApplicationOf(Window window)
|
||||||
{
|
{
|
||||||
WApplication *wapp;
|
return wApplicationOfRust(dpy, window);
|
||||||
|
|
||||||
if (window == None)
|
|
||||||
return NULL;
|
|
||||||
if (XFindContext(dpy, window, w_global.context.app_win, (XPointer *) & wapp) != XCSUCCESS)
|
|
||||||
return NULL;
|
|
||||||
return wapp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WApplication *wApplicationCreate(WWindow * wwin)
|
WApplication *wApplicationCreate(WWindow * wwin)
|
||||||
{
|
{
|
||||||
WScreen *scr = wwin->screen_ptr;
|
|
||||||
Window main_window = wwin->main_window;
|
|
||||||
WApplication *wapp;
|
|
||||||
WWindow *leader;
|
|
||||||
|
|
||||||
if (main_window == None || main_window == scr->root_win)
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
{
|
|
||||||
Window root;
|
|
||||||
int foo;
|
|
||||||
unsigned int bar;
|
|
||||||
/* check if the window is valid */
|
|
||||||
if (!XGetGeometry(dpy, main_window, &root, &foo, &foo, &bar, &bar, &bar, &bar))
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
wapp = wApplicationOf(main_window);
|
|
||||||
if (wapp) {
|
|
||||||
wapp->refcount++;
|
|
||||||
if (wapp->app_icon && wapp->app_icon->docked &&
|
|
||||||
wapp->app_icon->relaunching && wapp->main_window_desc->fake_group)
|
|
||||||
wDockFinishLaunch(wapp->app_icon);
|
|
||||||
|
|
||||||
return wapp;
|
|
||||||
}
|
|
||||||
|
|
||||||
wapp = wmalloc(sizeof(WApplication));
|
|
||||||
|
|
||||||
wapp->refcount = 1;
|
|
||||||
wapp->last_focused = NULL;
|
|
||||||
wapp->urgent_bounce_timer = NULL;
|
|
||||||
|
|
||||||
wapp->last_workspace = 0;
|
|
||||||
|
|
||||||
wapp->main_window = main_window;
|
|
||||||
wapp->main_window_desc = makeMainWindow(scr, main_window);
|
|
||||||
if (!wapp->main_window_desc) {
|
|
||||||
wfree(wapp);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
wapp->main_window_desc->fake_group = wwin->fake_group;
|
|
||||||
wapp->main_window_desc->net_icon_image = RRetainImage(wwin->net_icon_image);
|
|
||||||
|
|
||||||
leader = wWindowFor(main_window);
|
|
||||||
if (leader)
|
|
||||||
leader->main_window = main_window;
|
|
||||||
|
|
||||||
wapp->menu = wAppMenuGet(scr, main_window);
|
|
||||||
#ifdef USER_MENU
|
#ifdef USER_MENU
|
||||||
if (!wapp->menu)
|
return wApplicationCreateRust(dpy, wwin, 1);
|
||||||
wapp->menu = wUserMenuGet(scr, wapp->main_window_desc);
|
#else
|
||||||
|
return wApplicationCreateRust(dpy, wwin, 0);
|
||||||
wAppMenuMap(wapp->menu, wwin);
|
#endif // USER_MENU
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Set application wide attributes from the leader */
|
|
||||||
wapp->flags.hidden = WFLAGP(wapp->main_window_desc, start_hidden);
|
|
||||||
wapp->flags.emulated = WFLAGP(wapp->main_window_desc, emulate_appicon);
|
|
||||||
|
|
||||||
/* application descriptor */
|
|
||||||
XSaveContext(dpy, main_window, w_global.context.app_win, (XPointer) wapp);
|
|
||||||
|
|
||||||
create_appicon_for_application(wapp, wwin);
|
|
||||||
|
|
||||||
return wapp;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wApplicationDestroy(WApplication *wapp)
|
void wApplicationDestroy(WApplication *wapp)
|
||||||
{
|
{
|
||||||
WWindow *wwin;
|
|
||||||
WScreen *scr;
|
|
||||||
|
|
||||||
if (!wapp)
|
if (!wapp)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wapp->refcount--;
|
wApplicationDestroyRust(dpy, wapp);
|
||||||
if (wapp->refcount > 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (wapp->urgent_bounce_timer) {
|
|
||||||
WMDeleteTimerHandler(wapp->urgent_bounce_timer);
|
|
||||||
wapp->urgent_bounce_timer = NULL;
|
|
||||||
}
|
|
||||||
if (wapp->flags.bouncing) {
|
|
||||||
/* event.c:handleDestroyNotify forced this destroy
|
|
||||||
and thereby overlooked the bounce callback */
|
|
||||||
wapp->refcount = 1;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
scr = wapp->main_window_desc->screen_ptr;
|
|
||||||
|
|
||||||
if (wapp == scr->wapp_list) {
|
|
||||||
if (wapp->next)
|
|
||||||
wapp->next->prev = NULL;
|
|
||||||
scr->wapp_list = wapp->next;
|
|
||||||
} else {
|
|
||||||
if (wapp->next)
|
|
||||||
wapp->next->prev = wapp->prev;
|
|
||||||
if (wapp->prev)
|
|
||||||
wapp->prev->next = wapp->next;
|
|
||||||
}
|
|
||||||
|
|
||||||
XDeleteContext(dpy, wapp->main_window, w_global.context.app_win);
|
|
||||||
wAppMenuDestroy(wapp->menu);
|
|
||||||
|
|
||||||
/* Remove application icon */
|
|
||||||
removeAppIconFor(wapp);
|
|
||||||
|
|
||||||
wwin = wWindowFor(wapp->main_window_desc->client_win);
|
|
||||||
|
|
||||||
wWindowDestroy(wapp->main_window_desc);
|
|
||||||
if (wwin) {
|
|
||||||
/* undelete client window context that was deleted in
|
|
||||||
* wWindowDestroy */
|
|
||||||
XSaveContext(dpy, wwin->client_win, w_global.context.client_win, (XPointer) & wwin->client_descriptor);
|
|
||||||
}
|
|
||||||
wfree(wapp);
|
|
||||||
}
|
|
||||||
|
|
||||||
void wApplicationActivate(WApplication *wapp)
|
|
||||||
{
|
|
||||||
if (wapp->app_icon) {
|
|
||||||
wIconSetHighlited(wapp->app_icon->icon, True);
|
|
||||||
wAppIconPaint(wapp->app_icon);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void wApplicationDeactivate(WApplication *wapp)
|
|
||||||
{
|
|
||||||
if (wapp->app_icon) {
|
|
||||||
wIconSetHighlited(wapp->app_icon->icon, False);
|
|
||||||
wAppIconPaint(wapp->app_icon);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,32 +23,52 @@
|
|||||||
#define WMAPPLICATION_H_
|
#define WMAPPLICATION_H_
|
||||||
|
|
||||||
/* for tracking single application instances */
|
/* for tracking single application instances */
|
||||||
typedef struct WApplication {
|
// This is now defined in application.rs.
|
||||||
struct WApplication *next;
|
typedef struct WApplication WApplication;
|
||||||
struct WApplication *prev;
|
|
||||||
|
|
||||||
Window main_window; /* ID of the group leader */
|
/******** Accessors/mutators ********/
|
||||||
struct WWindow *main_window_desc; /* main (leader) window descriptor */
|
Window wApplicationGetMainWindow(WApplication *wapp);
|
||||||
WMenu *menu; /* application menu */
|
|
||||||
struct WAppIcon *app_icon;
|
|
||||||
int refcount;
|
|
||||||
struct WWindow *last_focused; /* focused window before hide */
|
|
||||||
int last_workspace; /* last workspace used to work on the
|
|
||||||
* app */
|
|
||||||
WMHandlerID *urgent_bounce_timer;
|
|
||||||
struct {
|
|
||||||
unsigned int skip_next_animation:1;
|
|
||||||
unsigned int hidden:1;
|
|
||||||
unsigned int emulated:1;
|
|
||||||
unsigned int bouncing:1;
|
|
||||||
} flags;
|
|
||||||
} WApplication;
|
|
||||||
|
|
||||||
|
struct WWindow *wApplicationGetMainWindowDesc(WApplication *wapp);
|
||||||
|
|
||||||
|
WMenu *wApplicationGetMenu(WApplication *wapp);
|
||||||
|
void wApplicationSetMenu(WApplication *wapp, WMenu *menu);
|
||||||
|
|
||||||
|
struct WAppIcon *wApplicationGetAppIcon(WApplication *wapp);
|
||||||
|
void wApplicationSetAppIcon(WApplication *wapp, struct WAppIcon *icon);
|
||||||
|
|
||||||
|
int wApplicationGetLastWorkspace(WApplication *wapp);
|
||||||
|
void wApplicationSetLastWorkspace(WApplication *wapp, int workspace);
|
||||||
|
|
||||||
|
struct WWindow *wApplicationGetLastFocused(WApplication *wapp);
|
||||||
|
void wApplicationSetLastFocused(WApplication *wapp, struct WWindow *win);
|
||||||
|
|
||||||
|
WMHandlerID *wApplicationGetUrgentBounceTimer(WApplication *wapp);
|
||||||
|
int wApplicationHasUrgentBounceTimer(WApplication *wapp);
|
||||||
|
void wApplicationClearUrgentBounceTimer(WApplication *wapp);
|
||||||
|
void wApplicationSetUrgentBounceTimer(WApplication *wapp, WMHandlerID *timer);
|
||||||
|
|
||||||
|
int wApplicationGetSkipNextAnimation(WApplication *wapp);
|
||||||
|
void wApplicationSetSkipNextAnimation(WApplication *wapp, int skip);
|
||||||
|
|
||||||
|
int wApplicationIsHidden(WApplication *wapp);
|
||||||
|
void wApplicationSetHidden(WApplication *wapp, int hidden);
|
||||||
|
|
||||||
|
int wApplicationIsEmulated(WApplication *wapp);
|
||||||
|
void wApplicationSetEmulated(WApplication *wapp, int emulated);
|
||||||
|
|
||||||
|
int wApplicationIsBouncing(WApplication *wapp);
|
||||||
|
void wApplicationSetBouncing(WApplication *wapp, int bouncing);
|
||||||
|
|
||||||
|
/******** Lifecycle/resource management ********/
|
||||||
WApplication *wApplicationCreate(struct WWindow *wwin);
|
WApplication *wApplicationCreate(struct WWindow *wwin);
|
||||||
WApplication *wApplicationOf(Window window);
|
WApplication *wApplicationOf(Window window);
|
||||||
void wApplicationDestroy(WApplication *wapp);
|
void wApplicationDestroy(WApplication *wapp);
|
||||||
|
|
||||||
|
void wApplicationIncrementRefcount(WApplication *wapp);
|
||||||
|
int wApplicationHasLiveRefcount(WApplication *wapp);
|
||||||
|
void wApplicationClearRefcount(WApplication *wapp);
|
||||||
|
|
||||||
void wAppBounce(WApplication *);
|
void wAppBounce(WApplication *);
|
||||||
void wAppBounceWhileUrgent(WApplication *);
|
void wAppBounceWhileUrgent(WApplication *);
|
||||||
void wApplicationActivate(WApplication *);
|
void wApplicationActivate(WApplication *);
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ static WMenu *parseMenuCommand(WScreen * scr, Window win, char **slist, int coun
|
|||||||
}
|
}
|
||||||
wstrlcpy(title, &slist[*index][pos], sizeof(title));
|
wstrlcpy(title, &slist[*index][pos], sizeof(title));
|
||||||
}
|
}
|
||||||
data = malloc(sizeof(WAppMenuData));
|
data = wmalloc(sizeof(WAppMenuData));
|
||||||
if (data == NULL) {
|
if (data == NULL) {
|
||||||
wwarning(_("appmenu: out of memory creating menu for window %lx"), win);
|
wwarning(_("appmenu: out of memory creating menu for window %lx"), win);
|
||||||
wMenuDestroy(menu, True);
|
wMenuDestroy(menu, True);
|
||||||
@@ -152,7 +152,7 @@ static WMenu *parseMenuCommand(WScreen * scr, Window win, char **slist, int coun
|
|||||||
if (!entry) {
|
if (!entry) {
|
||||||
wMenuDestroy(menu, True);
|
wMenuDestroy(menu, True);
|
||||||
wwarning(_("appmenu: out of memory creating menu for window %lx"), win);
|
wwarning(_("appmenu: out of memory creating menu for window %lx"), win);
|
||||||
free(data);
|
wfree(data);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
if (rtext[0] != 0)
|
if (rtext[0] != 0)
|
||||||
|
|||||||
@@ -507,7 +507,7 @@ static void miniwindowBalloon(WObjDescriptor *object)
|
|||||||
static void appiconBalloon(WObjDescriptor *object)
|
static void appiconBalloon(WObjDescriptor *object)
|
||||||
{
|
{
|
||||||
WAppIcon *aicon = (WAppIcon *) object->parent;
|
WAppIcon *aicon = (WAppIcon *) object->parent;
|
||||||
WScreen *scr = aicon->icon->core->screen_ptr;
|
WScreen *scr = wAppIconGetIcon(aicon)->core->screen_ptr;
|
||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
||||||
/* Show balloon if it is the Clip and the workspace name is > 5 chars */
|
/* Show balloon if it is the Clip and the workspace name is > 5 chars */
|
||||||
@@ -518,17 +518,17 @@ static void appiconBalloon(WObjDescriptor *object)
|
|||||||
wBalloonHide(scr);
|
wBalloonHide(scr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if (aicon->command && aicon->wm_class) {
|
} else if (wAppIconGetCommand(aicon) && wAppIconGetWmClass(aicon)) {
|
||||||
int len;
|
int len;
|
||||||
WApplication *app;
|
WApplication *app;
|
||||||
unsigned int app_win_cnt = 0;
|
unsigned int app_win_cnt = 0;
|
||||||
const char *display_name;
|
const char *display_name;
|
||||||
|
|
||||||
if (object->parent_type == WCLASS_DOCK_ICON) {
|
if (object->parent_type == WCLASS_DOCK_ICON) {
|
||||||
if (aicon->main_window) {
|
if (wAppIconGetMainWindow(aicon)) {
|
||||||
app = wApplicationOf(aicon->main_window);
|
app = wApplicationOf(wAppIconGetMainWindow(aicon));
|
||||||
if (app && app->main_window_desc && app->main_window_desc->fake_group)
|
if (app && wApplicationGetMainWindowDesc(app) && wApplicationGetMainWindowDesc(app)->fake_group)
|
||||||
app_win_cnt = app->main_window_desc->fake_group->retainCount - 1;
|
app_win_cnt = wApplicationGetMainWindowDesc(app)->fake_group->retainCount - 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -537,38 +537,38 @@ static void appiconBalloon(WObjDescriptor *object)
|
|||||||
* instead of the class, otherwise the user will not be able to distinguish what
|
* instead of the class, otherwise the user will not be able to distinguish what
|
||||||
* is being referred.
|
* is being referred.
|
||||||
*/
|
*/
|
||||||
if (strcmp(aicon->wm_class, "GNUstep") == 0)
|
if (strcmp(wAppIconGetWmClass(aicon), "GNUstep") == 0)
|
||||||
display_name = aicon->wm_instance;
|
display_name = wAppIconGetWmInstance(aicon);
|
||||||
else
|
else
|
||||||
display_name = aicon->wm_class;
|
display_name = wAppIconGetWmClass(aicon);
|
||||||
|
|
||||||
len = strlen(aicon->command) + strlen(display_name) + 8;
|
len = strlen(wAppIconGetCommand(aicon)) + strlen(display_name) + 8;
|
||||||
|
|
||||||
if (app_win_cnt > 0)
|
if (app_win_cnt > 0)
|
||||||
len += 1 + snprintf(NULL, 0, "%u", app_win_cnt);
|
len += 1 + snprintf(NULL, 0, "%u", app_win_cnt);
|
||||||
|
|
||||||
tmp = wmalloc(len);
|
tmp = wmalloc(len);
|
||||||
if (app_win_cnt > 0)
|
if (app_win_cnt > 0)
|
||||||
snprintf(tmp, len, "%u %s\n(%s)", app_win_cnt, display_name, aicon->command);
|
snprintf(tmp, len, "%u %s\n(%s)", app_win_cnt, display_name, wAppIconGetCommand(aicon));
|
||||||
else
|
else
|
||||||
snprintf(tmp, len, "%s\n(%s)", aicon->wm_instance, aicon->command);
|
snprintf(tmp, len, "%s\n(%s)", wAppIconGetWmInstance(aicon), wAppIconGetCommand(aicon));
|
||||||
scr->balloon->text = tmp;
|
scr->balloon->text = tmp;
|
||||||
|
|
||||||
} else if (aicon->command) {
|
} else if (wAppIconGetCommand(aicon)) {
|
||||||
scr->balloon->text = wstrdup(aicon->command);
|
scr->balloon->text = wstrdup(wAppIconGetCommand(aicon));
|
||||||
} else if (aicon->wm_class) {
|
} else if (wAppIconGetWmClass(aicon)) {
|
||||||
/* Check to see if it is a GNUstep App */
|
/* Check to see if it is a GNUstep App */
|
||||||
if (strcmp(aicon->wm_class, "GNUstep") == 0)
|
if (strcmp(wAppIconGetWmClass(aicon), "GNUstep") == 0)
|
||||||
scr->balloon->text = wstrdup(aicon->wm_instance);
|
scr->balloon->text = wstrdup(wAppIconGetWmInstance(aicon));
|
||||||
else
|
else
|
||||||
scr->balloon->text = wstrdup(aicon->wm_class);
|
scr->balloon->text = wstrdup(wAppIconGetWmClass(aicon));
|
||||||
} else {
|
} else {
|
||||||
wBalloonHide(scr);
|
wBalloonHide(scr);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
scr->balloon->h = aicon->icon->core->height - 2;
|
scr->balloon->h = wAppIconGetIcon(aicon)->core->height - 2;
|
||||||
|
|
||||||
scr->balloon->objectWindow = aicon->icon->core->window;
|
scr->balloon->objectWindow = wAppIconGetIcon(aicon)->core->window;
|
||||||
if ((scr->balloon->prevType == object->parent_type || scr->balloon->prevType == WCLASS_MINIWINDOW)
|
if ((scr->balloon->prevType == object->parent_type || scr->balloon->prevType == WCLASS_MINIWINDOW)
|
||||||
&& scr->balloon->ignoreTimer) {
|
&& scr->balloon->ignoreTimer) {
|
||||||
XUnmapWindow(dpy, scr->balloon->window);
|
XUnmapWindow(dpy, scr->balloon->window);
|
||||||
|
|||||||
20
src/client.c
20
src/client.c
@@ -324,14 +324,12 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
|
|||||||
WApplication *wapp = wApplicationOf(wwin->main_window);
|
WApplication *wapp = wApplicationOf(wwin->main_window);
|
||||||
char *command;
|
char *command;
|
||||||
|
|
||||||
if (!wapp || !wapp->app_icon || wapp->app_icon->docked)
|
if (!wapp || !wApplicationGetAppIcon(wapp) || wAppIconIsDocked(wApplicationGetAppIcon(wapp)))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
command = GetCommandForWindow(wwin->main_window);
|
command = GetCommandForWindow(wwin->main_window);
|
||||||
if (command) {
|
if (command) {
|
||||||
if (wapp->app_icon->command)
|
wAppIconSetCommand(wApplicationGetAppIcon(wapp), command);
|
||||||
wfree(wapp->app_icon->command);
|
|
||||||
wapp->app_icon->command = command;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -460,9 +458,9 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
|
|||||||
wIconUpdate(wwin->icon);
|
wIconUpdate(wwin->icon);
|
||||||
|
|
||||||
wapp = wApplicationOf(wwin->main_window);
|
wapp = wApplicationOf(wwin->main_window);
|
||||||
if (wapp && wapp->app_icon) {
|
if (wapp && wApplicationGetAppIcon(wapp)) {
|
||||||
wIconUpdate(wapp->app_icon->icon);
|
wIconUpdate(wAppIconGetIcon(wApplicationGetAppIcon(wapp)));
|
||||||
wAppIconPaint(wapp->app_icon);
|
wAppIconPaint(wApplicationGetAppIcon(wapp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -560,10 +558,10 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
|
|||||||
|
|
||||||
wapp = wApplicationOf(wwin->main_window);
|
wapp = wApplicationOf(wwin->main_window);
|
||||||
if (wapp) {
|
if (wapp) {
|
||||||
if (wapp->menu) {
|
if (wApplicationGetMenu(wapp)) {
|
||||||
/* update menu */
|
/* update menu */
|
||||||
/* TODO: remake appmenu update */
|
/* TODO: remake appmenu update */
|
||||||
wAppMenuDestroy(wapp->menu);
|
wAppMenuDestroy(wApplicationGetMenu(wapp));
|
||||||
}
|
}
|
||||||
if (wwin->fake_group) {
|
if (wwin->fake_group) {
|
||||||
WScreen *scr = wwin->screen_ptr;
|
WScreen *scr = wwin->screen_ptr;
|
||||||
@@ -599,13 +597,13 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
|
|||||||
|
|
||||||
wapp = wApplicationOf(wwin->main_window);
|
wapp = wApplicationOf(wwin->main_window);
|
||||||
if (wapp) {
|
if (wapp) {
|
||||||
wapp->menu = wAppMenuGet(scr, wwin->main_window);
|
wApplicationSetMenu(wapp, wAppMenuGet(scr, wwin->main_window));
|
||||||
}
|
}
|
||||||
if (wPreferences.auto_arrange_icons) {
|
if (wPreferences.auto_arrange_icons) {
|
||||||
wArrangeIcons(wwin->screen_ptr, True);
|
wArrangeIcons(wwin->screen_ptr, True);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
wapp->menu = wAppMenuGet(wwin->screen_ptr, wwin->main_window);
|
wApplicationSetMenu(wapp, wAppMenuGet(wwin->screen_ptr, wwin->main_window));
|
||||||
}
|
}
|
||||||
/* make the appmenu be mapped */
|
/* make the appmenu be mapped */
|
||||||
wSetFocusTo(wwin->screen_ptr, NULL);
|
wSetFocusTo(wwin->screen_ptr, NULL);
|
||||||
|
|||||||
@@ -1309,16 +1309,16 @@ void wDefaultUpdateIcons(WScreen *scr)
|
|||||||
|
|
||||||
while (aicon) {
|
while (aicon) {
|
||||||
/* Get the application icon, default included */
|
/* Get the application icon, default included */
|
||||||
wIconChangeImageFile(aicon->icon, NULL);
|
wIconChangeImageFile(wAppIconGetIcon(aicon), NULL);
|
||||||
wAppIconPaint(aicon);
|
wAppIconPaint(aicon);
|
||||||
aicon = aicon->next;
|
aicon = wAppIconGetNext(aicon);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wPreferences.flags.noclip || wPreferences.flags.clip_merged_in_dock)
|
if (!wPreferences.flags.noclip || wPreferences.flags.clip_merged_in_dock)
|
||||||
wClipIconPaint(scr->clip_icon);
|
wClipIconPaint(scr->clip_icon);
|
||||||
|
|
||||||
for (dc = scr->drawers; dc != NULL; dc = dc->next)
|
for (dc = scr->drawers; dc != NULL; dc = dc->next)
|
||||||
wDrawerIconPaint(dc->adrawer->icon_array[0]);
|
wDrawerIconPaint(wDockGetIcon(dc->adrawer, 0));
|
||||||
|
|
||||||
while (wwin) {
|
while (wwin) {
|
||||||
if (wwin->icon && wwin->flags.miniaturized)
|
if (wwin->icon && wwin->flags.miniaturized)
|
||||||
|
|||||||
31
src/dialog.c
31
src/dialog.c
@@ -39,10 +39,6 @@
|
|||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <sys/utsname.h>
|
#include <sys/utsname.h>
|
||||||
|
|
||||||
#ifdef HAVE_MALLOC_H
|
|
||||||
#include <malloc.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#ifdef __FreeBSD__
|
#ifdef __FreeBSD__
|
||||||
#include <sys/signal.h>
|
#include <sys/signal.h>
|
||||||
@@ -1361,7 +1357,7 @@ void wShowInfoPanel(WScreen *scr)
|
|||||||
char *posn = getPrettyOSName();
|
char *posn = getPrettyOSName();
|
||||||
if (posn) {
|
if (posn) {
|
||||||
snprintf(buffer, sizeof(buffer), _("Running on: %s (%s)\n"), posn, uts.machine);
|
snprintf(buffer, sizeof(buffer), _("Running on: %s (%s)\n"), posn, uts.machine);
|
||||||
free(posn);
|
wfree(posn);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
snprintf(buffer, sizeof(buffer), _("Running on: %s (%s)\n"), uts.sysname, uts.machine);
|
snprintf(buffer, sizeof(buffer), _("Running on: %s (%s)\n"), uts.sysname, uts.machine);
|
||||||
@@ -1393,31 +1389,6 @@ void wShowInfoPanel(WScreen *scr)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(HAVE_MALLOC_H) && defined(HAVE_MALLINFO2)
|
|
||||||
{
|
|
||||||
struct mallinfo2 ma = mallinfo2();
|
|
||||||
snprintf(buffer, sizeof(buffer),
|
|
||||||
#ifdef DEBUG
|
|
||||||
_("Total memory allocated: %lu kB (in use: %lu kB, %lu free chunks)\n"),
|
|
||||||
#else
|
|
||||||
_("Total memory allocated: %lu kB (in use: %lu kB)\n"),
|
|
||||||
#endif
|
|
||||||
(ma.arena + ma.hblkhd) / 1024,
|
|
||||||
(ma.uordblks + ma.hblkhd) / 1024
|
|
||||||
#ifdef DEBUG
|
|
||||||
/*
|
|
||||||
* This information is representative of the memory
|
|
||||||
* fragmentation. In ideal case it should be 1, but
|
|
||||||
* that is never possible
|
|
||||||
*/
|
|
||||||
, ma.ordblks
|
|
||||||
#endif
|
|
||||||
);
|
|
||||||
|
|
||||||
strbuf = wstrappend(strbuf, buffer);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
strbuf = wstrappend(strbuf, _("Image formats: "));
|
strbuf = wstrappend(strbuf, _("Image formats: "));
|
||||||
strl = RSupportedFileFormats();
|
strl = RSupportedFileFormats();
|
||||||
separator = NULL;
|
separator = NULL;
|
||||||
|
|||||||
1161
src/dock.c
1161
src/dock.c
File diff suppressed because it is too large
Load Diff
47
src/dock.h
47
src/dock.h
@@ -25,45 +25,38 @@
|
|||||||
|
|
||||||
#include "appicon.h"
|
#include "appicon.h"
|
||||||
|
|
||||||
typedef struct WDock {
|
|
||||||
WScreen *screen_ptr;
|
|
||||||
int x_pos, y_pos; /* position of the first icon */
|
|
||||||
|
|
||||||
WAppIcon **icon_array; /* array of docked icons */
|
|
||||||
int max_icons;
|
|
||||||
|
|
||||||
int icon_count;
|
|
||||||
|
|
||||||
#define WM_DOCK 0
|
#define WM_DOCK 0
|
||||||
#define WM_CLIP 1
|
#define WM_CLIP 1
|
||||||
#define WM_DRAWER 2
|
#define WM_DRAWER 2
|
||||||
int type;
|
|
||||||
|
|
||||||
WMagicNumber auto_expand_magic;
|
typedef struct WDock WDock;
|
||||||
WMagicNumber auto_collapse_magic;
|
|
||||||
WMagicNumber auto_raise_magic;
|
|
||||||
WMagicNumber auto_lower_magic;
|
|
||||||
unsigned int auto_collapse:1; /* if clip auto-collapse itself */
|
|
||||||
unsigned int auto_raise_lower:1; /* if clip should raise/lower when
|
|
||||||
* entered/leaved */
|
|
||||||
unsigned int on_right_side:1;
|
|
||||||
unsigned int collapsed:1;
|
|
||||||
unsigned int mapped:1;
|
|
||||||
unsigned int lowered:1;
|
|
||||||
unsigned int attract_icons:1; /* If clip should attract app-icons */
|
|
||||||
|
|
||||||
unsigned int lclip_button_pushed:1;
|
/******** Accessors/mutators ********/
|
||||||
unsigned int rclip_button_pushed:1;
|
int wDockGetXPos(WDock *dock);
|
||||||
|
int wDockGetYPos(WDock *dock);
|
||||||
|
|
||||||
struct WMenu *menu;
|
int wDockGetMaxIcons(WDock *dock);
|
||||||
|
int wDockGetIconCount(WDock *dock);
|
||||||
|
void wDockAddIconCount(WDock *dock, int count);
|
||||||
|
WAppIcon *wDockGetIcon(WDock *dock, int index);
|
||||||
|
void wDockSetIcon(WDock *doc, int index, WAppIcon *icon);
|
||||||
|
void wDockClearIcon(WDock *dock, int index);
|
||||||
|
|
||||||
struct WDDomain *defaults;
|
int wDockGetType(WDock *dock);
|
||||||
} WDock;
|
|
||||||
|
|
||||||
|
int wDockIsAutoCollapse(WDock *dock);
|
||||||
|
|
||||||
|
int wDockIsAutoRaiseLower(WDock *dock);
|
||||||
|
|
||||||
|
int wDockIsOnRightSide(WDock *dock);
|
||||||
|
|
||||||
|
int wDockIsCollapsed(WDock *dock);
|
||||||
|
void wDockSetCollapsed(WDock *dock, int collapsed);
|
||||||
|
|
||||||
|
int wDockGetAttractIcons(WDock *dock);
|
||||||
|
void wDockSetAttractIcons(WDock *dock, int attract_icons);
|
||||||
|
|
||||||
|
/******** Lifecycle/resource management ********/
|
||||||
WDock *wDockCreate(WScreen *scr, int type, const char *name);
|
WDock *wDockCreate(WScreen *scr, int type, const char *name);
|
||||||
WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type);
|
WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type);
|
||||||
|
|
||||||
|
|||||||
@@ -42,43 +42,13 @@
|
|||||||
|
|
||||||
static void updateCommand(WAppIcon * icon, char *command)
|
static void updateCommand(WAppIcon * icon, char *command)
|
||||||
{
|
{
|
||||||
if (icon->command)
|
wAppIconSetCommand(icon, command);
|
||||||
wfree(icon->command);
|
|
||||||
if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) {
|
|
||||||
wfree(command);
|
|
||||||
command = NULL;
|
|
||||||
}
|
|
||||||
icon->command = command;
|
|
||||||
|
|
||||||
if (!icon->wm_class && !icon->wm_instance && icon->command && strlen(icon->command) > 0) {
|
if (!wAppIconGetWmClass(icon) && !wAppIconGetWmInstance(icon) && wAppIconGetCommand(icon) && strlen(wAppIconGetCommand(icon)) > 0) {
|
||||||
icon->forced_dock = 1;
|
wAppIconSetForceDocked(icon, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void updatePasteCommand(WAppIcon * icon, char *command)
|
|
||||||
{
|
|
||||||
if (icon->paste_command)
|
|
||||||
wfree(icon->paste_command);
|
|
||||||
if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) {
|
|
||||||
wfree(command);
|
|
||||||
command = NULL;
|
|
||||||
}
|
|
||||||
icon->paste_command = command;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef USE_DOCK_XDND
|
|
||||||
static void updateDNDCommand(WAppIcon * icon, char *command)
|
|
||||||
{
|
|
||||||
if (icon->dnd_command)
|
|
||||||
wfree(icon->dnd_command);
|
|
||||||
if (command && (command[0] == 0 || (command[0] == '-' && command[1] == 0))) {
|
|
||||||
wfree(command);
|
|
||||||
command = NULL;
|
|
||||||
}
|
|
||||||
icon->dnd_command = command;
|
|
||||||
}
|
|
||||||
#endif /* USE_DOCK_XDND */
|
|
||||||
|
|
||||||
static void updateSettingsPanelIcon(AppSettingsPanel * panel)
|
static void updateSettingsPanelIcon(AppSettingsPanel * panel)
|
||||||
{
|
{
|
||||||
char *file;
|
char *file;
|
||||||
@@ -132,7 +102,7 @@ static void chooseIconCallback(WMWidget * self, void *clientData)
|
|||||||
WMSetButtonEnabled(panel->browseBtn, False);
|
WMSetButtonEnabled(panel->browseBtn, False);
|
||||||
|
|
||||||
result = wIconChooserDialog(panel->wwin->screen_ptr, &file,
|
result = wIconChooserDialog(panel->wwin->screen_ptr, &file,
|
||||||
panel->editedIcon->wm_instance, panel->editedIcon->wm_class);
|
wAppIconGetWmInstance(panel->editedIcon), wAppIconGetWmClass(panel->editedIcon));
|
||||||
|
|
||||||
panel->choosingIcon = 0;
|
panel->choosingIcon = 0;
|
||||||
if (!panel->destroyed) {
|
if (!panel->destroyed) {
|
||||||
@@ -164,7 +134,7 @@ static void panelBtnCallback(WMWidget * self, void *data)
|
|||||||
text = NULL;
|
text = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!wIconChangeImageFile(panel->editedIcon->icon, text)) {
|
if (!wIconChangeImageFile(wAppIconGetIcon(panel->editedIcon), text)) {
|
||||||
char *buf;
|
char *buf;
|
||||||
int len = strlen(text) + 64;
|
int len = strlen(text) + 64;
|
||||||
|
|
||||||
@@ -181,14 +151,14 @@ static void panelBtnCallback(WMWidget * self, void *data)
|
|||||||
WAppIcon *aicon = panel->editedIcon;
|
WAppIcon *aicon = panel->editedIcon;
|
||||||
|
|
||||||
// Cf dock.c:dockIconPaint(WAppIcon *aicon)?
|
// Cf dock.c:dockIconPaint(WAppIcon *aicon)?
|
||||||
if (aicon == aicon->icon->core->screen_ptr->clip_icon)
|
if (aicon == wAppIconGetIcon(aicon)->core->screen_ptr->clip_icon)
|
||||||
wClipIconPaint(aicon);
|
wClipIconPaint(aicon);
|
||||||
else if (wIsADrawer(aicon))
|
else if (wIsADrawer(aicon))
|
||||||
wDrawerIconPaint(aicon);
|
wDrawerIconPaint(aicon);
|
||||||
else
|
else
|
||||||
wAppIconPaint(aicon);
|
wAppIconPaint(aicon);
|
||||||
|
|
||||||
wDefaultChangeIcon(aicon->wm_instance, aicon->wm_class, text);
|
wDefaultChangeIcon(wAppIconGetWmInstance(aicon), wAppIconGetWmClass(aicon), text);
|
||||||
}
|
}
|
||||||
if (text)
|
if (text)
|
||||||
wfree(text);
|
wfree(text);
|
||||||
@@ -203,16 +173,16 @@ static void panelBtnCallback(WMWidget * self, void *data)
|
|||||||
updateCommand(panel->editedIcon, text);
|
updateCommand(panel->editedIcon, text);
|
||||||
#ifdef USE_DOCK_XDND
|
#ifdef USE_DOCK_XDND
|
||||||
/* cannot free text from this, because it will be not be duplicated
|
/* cannot free text from this, because it will be not be duplicated
|
||||||
* in updateDNDCommand */
|
* in wAppIconSetDnDCommand */
|
||||||
text = WMGetTextFieldText(panel->dndCommandField);
|
text = WMGetTextFieldText(panel->dndCommandField);
|
||||||
updateDNDCommand(panel->editedIcon, text);
|
wAppIconSetDnDCommand(panel->editedIcon, text);
|
||||||
#endif
|
#endif
|
||||||
text = WMGetTextFieldText(panel->pasteCommandField);
|
text = WMGetTextFieldText(panel->pasteCommandField);
|
||||||
updatePasteCommand(panel->editedIcon, text);
|
wAppIconSetPasteCommand(panel->editedIcon, text);
|
||||||
|
|
||||||
panel->editedIcon->auto_launch = WMGetButtonSelected(panel->autoLaunchBtn);
|
wAppIconSetAutoLaunch(panel->editedIcon, WMGetButtonSelected(panel->autoLaunchBtn));
|
||||||
|
|
||||||
panel->editedIcon->lock = WMGetButtonSelected(panel->lockBtn);
|
wAppIconSetLocked(panel->editedIcon, WMGetButtonSelected(panel->lockBtn));
|
||||||
}
|
}
|
||||||
|
|
||||||
DestroyDockAppSettingsPanel(panel);
|
DestroyDockAppSettingsPanel(panel);
|
||||||
@@ -221,7 +191,7 @@ static void panelBtnCallback(WMWidget * self, void *data)
|
|||||||
void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
||||||
{
|
{
|
||||||
AppSettingsPanel *panel;
|
AppSettingsPanel *panel;
|
||||||
WScreen *scr = aicon->icon->core->screen_ptr;
|
WScreen *scr = wAppIconGetIcon(aicon)->core->screen_ptr;
|
||||||
Window parent;
|
Window parent;
|
||||||
WMFont *font;
|
WMFont *font;
|
||||||
int x, y;
|
int x, y;
|
||||||
@@ -252,8 +222,8 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||||||
|
|
||||||
panel->editedIcon = aicon;
|
panel->editedIcon = aicon;
|
||||||
|
|
||||||
aicon->panel = panel;
|
wAppIconSetPanel(aicon, panel);
|
||||||
aicon->editing = 1;
|
wAppIconSetEditing(aicon, 1);
|
||||||
|
|
||||||
panel->win = WMCreateWindow(scr->wmscreen, "applicationSettings");
|
panel->win = WMCreateWindow(scr->wmscreen, "applicationSettings");
|
||||||
WMResizeWidget(panel->win, pwidth, pheight);
|
WMResizeWidget(panel->win, pwidth, pheight);
|
||||||
@@ -270,10 +240,10 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||||||
WMSetLabelTextAlignment(panel->nameLabel, WALeft);
|
WMSetLabelTextAlignment(panel->nameLabel, WALeft);
|
||||||
WMSetLabelFont(panel->nameLabel, font);
|
WMSetLabelFont(panel->nameLabel, font);
|
||||||
WMReleaseFont(font);
|
WMReleaseFont(font);
|
||||||
if (aicon->wm_class && strcmp(aicon->wm_class, "DockApp") == 0)
|
if (wAppIconGetWmClass(aicon) && strcmp(wAppIconGetWmClass(aicon), "DockApp") == 0)
|
||||||
WMSetLabelText(panel->nameLabel, aicon->wm_instance);
|
WMSetLabelText(panel->nameLabel, wAppIconGetWmInstance(aicon));
|
||||||
else
|
else
|
||||||
WMSetLabelText(panel->nameLabel, aicon->wm_class);
|
WMSetLabelText(panel->nameLabel, wAppIconGetWmClass(aicon));
|
||||||
|
|
||||||
vbox = WMCreateBox(panel->win);
|
vbox = WMCreateBox(panel->win);
|
||||||
WMResizeWidget(vbox, pwidth - 2 * WMScaleX(10), pheight - iconSize - 3 * WMScaleY(10));
|
WMResizeWidget(vbox, pwidth - 2 * WMScaleX(10), pheight - iconSize - 3 * WMScaleY(10));
|
||||||
@@ -282,12 +252,12 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||||||
panel->autoLaunchBtn = WMCreateSwitchButton(vbox);
|
panel->autoLaunchBtn = WMCreateSwitchButton(vbox);
|
||||||
WMAddBoxSubview(vbox, WMWidgetView(panel->autoLaunchBtn), False, True, WMScaleY(20), WMScaleY(20), WMScaleY(2));
|
WMAddBoxSubview(vbox, WMWidgetView(panel->autoLaunchBtn), False, True, WMScaleY(20), WMScaleY(20), WMScaleY(2));
|
||||||
WMSetButtonText(panel->autoLaunchBtn, _("Start when Window Maker is started"));
|
WMSetButtonText(panel->autoLaunchBtn, _("Start when Window Maker is started"));
|
||||||
WMSetButtonSelected(panel->autoLaunchBtn, aicon->auto_launch);
|
WMSetButtonSelected(panel->autoLaunchBtn, wAppIconIsAutoLaunch(aicon));
|
||||||
|
|
||||||
panel->lockBtn = WMCreateSwitchButton(vbox);
|
panel->lockBtn = WMCreateSwitchButton(vbox);
|
||||||
WMAddBoxSubview(vbox, WMWidgetView(panel->lockBtn), False, True, WMScaleY(20), WMScaleY(20), WMScaleY(5));
|
WMAddBoxSubview(vbox, WMWidgetView(panel->lockBtn), False, True, WMScaleY(20), WMScaleY(20), WMScaleY(5));
|
||||||
WMSetButtonText(panel->lockBtn, _("Lock (prevent accidental removal)"));
|
WMSetButtonText(panel->lockBtn, _("Lock (prevent accidental removal)"));
|
||||||
WMSetButtonSelected(panel->lockBtn, aicon->lock);
|
WMSetButtonSelected(panel->lockBtn, wAppIconIsLocked(aicon));
|
||||||
|
|
||||||
panel->commandFrame = WMCreateFrame(vbox);
|
panel->commandFrame = WMCreateFrame(vbox);
|
||||||
WMSetFrameTitle(panel->commandFrame, _("Application path and arguments"));
|
WMSetFrameTitle(panel->commandFrame, _("Application path and arguments"));
|
||||||
@@ -296,7 +266,7 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||||||
panel->commandField = WMCreateTextField(panel->commandFrame);
|
panel->commandField = WMCreateTextField(panel->commandFrame);
|
||||||
WMResizeWidget(panel->commandField, WMScaleX(260), WMScaleY(20));
|
WMResizeWidget(panel->commandField, WMScaleX(260), WMScaleY(20));
|
||||||
WMMoveWidget(panel->commandField, WMScaleX(10), WMScaleY(20));
|
WMMoveWidget(panel->commandField, WMScaleX(10), WMScaleY(20));
|
||||||
WMSetTextFieldText(panel->commandField, aicon->command);
|
WMSetTextFieldText(panel->commandField, wAppIconGetCommand(aicon));
|
||||||
|
|
||||||
WMMapSubwidgets(panel->commandFrame);
|
WMMapSubwidgets(panel->commandFrame);
|
||||||
|
|
||||||
@@ -312,7 +282,7 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||||||
WMResizeWidget(panel->pasteCommandLabel, WMScaleX(260), WMScaleY(18));
|
WMResizeWidget(panel->pasteCommandLabel, WMScaleX(260), WMScaleY(18));
|
||||||
WMMoveWidget(panel->pasteCommandLabel, WMScaleX(10), WMScaleY(45));
|
WMMoveWidget(panel->pasteCommandLabel, WMScaleX(10), WMScaleY(45));
|
||||||
|
|
||||||
WMSetTextFieldText(panel->pasteCommandField, aicon->paste_command);
|
WMSetTextFieldText(panel->pasteCommandField, wAppIconGetPasteCommand(aicon));
|
||||||
WMSetLabelText(panel->pasteCommandLabel, _("%s will be replaced with current selection"));
|
WMSetLabelText(panel->pasteCommandLabel, _("%s will be replaced with current selection"));
|
||||||
WMMapSubwidgets(panel->pasteCommandFrame);
|
WMMapSubwidgets(panel->pasteCommandFrame);
|
||||||
|
|
||||||
@@ -328,7 +298,7 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||||||
WMResizeWidget(panel->dndCommandLabel, WMScaleX(260), WMScaleY(18));
|
WMResizeWidget(panel->dndCommandLabel, WMScaleX(260), WMScaleY(18));
|
||||||
WMMoveWidget(panel->dndCommandLabel, WMScaleX(10), WMScaleY(45));
|
WMMoveWidget(panel->dndCommandLabel, WMScaleX(10), WMScaleY(45));
|
||||||
#ifdef USE_DOCK_XDND
|
#ifdef USE_DOCK_XDND
|
||||||
WMSetTextFieldText(panel->dndCommandField, aicon->dnd_command);
|
WMSetTextFieldText(panel->dndCommandField, wAppIconGetDnDCommand(aicon));
|
||||||
WMSetLabelText(panel->dndCommandLabel, _("%d will be replaced with the file name"));
|
WMSetLabelText(panel->dndCommandLabel, _("%d will be replaced with the file name"));
|
||||||
#else
|
#else
|
||||||
WMSetTextFieldEditable(panel->dndCommandField, False);
|
WMSetTextFieldEditable(panel->dndCommandField, False);
|
||||||
@@ -346,7 +316,7 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||||||
panel->iconField = WMCreateTextField(panel->iconFrame);
|
panel->iconField = WMCreateTextField(panel->iconFrame);
|
||||||
WMResizeWidget(panel->iconField, WMScaleX(180), WMScaleY(20));
|
WMResizeWidget(panel->iconField, WMScaleX(180), WMScaleY(20));
|
||||||
WMMoveWidget(panel->iconField, WMScaleX(10), WMScaleY(20));
|
WMMoveWidget(panel->iconField, WMScaleX(10), WMScaleY(20));
|
||||||
WMSetTextFieldText(panel->iconField, wDefaultGetIconFile(aicon->wm_instance, aicon->wm_class, False));
|
WMSetTextFieldText(panel->iconField, wDefaultGetIconFile(wAppIconGetWmInstance(aicon), wAppIconGetWmClass(aicon), False));
|
||||||
|
|
||||||
panel->browseBtn = WMCreateCommandButton(panel->iconFrame);
|
panel->browseBtn = WMCreateCommandButton(panel->iconFrame);
|
||||||
WMResizeWidget(panel->browseBtn, WMScaleX(70), WMScaleY(24));
|
WMResizeWidget(panel->browseBtn, WMScaleX(70), WMScaleY(24));
|
||||||
@@ -392,14 +362,14 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||||||
{
|
{
|
||||||
WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr));
|
WMRect rect = wGetRectForHead(scr, wGetHeadForPointerLocation(scr));
|
||||||
|
|
||||||
y = aicon->y_pos;
|
y = wAppIconGetYPos(aicon);
|
||||||
if (y < 0)
|
if (y < 0)
|
||||||
y = 0;
|
y = 0;
|
||||||
else if (y + pheight > rect.pos.y + rect.size.height)
|
else if (y + pheight > rect.pos.y + rect.size.height)
|
||||||
y = rect.pos.y + rect.size.height - pheight - 3 * WMScaleY(10);
|
y = rect.pos.y + rect.size.height - pheight - 3 * WMScaleY(10);
|
||||||
|
|
||||||
if (aicon->dock && aicon->dock->type == WM_DOCK) {
|
if (wAppIconGetDock(aicon) && wDockGetType(wAppIconGetDock(aicon)) == WM_DOCK) {
|
||||||
if (aicon->dock->on_right_side)
|
if (wDockIsOnRightSide(wAppIconGetDock(aicon)))
|
||||||
x = rect.pos.x + rect.size.width / 2;
|
x = rect.pos.x + rect.size.width / 2;
|
||||||
else
|
else
|
||||||
x = rect.pos.x + rect.size.width / 2 - pwidth - WMScaleX(2);
|
x = rect.pos.x + rect.size.width / 2 - pwidth - WMScaleX(2);
|
||||||
@@ -443,9 +413,9 @@ void DestroyDockAppSettingsPanel(AppSettingsPanel * panel)
|
|||||||
|
|
||||||
XDestroyWindow(dpy, panel->parent);
|
XDestroyWindow(dpy, panel->parent);
|
||||||
|
|
||||||
panel->editedIcon->panel = NULL;
|
wAppIconSetPanel(panel->editedIcon, NULL);
|
||||||
|
|
||||||
panel->editedIcon->editing = 0;
|
wAppIconSetEditing(panel->editedIcon, 0);
|
||||||
|
|
||||||
wfree(panel);
|
wfree(panel);
|
||||||
}
|
}
|
||||||
|
|||||||
22
src/event.c
22
src/event.c
@@ -141,7 +141,7 @@ WMagicNumber wAddDeathHandler(pid_t pid, WDeathHandler * callback, void *cdata)
|
|||||||
{
|
{
|
||||||
DeathHandler *handler;
|
DeathHandler *handler;
|
||||||
|
|
||||||
handler = malloc(sizeof(DeathHandler));
|
handler = wmalloc(sizeof(DeathHandler));
|
||||||
if (!handler)
|
if (!handler)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -150,7 +150,7 @@ WMagicNumber wAddDeathHandler(pid_t pid, WDeathHandler * callback, void *cdata)
|
|||||||
handler->client_data = cdata;
|
handler->client_data = cdata;
|
||||||
|
|
||||||
if (!deathHandlers)
|
if (!deathHandlers)
|
||||||
deathHandlers = WMCreateArrayWithDestructor(8, free);
|
deathHandlers = WMCreateArrayWithDestructor(8, wfree);
|
||||||
|
|
||||||
WMAddToArray(deathHandlers, handler);
|
WMAddToArray(deathHandlers, handler);
|
||||||
|
|
||||||
@@ -164,7 +164,7 @@ static void wdelete_death_handler(WMagicNumber id)
|
|||||||
if (!handler || !deathHandlers)
|
if (!handler || !deathHandlers)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* array destructor will call free(handler) */
|
/* array destructor will call wfree(handler) */
|
||||||
WMRemoveFromArray(deathHandlers, handler);
|
WMRemoveFromArray(deathHandlers, handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -605,7 +605,7 @@ static void handleMapRequest(XEvent * ev)
|
|||||||
WApplication *wapp = wApplicationOf(wwin->main_window);
|
WApplication *wapp = wApplicationOf(wwin->main_window);
|
||||||
/* go to the last workspace that the user worked on the app */
|
/* go to the last workspace that the user worked on the app */
|
||||||
if (wapp) {
|
if (wapp) {
|
||||||
wWorkspaceChange(wwin->screen_ptr, wapp->last_workspace);
|
wWorkspaceChange(wwin->screen_ptr, wApplicationGetLastWorkspace(wapp));
|
||||||
}
|
}
|
||||||
wUnhideApplication(wapp, False, False);
|
wUnhideApplication(wapp, False, False);
|
||||||
}
|
}
|
||||||
@@ -693,9 +693,9 @@ static void handleDestroyNotify(XEvent * event)
|
|||||||
|
|
||||||
app = wApplicationOf(window);
|
app = wApplicationOf(window);
|
||||||
if (app) {
|
if (app) {
|
||||||
if (window == app->main_window) {
|
if (window == wApplicationGetMainWindow(app)) {
|
||||||
app->refcount = 0;
|
wApplicationClearRefcount(app);
|
||||||
wwin = app->main_window_desc->screen_ptr->focused_window;
|
wwin = wApplicationGetMainWindowDesc(app)->screen_ptr->focused_window;
|
||||||
while (wwin) {
|
while (wwin) {
|
||||||
if (wwin->main_window == window) {
|
if (wwin->main_window == window) {
|
||||||
wwin->main_window = None;
|
wwin->main_window = None;
|
||||||
@@ -984,7 +984,7 @@ static void handlePropertyNotify(XEvent * event)
|
|||||||
}
|
}
|
||||||
wapp = wApplicationOf(event->xproperty.window);
|
wapp = wApplicationOf(event->xproperty.window);
|
||||||
if (wapp) {
|
if (wapp) {
|
||||||
wClientCheckProperty(wapp->main_window_desc, &event->xproperty);
|
wClientCheckProperty(wApplicationGetMainWindowDesc(wapp), &event->xproperty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1038,7 +1038,7 @@ static void handleClientMessage(XEvent * event)
|
|||||||
if (wapp) {
|
if (wapp) {
|
||||||
switch (event->xclient.data.l[0]) {
|
switch (event->xclient.data.l[0]) {
|
||||||
case WMFHideOtherApplications:
|
case WMFHideOtherApplications:
|
||||||
wHideOtherApplications(wapp->main_window_desc);
|
wHideOtherApplications(wApplicationGetMainWindowDesc(wapp));
|
||||||
done = 1;
|
done = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1115,7 +1115,7 @@ static void handleClientMessage(XEvent * event)
|
|||||||
if (desc->parent_type == WCLASS_MINIWINDOW) {
|
if (desc->parent_type == WCLASS_MINIWINDOW) {
|
||||||
icon = (WIcon *) desc->parent;
|
icon = (WIcon *) desc->parent;
|
||||||
} else if (desc->parent_type == WCLASS_DOCK_ICON || desc->parent_type == WCLASS_APPICON) {
|
} else if (desc->parent_type == WCLASS_DOCK_ICON || desc->parent_type == WCLASS_APPICON) {
|
||||||
icon = ((WAppIcon *) desc->parent)->icon;
|
icon = wAppIconGetIcon((WAppIcon *) desc->parent);
|
||||||
}
|
}
|
||||||
if (icon && (wwin = icon->owner)) {
|
if (icon && (wwin = icon->owner)) {
|
||||||
if (wwin->client_win != event->xclient.window) {
|
if (wwin->client_win != event->xclient.window) {
|
||||||
@@ -1481,7 +1481,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
WApplication *wapp = wApplicationOf(wwin->main_window);
|
WApplication *wapp = wApplicationOf(wwin->main_window);
|
||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
if (wapp && !WFLAGP(wapp->main_window_desc, no_appicon)) {
|
if (wapp && !WFLAGP(wApplicationGetMainWindowDesc(wapp), no_appicon)) {
|
||||||
wHideApplication(wapp);
|
wHideApplication(wapp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ WGeometryView *WCreateGeometryView(WMScreen * scr)
|
|||||||
widgetClass = W_RegisterUserWidget();
|
widgetClass = W_RegisterUserWidget();
|
||||||
}
|
}
|
||||||
|
|
||||||
gview = malloc(sizeof(WGeometryView));
|
gview = wmalloc(sizeof(WGeometryView));
|
||||||
if (!gview) {
|
if (!gview) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user