mirror of
https://github.com/gryf/wmaker.git
synced 2026-07-09 12:16:38 +02:00
Compare commits
28 Commits
mynext
...
e5b227fe8d
| Author | SHA1 | Date | |
|---|---|---|---|
| e5b227fe8d | |||
| d947095881 | |||
| 93b049356f | |||
| 75f353bef4 | |||
| 2264ed9de6 | |||
| d0aa2cefcd | |||
| a52d13c8b8 | |||
| 215b6ee2e6 | |||
| ab45c6c6c2 | |||
| 3344f2b040 | |||
| ecef2b2890 | |||
| 802cbc0d75 | |||
| 157d1ba85f | |||
| 91e7f37074 | |||
| 18a539b372 | |||
| eae9200c5d | |||
| 25cb9d208a | |||
| 23471b2e21 | |||
| 258ffc8b97 | |||
| 86b7ec1a58 | |||
| 9831e3f72a | |||
| 0a55facac0 | |||
| 0ecf7d3540 | |||
| 4576b5bf1e | |||
| 0526ddfc54 | |||
| 4c52232ee7 | |||
| 43edd37ee2 | |||
| e95aea2e30 |
@@ -30,6 +30,8 @@ m4/ltversion.m4
|
|||||||
m4/lt~obsolete.m4
|
m4/lt~obsolete.m4
|
||||||
|
|
||||||
src/wconfig.h
|
src/wconfig.h
|
||||||
|
WINGs/WINGs/WINGsP.h
|
||||||
|
wrlib/wraster.h
|
||||||
|
|
||||||
# These files are generated by scripts
|
# These files are generated by scripts
|
||||||
INSTALL-WMAKER
|
INSTALL-WMAKER
|
||||||
|
|||||||
@@ -3,6 +3,26 @@ NEWS for veteran Window Maker users
|
|||||||
|
|
||||||
-- 0.96.0
|
-- 0.96.0
|
||||||
|
|
||||||
|
Hot Corners feature
|
||||||
|
--------------------------
|
||||||
|
|
||||||
|
Screen corners can be assigned an external command to be
|
||||||
|
executed when the mouse pointer is entering those areas.
|
||||||
|
In WPrefs, "Hot Corner Shortcut Preferences" can be used
|
||||||
|
for configuration or by manually adding a "HotCorners" key
|
||||||
|
and value to "YES" in the ~/GNUstep/Defaults/WindowMaker file.
|
||||||
|
Hot Corners feature is disabled by default.
|
||||||
|
Actions are specified by the "HotCornerActions" and are defined
|
||||||
|
as a four entries list ("top left action", "top right action",
|
||||||
|
"bottom left action", "bottom right action").
|
||||||
|
A screen corner area is a cube shape defined by the "HotCornerEdge"
|
||||||
|
which is a number of pixels from 2 (by default) to 10.
|
||||||
|
To lower the risk of triggering that feature accidentally a
|
||||||
|
"HotCornerDelay" key can be used which is the time before the action
|
||||||
|
is triggered while the pointer is in one of the screen corner.
|
||||||
|
Default value is 250 ms.
|
||||||
|
|
||||||
|
|
||||||
Screenshot capture feature
|
Screenshot capture feature
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ include_HEADERS = wtableview.h wtabledelegates.h
|
|||||||
|
|
||||||
lib_LTLIBRARIES = libExtraWINGs.la
|
lib_LTLIBRARIES = libExtraWINGs.la
|
||||||
|
|
||||||
noinst_PROGRAMS = test
|
noinst_PROGRAMS = tableview
|
||||||
|
|
||||||
EXTRA_DIST =
|
EXTRA_DIST =
|
||||||
|
|
||||||
@@ -25,6 +25,6 @@ AM_CPPFLAGS = -I$(top_srcdir)/wrlib -I$(top_srcdir)/WINGs \
|
|||||||
|
|
||||||
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
LDADD= $(top_builddir)/WINGs/libWINGs.la $(top_builddir)/wrlib/libwraster.la \
|
||||||
$(top_builddir)/WINGs/libWUtil.la \
|
$(top_builddir)/WINGs/libWUtil.la \
|
||||||
@XFT_LIBS@ @INTLIBS@
|
@XFT_LIBS@ @INTLIBS@ @XLIBS@
|
||||||
|
|
||||||
test_LDADD = wtableview.o wtabledelegates.o $(LDADD)
|
tableview_LDADD = wtableview.o wtabledelegates.o $(LDADD)
|
||||||
|
|||||||
@@ -19,13 +19,18 @@ static char *options[] = {
|
|||||||
|
|
||||||
int numberOfRows(WMTableViewDelegate * self, WMTableView * table)
|
int numberOfRows(WMTableViewDelegate * self, WMTableView * table)
|
||||||
{
|
{
|
||||||
|
(void) self;
|
||||||
|
(void) table;
|
||||||
|
|
||||||
return 20;
|
return 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
void *valueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row)
|
void *valueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row)
|
||||||
{
|
{
|
||||||
|
(void) self;
|
||||||
/*WMTableView *table = (WMTableView*)WMGetTableColumnTableView(column); */
|
/*WMTableView *table = (WMTableView*)WMGetTableColumnTableView(column); */
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (col1[0] == 0) {
|
if (col1[0] == 0) {
|
||||||
for (i = 0; i < 20; i++) {
|
for (i = 0; i < 20; i++) {
|
||||||
char buf[128];
|
char buf[128];
|
||||||
@@ -44,6 +49,8 @@ void *valueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row)
|
|||||||
|
|
||||||
void setValueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row, void *data)
|
void setValueForCell(WMTableViewDelegate * self, WMTableColumn * column, int row, void *data)
|
||||||
{
|
{
|
||||||
|
(void) self;
|
||||||
|
|
||||||
if ((uintptr_t)WMGetTableColumnId(column) == 1)
|
if ((uintptr_t)WMGetTableColumnId(column) == 1)
|
||||||
col1[row] = data;
|
col1[row] = data;
|
||||||
else
|
else
|
||||||
@@ -59,6 +66,7 @@ static WMTableViewDelegate delegate = {
|
|||||||
|
|
||||||
void clickedTable(WMWidget * w, void *self)
|
void clickedTable(WMWidget * w, void *self)
|
||||||
{
|
{
|
||||||
|
(void) w;
|
||||||
int row = WMGetTableViewClickedRow((WMTableView *) self);
|
int row = WMGetTableViewClickedRow((WMTableView *) self);
|
||||||
|
|
||||||
WMEditTableViewRow(self, row);
|
WMEditTableViewRow(self, row);
|
||||||
@@ -2,6 +2,8 @@
|
|||||||
#include <WINGs/WINGsP.h>
|
#include <WINGs/WINGsP.h>
|
||||||
#include <X11/cursorfont.h>
|
#include <X11/cursorfont.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <float.h>
|
||||||
|
|
||||||
#include "wtableview.h"
|
#include "wtableview.h"
|
||||||
|
|
||||||
@@ -274,7 +276,7 @@ static void adjustScrollers(WMTableView * table)
|
|||||||
prop = 1.0;
|
prop = 1.0;
|
||||||
} else {
|
} else {
|
||||||
oprop = WMGetScrollerKnobProportion(table->hscroll);
|
oprop = WMGetScrollerKnobProportion(table->hscroll);
|
||||||
if (oprop == 0.0)
|
if (fabs(oprop) <= DBL_EPSILON)
|
||||||
oprop = 1.0;
|
oprop = 1.0;
|
||||||
ovalue = WMGetScrollerValue(table->hscroll);
|
ovalue = WMGetScrollerValue(table->hscroll);
|
||||||
|
|
||||||
@@ -290,7 +292,7 @@ static void adjustScrollers(WMTableView * table)
|
|||||||
prop = 1.0;
|
prop = 1.0;
|
||||||
} else {
|
} else {
|
||||||
oprop = WMGetScrollerKnobProportion(table->vscroll);
|
oprop = WMGetScrollerKnobProportion(table->vscroll);
|
||||||
if (oprop == 0.0)
|
if (fabs(oprop) <= DBL_EPSILON)
|
||||||
oprop = 1.0;
|
oprop = 1.0;
|
||||||
ovalue = WMGetScrollerValue(table->vscroll);
|
ovalue = WMGetScrollerValue(table->vscroll);
|
||||||
|
|
||||||
@@ -332,7 +334,7 @@ static void doScroll(WMWidget * self, void *data)
|
|||||||
case WSIncrementWheel:
|
case WSIncrementWheel:
|
||||||
case WSIncrementLine:
|
case WSIncrementLine:
|
||||||
value += (float)table->rowHeight / size;
|
value += (float)table->rowHeight / size;
|
||||||
if (value > 1.0)
|
if (value > (float)1.0)
|
||||||
value = 1.0;
|
value = 1.0;
|
||||||
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
||||||
repaintTable(table);
|
repaintTable(table);
|
||||||
@@ -344,7 +346,7 @@ static void doScroll(WMWidget * self, void *data)
|
|||||||
|
|
||||||
case WSDecrementPage:
|
case WSDecrementPage:
|
||||||
value -= vpsize / size;
|
value -= vpsize / size;
|
||||||
if (value < 0.0)
|
if (value < (float)0.0)
|
||||||
value = 0.0;
|
value = 0.0;
|
||||||
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
||||||
repaintTable(table);
|
repaintTable(table);
|
||||||
@@ -352,7 +354,7 @@ static void doScroll(WMWidget * self, void *data)
|
|||||||
|
|
||||||
case WSIncrementPage:
|
case WSIncrementPage:
|
||||||
value += vpsize / size;
|
value += vpsize / size;
|
||||||
if (value > 1.0)
|
if (value > (float)1.0)
|
||||||
value = 1.0;
|
value = 1.0;
|
||||||
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
WMSetScrollerParameters(self, value, WMGetScrollerKnobProportion(self));
|
||||||
repaintTable(table);
|
repaintTable(table);
|
||||||
@@ -398,6 +400,7 @@ static void doScroll(WMWidget * self, void *data)
|
|||||||
|
|
||||||
static void splitterHandler(XEvent * event, void *data)
|
static void splitterHandler(XEvent * event, void *data)
|
||||||
{
|
{
|
||||||
|
(void) event;
|
||||||
WMTableColumn *column = (WMTableColumn *) data;
|
WMTableColumn *column = (WMTableColumn *) data;
|
||||||
WMTableView *table = column->table;
|
WMTableView *table = column->table;
|
||||||
int done = 0;
|
int done = 0;
|
||||||
@@ -451,6 +454,8 @@ static void splitterHandler(XEvent * event, void *data)
|
|||||||
|
|
||||||
static void realizeTable(void *data, WMNotification * notif)
|
static void realizeTable(void *data, WMNotification * notif)
|
||||||
{
|
{
|
||||||
|
(void) notif;
|
||||||
|
|
||||||
repaintTable(data);
|
repaintTable(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -790,7 +795,6 @@ void WMSetTableViewRowHeight(WMTableView * table, int height)
|
|||||||
|
|
||||||
void WMScrollTableViewRowToVisible(WMTableView * table, int row)
|
void WMScrollTableViewRowToVisible(WMTableView * table, int row)
|
||||||
{
|
{
|
||||||
WMScroller *scroller;
|
|
||||||
WMRange range;
|
WMRange range;
|
||||||
WMRect rect;
|
WMRect rect;
|
||||||
int newY, tmp;
|
int newY, tmp;
|
||||||
@@ -798,7 +802,6 @@ void WMScrollTableViewRowToVisible(WMTableView * table, int row)
|
|||||||
rect = getVisibleRect(table);
|
rect = getVisibleRect(table);
|
||||||
range = rowsInRect(table, rect);
|
range = rowsInRect(table, rect);
|
||||||
|
|
||||||
scroller = table->vscroll;
|
|
||||||
|
|
||||||
if (row < range.position) {
|
if (row < range.position) {
|
||||||
newY = row * table->rowHeight - rect.size.height / 2;
|
newY = row * table->rowHeight - rect.size.height / 2;
|
||||||
@@ -1157,6 +1160,8 @@ static void handleEvents(XEvent * event, void *data)
|
|||||||
|
|
||||||
static void handleResize(W_ViewDelegate * self, WMView * view)
|
static void handleResize(W_ViewDelegate * self, WMView * view)
|
||||||
{
|
{
|
||||||
|
(void) self;
|
||||||
|
|
||||||
reorganizeInterior(view->self);
|
reorganizeInterior(view->self);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1167,7 +1172,8 @@ static void reorganizeInterior(WMTableView * table)
|
|||||||
WMSize size = getTotalSize(table);
|
WMSize size = getTotalSize(table);
|
||||||
WMView *view = table->view;
|
WMView *view = table->view;
|
||||||
int vw, vh;
|
int vw, vh;
|
||||||
int hsThickness, vsThickness;
|
int hsThickness = 0;
|
||||||
|
int vsThickness = 0;
|
||||||
|
|
||||||
if (table->vscroll)
|
if (table->vscroll)
|
||||||
vsThickness = WMWidgetWidth(table->vscroll);
|
vsThickness = WMWidgetWidth(table->vscroll);
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
# Translation into Western Frisian for Window Maker
|
# Translation into Western Frisian for Window Maker
|
||||||
# Copyright (C) 2015-2016 Window Maker Developers Team
|
# Copyright (C) 2015-2019 Window Maker Developers Team
|
||||||
# This file is distributed under the same license as the windowmaker package.
|
# This file is distributed under the same license as the windowmaker package.
|
||||||
# Original by Alwin <translations@ziggo.nl>, 2015.
|
# Original by Alwin <translations@ziggo.nl>, 2015.
|
||||||
#
|
#
|
||||||
|
|||||||
+1
-1
@@ -1,5 +1,5 @@
|
|||||||
# New translation into Dutch for Window Maker
|
# New translation into Dutch for Window Maker
|
||||||
# Copyright (C) 2014-2015 Window Maker Developers Team
|
# Copyright (C) 2014-2019 Window Maker Developers Team
|
||||||
# This file is distributed under the same license as the windowmaker package.
|
# This file is distributed under the same license as the windowmaker package.
|
||||||
# Original by Alwin <translations@ziggo.nl>, 2014.
|
# Original by Alwin <translations@ziggo.nl>, 2014.
|
||||||
#
|
#
|
||||||
|
|||||||
+806
@@ -0,0 +1,806 @@
|
|||||||
|
# Serbian messages for Window Maker
|
||||||
|
# Copyright (C) 1997-2006 Alfredo K. Kojima
|
||||||
|
# 1998-2006 Dan Pascu
|
||||||
|
# 2013-2020 Window Maker Developers Team
|
||||||
|
# This file is distributed under the same license as the Window Maker package.
|
||||||
|
# Strahinya Radich (Страхиња Радић) <contact@strahinja.org>, 2023.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: WindowMaker 0.95.9\n"
|
||||||
|
"Report-Msgid-Bugs-To: wmaker-dev@googlegroups.com\n"
|
||||||
|
"POT-Creation-Date: 2023-10-25 14:44+0200\n"
|
||||||
|
"PO-Revision-Date: 2023-10-30 17:35+0100\n"
|
||||||
|
"Last-Translator: Страхиња Радић <contact@strahinja.org>\n"
|
||||||
|
"Language-Team: Serbian <sr@li.org>\n"
|
||||||
|
"Language: sr\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
"X-Generator: poe 1.6.0-1-g10e6dcc\n"
|
||||||
|
|
||||||
|
#: ../../WINGs/error.c:106
|
||||||
|
msgid "fatal: "
|
||||||
|
msgstr "фатално: "
|
||||||
|
|
||||||
|
#: ../../WINGs/error.c:112
|
||||||
|
msgid "error: "
|
||||||
|
msgstr "грешка: "
|
||||||
|
|
||||||
|
#: ../../WINGs/error.c:118
|
||||||
|
msgid "warning: "
|
||||||
|
msgstr "упозорење: "
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:59
|
||||||
|
#, c-format
|
||||||
|
msgid "could not get password entry for UID %i"
|
||||||
|
msgstr "не може се добавити унос лозинке за UID %i"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:89
|
||||||
|
#, c-format
|
||||||
|
msgid "could not get password entry for user %s"
|
||||||
|
msgstr "не може се добавити унос лозинке за корисника %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:208
|
||||||
|
#, c-format
|
||||||
|
msgid "could not expand %s"
|
||||||
|
msgstr "не може се проширити %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:437
|
||||||
|
#, c-format
|
||||||
|
msgid "Could not open input file \"%s\": %s"
|
||||||
|
msgstr "Не може се отворити улазна датотека „%s“: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:453
|
||||||
|
#, c-format
|
||||||
|
msgid "Could not create target file \"%s\": %s"
|
||||||
|
msgstr "Не може се креирати одредишна датотека „%s“: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:461
|
||||||
|
msgid "could not allocate memory for the copy buffer"
|
||||||
|
msgstr "не може се алоцирати меморија за бафер за копирање"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:478
|
||||||
|
#, c-format
|
||||||
|
msgid "could not read from file \"%s\": %s"
|
||||||
|
msgstr "не може се прочитати датотека „%s“: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:493
|
||||||
|
#, c-format
|
||||||
|
msgid "could not write data to file \"%s\": %s"
|
||||||
|
msgstr "не могу се уписати подаци у датотеку „%s“: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:505
|
||||||
|
#, c-format
|
||||||
|
msgid "could not set permission 0%03o on file \"%s\": %s"
|
||||||
|
msgstr "не може се поставити дозвола 0%03o на датотеци „%s“: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/findfile.c:509
|
||||||
|
#, c-format
|
||||||
|
msgid "could not close the file \"%s\": %s"
|
||||||
|
msgstr "не може се затворити датотека „%s“: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:110
|
||||||
|
#, c-format
|
||||||
|
msgid " included from file \"%s\" at line %d"
|
||||||
|
msgstr " укључена из датотеке „%s“ у реду %d"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:142
|
||||||
|
#, c-format
|
||||||
|
msgid "missing #endif to match #%s at line %d"
|
||||||
|
msgstr "недостаје #endif који би одговарао #%s у реду %d"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:200
|
||||||
|
msgid "multiple SHORTCUT definition not valid"
|
||||||
|
msgstr "вишеструка дефиниција SHORTCUT није исправна"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:253
|
||||||
|
msgid "premature end of file while expecting a new line after '\\'"
|
||||||
|
msgstr "прерани крај датотеке док се очекивао нови ред после „\\“"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:279
|
||||||
|
#, c-format
|
||||||
|
msgid "reached end of file while searching '*/' for comment started at line %d"
|
||||||
|
msgstr "достигнут крај датотеке приликом тражења „*/“ за коментар започет у реду %d"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:344
|
||||||
|
msgid "missing closing double-quote before end-of-line"
|
||||||
|
msgstr "недостаје завршни наводник пре краја реда"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:362
|
||||||
|
msgid "missing closing simple-quote before end-of-line"
|
||||||
|
msgstr "недостаје завршни апостроф пре краја реда"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:380
|
||||||
|
msgid "too many nested macro expansions, breaking loop"
|
||||||
|
msgstr "превише угњеждених проширења макроа, прекида се петља"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:439
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown directive '#%s'"
|
||||||
|
msgstr "непозната директива „#%s“"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:444
|
||||||
|
#, c-format
|
||||||
|
msgid "extra text after '#' command is ignored: \"%.16s...\""
|
||||||
|
msgstr "сувишни текст после наредбе „#“ је игнорисан: „%.16s...“"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:459
|
||||||
|
msgid "no file name found for #include"
|
||||||
|
msgstr "назив датотеке у #include-у није пронађен"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:471
|
||||||
|
msgid "file name must be enclosed in brackets or double-quotes for #define"
|
||||||
|
msgstr "назив датотеке у #define-у мора бити окружен угластим заградама или наводницима"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:485
|
||||||
|
#, c-format
|
||||||
|
msgid "missing closing '%c' in filename specification"
|
||||||
|
msgstr "недостаје завршно „%c“ у задавању назива датотеке"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:503
|
||||||
|
msgid "too many nested #include's"
|
||||||
|
msgstr "превише угњеждених #include-ова"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:568
|
||||||
|
#, c-format
|
||||||
|
msgid "could not find file \"%s\" for #include"
|
||||||
|
msgstr "не може се наћи датотека „%s“ у #include-у"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:589
|
||||||
|
#, c-format
|
||||||
|
msgid "missing macro name argument to #%s"
|
||||||
|
msgstr "недостаје аргумент #%s - назив макроа"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:600
|
||||||
|
msgid "too many nested #if sequences"
|
||||||
|
msgstr "превише угњеждених секвенци #if"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser.c:626 ../../WINGs/menuparser.c:643
|
||||||
|
#, c-format
|
||||||
|
msgid "found #%s but has no matching #if"
|
||||||
|
msgstr "пронађено #%s, али без одговарајућег #if"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:166
|
||||||
|
msgid "no macro name found for #define"
|
||||||
|
msgstr "назив макроа за #define није пронађен"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:187
|
||||||
|
#, c-format
|
||||||
|
msgid "premature end of file while reading arg-list for macro \"%s\""
|
||||||
|
msgstr "прерани крај датотеке приликом читања листе аргумената за макро „%s“"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:194
|
||||||
|
#, c-format
|
||||||
|
msgid "too many parameters for macro \"%s\" definition"
|
||||||
|
msgstr "превише параметара за дефиницију макроа „%s“"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:209
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid character '%c' in arg-list for macro \"%s\" while expecting parameter name"
|
||||||
|
msgstr "неисправни знак „%c“ у листи аргумената за макро „%s“ док се очекивао назив параметра"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:220
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid character '%c' in arg-list for macro \"%s\" while expecting ',' or ')'"
|
||||||
|
msgstr "неисправни знак „%c“ у листи аргумената за макро „%s“ док се очекивало „,“ или „)“"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:253
|
||||||
|
#, c-format
|
||||||
|
msgid "macro \"%s\" already defined, ignoring redefinition"
|
||||||
|
msgstr "макро „%s“ је већ дефинисан, игнорише се поновна дефиниција"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:346
|
||||||
|
#, c-format
|
||||||
|
msgid "more content than supported for the macro \"%s\""
|
||||||
|
msgstr "више садржаја него што је подржано за макро „%s“"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:455
|
||||||
|
#, c-format
|
||||||
|
msgid "expansion for macro \"%s\" too big, line truncated"
|
||||||
|
msgstr "проширење макроа „%s“ је превелико, ред је исечен"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:467
|
||||||
|
#, c-format
|
||||||
|
msgid "macro \"%s\" needs parenthesis for arguments"
|
||||||
|
msgstr "макроу „%s“ су потребне заграде за аргументе"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:498
|
||||||
|
msgid "missing closing quote or double-quote before end-of-line"
|
||||||
|
msgstr "недостаје завршни наводник или апостроф пре краја реда"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:521
|
||||||
|
#, c-format
|
||||||
|
msgid "too many arguments for macro \"%s\", expected only %d"
|
||||||
|
msgstr "превише аргумената за макро „%s“, очекује се само %d"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:530
|
||||||
|
#, c-format
|
||||||
|
msgid "premature end of line while searching for arguments to macro \"%s\""
|
||||||
|
msgstr "прерани крај реда приликом тражења аргумената за макро „%s“"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:536
|
||||||
|
#, c-format
|
||||||
|
msgid "not enough arguments for macro \"%s\", expected %d but got only %d"
|
||||||
|
msgstr "недовољно аргумената за макро „%s“, очекује се %d, али само постоји %d"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:541
|
||||||
|
#, c-format
|
||||||
|
msgid "too much data in parameter list of macro \"%s\", truncated"
|
||||||
|
msgstr "превише података у листи параметара макроа „%s“, исечено"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:561
|
||||||
|
#, c-format
|
||||||
|
msgid "size of value for macro '%s' is too big, truncated"
|
||||||
|
msgstr "величина вредности макроа „%s“ је превелика, исечено"
|
||||||
|
|
||||||
|
#: ../../WINGs/menuparser_macros.c:642 ../../WINGs/menuparser_macros.c:668
|
||||||
|
#, c-format
|
||||||
|
msgid "could not determine %s"
|
||||||
|
msgstr "не може се одредити %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:78
|
||||||
|
#, c-format
|
||||||
|
msgid "syntax error in %s %s, line %i: %s"
|
||||||
|
msgstr "синтаксна грешка у %s %s, ред %i: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:134
|
||||||
|
msgid "Only string or data is supported for a proplist dictionary key"
|
||||||
|
msgstr "Само ниска или подаци су подржани у proplist речничком кључу"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:167 ../../WINGs/proplist.c:217
|
||||||
|
#: ../../WINGs/proplist.c:382 ../../WINGs/proplist.c:458
|
||||||
|
#: ../../WINGs/proplist.c:1048 ../../WINGs/proplist.c:1098
|
||||||
|
#: ../../WINGs/proplist.c:1246 ../../WINGs/proplist.c:1326
|
||||||
|
#: ../../WINGs/proplist.c:1431 ../../WINGs/proplist.c:1475
|
||||||
|
msgid "Used proplist functions on non-WMPropLists objects"
|
||||||
|
msgstr "Користе се proplist функције над не-WMPropLists објектима"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:635
|
||||||
|
msgid "unterminated PropList string"
|
||||||
|
msgstr "незатворена PropList ниска"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:673
|
||||||
|
msgid "unterminated PropList data"
|
||||||
|
msgstr "незатворен PropList податак"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:681
|
||||||
|
msgid "unterminated PropList data (missing hexdigit)"
|
||||||
|
msgstr "незатворен PropList податак (недостаје хекс-цифра)"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:693 ../../WINGs/proplist.c:698
|
||||||
|
msgid "non hexdigit character in PropList data"
|
||||||
|
msgstr "знак који није хекс-цифра у PropList подацима"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:730
|
||||||
|
msgid "unterminated PropList array"
|
||||||
|
msgstr "незатворен PropList низ"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:738
|
||||||
|
msgid "missing or unterminated PropList array"
|
||||||
|
msgstr "недостајући или незатворени PropList низ"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:748
|
||||||
|
msgid "could not get PropList array element"
|
||||||
|
msgstr "не може се добавити елемент PropList низа"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:775
|
||||||
|
msgid "unterminated PropList dictionary"
|
||||||
|
msgstr "незатворени PropList речник"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:792
|
||||||
|
msgid "missing PropList dictionary key"
|
||||||
|
msgstr "недостајући кључ PropList речника"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:794
|
||||||
|
msgid "missing PropList dictionary entry key or unterminated dictionary"
|
||||||
|
msgstr "недостаје кључ PropList речничке ставке или је речник незатворен"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:802
|
||||||
|
msgid "error parsing PropList dictionary key"
|
||||||
|
msgstr "грешка приликом рашчлањивања кључа PropList речника"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:810
|
||||||
|
msgid "missing = in PropList dictionary entry"
|
||||||
|
msgstr "недостаје = у ставци PropList речника"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:818
|
||||||
|
msgid "error parsing PropList dictionary entry value"
|
||||||
|
msgstr "грешка приликом рашчлањивања вредности PropList речничког уноса"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:826
|
||||||
|
msgid "missing ; in PropList dictionary entry"
|
||||||
|
msgstr "недостаје ; у речничком уносу PropList"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:885
|
||||||
|
msgid "was expecting a string, data, array or dictionary. If it's a string, try enclosing it with \"."
|
||||||
|
msgstr "очекује се ниска, податак, низ или речник. Ако је у питању ниска, пробајте да је окружите са \"."
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:888
|
||||||
|
msgid "Comments are not allowed inside WindowMaker owned domain files."
|
||||||
|
msgstr "Коментари нису дозвољени унутар датотека домена WindowMaker-а."
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1495 ../../WINGs/proplist.c:1560
|
||||||
|
#: ../../WINGs/proplist.c:1624
|
||||||
|
msgid "extra data after end of property list"
|
||||||
|
msgstr "вишак података после листе особина"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1535
|
||||||
|
#, c-format
|
||||||
|
msgid "could not get size for file '%s'"
|
||||||
|
msgstr "не може се одредити величина датотеке „%s“"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1543
|
||||||
|
#, c-format
|
||||||
|
msgid "error reading from file '%s'"
|
||||||
|
msgstr "грешка приликом читања датотеке „%s“"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1590
|
||||||
|
#, c-format
|
||||||
|
msgid "%s:could not open menu file"
|
||||||
|
msgstr "%s:не може се отворити датотека менија"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1672
|
||||||
|
#, c-format
|
||||||
|
msgid "mkstemp (%s) failed"
|
||||||
|
msgstr "mkstemp (%s) није успео"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1682
|
||||||
|
#, c-format
|
||||||
|
msgid "mktemp (%s) failed"
|
||||||
|
msgstr "mktemp (%s) није успео"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1689
|
||||||
|
#, c-format
|
||||||
|
msgid "open (%s) failed"
|
||||||
|
msgstr "open (%s) није успео"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1696
|
||||||
|
#, c-format
|
||||||
|
msgid "writing to file: %s failed"
|
||||||
|
msgstr "уписивање у датотеку: %s није успело"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1706
|
||||||
|
#, c-format
|
||||||
|
msgid "fclose (%s) failed"
|
||||||
|
msgstr "fclose (%s) није успео"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1714
|
||||||
|
#, c-format
|
||||||
|
msgid "rename ('%s' to '%s') failed"
|
||||||
|
msgstr "rename („%s“ у „%s“) није успео"
|
||||||
|
|
||||||
|
#: ../../WINGs/proplist.c:1797
|
||||||
|
#, c-format
|
||||||
|
msgid "Could not create path component %s"
|
||||||
|
msgstr "Не може се креирати компонента путање %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/userdefaults.c:68
|
||||||
|
msgid "variable WMAKER_USER_ROOT defined with invalid path, not used"
|
||||||
|
msgstr "променљива WMAKER_USER_ROOT је задата са неисправном путањом, не користи се"
|
||||||
|
|
||||||
|
#. something happened with the file. just overwrite it
|
||||||
|
#: ../../WINGs/userdefaults.c:208 ../../WINGs/userdefaults.c:223
|
||||||
|
#, c-format
|
||||||
|
msgid "cannot read domain from file '%s' when syncing"
|
||||||
|
msgstr "не може се учитати домен из датотеке „%s“ приликом синхронизовања"
|
||||||
|
|
||||||
|
#: ../../WINGs/dragcommon.c:60
|
||||||
|
#, c-format
|
||||||
|
msgid "unknown XDND action %s"
|
||||||
|
msgstr "непозната XDND акција %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/dragcommon.c:142
|
||||||
|
#, c-format
|
||||||
|
msgid "target %lu for XDND message no longer exists"
|
||||||
|
msgstr "одредиште %lu XDND поруке више не постоји"
|
||||||
|
|
||||||
|
#: ../../WINGs/dragcommon.c:220
|
||||||
|
#, c-format
|
||||||
|
msgid "unsupported version %i for XDND enter message"
|
||||||
|
msgstr "неподржана верзија %i XDND улазне поруке"
|
||||||
|
|
||||||
|
#: ../../WINGs/dragsource.c:163
|
||||||
|
msgid "XDND selection lost during drag operation..."
|
||||||
|
msgstr "XDND избор је изгубљен приликом операције превлачења..."
|
||||||
|
|
||||||
|
#: ../../WINGs/dragsource.c:758
|
||||||
|
msgid "could not get XDND version for target of drop"
|
||||||
|
msgstr "не може се одредити верзија XDND-а за одредиште превлачења"
|
||||||
|
|
||||||
|
#: ../../WINGs/dragsource.c:774
|
||||||
|
msgid "could not get ownership of XDND selection"
|
||||||
|
msgstr "не може се одредити власништво над XDND избором"
|
||||||
|
|
||||||
|
#: ../../WINGs/dragsource.c:1070
|
||||||
|
msgid "delay for drag destination response expired"
|
||||||
|
msgstr "пауза за одговор одредишта превлачења је истекла"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolor.c:204 ../../WINGs/wcolor.c:214 ../../WINGs/wcolor.c:250
|
||||||
|
#: ../../WINGs/wcolor.c:288
|
||||||
|
#, c-format
|
||||||
|
msgid "could not allocate %s color"
|
||||||
|
msgstr "не може се алоцирати боја %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolor.c:204
|
||||||
|
msgid "white"
|
||||||
|
msgstr "бела"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolor.c:214
|
||||||
|
msgid "black"
|
||||||
|
msgstr "црна"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolor.c:250
|
||||||
|
msgid "gray"
|
||||||
|
msgstr "сива"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolor.c:288
|
||||||
|
msgid "dark gray"
|
||||||
|
msgstr "тамно сива"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:390
|
||||||
|
msgid "Colors"
|
||||||
|
msgstr "Боје"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:565 ../../WINGs/wcolorpanel.c:2716
|
||||||
|
msgid "Brightness"
|
||||||
|
msgstr "Светлина"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:567 ../../WINGs/wcolorpanel.c:641
|
||||||
|
#: ../../WINGs/wcolorpanel.c:672 ../../WINGs/wcolorpanel.c:703
|
||||||
|
#: ../../WINGs/wcolorpanel.c:778 ../../WINGs/wcolorpanel.c:809
|
||||||
|
#: ../../WINGs/wcolorpanel.c:841 ../../WINGs/wcolorpanel.c:874
|
||||||
|
#: ../../WINGs/wcolorpanel.c:2010 ../../WINGs/wcolorpanel.c:2718
|
||||||
|
#: ../../WINGs/wcolorpanel.c:2752 ../../WINGs/wcolorpanel.c:2786
|
||||||
|
msgid "Color Panel: Could not allocate memory"
|
||||||
|
msgstr "Панел за боје: Неуспешно алоцирање меморије"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:639
|
||||||
|
msgid "Red"
|
||||||
|
msgstr "Црвена"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:670
|
||||||
|
msgid "Green"
|
||||||
|
msgstr "Зелена"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:701
|
||||||
|
msgid "Blue"
|
||||||
|
msgstr "Плава"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:715
|
||||||
|
msgid "Decimal"
|
||||||
|
msgstr "Децимално"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:723
|
||||||
|
msgid "Hexadecimal"
|
||||||
|
msgstr "Хексадекадно"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:776
|
||||||
|
msgid "Cyan"
|
||||||
|
msgstr "Цијан"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:807
|
||||||
|
msgid "Magenta"
|
||||||
|
msgstr "Магента"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:839
|
||||||
|
msgid "Yellow"
|
||||||
|
msgstr "Жута"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:872
|
||||||
|
msgid "Black"
|
||||||
|
msgstr "Црна"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:947
|
||||||
|
msgid "Spectrum"
|
||||||
|
msgstr "Спектар"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:973
|
||||||
|
msgid "Palette"
|
||||||
|
msgstr "Палета"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:978
|
||||||
|
msgid "New from File..."
|
||||||
|
msgstr "Нова из датотеке..."
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:979 ../../WINGs/wcolorpanel.c:1024
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1039
|
||||||
|
msgid "Rename..."
|
||||||
|
msgstr "Преименуј..."
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:980 ../../WINGs/wcolorpanel.c:1025
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1040 ../../WINGs/wcolorpanel.c:3176
|
||||||
|
msgid "Remove"
|
||||||
|
msgstr "Уклони"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:981
|
||||||
|
msgid "Copy"
|
||||||
|
msgstr "Копирај"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:982
|
||||||
|
msgid "New from Clipboard"
|
||||||
|
msgstr "Нова из клипборда"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1001
|
||||||
|
msgid "X11-Colors"
|
||||||
|
msgstr "X11 боје"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1018
|
||||||
|
msgid "Color"
|
||||||
|
msgstr "Боја"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1023
|
||||||
|
msgid "Add..."
|
||||||
|
msgstr "Додај..."
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1033
|
||||||
|
msgid "List"
|
||||||
|
msgstr "Листа"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1038
|
||||||
|
msgid "New..."
|
||||||
|
msgstr "Нова..."
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1165
|
||||||
|
#, c-format
|
||||||
|
msgid "Color Panel: Could not create directory %s needed to store configurations"
|
||||||
|
msgstr "Панел за боје: Не може се креирати директоријум %s неопходан за чување подешавања"
|
||||||
|
|
||||||
|
#. Delete the file, it doesn't belong here
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1171 ../../WINGs/wcolorpanel.c:3069
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3073
|
||||||
|
msgid "File Error"
|
||||||
|
msgstr "Грешка датотеке"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1172
|
||||||
|
msgid "Could not create ColorPanel configuration directory"
|
||||||
|
msgstr "Не може се креирати директоријум са подешавањима ColorPanel"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1173 ../../WINGs/wcolorpanel.c:3070
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3075 ../../WINGs/wcolorpanel.c:3100
|
||||||
|
#: ../../WINGs/wfilepanel.c:227 ../../WINGs/wfilepanel.c:596
|
||||||
|
#: ../../WINGs/wfilepanel.c:611 ../../WINGs/wfilepanel.c:715
|
||||||
|
#: ../../WINGs/wfilepanel.c:883 ../../WINGs/wfontpanel.c:532
|
||||||
|
msgid "OK"
|
||||||
|
msgstr "ОК"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1178
|
||||||
|
msgid "Color Panel: Could not find file"
|
||||||
|
msgstr "Панел за боје: Не може се пронаћи датотека"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1374 ../../WINGs/wcolorpanel.c:1435
|
||||||
|
#: ../../WINGs/wcolorpanel.c:1495
|
||||||
|
msgid "Color Panel: X failed request"
|
||||||
|
msgstr "Панел за боје: Неуспешан захтев X-а"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:2750
|
||||||
|
msgid "Saturation"
|
||||||
|
msgstr "Засићење"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:2784
|
||||||
|
msgid "Hue"
|
||||||
|
msgstr "Нијанса"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3008
|
||||||
|
msgid "Open Palette"
|
||||||
|
msgstr "Отвори палету"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3070
|
||||||
|
msgid "Invalid file format !"
|
||||||
|
msgstr "Неисправан формат датотеке !"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3072
|
||||||
|
#, c-format
|
||||||
|
msgid "can't remove file %s"
|
||||||
|
msgstr "не може се уклонити датотека %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3074
|
||||||
|
msgid "Couldn't remove file from Configuration Directory !"
|
||||||
|
msgstr "Не може се уклонити датотека из директоријума са подешавањима !"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3099
|
||||||
|
msgid "Rename"
|
||||||
|
msgstr "Преименовање"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3099
|
||||||
|
msgid "Rename palette to:"
|
||||||
|
msgstr "Преименуј палету у:"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3100 ../../WINGs/wfilepanel.c:236
|
||||||
|
#: ../../WINGs/wfilepanel.c:611 ../../WINGs/wfilepanel.c:715
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "Поништи"
|
||||||
|
|
||||||
|
#. Careful, this palette exists already
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3116 ../../WINGs/wfilepanel.c:715
|
||||||
|
msgid "Warning"
|
||||||
|
msgstr "Упозорење"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3117
|
||||||
|
msgid "Palette already exists !\n\nOverwrite ?"
|
||||||
|
msgstr "Палета већ постоји !\n\nПреписати ?"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3117 ../../WINGs/wcolorpanel.c:3176
|
||||||
|
msgid "No"
|
||||||
|
msgstr "Не"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3117 ../../WINGs/wcolorpanel.c:3176
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Да"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3148
|
||||||
|
#, c-format
|
||||||
|
msgid "Couldn't rename palette %s to %s"
|
||||||
|
msgstr "Палета %s се не може преименовати у %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3171
|
||||||
|
msgid "This will permanently remove the palette "
|
||||||
|
msgstr "Ово ће трајно уклонити палету "
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3173
|
||||||
|
msgid ".\n\nAre you sure you want to remove this palette ?"
|
||||||
|
msgstr ".\n\nДа ли сте сигурни да желите да уклоните палету ?"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3195
|
||||||
|
#, c-format
|
||||||
|
msgid "Couldn't remove palette %s"
|
||||||
|
msgstr "Не може се уклонити палета %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/wcolorpanel.c:3498
|
||||||
|
msgid "Color Panel: Color unspecified"
|
||||||
|
msgstr "Панел за боју: Боја није задата"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:216
|
||||||
|
msgid "Name:"
|
||||||
|
msgstr "Назив:"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:306 ../../WINGs/wfilepanel.c:364
|
||||||
|
msgid "Open"
|
||||||
|
msgstr "Отвори"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:322 ../../WINGs/wfilepanel.c:370
|
||||||
|
msgid "Save"
|
||||||
|
msgstr "Сачувај"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:506
|
||||||
|
#, c-format
|
||||||
|
msgid "WINGs: could not open directory %s\n"
|
||||||
|
msgstr "WINGs: не може се отворити директоријум %s\n"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:526
|
||||||
|
#, c-format
|
||||||
|
msgid "WINGs: could not stat %s\n"
|
||||||
|
msgstr "WINGs: не може се stat-овати %s\n"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:596 ../../WINGs/wfilepanel.c:883
|
||||||
|
#: ../../WINGs/wfontpanel.c:531
|
||||||
|
msgid "Error"
|
||||||
|
msgstr "Грешка"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:610
|
||||||
|
msgid "Create Directory"
|
||||||
|
msgstr "Креирање директоријума"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:611
|
||||||
|
msgid "Enter directory name"
|
||||||
|
msgstr "Унесите назив директоријума"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:639
|
||||||
|
#, c-format
|
||||||
|
msgid "Can not create %s: %s"
|
||||||
|
msgstr "Не може се креирати %s: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:705
|
||||||
|
#, c-format
|
||||||
|
msgid "Can not find %s: %s"
|
||||||
|
msgstr "Не може се наћи %s: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:711
|
||||||
|
#, c-format
|
||||||
|
msgid "Delete %s %s?"
|
||||||
|
msgstr "Обрисати %s %s?"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:712
|
||||||
|
msgid "directory"
|
||||||
|
msgstr "директоријум"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:712
|
||||||
|
msgid "file"
|
||||||
|
msgstr "датотеку"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:719
|
||||||
|
#, c-format
|
||||||
|
msgid "Removing %s failed: %s"
|
||||||
|
msgstr "Уклањање %s није успело: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:751
|
||||||
|
#, c-format
|
||||||
|
msgid "An error occurred browsing '%s'."
|
||||||
|
msgstr "Догодила се грешка приликом прегледања „%s“."
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:754
|
||||||
|
#, c-format
|
||||||
|
msgid "'%s' is not a directory."
|
||||||
|
msgstr "„%s“ није директоријум."
|
||||||
|
|
||||||
|
#: ../../WINGs/wfilepanel.c:883
|
||||||
|
msgid "File does not exist."
|
||||||
|
msgstr "Датотека не постоји."
|
||||||
|
|
||||||
|
#: ../../WINGs/wfont.c:43
|
||||||
|
#, c-format
|
||||||
|
msgid "invalid font: %s. Trying '%s'"
|
||||||
|
msgstr "неисправан фонт: %s. Проба се „%s“"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfont.c:270 ../../WINGs/wfont.c:288
|
||||||
|
#, c-format
|
||||||
|
msgid "could not load font: %s."
|
||||||
|
msgstr "не може се учитати фонт: %s."
|
||||||
|
|
||||||
|
#. WMSetWidgetBackgroundColor(panel->win, WMWhiteColor(scr));
|
||||||
|
#: ../../WINGs/wfontpanel.c:184
|
||||||
|
msgid "Font Panel"
|
||||||
|
msgstr "Панел за фонт"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfontpanel.c:220
|
||||||
|
msgid "The quick brown fox jumps over the lazy dog"
|
||||||
|
msgstr "Одбациће кавгаџија плаштом чађ у жељезни фењер"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfontpanel.c:226
|
||||||
|
msgid "Family"
|
||||||
|
msgstr "Фамилија"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfontpanel.c:237
|
||||||
|
msgid "Typeface"
|
||||||
|
msgstr "Словни лик"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfontpanel.c:248
|
||||||
|
msgid "Size"
|
||||||
|
msgstr "Величина"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfontpanel.c:267
|
||||||
|
msgid "Set"
|
||||||
|
msgstr "Постави"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfontpanel.c:273
|
||||||
|
msgid "Revert"
|
||||||
|
msgstr "Врати"
|
||||||
|
|
||||||
|
#: ../../WINGs/wfontpanel.c:532
|
||||||
|
msgid "Could not init font config library\n"
|
||||||
|
msgstr "Не може се иницијализовати библиотека font config\n"
|
||||||
|
|
||||||
|
#: ../../WINGs/widgets.c:447
|
||||||
|
#, c-format
|
||||||
|
msgid "WINGs: could not load widget images file: %s"
|
||||||
|
msgstr "WINGs: не може се учитати датотека са сликама виџета: %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/widgets.c:543
|
||||||
|
#, c-format
|
||||||
|
msgid "WINGs: could not open display %s"
|
||||||
|
msgstr "WINGs: не може се отворити приказ %s"
|
||||||
|
|
||||||
|
#: ../../WINGs/widgets.c:772
|
||||||
|
msgid "could not load any fonts. Make sure your font installation and locale settings are correct."
|
||||||
|
msgstr "не може се учитати ниједан фонт. Проверите да ли су фонтови исправно инсталирани и да али су подешавања језика исправна."
|
||||||
|
|
||||||
|
#: ../../WINGs/winputmethod.c:65
|
||||||
|
msgid "could not add destroy callback for XIM input method"
|
||||||
|
msgstr "не може се додати destroy callback за XIM метод уноса"
|
||||||
|
|
||||||
|
#: ../../WINGs/wruler.c:175
|
||||||
|
msgid "0 inches"
|
||||||
|
msgstr "0 инча"
|
||||||
|
|
||||||
|
#: ../../WINGs/wtextfield.c:494
|
||||||
|
msgid "only left alignment is supported in textfields"
|
||||||
|
msgstr "у текстуалним пољима је подржано само лево уравнање"
|
||||||
|
|
||||||
|
#: ../../WINGs/wwindow.c:160
|
||||||
|
msgid "window title conversion error... using STRING encoding"
|
||||||
|
msgstr "грешка приликом конверзије наслова прозора... користи се STRING кодирање"
|
||||||
|
|
||||||
|
#: ../../WINGs/wwindow.c:181
|
||||||
|
msgid "icon title conversion error... using STRING encoding"
|
||||||
|
msgstr "грешка приликом конверзије наслова иконе... користи се STRING кодирање"
|
||||||
+8
-20
@@ -1732,36 +1732,23 @@ Bool WMWritePropListToFile(WMPropList * plist, const char *path)
|
|||||||
* file, and the last component is stripped off. the rest is the
|
* file, and the last component is stripped off. the rest is the
|
||||||
* the hierarchy to be created.
|
* the hierarchy to be created.
|
||||||
*
|
*
|
||||||
* refuses to create anything outside $WMAKER_USER_ROOT/Defaults or $WMAKER_USER_ROOT/Library
|
* refuses to create anything outside $WMAKER_USER_ROOT
|
||||||
*
|
*
|
||||||
* returns 1 on success, 0 on failure
|
* returns 1 on success, 0 on failure
|
||||||
*/
|
*/
|
||||||
int wmkdirhier(const char *path)
|
int wmkdirhier(const char *path)
|
||||||
{
|
{
|
||||||
const char *libpath;
|
const char *t;
|
||||||
char *udefpath;
|
|
||||||
int cmp;
|
|
||||||
char *thePath = NULL, buf[1024];
|
char *thePath = NULL, buf[1024];
|
||||||
size_t p, plen;
|
size_t p, plen;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
|
|
||||||
/* Only create directories under $WMAKER_USER_ROOT/Defaults or $WMAKER_USER_ROOT/Library */
|
/* Only create directories under $WMAKER_USER_ROOT */
|
||||||
libpath = wuserdatapath();
|
if ((t = wusergnusteppath()) == NULL)
|
||||||
if (strncmp(path, libpath, strlen(libpath)) == 0)
|
return 0;
|
||||||
if (path[strlen(libpath)] == '/')
|
if (strncmp(path, t, strlen(t)) != 0)
|
||||||
goto path_in_valid_tree;
|
|
||||||
|
|
||||||
udefpath = wdefaultspathfordomain("");
|
|
||||||
cmp = strncmp(path, udefpath, strlen(udefpath));
|
|
||||||
wfree(udefpath);
|
|
||||||
if (cmp == 0)
|
|
||||||
/* Note: by side effect, 'udefpath' already contains a final '/' */
|
|
||||||
goto path_in_valid_tree;
|
|
||||||
|
|
||||||
/* If we reach this point, the path is outside the allowed tree */
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
path_in_valid_tree:
|
|
||||||
thePath = wstrdup(path);
|
thePath = wstrdup(path);
|
||||||
/* Strip the trailing component if it is a file */
|
/* Strip the trailing component if it is a file */
|
||||||
p = strlen(thePath);
|
p = strlen(thePath);
|
||||||
@@ -1784,6 +1771,7 @@ int wmkdirhier(const char *path)
|
|||||||
}
|
}
|
||||||
|
|
||||||
memset(buf, 0, sizeof(buf));
|
memset(buf, 0, sizeof(buf));
|
||||||
|
strncpy(buf, t, sizeof(buf) - 1);
|
||||||
p = strlen(buf);
|
p = strlen(buf);
|
||||||
plen = strlen(thePath);
|
plen = strlen(thePath);
|
||||||
|
|
||||||
@@ -1794,7 +1782,7 @@ int wmkdirhier(const char *path)
|
|||||||
strncpy(buf, thePath, p);
|
strncpy(buf, thePath, p);
|
||||||
if (mkdir(buf, 0777) == -1 && errno == EEXIST &&
|
if (mkdir(buf, 0777) == -1 && errno == EEXIST &&
|
||||||
stat(buf, &st) == 0 && !S_ISDIR(st.st_mode)) {
|
stat(buf, &st) == 0 && !S_ISDIR(st.st_mode)) {
|
||||||
werror(_("Could not create path component %s"), buf);
|
werror(_("Could not create component %s"), buf);
|
||||||
wfree(thePath);
|
wfree(thePath);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-4
@@ -2,8 +2,9 @@
|
|||||||
*
|
*
|
||||||
* WPrefs - Window Maker Preferences Program
|
* WPrefs - Window Maker Preferences Program
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
* Copyright (c) 1998-2003 Alfredo K. Kojima
|
* Copyright (c) 1998-2003 Alfredo K. Kojima
|
||||||
|
* Copyright (c) 2009-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -88,7 +89,7 @@ static struct expert_option {
|
|||||||
/* default: */ False, OPTION_WMAKER, "KbdModeLock" },
|
/* default: */ False, OPTION_WMAKER, "KbdModeLock" },
|
||||||
#endif /* XKB_MODELOCK */
|
#endif /* XKB_MODELOCK */
|
||||||
|
|
||||||
{ N_("Maximize (snap) a window to edge or corner by dragging."),
|
{ N_("Snap a window to edge or corner by dragging."),
|
||||||
/* default: */ False, OPTION_WMAKER, "WindowSnapping" },
|
/* default: */ False, OPTION_WMAKER, "WindowSnapping" },
|
||||||
|
|
||||||
{ N_("Distance from edge to begin window snap."),
|
{ N_("Distance from edge to begin window snap."),
|
||||||
@@ -97,7 +98,7 @@ static struct expert_option {
|
|||||||
{ N_("Distance from corner to begin window snap."),
|
{ N_("Distance from corner to begin window snap."),
|
||||||
/* default: */ 10, OPTION_WMAKER_INT, "SnapCornerDetect" },
|
/* default: */ 10, OPTION_WMAKER_INT, "SnapCornerDetect" },
|
||||||
|
|
||||||
{ N_("Snapping a window to the top maximizes it to the full screen."),
|
{ N_("Snap a window to the top to maximize it to the full screen."),
|
||||||
/* default: */ False, OPTION_WMAKER, "SnapToTopMaximizesFullscreen" },
|
/* default: */ False, OPTION_WMAKER, "SnapToTopMaximizesFullscreen" },
|
||||||
|
|
||||||
{ N_("Allow move half-maximized windows between multiple screens."),
|
{ N_("Allow move half-maximized windows between multiple screens."),
|
||||||
@@ -115,7 +116,7 @@ static struct expert_option {
|
|||||||
{ N_("Wrap dock-attached icons around the screen edges."),
|
{ N_("Wrap dock-attached icons around the screen edges."),
|
||||||
/* default: */ True, OPTION_WMAKER, "WrapAppiconsInDock" },
|
/* default: */ True, OPTION_WMAKER, "WrapAppiconsInDock" },
|
||||||
|
|
||||||
{ N_("Double click on titlebar maximize a window to full screen."),
|
{ N_("Double click on titlebar maximizes/minimizes a window to/from full screen."),
|
||||||
/* default: */ False, OPTION_WMAKER, "DbClickFullScreen" },
|
/* default: */ False, OPTION_WMAKER, "DbClickFullScreen" },
|
||||||
|
|
||||||
{ N_("Close rootmenu when mouse (left or right) is clicked outside focus."),
|
{ N_("Close rootmenu when mouse (left or right) is clicked outside focus."),
|
||||||
|
|||||||
@@ -0,0 +1,465 @@
|
|||||||
|
/* HotCornerShortcuts.c - screen corners actions
|
||||||
|
*
|
||||||
|
* WPrefs - Window Maker Preferences Program
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023 Window Maker Team
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License along
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
|
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "WPrefs.h"
|
||||||
|
|
||||||
|
typedef struct _Panel {
|
||||||
|
WMBox *box;
|
||||||
|
|
||||||
|
char *sectionName;
|
||||||
|
|
||||||
|
char *description;
|
||||||
|
|
||||||
|
CallbackRec callbacks;
|
||||||
|
|
||||||
|
WMWidget *parent;
|
||||||
|
WMPixmap *icon;
|
||||||
|
Pixmap quarter[4];
|
||||||
|
|
||||||
|
WMFrame *hcF;
|
||||||
|
WMButton *hcB;
|
||||||
|
WMFrame *hceF;
|
||||||
|
WMSlider *hceS;
|
||||||
|
WMLabel *hceL;
|
||||||
|
WMFrame *hcdescF;
|
||||||
|
WMLabel *hcdescL;
|
||||||
|
|
||||||
|
WMFrame *hcdelayF;
|
||||||
|
WMButton *hcdelayB[5];
|
||||||
|
WMTextField *hcdelayT;
|
||||||
|
WMLabel *hcdelayL;
|
||||||
|
WMLabel *icornerL;
|
||||||
|
|
||||||
|
WMFrame *hcactionsF;
|
||||||
|
WMTextField *hcactionsT[4];
|
||||||
|
|
||||||
|
char hotcornerDelaySelected;
|
||||||
|
} _Panel;
|
||||||
|
|
||||||
|
#define ICON_FILE "hotcorners"
|
||||||
|
|
||||||
|
#define DELAY_ICON "timer%i"
|
||||||
|
#define DELAY_ICON_S "timer%is"
|
||||||
|
|
||||||
|
static void edgeCallback(WMWidget * w, void *data)
|
||||||
|
{
|
||||||
|
_Panel *panel = (_Panel *) data;
|
||||||
|
char buffer[64];
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Parameter not used, but tell the compiler that it is ok */
|
||||||
|
(void) w;
|
||||||
|
|
||||||
|
i = WMGetSliderValue(panel->hceS);
|
||||||
|
|
||||||
|
if (i == 0)
|
||||||
|
sprintf(buffer, _("OFF"));
|
||||||
|
else if (i == 1)
|
||||||
|
sprintf(buffer, _("1 pixel"));
|
||||||
|
else if (i <= 4)
|
||||||
|
/* 2-4 */
|
||||||
|
sprintf(buffer, _("%i pixels"), i);
|
||||||
|
else
|
||||||
|
/* >4 */
|
||||||
|
sprintf(buffer, _("%i pixels "), i); /* note space! */
|
||||||
|
WMSetLabelText(panel->hceL, buffer);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void showData(_Panel * panel)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
char buffer[32];
|
||||||
|
WMPropList *array;
|
||||||
|
|
||||||
|
if (!GetObjectForKey("HotCornerDelay"))
|
||||||
|
i = 250;
|
||||||
|
else
|
||||||
|
i = GetIntegerForKey("HotCornerDelay");
|
||||||
|
sprintf(buffer, "%i", i);
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, buffer);
|
||||||
|
|
||||||
|
switch (i) {
|
||||||
|
case 0:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[0]);
|
||||||
|
break;
|
||||||
|
case 250:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[1]);
|
||||||
|
break;
|
||||||
|
case 500:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[2]);
|
||||||
|
break;
|
||||||
|
case 750:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[3]);
|
||||||
|
break;
|
||||||
|
case 1000:
|
||||||
|
WMPerformButtonClick(panel->hcdelayB[4]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
i = GetIntegerForKey("HotCornerEdge");
|
||||||
|
i = i < 0 ? 2 : i;
|
||||||
|
i = i > 10 ? 10 : i;
|
||||||
|
WMSetSliderValue(panel->hceS, i);
|
||||||
|
edgeCallback(NULL, panel);
|
||||||
|
|
||||||
|
WMSetButtonSelected(panel->hcB, GetBoolForKey("HotCorners"));
|
||||||
|
|
||||||
|
array = GetObjectForKey("HotCornerActions");
|
||||||
|
if (array && (!WMIsPLArray(array) || WMGetPropListItemCount(array) != sizeof(panel->hcactionsT) / sizeof(WMTextField *))) {
|
||||||
|
wwarning(_("invalid data in option HotCornerActions."));
|
||||||
|
} else {
|
||||||
|
if (array) {
|
||||||
|
for (i = 0; i < sizeof(panel->hcactionsT) / sizeof(WMTextField *); i++)
|
||||||
|
if (strcasecmp(WMGetFromPLString(WMGetFromPLArray(array, i)), "None") != 0)
|
||||||
|
WMSetTextFieldText(panel->hcactionsT[i], WMGetFromPLString(WMGetFromPLArray(array, i)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void storeData(_Panel * panel)
|
||||||
|
{
|
||||||
|
WMPropList *list;
|
||||||
|
WMPropList *tmp;
|
||||||
|
char *str;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
SetBoolForKey(WMGetButtonSelected(panel->hcB), "HotCorners");
|
||||||
|
|
||||||
|
str = WMGetTextFieldText(panel->hcdelayT);
|
||||||
|
if (sscanf(str, "%i", &i) != 1)
|
||||||
|
i = 0;
|
||||||
|
SetIntegerForKey(i, "HotCornerDelay");
|
||||||
|
free(str);
|
||||||
|
|
||||||
|
SetIntegerForKey(WMGetSliderValue(panel->hceS), "HotCornerEdge");
|
||||||
|
|
||||||
|
list = WMCreatePLArray(NULL, NULL);
|
||||||
|
for (i = 0; i < sizeof(panel->hcactionsT) / sizeof(WMTextField *); i++) {
|
||||||
|
str = WMGetTextFieldText(panel->hcactionsT[i]);
|
||||||
|
if (strlen(str) == 0)
|
||||||
|
str = "None";
|
||||||
|
tmp = WMCreatePLString(str);
|
||||||
|
WMAddToPLArray(list, tmp);
|
||||||
|
}
|
||||||
|
SetObjectForKey(list, "HotCornerActions");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void pushDelayButton(WMWidget * w, void *data)
|
||||||
|
{
|
||||||
|
_Panel *panel = (_Panel *) data;
|
||||||
|
|
||||||
|
panel->hotcornerDelaySelected = 1;
|
||||||
|
if (w == panel->hcdelayB[0]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "0");
|
||||||
|
} else if (w == panel->hcdelayB[1]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "250");
|
||||||
|
} else if (w == panel->hcdelayB[2]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "500");
|
||||||
|
} else if (w == panel->hcdelayB[3]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "700");
|
||||||
|
} else if (w == panel->hcdelayB[4]) {
|
||||||
|
WMSetTextFieldText(panel->hcdelayT, "1000");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void delayTextChanged(void *observerData, WMNotification * notification)
|
||||||
|
{
|
||||||
|
_Panel *panel = (_Panel *) observerData;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
/* Parameter not used, but tell the compiler that it is ok */
|
||||||
|
(void) notification;
|
||||||
|
|
||||||
|
if (panel->hotcornerDelaySelected) {
|
||||||
|
for (i = 0; i < 5; i++) {
|
||||||
|
WMSetButtonSelected(panel->hcdelayB[i], False);
|
||||||
|
}
|
||||||
|
panel->hotcornerDelaySelected = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void createPanel(Panel * p)
|
||||||
|
{
|
||||||
|
_Panel *panel = (_Panel *) p;
|
||||||
|
int i;
|
||||||
|
char *buf1, *buf2;
|
||||||
|
WMColor *color;
|
||||||
|
WMFont *font;
|
||||||
|
char *path;
|
||||||
|
RImage *xis = NULL;
|
||||||
|
WMScreen *scr = WMWidgetScreen(panel->parent);
|
||||||
|
RContext *rc = WMScreenRContext(scr);
|
||||||
|
GC gc = XCreateGC(scr->display, WMWidgetXID(panel->parent), 0, NULL);
|
||||||
|
|
||||||
|
path = LocateImage(ICON_FILE);
|
||||||
|
if (path) {
|
||||||
|
xis = RLoadImage(rc, path, 0);
|
||||||
|
if (!xis) {
|
||||||
|
wwarning(_("could not load image file %s"), path);
|
||||||
|
}
|
||||||
|
wfree(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->box = WMCreateBox(panel->parent);
|
||||||
|
WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2);
|
||||||
|
|
||||||
|
|
||||||
|
/***************** Hot Corner lelf side frames *****************/
|
||||||
|
panel->hcF = WMCreateFrame(panel->box);
|
||||||
|
WMResizeWidget(panel->hcF, 240, 53);
|
||||||
|
WMMoveWidget(panel->hcF, 15, 17);
|
||||||
|
|
||||||
|
panel->hcB = WMCreateSwitchButton(panel->hcF);
|
||||||
|
WMResizeWidget(panel->hcB, 150, 30);
|
||||||
|
WMMoveWidget(panel->hcB, 15, 12);
|
||||||
|
WMSetButtonText(panel->hcB, _("Enable Hot Corners"));
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hcF);
|
||||||
|
|
||||||
|
panel->hceF = WMCreateFrame(panel->box);
|
||||||
|
WMSetFrameTitle(panel->hceF, _("Hot Corner Edge"));
|
||||||
|
WMResizeWidget(panel->hceF, 240, 40);
|
||||||
|
WMMoveWidget(panel->hceF, 15, 77);
|
||||||
|
|
||||||
|
panel->hceS = WMCreateSlider(panel->hceF);
|
||||||
|
WMResizeWidget(panel->hceS, 80, 15);
|
||||||
|
WMMoveWidget(panel->hceS, 15, 18);
|
||||||
|
WMSetSliderMinValue(panel->hceS, 2);
|
||||||
|
WMSetSliderMaxValue(panel->hceS, 10);
|
||||||
|
WMSetSliderAction(panel->hceS, edgeCallback, panel);
|
||||||
|
|
||||||
|
panel->hceL = WMCreateLabel(panel->hceF);
|
||||||
|
WMResizeWidget(panel->hceL, 100, 15);
|
||||||
|
WMMoveWidget(panel->hceL, 105, 18);
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hceF);
|
||||||
|
|
||||||
|
panel->hcdescF = WMCreateFrame(panel->box);
|
||||||
|
WMResizeWidget(panel->hcdescF, 240, 95);
|
||||||
|
WMMoveWidget(panel->hcdescF, 15, 130);
|
||||||
|
|
||||||
|
panel->hcdescL = WMCreateLabel(panel->hcdescF);
|
||||||
|
WMResizeWidget(panel->hcdescL, 200, 60);
|
||||||
|
WMMoveWidget(panel->hcdescL, 15, 10);
|
||||||
|
WMSetLabelText(panel->hcdescL,
|
||||||
|
_("Instructions:\n\n"
|
||||||
|
" - assign command to corner\n"
|
||||||
|
" - or leave it empty\n"));
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hcdescF);
|
||||||
|
|
||||||
|
/***************** Hot Corner Action Delay *****************/
|
||||||
|
panel->hcdelayF = WMCreateFrame(panel->box);
|
||||||
|
WMResizeWidget(panel->hcdelayF, 245, 60);
|
||||||
|
WMMoveWidget(panel->hcdelayF, 265, 10);
|
||||||
|
|
||||||
|
WMSetFrameTitle(panel->hcdelayF, _("Hot Corner Delay"));
|
||||||
|
|
||||||
|
buf1 = wmalloc(strlen(DELAY_ICON) + 1);
|
||||||
|
buf2 = wmalloc(strlen(DELAY_ICON_S) + 1);
|
||||||
|
|
||||||
|
for (i = 0; i < 5; i++) {
|
||||||
|
char *path;
|
||||||
|
|
||||||
|
panel->hcdelayB[i] = WMCreateCustomButton(panel->hcdelayF, WBBStateChangeMask);
|
||||||
|
WMResizeWidget(panel->hcdelayB[i], 25, 25);
|
||||||
|
WMMoveWidget(panel->hcdelayB[i], 12 + (30 * i), 25);
|
||||||
|
WMSetButtonBordered(panel->hcdelayB[i], False);
|
||||||
|
WMSetButtonImagePosition(panel->hcdelayB[i], WIPImageOnly);
|
||||||
|
WMSetButtonAction(panel->hcdelayB[i], pushDelayButton, panel);
|
||||||
|
if (i > 0)
|
||||||
|
WMGroupButtons(panel->hcdelayB[0], panel->hcdelayB[i]);
|
||||||
|
sprintf(buf1, DELAY_ICON, i);
|
||||||
|
sprintf(buf2, DELAY_ICON_S, i);
|
||||||
|
path = LocateImage(buf1);
|
||||||
|
if (path) {
|
||||||
|
panel->icon = WMCreatePixmapFromFile(scr, path);
|
||||||
|
if (panel->icon) {
|
||||||
|
WMSetButtonImage(panel->hcdelayB[i], panel->icon);
|
||||||
|
WMReleasePixmap(panel->icon);
|
||||||
|
} else {
|
||||||
|
wwarning(_("could not load icon file %s"), path);
|
||||||
|
}
|
||||||
|
wfree(path);
|
||||||
|
}
|
||||||
|
path = LocateImage(buf2);
|
||||||
|
if (path) {
|
||||||
|
panel->icon = WMCreatePixmapFromFile(scr, path);
|
||||||
|
if (panel->icon) {
|
||||||
|
WMSetButtonAltImage(panel->hcdelayB[i], panel->icon);
|
||||||
|
WMReleasePixmap(panel->icon);
|
||||||
|
} else {
|
||||||
|
wwarning(_("could not load icon file %s"), path);
|
||||||
|
}
|
||||||
|
wfree(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wfree(buf1);
|
||||||
|
wfree(buf2);
|
||||||
|
|
||||||
|
panel->hcdelayT = WMCreateTextField(panel->hcdelayF);
|
||||||
|
|
||||||
|
WMResizeWidget(panel->hcdelayT, 36, 20);
|
||||||
|
WMMoveWidget(panel->hcdelayT, 165, 28);
|
||||||
|
WMAddNotificationObserver(delayTextChanged, panel, WMTextDidChangeNotification, panel->hcdelayT);
|
||||||
|
|
||||||
|
panel->hcdelayL = WMCreateLabel(panel->hcdelayF);
|
||||||
|
WMResizeWidget(panel->hcdelayL, 36, 16);
|
||||||
|
WMMoveWidget(panel->hcdelayL, 205, 32);
|
||||||
|
WMSetLabelText(panel->hcdelayL, _("ms"));
|
||||||
|
|
||||||
|
color = WMDarkGrayColor(scr);
|
||||||
|
font = WMSystemFontOfSize(scr, 10);
|
||||||
|
|
||||||
|
WMSetLabelTextColor(panel->hcdelayL, color);
|
||||||
|
WMSetLabelFont(panel->hcdelayL, font);
|
||||||
|
|
||||||
|
WMReleaseColor(color);
|
||||||
|
WMReleaseFont(font);
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hcdelayF);
|
||||||
|
|
||||||
|
/***************** Set Hot Corner Actions ****************/
|
||||||
|
panel->hcactionsF = WMCreateFrame(panel->box);
|
||||||
|
WMSetFrameTitle(panel->hcactionsF, _("Hot Corner Actions"));
|
||||||
|
WMResizeWidget(panel->hcactionsF, 245, 148);
|
||||||
|
WMMoveWidget(panel->hcactionsF, 265, 77);
|
||||||
|
|
||||||
|
panel->icornerL = WMCreateLabel(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->icornerL, 24, 24);
|
||||||
|
WMMoveWidget(panel->icornerL, 10, 18);
|
||||||
|
WMSetLabelImagePosition(panel->icornerL, WIPImageOnly);
|
||||||
|
CreateImages(scr, rc, xis, ICON_FILE, &panel->icon, NULL);
|
||||||
|
if (panel->icon)
|
||||||
|
{
|
||||||
|
WMPixmap *nicon;
|
||||||
|
|
||||||
|
panel->quarter[0] = XCreatePixmap(scr->display, WMWidgetXID(panel->parent), panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
XCopyArea(scr->display, WMGetPixmapXID(panel->icon), panel->quarter[0], gc, 0, 0, panel->icon->width/2, panel->icon->height/2, 0, 0);
|
||||||
|
nicon = WMCreatePixmapFromXPixmaps(scr, panel->quarter[0], WMGetPixmapMaskXID(panel->icon),
|
||||||
|
panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
WMSetLabelImage(panel->icornerL, nicon);
|
||||||
|
WMReleasePixmap(nicon);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->hcactionsT[0] = WMCreateTextField(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->hcactionsT[0], 180, 20);
|
||||||
|
WMMoveWidget(panel->hcactionsT[0], 50, 20);
|
||||||
|
|
||||||
|
panel->icornerL = WMCreateLabel(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->icornerL, 24, 24);
|
||||||
|
WMMoveWidget(panel->icornerL, 10, 48);
|
||||||
|
WMSetLabelImagePosition(panel->icornerL, WIPImageOnly);
|
||||||
|
if (panel->icon)
|
||||||
|
{
|
||||||
|
WMPixmap *nicon;
|
||||||
|
|
||||||
|
panel->quarter[1] = XCreatePixmap(scr->display, WMWidgetXID(panel->parent), panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
XCopyArea(scr->display, WMGetPixmapXID(panel->icon), panel->quarter[1], gc, panel->icon->width/2, 0, panel->icon->width/2, panel->icon->height/2, 0, 0);
|
||||||
|
nicon = WMCreatePixmapFromXPixmaps(scr, panel->quarter[1], WMGetPixmapMaskXID(panel->icon),
|
||||||
|
panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
WMSetLabelImage(panel->icornerL, nicon);
|
||||||
|
WMReleasePixmap(nicon);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->hcactionsT[1] = WMCreateTextField(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->hcactionsT[1], 180, 20);
|
||||||
|
WMMoveWidget(panel->hcactionsT[1], 50, 50);
|
||||||
|
|
||||||
|
panel->icornerL = WMCreateLabel(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->icornerL, 24, 24);
|
||||||
|
WMMoveWidget(panel->icornerL, 10, 78);
|
||||||
|
WMSetLabelImagePosition(panel->icornerL, WIPImageOnly);
|
||||||
|
if (panel->icon)
|
||||||
|
{
|
||||||
|
WMPixmap *nicon;
|
||||||
|
|
||||||
|
panel->quarter[2] = XCreatePixmap(scr->display, WMWidgetXID(panel->parent), panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
XCopyArea(scr->display, WMGetPixmapXID(panel->icon), panel->quarter[2], gc, 0, panel->icon->height/2, panel->icon->width/2, panel->icon->height/2, 0, 0);
|
||||||
|
nicon = WMCreatePixmapFromXPixmaps(scr, panel->quarter[2], WMGetPixmapMaskXID(panel->icon),
|
||||||
|
panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
WMSetLabelImage(panel->icornerL, nicon);
|
||||||
|
WMReleasePixmap(nicon);
|
||||||
|
}
|
||||||
|
panel->hcactionsT[2] = WMCreateTextField(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->hcactionsT[2], 180, 20);
|
||||||
|
WMMoveWidget(panel->hcactionsT[2], 50, 80);
|
||||||
|
|
||||||
|
panel->icornerL = WMCreateLabel(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->icornerL, 24, 24);
|
||||||
|
WMMoveWidget(panel->icornerL, 10, 108);
|
||||||
|
WMSetLabelImagePosition(panel->icornerL, WIPImageOnly);
|
||||||
|
if (panel->icon)
|
||||||
|
{
|
||||||
|
WMPixmap *nicon;
|
||||||
|
|
||||||
|
panel->quarter[3] = XCreatePixmap(scr->display, WMWidgetXID(panel->parent), panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
XCopyArea(scr->display, WMGetPixmapXID(panel->icon), panel->quarter[3], gc, panel->icon->width/2, panel->icon->height/2, panel->icon->width/2, panel->icon->height/2, 0, 0);
|
||||||
|
nicon = WMCreatePixmapFromXPixmaps(scr, panel->quarter[3], WMGetPixmapMaskXID(panel->icon),
|
||||||
|
panel->icon->width/2, panel->icon->height/2, WMScreenDepth(scr));
|
||||||
|
WMSetLabelImage(panel->icornerL, nicon);
|
||||||
|
WMReleasePixmap(nicon);
|
||||||
|
}
|
||||||
|
|
||||||
|
panel->hcactionsT[3] = WMCreateTextField(panel->hcactionsF);
|
||||||
|
WMResizeWidget(panel->hcactionsT[3], 180, 20);
|
||||||
|
WMMoveWidget(panel->hcactionsT[3], 50, 107);
|
||||||
|
|
||||||
|
WMMapSubwidgets(panel->hcactionsF);
|
||||||
|
|
||||||
|
if (xis)
|
||||||
|
RReleaseImage(xis);
|
||||||
|
XFreeGC(scr->display, gc);
|
||||||
|
|
||||||
|
WMRealizeWidget(panel->box);
|
||||||
|
WMMapSubwidgets(panel->box);
|
||||||
|
|
||||||
|
showData(panel);
|
||||||
|
}
|
||||||
|
static void prepareForClose(_Panel *panel)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
WMScreen *scr = WMWidgetScreen(panel->parent);
|
||||||
|
|
||||||
|
WMReleasePixmap(panel->icon);
|
||||||
|
for (i = 0; i < sizeof(panel->quarter) / sizeof(Pixmap); i++)
|
||||||
|
XFreePixmap(scr->display, panel->quarter[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Panel *InitHotCornerShortcuts(WMWidget *parent)
|
||||||
|
{
|
||||||
|
_Panel *panel;
|
||||||
|
|
||||||
|
panel = wmalloc(sizeof(_Panel));
|
||||||
|
|
||||||
|
panel->sectionName = _("Hot Corner Shortcut Preferences");
|
||||||
|
panel->description = _("Choose actions to perform when you move the\n"
|
||||||
|
"mouse pointer to the screen corners.");
|
||||||
|
panel->parent = parent;
|
||||||
|
|
||||||
|
panel->callbacks.createWidgets = createPanel;
|
||||||
|
panel->callbacks.updateDomain = storeData;
|
||||||
|
panel->callbacks.prepareForClose = prepareForClose;
|
||||||
|
|
||||||
|
AddSection(panel, ICON_FILE);
|
||||||
|
|
||||||
|
return panel;
|
||||||
|
}
|
||||||
@@ -84,11 +84,12 @@ static struct keyOption {
|
|||||||
{ "RHMaximizeKey", N_("Maximize active window right half") },
|
{ "RHMaximizeKey", N_("Maximize active window right half") },
|
||||||
{ "THMaximizeKey", N_("Maximize active window top half") },
|
{ "THMaximizeKey", N_("Maximize active window top half") },
|
||||||
{ "BHMaximizeKey", N_("Maximize active window bottom half") },
|
{ "BHMaximizeKey", N_("Maximize active window bottom half") },
|
||||||
{ "LTCMaximizeKey", N_("Maximize active window left top corner") },
|
{ "TLCMaximizeKey", N_("Maximize active window top left corner") },
|
||||||
{ "RTCMaximizeKey", N_("Maximize active window right top corner") },
|
{ "TRCMaximizeKey", N_("Maximize active window top right corner") },
|
||||||
{ "LBCMaximizeKey", N_("Maximize active window left bottom corner") },
|
{ "BLCMaximizeKey", N_("Maximize active window bottom left corner") },
|
||||||
{ "RBCMaximizeKey", N_("Maximize active window right bottom corner") },
|
{ "BRCMaximizeKey", N_("Maximize active window bottom right corner") },
|
||||||
{ "MaximusKey", N_("Maximus: Tiled maximization ") },
|
{ "MaximusKey", N_("Tile active window") },
|
||||||
|
{ "CenterKey", N_("Center active window") },
|
||||||
{ "KeepOnTopKey", N_("Toggle window on top status") },
|
{ "KeepOnTopKey", N_("Toggle window on top status") },
|
||||||
{ "KeepAtBottomKey",N_("Toggle window at bottom status") },
|
{ "KeepAtBottomKey",N_("Toggle window at bottom status") },
|
||||||
{ "OmnipresentKey", N_("Toggle window omnipresent status") },
|
{ "OmnipresentKey", N_("Toggle window omnipresent status") },
|
||||||
@@ -154,7 +155,7 @@ static struct keyOption {
|
|||||||
|
|
||||||
/* Misc. */
|
/* Misc. */
|
||||||
{ "WindowRelaunchKey", N_("Launch new instance of application") },
|
{ "WindowRelaunchKey", N_("Launch new instance of application") },
|
||||||
{ "ScreenSwitchKey", N_("Switch to Next Screen/Monitor") },
|
{ "ScreenSwitchKey", N_("Switch to next screen/monitor") },
|
||||||
{ "RunKey", N_("Run application") },
|
{ "RunKey", N_("Run application") },
|
||||||
{ "ExitKey", N_("Exit Window Maker") },
|
{ "ExitKey", N_("Exit Window Maker") },
|
||||||
{ "DockRaiseLowerKey", N_("Raise/Lower Dock") },
|
{ "DockRaiseLowerKey", N_("Raise/Lower Dock") },
|
||||||
@@ -550,7 +551,7 @@ static int cmpKeyOptions(const void *v1, const void *v2)
|
|||||||
const struct keyOption *opt1 = (struct keyOption *)v1;
|
const struct keyOption *opt1 = (struct keyOption *)v1;
|
||||||
const struct keyOption *opt2 = (struct keyOption *)v2;
|
const struct keyOption *opt2 = (struct keyOption *)v2;
|
||||||
|
|
||||||
if ((rc = strcmp(opt1->title, opt2->title)) < 0)
|
if ((rc = strncmp(opt1->title, opt2->title, 20)) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
else if (rc > 0)
|
else if (rc > 0)
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ WPrefs_SOURCES = \
|
|||||||
Expert.c \
|
Expert.c \
|
||||||
Focus.c \
|
Focus.c \
|
||||||
FontSimple.c \
|
FontSimple.c \
|
||||||
|
HotCornerShortcuts.c \
|
||||||
Icons.c \
|
Icons.c \
|
||||||
KeyboardShortcuts.c \
|
KeyboardShortcuts.c \
|
||||||
Menu.c \
|
Menu.c \
|
||||||
|
|||||||
@@ -575,6 +575,7 @@ void Initialize(WMScreen * scr)
|
|||||||
InitKeyboardSettings(WPrefs.banner);
|
InitKeyboardSettings(WPrefs.banner);
|
||||||
#endif
|
#endif
|
||||||
InitKeyboardShortcuts(WPrefs.banner);
|
InitKeyboardShortcuts(WPrefs.banner);
|
||||||
|
InitHotCornerShortcuts(WPrefs.banner);
|
||||||
InitMouseSettings(WPrefs.banner);
|
InitMouseSettings(WPrefs.banner);
|
||||||
|
|
||||||
InitAppearance(WPrefs.banner);
|
InitAppearance(WPrefs.banner);
|
||||||
|
|||||||
@@ -155,6 +155,7 @@ Panel *InitDocks(WMWidget *parent);
|
|||||||
Panel *InitExpert(WMWidget *parent);
|
Panel *InitExpert(WMWidget *parent);
|
||||||
Panel *InitFocus(WMWidget *parent);
|
Panel *InitFocus(WMWidget *parent);
|
||||||
Panel *InitFontSimple(WMWidget *parent);
|
Panel *InitFontSimple(WMWidget *parent);
|
||||||
|
Panel *InitHotCornerShortcuts(WMWidget *parent);
|
||||||
Panel *InitIcons(WMWidget *parent);
|
Panel *InitIcons(WMWidget *parent);
|
||||||
Panel *InitKeyboardShortcuts(WMWidget *parent);
|
Panel *InitKeyboardShortcuts(WMWidget *parent);
|
||||||
Panel *InitMenu(WMWidget *parent);
|
Panel *InitMenu(WMWidget *parent);
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ POTFILES = \
|
|||||||
$(top_srcdir)/WPrefs.app/Expert.c \
|
$(top_srcdir)/WPrefs.app/Expert.c \
|
||||||
$(top_srcdir)/WPrefs.app/Focus.c \
|
$(top_srcdir)/WPrefs.app/Focus.c \
|
||||||
$(top_srcdir)/WPrefs.app/FontSimple.c \
|
$(top_srcdir)/WPrefs.app/FontSimple.c \
|
||||||
|
$(top_srcdir)/WPrefs.app/HotCornerShortcuts.c \
|
||||||
$(top_srcdir)/WPrefs.app/Icons.c \
|
$(top_srcdir)/WPrefs.app/Icons.c \
|
||||||
$(top_srcdir)/WPrefs.app/KeyboardShortcuts.c \
|
$(top_srcdir)/WPrefs.app/KeyboardShortcuts.c \
|
||||||
$(top_srcdir)/WPrefs.app/Menu.c \
|
$(top_srcdir)/WPrefs.app/Menu.c \
|
||||||
|
|||||||
+2585
File diff suppressed because it is too large
Load Diff
@@ -15,6 +15,7 @@ dist_tiffdata_DATA = \
|
|||||||
ergonomic.tiff \
|
ergonomic.tiff \
|
||||||
expert.tiff \
|
expert.tiff \
|
||||||
fonts.tiff \
|
fonts.tiff \
|
||||||
|
hotcorners.tiff \
|
||||||
iconprefs.tiff \
|
iconprefs.tiff \
|
||||||
keyboard.tiff \
|
keyboard.tiff \
|
||||||
keyboardprefs.tiff \
|
keyboardprefs.tiff \
|
||||||
|
|||||||
Binary file not shown.
@@ -15,6 +15,7 @@ dist_xpmdata_DATA = \
|
|||||||
ergonomic.xpm \
|
ergonomic.xpm \
|
||||||
expert.xpm \
|
expert.xpm \
|
||||||
fonts.xpm \
|
fonts.xpm \
|
||||||
|
hotcorners.xpm \
|
||||||
iconprefs.xpm \
|
iconprefs.xpm \
|
||||||
keyboard.xpm \
|
keyboard.xpm \
|
||||||
keyboardprefs.xpm \
|
keyboardprefs.xpm \
|
||||||
|
|||||||
@@ -0,0 +1,137 @@
|
|||||||
|
/* XPM */
|
||||||
|
static char * hotcorners_xpm[] = {
|
||||||
|
"48 48 86 1",
|
||||||
|
" c #2C2C2C",
|
||||||
|
". c #FEFEFE",
|
||||||
|
"+ c #505075",
|
||||||
|
"@ c #4E4E74",
|
||||||
|
"# c #515176",
|
||||||
|
"$ c #4B4B72",
|
||||||
|
"% c #494971",
|
||||||
|
"& c #515175",
|
||||||
|
"* c #4F4F74",
|
||||||
|
"= c #4C4C73",
|
||||||
|
"- c #696984",
|
||||||
|
"; c #545477",
|
||||||
|
"> c #5E5E7D",
|
||||||
|
", c #676783",
|
||||||
|
"' c #58587A",
|
||||||
|
") c #5B5B7C",
|
||||||
|
"! c #B1B1BB",
|
||||||
|
"~ c #A5A5B1",
|
||||||
|
"{ c #A1A1AE",
|
||||||
|
"] c #AEAEB9",
|
||||||
|
"^ c #79798F",
|
||||||
|
"/ c #5C5C7C",
|
||||||
|
"( c #D5D5DA",
|
||||||
|
"_ c #E6E6E9",
|
||||||
|
": c #E8E8EB",
|
||||||
|
"< c #EDEDEF",
|
||||||
|
"[ c #E7E7EA",
|
||||||
|
"} c #FDFDFD",
|
||||||
|
"| c #FFFFFF",
|
||||||
|
"1 c #EBEBEC",
|
||||||
|
"2 c #7F7F93",
|
||||||
|
"3 c #484871",
|
||||||
|
"4 c #7B7B85",
|
||||||
|
"5 c #EFEFEF",
|
||||||
|
"6 c #A6A6A6",
|
||||||
|
"7 c #292959",
|
||||||
|
"8 c #464670",
|
||||||
|
"9 c #8C8C96",
|
||||||
|
"0 c #F4F4F4",
|
||||||
|
"a c #F5F5F6",
|
||||||
|
"b c #F2F2F2",
|
||||||
|
"c c #9797A6",
|
||||||
|
"d c #474770",
|
||||||
|
"e c #4D4D73",
|
||||||
|
"f c #9393A3",
|
||||||
|
"g c #F4F4F5",
|
||||||
|
"h c #F3F3F3",
|
||||||
|
"i c #EBEBEE",
|
||||||
|
"j c #6D6D87",
|
||||||
|
"k c #9D9DAB",
|
||||||
|
"l c #F9F9F9",
|
||||||
|
"m c #F1F1F1",
|
||||||
|
"n c #A5A5A5",
|
||||||
|
"o c #EAEAEA",
|
||||||
|
"p c #6A6A86",
|
||||||
|
"q c #D3D3D6",
|
||||||
|
"r c #717171",
|
||||||
|
"s c #848484",
|
||||||
|
"t c #9F9FA3",
|
||||||
|
"u c #47476F",
|
||||||
|
"v c #323256",
|
||||||
|
"w c #9B9B9A",
|
||||||
|
"x c #888889",
|
||||||
|
"y c #000012",
|
||||||
|
"z c #6B6B6D",
|
||||||
|
"A c #757587",
|
||||||
|
"B c #46466D",
|
||||||
|
"C c #3B3B47",
|
||||||
|
"D c #2E2E50",
|
||||||
|
"E c #242447",
|
||||||
|
"F c #838383",
|
||||||
|
"G c #919191",
|
||||||
|
"H c #202041",
|
||||||
|
"I c #4F4F73",
|
||||||
|
"J c #4E4E72",
|
||||||
|
"K c #232343",
|
||||||
|
"L c #4F4F4F",
|
||||||
|
"M c #252548",
|
||||||
|
"N c #505074",
|
||||||
|
"O c #3A3A57",
|
||||||
|
"P c #404060",
|
||||||
|
"Q c #505076",
|
||||||
|
"R c #49496B",
|
||||||
|
"S c #31314E",
|
||||||
|
"T c #2F2F49",
|
||||||
|
"U c #434362",
|
||||||
|
" .",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++@#$%&*=+++++++++++++++++++++++++++%-;>,')@++.",
|
||||||
|
" ++)!~{]]^@++++++++++++++++++++++++++/(_:<[!#++.",
|
||||||
|
" ++'[.}|12*++++++++++++++++++++++++++345||.~$++.",
|
||||||
|
" ++,<||}67+++++++++++++++++++++++++++890||}{%++a",
|
||||||
|
" ++>:|||bcd+++++++++++++++++++++++++efg||}|]&++.",
|
||||||
|
" ++;_5h||ij+++++++++++++++++++++++++@kl|mno]*++.",
|
||||||
|
" ++pqrshltu++++++++++++++++++++++++++vwoxyzAe++.",
|
||||||
|
" ++BCDEFGHI++++++++++++++++++++++++++JKLMNOP+++.",
|
||||||
|
" ++QR+*STJ++++++++++++++++++++++++++++JU*++++++.",
|
||||||
|
" +++++++*++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++QR+*STJ++++++++++++++++++++++++++++JTS*+RQ++.",
|
||||||
|
" ++BCDEFGHI++++++++++++++++++++++++++IHGFEDCB++.",
|
||||||
|
" ++pqrshltu++++++++++++++++++++++++++utlhsrqp++.",
|
||||||
|
" ++;_5h||ij++++++++++++++++++++++++++ji||h5_;++.",
|
||||||
|
" ++>:|||bcd++++++++++++++++++++++++++dcb|||:>++.",
|
||||||
|
" ++,<||}67++++++++++++++++++++++++++++76}||<,++.",
|
||||||
|
" ++'[.}|12*++++++++++++++++++++++++++*21|}.['++.",
|
||||||
|
" ++)!~{]]^@++++++++++++++++++++++++++@^]]{~!)++.",
|
||||||
|
" ++@#$%&*=++++++++++++++++++++++++++++=*&%$#@++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
" ++++++++++++++++++++++++++++++++++++++++++++++.",
|
||||||
|
"................................................"};
|
||||||
@@ -171,10 +171,10 @@
|
|||||||
RHMaximizeKey = None;
|
RHMaximizeKey = None;
|
||||||
THMaximizeKey = None;
|
THMaximizeKey = None;
|
||||||
BHMaximizeKey = None;
|
BHMaximizeKey = None;
|
||||||
LTCMaximizeKey = None;
|
TLCMaximizeKey = None;
|
||||||
RTCMaximizeKey = None;
|
TRCMaximizeKey = None;
|
||||||
LBCMaximizeKey = None;
|
BLCMaximizeKey = None;
|
||||||
RBCMaximizeKey = None;
|
BRCMaximizeKey = None;
|
||||||
MaximusKey = None;
|
MaximusKey = None;
|
||||||
KeepOnTopKey = None;
|
KeepOnTopKey = None;
|
||||||
KeepAtBottomKey = None;
|
KeepAtBottomKey = None;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ GENERATED_MENUS =\
|
|||||||
appearance.menu\
|
appearance.menu\
|
||||||
appearance.menu.fy\
|
appearance.menu.fy\
|
||||||
appearance.menu.nl\
|
appearance.menu.nl\
|
||||||
|
appearance.menu.sr\
|
||||||
menu\
|
menu\
|
||||||
menu.bg\
|
menu.bg\
|
||||||
menu.fi\
|
menu.fi\
|
||||||
@@ -18,6 +19,7 @@ GENERATED_MENUS =\
|
|||||||
menu.nl\
|
menu.nl\
|
||||||
menu.ro\
|
menu.ro\
|
||||||
menu.sk\
|
menu.sk\
|
||||||
|
menu.sr\
|
||||||
menu.zh_TW\
|
menu.zh_TW\
|
||||||
plmenu\
|
plmenu\
|
||||||
plmenu.bg\
|
plmenu.bg\
|
||||||
@@ -30,6 +32,7 @@ GENERATED_MENUS =\
|
|||||||
plmenu.pl\
|
plmenu.pl\
|
||||||
plmenu.ro\
|
plmenu.ro\
|
||||||
plmenu.sk\
|
plmenu.sk\
|
||||||
|
plmenu.sr\
|
||||||
plmenu.zh_CN\
|
plmenu.zh_CN\
|
||||||
plmenu.zh_TW\
|
plmenu.zh_TW\
|
||||||
wmmacros
|
wmmacros
|
||||||
@@ -67,6 +70,7 @@ dist_prefsdata_DATA =\
|
|||||||
background.menu\
|
background.menu\
|
||||||
background.menu.fy\
|
background.menu.fy\
|
||||||
background.menu.nl\
|
background.menu.nl\
|
||||||
|
background.menu.sr\
|
||||||
exitscript.sh\
|
exitscript.sh\
|
||||||
README\
|
README\
|
||||||
README.themes\
|
README.themes\
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
#include "wmmacros"
|
||||||
|
|
||||||
|
"Изглед" MENU
|
||||||
|
"Позадина" OPEN_MENU background.menu
|
||||||
|
"Стилови" OPEN_MENU -noext STYLES_DIR USER_STYLES_DIR WITH setstyle
|
||||||
|
"Теме" OPEN_MENU -noext THEMES_DIR USER_THEMES_DIR WITH setstyle
|
||||||
|
"Сетови икона" OPEN_MENU -noext ICON_SETS_DIR USER_ICON_SETS_DIR WITH seticons
|
||||||
|
"Сачувај сет икона" EXEC geticonset USER_ICON_SETS_DIR/"%a(Назив сета икона)"
|
||||||
|
"Сачувај тему" EXEC getstyle -p "%a(Назив теме)"
|
||||||
|
"Алат за подешавања" EXEC #wprefs#
|
||||||
|
"Изглед" END
|
||||||
|
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
#include "wmmacros"
|
||||||
|
|
||||||
|
"Позадина" MENU
|
||||||
|
"Једнобојна" MENU
|
||||||
|
"Црна" WS_BACK '(solid, black)'
|
||||||
|
"Плава" WS_BACK '(solid, "#505075")'
|
||||||
|
"Индиго" WS_BACK '(solid, "#243e6c")'
|
||||||
|
"Маринско плава" WS_BACK '(solid, "#224477")'
|
||||||
|
"Тамно плава" WS_BACK '(solid, "#180090")'
|
||||||
|
"Љубичаста" WS_BACK '(solid, "#554466")'
|
||||||
|
"Боја жита" WS_BACK '(solid, "wheat4")'
|
||||||
|
"Тамно сива" WS_BACK '(solid, "#333340")'
|
||||||
|
"Боја вина" WS_BACK '(solid, "#400020")'
|
||||||
|
"Једнобојна" END
|
||||||
|
"Претапање" MENU
|
||||||
|
"Залазак сунца" WS_BACK '(mvgradient, deepskyblue4, black, deepskyblue4, tomato4)'
|
||||||
|
"Небо" WS_BACK '(vgradient, blue4, white)'
|
||||||
|
"Нијансе плаве" WS_BACK '(vgradient, "#7080a5", "#101020")'
|
||||||
|
"Индиго нијансе" WS_BACK '(vgradient, "#746ebc", "#242e4c")'
|
||||||
|
"Нијансе љубичасте" WS_BACK '(vgradient, "#654c66", "#151426")'
|
||||||
|
"Нијансе боје жита" WS_BACK '(vgradient, "#a09060", "#302010")'
|
||||||
|
"Нијансе сиве" WS_BACK '(vgradient, "#636380", "#131318")'
|
||||||
|
"Нијансе боје вина" WS_BACK '(vgradient, "#600040", "#180010")'
|
||||||
|
"Претапање" END
|
||||||
|
"Слике" MENU
|
||||||
|
"Поплочано" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -t
|
||||||
|
"Развучене" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -s
|
||||||
|
"Центриране" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -e
|
||||||
|
"Максимизоване" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -a
|
||||||
|
"Попуњене" OPEN_MENU BACKGROUNDS_DIR USER_BACKGROUNDS_DIR WITH wmsetbg -u -f
|
||||||
|
"Слике" END
|
||||||
|
"Позадина" END
|
||||||
@@ -0,0 +1,199 @@
|
|||||||
|
/*
|
||||||
|
* Root Menu definition for WindowMaker
|
||||||
|
*
|
||||||
|
* Syntax is:
|
||||||
|
*
|
||||||
|
* <Title> [SHORTCUT <Shortcut>] <Command> <Parameters>
|
||||||
|
*
|
||||||
|
* <Title> is any string to be used as title. Must be enclosed with " if it
|
||||||
|
* has spaces
|
||||||
|
*
|
||||||
|
* SHORTCUT specifies a shortcut for that item. <Shortcut> has the
|
||||||
|
* same syntax of the shortcuts key options in the
|
||||||
|
* $HOME/GNUstep/Defaults/WindowMaker file, such as RootMenuKey or MiniaturizeKey.
|
||||||
|
*
|
||||||
|
* You can't specify a shortcut for a MENU or OPEN_MENU entry.
|
||||||
|
*
|
||||||
|
* <Command> one of the valid commands:
|
||||||
|
* MENU - starts (sub)menu definition
|
||||||
|
* END - end (sub)menu definition
|
||||||
|
* OPEN_MENU - opens a menu from a file, pipe or directory(ies) contents
|
||||||
|
* and eventually precede each with a command.
|
||||||
|
* WORKSPACE_MENU - adds a submenu for workspace operations. Only one
|
||||||
|
* workspace_menu is allowed.
|
||||||
|
* EXEC <program> - executes an external program
|
||||||
|
* SHEXEC <command> - executes a shell command (like gimp > /dev/null)
|
||||||
|
* EXIT - exits the window manager
|
||||||
|
* RESTART [<window manager>] - restarts WindowMaker or start another
|
||||||
|
* window manager
|
||||||
|
* REFRESH - refreshes the desktop
|
||||||
|
* ARRANGE_ICONS - rearranges the icons on the workspace
|
||||||
|
* SHUTDOWN - kills all clients (and close the X window session)
|
||||||
|
* SHOW_ALL - unhides all windows on workspace
|
||||||
|
* HIDE_OTHERS - hides all windows on the workspace, except the
|
||||||
|
* focused one (or the last one that received focus)
|
||||||
|
* SAVE_SESSION - saves the current state of the desktop, which include
|
||||||
|
* all running applications, all their hints (geometry,
|
||||||
|
* position on screen, workspace they live on, the dock
|
||||||
|
* or clip from where they were launched, and
|
||||||
|
* if minimized, shaded or hidden. Also saves the current
|
||||||
|
* workspace the user is on. All will be restored on every
|
||||||
|
* start of windowmaker until another SAVE_SESSION or
|
||||||
|
* CLEAR_SESSION is used. If SaveSessionOnExit = Yes; in
|
||||||
|
* WindowMaker domain file, then saving is automatically
|
||||||
|
* done on every windowmaker exit, overwriting any
|
||||||
|
* SAVE_SESSION or CLEAR_SESSION (see below).
|
||||||
|
* CLEAR_SESSION - clears any previous saved session. This will not have
|
||||||
|
* any effect if SaveSessionOnExit is True.
|
||||||
|
* INFO - shows the Info Panel
|
||||||
|
*
|
||||||
|
* OPEN_MENU syntax:
|
||||||
|
* 1. File menu handling.
|
||||||
|
* // opens file.menu which must contain a valid menu file and inserts
|
||||||
|
* // it in current position
|
||||||
|
* OPEN_MENU file.menu
|
||||||
|
* 2. Pipe menu handling.
|
||||||
|
* // opens command and uses its stdout to construct menu.
|
||||||
|
* // Command's output must be a valid menu description.
|
||||||
|
* // The space between '|' and command itself is optional.
|
||||||
|
* // Use '||' instead of '|' if you want the menu to always update
|
||||||
|
* // when opened. It might be slow.
|
||||||
|
* OPEN_MENU | command
|
||||||
|
* OPEN_MENU || command
|
||||||
|
* 3. Directory handling.
|
||||||
|
* // Opens one or more directories and constructs a menu with all
|
||||||
|
* // the subdirectories and executable files in them sorted
|
||||||
|
* // alphabetically.
|
||||||
|
* OPEN_MENU /some/dir [/some/other/dir ...]
|
||||||
|
* 4. Directory handling with command.
|
||||||
|
* // Opens one or more directories and constructs menu with all
|
||||||
|
* // subdirectories and readable files in them sorted alphabetically,
|
||||||
|
* // preceding each of them with command.
|
||||||
|
* OPEN_MENU [options] /some/dir [/some/other/dir ...] WITH command -options
|
||||||
|
* Options:
|
||||||
|
* -noext strip whatever is after the last dot in the
|
||||||
|
* file name
|
||||||
|
*
|
||||||
|
* // Use #usergnusteppath# as a placeholder for the path to the user
|
||||||
|
* // GNUstep directory. Window Maker will replace this with the value
|
||||||
|
* // of WMAKER_USER_ROOT, if this environment variable is set, or
|
||||||
|
* // "~/GNUstep" otherwise
|
||||||
|
*
|
||||||
|
* <Parameters> is the program to execute.
|
||||||
|
*
|
||||||
|
* ** Options for command line in EXEC:
|
||||||
|
* %s - substitute with current selection
|
||||||
|
* %a(title[,prompt]) - opens an input box with the specified title and the
|
||||||
|
* optional prompt and do substitution with what you typed
|
||||||
|
* %w - substitute with XID for the current focused window
|
||||||
|
* %W - substitute with the number of the current workspace
|
||||||
|
*
|
||||||
|
* You can override special characters (as % and ") with the \ character:
|
||||||
|
* ex: xterm -T "\"Hello World\""
|
||||||
|
*
|
||||||
|
* You can also use character escapes, like \n
|
||||||
|
*
|
||||||
|
* Each MENU statement must have one mathching END statement at the end.
|
||||||
|
*
|
||||||
|
* Example:
|
||||||
|
*
|
||||||
|
* "Test" MENU
|
||||||
|
* "XTerm" EXEC xterm
|
||||||
|
* // creates a submenu with the contents of /usr/openwin/bin
|
||||||
|
* "XView apps" OPEN_MENU "/usr/openwin/bin"
|
||||||
|
* // some X11 apps in different directories
|
||||||
|
* "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11
|
||||||
|
* // set some background images
|
||||||
|
* "Background" OPEN_MENU -noext $HOME/images /usr/share/images WITH wmsetbg -u -t
|
||||||
|
* // inserts the style.menu in this entry
|
||||||
|
* "Style" OPEN_MENU style.menu
|
||||||
|
* "Test" END
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "wmmacros"
|
||||||
|
|
||||||
|
"Апликације" MENU
|
||||||
|
"Информације" MENU
|
||||||
|
"Информациони панел" INFO_PANEL
|
||||||
|
"Права" LEGAL_PANEL
|
||||||
|
"Системска конзола" EXEC xconsole
|
||||||
|
"Искоришћеност система" SHEXEC xosview || xload
|
||||||
|
"Листа процеса" EXEC xterm -e top
|
||||||
|
"Прегледач упутства" EXEC xman
|
||||||
|
"Информације" END
|
||||||
|
"Покрени..." SHEXEC %a(Покрени,Унесите наредбу за покретање:)
|
||||||
|
"XTerm" EXEC xterm -sb
|
||||||
|
"Mozilla Firefox" EXEC firefox
|
||||||
|
"Радне површине" WORKSPACE_MENU
|
||||||
|
"Апликације" MENU
|
||||||
|
"Gimp" SHEXEC gimp >/dev/null
|
||||||
|
"Ghostview" EXEC ghostview %a(GhostView,Enter file to view)
|
||||||
|
"Xpdf" EXEC xpdf %a(Xpdf,Enter PDF to view)
|
||||||
|
"Abiword" EXEC abiword
|
||||||
|
"Dia" EXEC dia
|
||||||
|
"OpenOffice.org" MENU
|
||||||
|
"OpenOffice.org" EXEC ooffice
|
||||||
|
"Писач" EXEC oowriter
|
||||||
|
"Табела" EXEC oocalc
|
||||||
|
"Цртање" EXEC oodraw
|
||||||
|
"Презентације" EXEC ooimpress
|
||||||
|
"OpenOffice.org" END
|
||||||
|
|
||||||
|
"Уређивачи" MENU
|
||||||
|
"XEmacs" EXEC xemacs
|
||||||
|
"Emacs" EXEC emacs
|
||||||
|
"XJed" EXEC xjed
|
||||||
|
"VI" EXEC xterm -e vi
|
||||||
|
"GVIM" EXEC gvim
|
||||||
|
"NEdit" EXEC nedit
|
||||||
|
"Xedit" EXEC xedit
|
||||||
|
"Уређивачи" END
|
||||||
|
|
||||||
|
"Мултимедија" MENU
|
||||||
|
"XMMS" MENU
|
||||||
|
"XMMS" EXEC xmms
|
||||||
|
"XMMS пусти/паузирај" EXEC xmms -t
|
||||||
|
"XMMS заустави" EXEC xmms -s
|
||||||
|
"XMMS" END
|
||||||
|
"Видео плејер Xine" EXEC xine
|
||||||
|
"MPlayer" EXEC mplayer
|
||||||
|
"Мултимедија" END
|
||||||
|
"Апликације" END
|
||||||
|
|
||||||
|
"Помоћни програми" MENU
|
||||||
|
"Калкулатор" EXEC xcalc
|
||||||
|
"Особине прозора" SHEXEC xprop | xmessage -center -title 'xprop' -file -
|
||||||
|
"Бирач фонта" EXEC xfontsel
|
||||||
|
"Лупа" EXEC wmagnify
|
||||||
|
"Мапа боја" EXEC xcmap
|
||||||
|
"Убиј X апликацију" EXEC xkill
|
||||||
|
"Помоћни програми" END
|
||||||
|
|
||||||
|
"Избор" MENU
|
||||||
|
"Копирај" SHEXEC echo '%s' | wxcopy
|
||||||
|
"Пошаљи мејлом на" EXEC xterm -name mail -T "Pine" -e pine %s
|
||||||
|
"Прегледај веб читачем" EXEC netscape %s
|
||||||
|
"Тражи у упутству" SHEXEC MANUAL_SEARCH(%s)
|
||||||
|
"Избор" END
|
||||||
|
|
||||||
|
"Наредбе" MENU
|
||||||
|
"Сакриј остале" HIDE_OTHERS
|
||||||
|
"Прикажи све" SHOW_ALL
|
||||||
|
"Поређај иконе" ARRANGE_ICONS
|
||||||
|
"Освежи" REFRESH
|
||||||
|
"Закључај" EXEC xlock -allowroot -usefirst
|
||||||
|
"Наредбе" END
|
||||||
|
|
||||||
|
"Изглед" OPEN_MENU "appearance.menu"
|
||||||
|
|
||||||
|
"Сесија" MENU
|
||||||
|
"Сачувај сесију" SAVE_SESSION
|
||||||
|
"Очисти сесију" CLEAR_SESSION
|
||||||
|
"Поново покрени Window Maker" RESTART
|
||||||
|
"Покрени BlackBox" RESTART blackbox
|
||||||
|
"Покрени IceWM" RESTART icewm
|
||||||
|
"Изађи" EXIT
|
||||||
|
"Сесија" END
|
||||||
|
"Апликације" END
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
("Апликације",
|
||||||
|
("Информације",
|
||||||
|
("Информациони панел", INFO_PANEL),
|
||||||
|
("Права", LEGAL_PANEL),
|
||||||
|
("Системска конзола", EXEC, "xconsole"),
|
||||||
|
("Искоришћеност система", SHEXEC, "xosview || xload"),
|
||||||
|
("Листа процеса", EXEC, "xterm -e top"),
|
||||||
|
("Прегледач упутства", EXEC, "xman")
|
||||||
|
),
|
||||||
|
("Покрени...", SHEXEC, "%a(Покрени,Унесите наредбу за покретање:)"),
|
||||||
|
("XTerm", EXEC, "xterm -sb"),
|
||||||
|
("Mozilla Firefox", EXEC, "firefox"),
|
||||||
|
("Радне површине", WORKSPACE_MENU),
|
||||||
|
("Апликације",
|
||||||
|
("Gimp", SHEXEC, "gimp >/dev/null"),
|
||||||
|
("Ghostview", EXEC, "ghostview %a(Enter file to view)"),
|
||||||
|
("Xpdf", EXEC, "xpdf %a(Enter PDF to view)"),
|
||||||
|
("Abiword", EXEC, "abiword"),
|
||||||
|
("Dia", EXEC, "dia"),
|
||||||
|
("OpenOffice.org",
|
||||||
|
("OpenOffice.org", EXEC, "ooffice"),
|
||||||
|
("Писач", EXEC, "oowriter"),
|
||||||
|
("Табела", EXEC, "oocalc"),
|
||||||
|
("Цртање", EXEC, "oodraw"),
|
||||||
|
("Презентације", EXEC, "ooimpress")
|
||||||
|
),
|
||||||
|
("Уређивачи",
|
||||||
|
("XEmacs", EXEC, "xemacs"),
|
||||||
|
("Emacs", EXEC, "emacs"),
|
||||||
|
("XJed", EXEC, "xjed"),
|
||||||
|
("VI", EXEC, "xterm -e vi"),
|
||||||
|
("GVIM", EXEC, "gvim"),
|
||||||
|
("NEdit", EXEC, "nedit"),
|
||||||
|
("Xedit", EXEC, "xedit")
|
||||||
|
),
|
||||||
|
("Мултимедија",
|
||||||
|
("XMMS",
|
||||||
|
("XMMS", EXEC, "xmms"),
|
||||||
|
("XMMS пусти/паузирај", EXEC, "xmms -t"),
|
||||||
|
("XMMS заустави", EXEC, "xmms -s")
|
||||||
|
),
|
||||||
|
("Видео плејер Xine", EXEC, "xine"),
|
||||||
|
("MPlayer", EXEC, "mplayer")
|
||||||
|
)
|
||||||
|
),
|
||||||
|
("Помоћни програми",
|
||||||
|
("Калкулатор", EXEC, "xcalc"),
|
||||||
|
("Особине прозора", SHEXEC, "xprop | xmessage -center -title 'xprop' -file -"),
|
||||||
|
("Бирач фонта", EXEC, "xfontsel"),
|
||||||
|
("Лупа", EXEC, "wmagnify"),
|
||||||
|
("Мапа боја", EXEC, "xcmap"),
|
||||||
|
("Убиј X апликацију", EXEC, "xkill")
|
||||||
|
),
|
||||||
|
("Избор",
|
||||||
|
("Копирај", SHEXEC, "echo '%s' | wxcopy"),
|
||||||
|
("Пошаљи мејлом на", EXEC, "xterm -name mail -T Pine -e pine %s"),
|
||||||
|
("Прегледај веб читачем", EXEC, "mozilla %s"),
|
||||||
|
("Тражи у упутству", EXEC, "MANUAL_SEARCH(%s)")
|
||||||
|
),
|
||||||
|
("Наредбе",
|
||||||
|
("Сакриј остале", HIDE_OTHERS),
|
||||||
|
("Прикажи све", SHOW_ALL),
|
||||||
|
("Поређај иконе", ARRANGE_ICONS),
|
||||||
|
("Освежи", REFRESH),
|
||||||
|
("Закључај", EXEC, "xlock -allowroot -usefirst")
|
||||||
|
),
|
||||||
|
("Изглед", OPEN_MENU, "appearance.menu"),
|
||||||
|
("Сесија",
|
||||||
|
("Сачувај сесију", SAVE_SESSION),
|
||||||
|
("Очисти сесију", CLEAR_SESSION),
|
||||||
|
("Поново покрени Window Maker", RESTART),
|
||||||
|
("Покрени BlackBox", RESTART, blackbox),
|
||||||
|
("Покрени IceWM", RESTART, icewm),
|
||||||
|
("Изађи", EXIT)
|
||||||
|
)
|
||||||
|
)
|
||||||
+2
-3
@@ -2,7 +2,7 @@ dnl ============================================================================
|
|||||||
dnl
|
dnl
|
||||||
dnl Window Maker autoconf input
|
dnl Window Maker autoconf input
|
||||||
dnl
|
dnl
|
||||||
AC_COPYRIGHT([Copyright (c) 2001-2015 The Window Maker Team])
|
AC_COPYRIGHT([Copyright (c) 2001-2023 The Window Maker Team])
|
||||||
dnl
|
dnl
|
||||||
dnl ============================================================================
|
dnl ============================================================================
|
||||||
dnl
|
dnl
|
||||||
@@ -34,7 +34,7 @@ AC_PREREQ([2.69])
|
|||||||
|
|
||||||
dnl Configuration for Autoconf and Automake
|
dnl Configuration for Autoconf and Automake
|
||||||
dnl =======================================
|
dnl =======================================
|
||||||
AC_INIT([WindowMaker],[0.95.9],[wmaker-dev@googlegroups.com],[WindowMaker],[http://www.windowmaker.org/])
|
AC_INIT([WindowMaker],[0.96.0],[wmaker-dev@googlegroups.com],[WindowMaker],[http://www.windowmaker.org/])
|
||||||
AC_CONFIG_MACRO_DIR([m4])
|
AC_CONFIG_MACRO_DIR([m4])
|
||||||
AC_CONFIG_HEADERS([config.h])
|
AC_CONFIG_HEADERS([config.h])
|
||||||
|
|
||||||
@@ -455,7 +455,6 @@ AC_CHECK_HEADERS([syslog.h], [AC_DEFINE([HAVE_SYSLOG], [1], [Check for syslog])]
|
|||||||
dnl Checks for header files
|
dnl Checks for header files
|
||||||
dnl =======================
|
dnl =======================
|
||||||
AC_HEADER_SYS_WAIT
|
AC_HEADER_SYS_WAIT
|
||||||
AC_HEADER_TIME
|
|
||||||
AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h libintl.h poll.h malloc.h ctype.h \
|
AC_CHECK_HEADERS(fcntl.h limits.h sys/ioctl.h libintl.h poll.h malloc.h ctype.h \
|
||||||
string.h strings.h)
|
string.h strings.h)
|
||||||
|
|
||||||
|
|||||||
@@ -80,14 +80,14 @@ AS_VAR_PUSHDEF([VAR],[ax_cv_cflags_gcc_option_$2])dnl
|
|||||||
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)],
|
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)],
|
||||||
VAR,[VAR="no, unknown"
|
VAR,[VAR="no, unknown"
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_C
|
AC_LANG(C)
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC
|
in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC
|
||||||
"-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC
|
"-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC
|
||||||
#
|
#
|
||||||
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
||||||
AC_TRY_COMPILE([],[return 0;],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[return 0;])],
|
||||||
[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
|
[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
|
||||||
done
|
done
|
||||||
FLAGS="$ac_save_[]FLAGS"
|
FLAGS="$ac_save_[]FLAGS"
|
||||||
@@ -116,14 +116,14 @@ AS_VAR_PUSHDEF([VAR],[ax_cv_cxxflags_gcc_option_$2])dnl
|
|||||||
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)],
|
AC_CACHE_CHECK([m4_ifval($1,$1,FLAGS) for gcc m4_ifval($2,$2,-option)],
|
||||||
VAR,[VAR="no, unknown"
|
VAR,[VAR="no, unknown"
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG(C++)
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC
|
in "-pedantic -Werror % m4_ifval($2,$2,-option)" dnl GCC
|
||||||
"-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC
|
"-pedantic % m4_ifval($2,$2,-option) %% no, obsolete" dnl new GCC
|
||||||
#
|
#
|
||||||
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
||||||
AC_TRY_COMPILE([],[return 0;],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[return 0;])],
|
||||||
[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
|
[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
|
||||||
done
|
done
|
||||||
FLAGS="$ac_save_[]FLAGS"
|
FLAGS="$ac_save_[]FLAGS"
|
||||||
@@ -151,14 +151,14 @@ AS_VAR_PUSHDEF([VAR],[ax_cv_cflags_gcc_option_$1])dnl
|
|||||||
AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)],
|
AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)],
|
||||||
VAR,[VAR="no, unknown"
|
VAR,[VAR="no, unknown"
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_C
|
AC_LANG(C)
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC
|
in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC
|
||||||
"-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC
|
"-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC
|
||||||
#
|
#
|
||||||
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
||||||
AC_TRY_COMPILE([],[return 0;],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[return 0;])],
|
||||||
[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
|
[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
|
||||||
done
|
done
|
||||||
FLAGS="$ac_save_[]FLAGS"
|
FLAGS="$ac_save_[]FLAGS"
|
||||||
@@ -187,14 +187,14 @@ AS_VAR_PUSHDEF([VAR],[ax_cv_cxxflags_gcc_option_$1])dnl
|
|||||||
AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)],
|
AC_CACHE_CHECK([m4_ifval($2,$2,FLAGS) for gcc m4_ifval($1,$1,-option)],
|
||||||
VAR,[VAR="no, unknown"
|
VAR,[VAR="no, unknown"
|
||||||
AC_LANG_SAVE
|
AC_LANG_SAVE
|
||||||
AC_LANG_CPLUSPLUS
|
AC_LANG(C++)
|
||||||
ac_save_[]FLAGS="$[]FLAGS"
|
ac_save_[]FLAGS="$[]FLAGS"
|
||||||
for ac_arg dnl
|
for ac_arg dnl
|
||||||
in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC
|
in "-pedantic -Werror % m4_ifval($1,$1,-option)" dnl GCC
|
||||||
"-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC
|
"-pedantic % m4_ifval($1,$1,-option) %% no, obsolete" dnl new GCC
|
||||||
#
|
#
|
||||||
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
do FLAGS="$ac_save_[]FLAGS "`echo $ac_arg | sed -e 's,%%.*,,' -e 's,%,,'`
|
||||||
AC_TRY_COMPILE([],[return 0;],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],[return 0;])],
|
||||||
[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
|
[VAR=`echo $ac_arg | sed -e 's,.*% *,,'` ; break])
|
||||||
done
|
done
|
||||||
FLAGS="$ac_save_[]FLAGS"
|
FLAGS="$ac_save_[]FLAGS"
|
||||||
|
|||||||
+3
-2
@@ -47,14 +47,15 @@ AC_DEFUN([WM_CHECK_XFT_VERSION],
|
|||||||
AC_CACHE_CHECK([whether libXft is at least version $1], [ac_cv_lib_xft_version_ok],
|
AC_CACHE_CHECK([whether libXft is at least version $1], [ac_cv_lib_xft_version_ok],
|
||||||
[CPPFLAGS_save="$CPPFLAGS"
|
[CPPFLAGS_save="$CPPFLAGS"
|
||||||
CPPFLAGS="$CPPFLAGS $XFT_CFLAGS $inc_search_path"
|
CPPFLAGS="$CPPFLAGS $XFT_CFLAGS $inc_search_path"
|
||||||
AC_TRY_LINK([
|
AC_LINK_IFELSE(
|
||||||
|
[AC_LANG_PROGRAM([
|
||||||
#include <X11/Xlib.h>
|
#include <X11/Xlib.h>
|
||||||
#include <X11/Xft/Xft.h>
|
#include <X11/Xft/Xft.h>
|
||||||
], [
|
], [
|
||||||
#if !defined(XFT_VERSION) || XFT_VERSION < ]XFT_REQUIRED_VERSION[
|
#if !defined(XFT_VERSION) || XFT_VERSION < ]XFT_REQUIRED_VERSION[
|
||||||
#error libXft on this system is too old. Consider upgrading to at least $1
|
#error libXft on this system is too old. Consider upgrading to at least $1
|
||||||
#endif
|
#endif
|
||||||
], [ac_cv_lib_xft_version_ok=yes], [ac_cv_lib_xft_version_ok=no])
|
])], [ac_cv_lib_xft_version_ok=yes], [ac_cv_lib_xft_version_ok=no])
|
||||||
CPPFLAGS="$CPPFLAGS_save"])
|
CPPFLAGS="$CPPFLAGS_save"])
|
||||||
m4_undefine([XFT_REQUIRED_VERSION])dnl
|
m4_undefine([XFT_REQUIRED_VERSION])dnl
|
||||||
AS_IF([test "x$ac_cv_lib_xft_version_ok" != "xyes"], [$3], [$2])dnl
|
AS_IF([test "x$ac_cv_lib_xft_version_ok" != "xyes"], [$3], [$2])dnl
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# wm_i18n.m4 - Macros to check and enable translations in WindowMaker
|
# wm_i18n.m4 - Macros to check and enable translations in WindowMaker
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014-2015 Christophe CURIS
|
# Copyright (c) 2014-2015 Christophe CURIS
|
||||||
# Copyright (c) 2015 The Window Maker Tean
|
# Copyright (c) 2015-2021 The Window Maker Tean
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -198,9 +198,9 @@ AC_DEFUN_ONCE([WM_IMGFMT_CHECK_WEBP],
|
|||||||
dnl a symbol without first using the header to handle it
|
dnl a symbol without first using the header to handle it
|
||||||
wm_save_LIBS="$LIBS"
|
wm_save_LIBS="$LIBS"
|
||||||
LIBS="$LIBS -lwebp"
|
LIBS="$LIBS -lwebp"
|
||||||
AC_TRY_LINK(
|
AC_LINK_IFELSE(
|
||||||
[@%:@include <webp/decode.h>],
|
[AC_LANG_PROGRAM([@%:@include <webp/decode.h>],
|
||||||
[WebPGetFeatures(NULL, 1024, NULL);],
|
[WebPGetFeatures(NULL, 1024, NULL);])],
|
||||||
[wm_cv_imgfmt_webp="-lwebp"])
|
[wm_cv_imgfmt_webp="-lwebp"])
|
||||||
LIBS="$wm_save_LIBS"
|
LIBS="$wm_save_LIBS"
|
||||||
AS_IF([test "x$enable_webp$wm_cv_imgfmt_webp" = "xyesno"],
|
AS_IF([test "x$enable_webp$wm_cv_imgfmt_webp" = "xyesno"],
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# wm_libexif.m4 - Macros to check proper libexif
|
# wm_libexif.m4 - Macros to check proper libexif
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014 Window Maker Team
|
# Copyright (c) 2014-2015 Window Maker Team
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ bs.po Bosnian Ahmet Mulalic <am@lugzdk.ba>
|
|||||||
hy.po Armenian Norayr Chilignaryan <chnorik@gmail.com>
|
hy.po Armenian Norayr Chilignaryan <chnorik@gmail.com>
|
||||||
nl.po Dutch Alwin <translations@ziggo.nl>
|
nl.po Dutch Alwin <translations@ziggo.nl>
|
||||||
fy.po Frisian Alwin <translations@ziggo.nl>
|
fy.po Frisian Alwin <translations@ziggo.nl>
|
||||||
|
sr.po Serbian Strahinya Radich <contact@strahinja.org>
|
||||||
|
|
||||||
|
|
||||||
Some translations are based on previous translations by other people.
|
Some translations are based on previous translations by other people.
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Translation into Western Frisian for Window Maker
|
# Translation into Western Frisian for Window Maker
|
||||||
# Copyright (C) 2015-2016 Window Maker Developers Team
|
# Copyright (C) 2015-2020 Window Maker Developers Team
|
||||||
# This file is distributed under the same license as the windowmaker package.
|
# This file is distributed under the same license as the windowmaker package.
|
||||||
# Original by Alwin <translations@ziggo.nl>, 2015.
|
# Original by Alwin <translations@ziggo.nl>, 2015.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# New translation into Dutch for Window Maker
|
# New translation into Dutch for Window Maker
|
||||||
# Copyright (C) 2014-2016 Window Maker Developers Team
|
# Copyright (C) 2014-2020 Window Maker Developers Team
|
||||||
# This file is distributed under the same license as the windowmaker package.
|
# This file is distributed under the same license as the windowmaker package.
|
||||||
# Original by Alwin <translations@ziggo.nl>, 2014.
|
# Original by Alwin <translations@ziggo.nl>, 2014.
|
||||||
#
|
#
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# Window Maker window manager
|
# Window Maker window manager
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014 Christophe CURIS
|
# Copyright (c) 2014 Christophe CURIS
|
||||||
# Copyright (c) 2014 Window Maker Team
|
# Copyright (c) 2014-2015 Window Maker Team
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
@@ -77,10 +77,8 @@ while [ $# -gt 0 ]; do
|
|||||||
|
|
||||||
-v)
|
-v)
|
||||||
shift
|
shift
|
||||||
# Version may be 'x:y:z', we keep only 'x'
|
version="$1"
|
||||||
version="`echo "$1" | sed -e 's,:.*$,,' `"
|
echo "$version" | grep -E '^[1-9][0-9]*(:[0-9]+(:[0-9]+)?)?$' > /dev/null || \
|
||||||
# the version should only be a number
|
|
||||||
echo "$version" | grep '^[1-9][0-9]*$' > /dev/null || \
|
|
||||||
arg_error "version \"$1\" is not valid"
|
arg_error "version \"$1\" is not valid"
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -109,9 +107,18 @@ fi
|
|||||||
# generate the rest of the script so that other symbols will not be kept.
|
# generate the rest of the script so that other symbols will not be kept.
|
||||||
awk '
|
awk '
|
||||||
BEGIN {
|
BEGIN {
|
||||||
|
# Version number here uses only 1 number from the full version used in libtool
|
||||||
|
libversion="'"$version"'";
|
||||||
|
if (split(libversion, subversions, ":") > 1) {
|
||||||
|
# Calculate [CURRENT - AGE], the goal is that the number will not
|
||||||
|
# change when functions are added to the API, but it will be incremented
|
||||||
|
# when functions are removed or argument change (which breaks compat)
|
||||||
|
libversion = subversions[1] - subversions[3];
|
||||||
|
}
|
||||||
|
|
||||||
print "/* Generated version-script for ld */";
|
print "/* Generated version-script for ld */";
|
||||||
print "";
|
print "";
|
||||||
print "'"$libname$version"'";
|
print "'"$libname"'" libversion;
|
||||||
print "{";
|
print "{";
|
||||||
print " global:";
|
print " global:";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# Window Maker window manager
|
# Window Maker window manager
|
||||||
#
|
#
|
||||||
# Copyright (c) 2014-2015 Christophe CURIS
|
# Copyright (c) 2014-2015 Christophe CURIS
|
||||||
# Copyright (c) 2015 Window Maker Team
|
# Copyright (c) 2015-2019 Window Maker Team
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU General Public License as published by
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+6
-1
@@ -2,7 +2,7 @@
|
|||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -474,6 +474,11 @@ extern struct WPreferences {
|
|||||||
|
|
||||||
char show_clip_title;
|
char show_clip_title;
|
||||||
|
|
||||||
|
char hot_corners; /* let corners execute actions */
|
||||||
|
int hot_corner_delay; /* Delay after which the hot corner is triggered */
|
||||||
|
int hot_corner_edge; /* Hot corner edge size */
|
||||||
|
char *hot_corner_actions[4]; /* Action of each corner */
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
#ifdef USE_ICCCM_WMREPLACE
|
#ifdef USE_ICCCM_WMREPLACE
|
||||||
unsigned int replace:1; /* replace existing window manager */
|
unsigned int replace:1; /* replace existing window manager */
|
||||||
|
|||||||
+48
-7
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 1998-2003 Dan Pascu
|
* Copyright (c) 1998-2003 Dan Pascu
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -404,7 +404,7 @@ void wMaximizeWindow(WWindow *wwin, int directions, int head)
|
|||||||
usableArea = wGetUsableAreaForHead(scr, head, &totalArea, True);
|
usableArea = wGetUsableAreaForHead(scr, head, &totalArea, True);
|
||||||
|
|
||||||
/* Only save directions, not kbd or xinerama hints */
|
/* Only save directions, not kbd or xinerama hints */
|
||||||
directions &= (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS);
|
directions &= (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS | MAX_CENTRAL);
|
||||||
|
|
||||||
if (WFLAGP(wwin, full_maximize))
|
if (WFLAGP(wwin, full_maximize))
|
||||||
usableArea = totalArea;
|
usableArea = totalArea;
|
||||||
@@ -431,12 +431,31 @@ void wMaximizeWindow(WWindow *wwin, int directions, int head)
|
|||||||
wwin->maximus_y = new_y;
|
wwin->maximus_y = new_y;
|
||||||
wwin->flags.old_maximized |= MAX_MAXIMUS;
|
wwin->flags.old_maximized |= MAX_MAXIMUS;
|
||||||
} else {
|
} else {
|
||||||
|
/* center the window if can fit, if not sticking it to the screen edges */
|
||||||
|
if (directions & MAX_CENTRAL) {
|
||||||
|
if (wwin->frame->core->height > (usableArea.y2 - usableArea.y1)) {
|
||||||
|
new_y = usableArea.y1;
|
||||||
|
new_height = usableArea.y2 - usableArea.y1 - adj_size;
|
||||||
|
} else {
|
||||||
|
new_height = (wwin->old_geometry.height) ? wwin->old_geometry.height : wwin->frame->core->height;
|
||||||
|
new_height += wwin->frame->top_width + wwin->frame->bottom_width;
|
||||||
|
new_y = half_scr_height - new_height / 2;
|
||||||
|
}
|
||||||
|
if (wwin->frame->core->width > (usableArea.x2 - usableArea.x1)) {
|
||||||
|
new_x = usableArea.x1;
|
||||||
|
new_width = usableArea.x2 - usableArea.x1 - adj_size;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
new_width = (wwin->old_geometry.width) ? wwin->old_geometry.width : wwin->frame->core->width;
|
||||||
|
new_x = half_scr_width - new_width / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
/* set default values if no option set then */
|
/* set default values if no option set then */
|
||||||
if (!(directions & (MAX_HORIZONTAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS))) {
|
if (!(directions & (MAX_HORIZONTAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS | MAX_CENTRAL))) {
|
||||||
new_width = (wwin->old_geometry.width) ? wwin->old_geometry.width : wwin->frame->core->width;
|
new_width = (wwin->old_geometry.width) ? wwin->old_geometry.width : wwin->frame->core->width;
|
||||||
new_x = (wwin->old_geometry.x) ? wwin->old_geometry.x : wwin->frame_x;
|
new_x = (wwin->old_geometry.x) ? wwin->old_geometry.x : wwin->frame_x;
|
||||||
}
|
}
|
||||||
if (!(directions & (MAX_VERTICAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS))) {
|
if (!(directions & (MAX_VERTICAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS| MAX_CENTRAL))) {
|
||||||
new_height = (wwin->old_geometry.height) ? wwin->old_geometry.height : wwin->frame->core->height;
|
new_height = (wwin->old_geometry.height) ? wwin->old_geometry.height : wwin->frame->core->height;
|
||||||
new_y = (wwin->old_geometry.y) ? wwin->old_geometry.y : wwin->frame_y;
|
new_y = (wwin->old_geometry.y) ? wwin->old_geometry.y : wwin->frame_y;
|
||||||
}
|
}
|
||||||
@@ -445,17 +464,26 @@ void wMaximizeWindow(WWindow *wwin, int directions, int head)
|
|||||||
if (directions & MAX_LEFTHALF) {
|
if (directions & MAX_LEFTHALF) {
|
||||||
new_width = half_scr_width - adj_size;
|
new_width = half_scr_width - adj_size;
|
||||||
new_x = usableArea.x1;
|
new_x = usableArea.x1;
|
||||||
|
if (directions & MAX_CENTRAL) {
|
||||||
|
new_y = half_scr_height - wwin->old_geometry.height / 2;
|
||||||
|
}
|
||||||
} else if (directions & MAX_RIGHTHALF) {
|
} else if (directions & MAX_RIGHTHALF) {
|
||||||
new_width = half_scr_width - adj_size;
|
new_width = half_scr_width - adj_size;
|
||||||
new_x = usableArea.x1 + half_scr_width;
|
new_x = usableArea.x1 + half_scr_width;
|
||||||
|
if (directions & MAX_CENTRAL)
|
||||||
|
new_y = half_scr_height - wwin->old_geometry.height / 2;
|
||||||
}
|
}
|
||||||
/* top|bottom position */
|
/* top|bottom position */
|
||||||
if (directions & MAX_TOPHALF) {
|
if (directions & MAX_TOPHALF) {
|
||||||
new_height = half_scr_height - adj_size;
|
new_height = half_scr_height - adj_size;
|
||||||
new_y = usableArea.y1;
|
new_y = usableArea.y1;
|
||||||
|
if (directions & MAX_CENTRAL)
|
||||||
|
new_x = half_scr_width - wwin->old_geometry.width / 2;
|
||||||
} else if (directions & MAX_BOTTOMHALF) {
|
} else if (directions & MAX_BOTTOMHALF) {
|
||||||
new_height = half_scr_height - adj_size;
|
new_height = half_scr_height - adj_size;
|
||||||
new_y = usableArea.y1 + half_scr_height;
|
new_y = usableArea.y1 + half_scr_height;
|
||||||
|
if (directions & MAX_CENTRAL)
|
||||||
|
new_x = half_scr_width - wwin->old_geometry.width / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* vertical|horizontal position */
|
/* vertical|horizontal position */
|
||||||
@@ -494,7 +522,7 @@ void wMaximizeWindow(WWindow *wwin, int directions, int head)
|
|||||||
void handleMaximize(WWindow *wwin, int directions)
|
void handleMaximize(WWindow *wwin, int directions)
|
||||||
{
|
{
|
||||||
int current = wwin->flags.maximized;
|
int current = wwin->flags.maximized;
|
||||||
int requested = directions & (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS);
|
int requested = directions & (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS | MAX_CENTRAL);
|
||||||
int effective = requested ^ current;
|
int effective = requested ^ current;
|
||||||
int flags = directions & ~requested;
|
int flags = directions & ~requested;
|
||||||
int head = wGetHeadForWindow(wwin);
|
int head = wGetHeadForWindow(wwin);
|
||||||
@@ -625,11 +653,24 @@ void handleMaximize(WWindow *wwin, int directions)
|
|||||||
head);
|
head);
|
||||||
|
|
||||||
else {
|
else {
|
||||||
|
|
||||||
if ((requested == (MAX_HORIZONTAL | MAX_VERTICAL)) ||
|
if ((requested == (MAX_HORIZONTAL | MAX_VERTICAL)) ||
|
||||||
(requested == MAX_MAXIMUS))
|
(requested == MAX_MAXIMUS))
|
||||||
effective = requested;
|
effective = requested;
|
||||||
else {
|
else {
|
||||||
if (requested & MAX_LEFTHALF) {
|
if (requested & MAX_CENTRAL) {
|
||||||
|
effective |= MAX_CENTRAL;
|
||||||
|
if (current & (MAX_HORIZONTAL | MAX_VERTICAL))
|
||||||
|
effective &= ~(MAX_HORIZONTAL | MAX_VERTICAL);
|
||||||
|
else if (current & MAX_TOPHALF && current & MAX_LEFTHALF)
|
||||||
|
effective &= ~(MAX_TOPHALF | MAX_LEFTHALF);
|
||||||
|
else if (current & MAX_TOPHALF && current & MAX_RIGHTHALF)
|
||||||
|
effective &= ~(MAX_TOPHALF | MAX_RIGHTHALF);
|
||||||
|
else if (current & MAX_BOTTOMHALF && current & MAX_LEFTHALF)
|
||||||
|
effective &= ~(MAX_BOTTOMHALF | MAX_LEFTHALF);
|
||||||
|
else if (current & MAX_BOTTOMHALF && current & MAX_RIGHTHALF)
|
||||||
|
effective &= ~(MAX_BOTTOMHALF | MAX_RIGHTHALF);
|
||||||
|
} else if (requested & MAX_LEFTHALF) {
|
||||||
if (!(requested & (MAX_TOPHALF | MAX_BOTTOMHALF)))
|
if (!(requested & (MAX_TOPHALF | MAX_BOTTOMHALF)))
|
||||||
effective |= MAX_VERTICAL;
|
effective |= MAX_VERTICAL;
|
||||||
else
|
else
|
||||||
@@ -2215,7 +2256,7 @@ void wMakeWindowVisible(WWindow *wwin)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void movePionterToWindowCenter(WWindow *wwin)
|
void movePointerToWindowCenter(WWindow *wwin)
|
||||||
{
|
{
|
||||||
if (!wPreferences.pointer_with_half_max_windows)
|
if (!wPreferences.pointer_with_half_max_windows)
|
||||||
return;
|
return;
|
||||||
|
|||||||
+4
-3
@@ -30,8 +30,9 @@
|
|||||||
#define MAX_TOPHALF (1 << 4)
|
#define MAX_TOPHALF (1 << 4)
|
||||||
#define MAX_BOTTOMHALF (1 << 5)
|
#define MAX_BOTTOMHALF (1 << 5)
|
||||||
#define MAX_MAXIMUS (1 << 6)
|
#define MAX_MAXIMUS (1 << 6)
|
||||||
#define MAX_IGNORE_XINERAMA (1 << 7)
|
#define MAX_CENTRAL (1 << 7)
|
||||||
#define MAX_KEYBOARD (1 << 8)
|
#define MAX_IGNORE_XINERAMA (1 << 8)
|
||||||
|
#define MAX_KEYBOARD (1 << 9)
|
||||||
|
|
||||||
#define SAVE_GEOMETRY_X (1 << 0)
|
#define SAVE_GEOMETRY_X (1 << 0)
|
||||||
#define SAVE_GEOMETRY_Y (1 << 1)
|
#define SAVE_GEOMETRY_Y (1 << 1)
|
||||||
@@ -84,7 +85,7 @@ void wUnfullscreenWindow(WWindow *wwin);
|
|||||||
void animateResize(WScreen *scr, int x, int y, int w, int h, int fx, int fy, int fw, int fh);
|
void animateResize(WScreen *scr, int x, int y, int w, int h, int fx, int fy, int fw, int fh);
|
||||||
void update_saved_geometry(WWindow *wwin);
|
void update_saved_geometry(WWindow *wwin);
|
||||||
|
|
||||||
void movePionterToWindowCenter(WWindow *wwin);
|
void movePointerToWindowCenter(WWindow *wwin);
|
||||||
void moveBetweenHeads(WWindow *wwin, int direction);
|
void moveBetweenHeads(WWindow *wwin, int direction);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 1998-2003 Alfredo K. Kojima
|
* Copyright (c) 1998-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2016 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+2
-2
@@ -240,9 +240,9 @@ void wClientConfigure(WWindow * wwin, XConfigureRequestEvent * xcre)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (nwidth != wwin->old_geometry.width)
|
if (nwidth != wwin->old_geometry.width)
|
||||||
wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS);
|
wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS | MAX_CENTRAL);
|
||||||
if (nheight != wwin->old_geometry.height)
|
if (nheight != wwin->old_geometry.height)
|
||||||
wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS);
|
wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS | MAX_CENTRAL);
|
||||||
|
|
||||||
wWindowConstrainSize(wwin, (unsigned int *)&nwidth, (unsigned int *)&nheight);
|
wWindowConstrainSize(wwin, (unsigned int *)&nwidth, (unsigned int *)&nheight);
|
||||||
wWindowConfigure(wwin, nx, ny, nwidth, nheight);
|
wWindowConfigure(wwin, nx, ny, nwidth, nheight);
|
||||||
|
|||||||
@@ -25,7 +25,56 @@ static unsigned char MENU_SHADE_INDICATOR_XBM_DATA[] = {
|
|||||||
0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
0xff, 0x01, 0xff, 0x01, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
|
||||||
|
|
||||||
|
#define MENU_SNAP_INDICATOR_W_XBM_SIZE 10
|
||||||
|
#define MENU_SNAP_INDICATOR_H_XBM_SIZE 9
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_V_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x1d, 0x02, 0x1d, 0x02, 0x1d, 0x02, 0x1d, 0x02, 0x1d, 0x02,
|
||||||
|
0x1d, 0x02, 0x1d, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_H_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x01, 0x02, 0xff, 0x03, 0xff, 0x03, 0xff, 0x03, 0x01, 0x02,
|
||||||
|
0x01, 0x02, 0x01, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_CENTRAL_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x01, 0x02, 0x79, 0x02, 0x79, 0x02, 0x79, 0x02, 0x79, 0x02,
|
||||||
|
0x79, 0x02, 0x01, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_RH_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x01, 0x02, 0xe1, 0x02, 0xe1, 0x02, 0xe1, 0x02, 0xe1, 0x02,
|
||||||
|
0xe1, 0x02, 0x01, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_LH_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x01, 0x02, 0x1d, 0x02, 0x1d, 0x02, 0x1d, 0x02, 0x1d, 0x02,
|
||||||
|
0x1d, 0x02, 0x01, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_TH_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x01, 0x02, 0xfd, 0x02, 0xfd, 0x02, 0xfd, 0x02, 0x01, 0x02,
|
||||||
|
0x01, 0x02, 0x01, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_BH_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xfd, 0x02, 0xfd, 0x02,
|
||||||
|
0xfd, 0x02, 0x01, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_TL_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x1f, 0x02, 0x1f, 0x02, 0x1f, 0x02, 0x01, 0x02, 0x01, 0x02,
|
||||||
|
0x01, 0x02, 0x01, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_TR_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0xe1, 0x03, 0xe1, 0x03, 0xe1, 0x03, 0x01, 0x02, 0x01, 0x02,
|
||||||
|
0x01, 0x02, 0x01, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_BL_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x1f, 0x02,
|
||||||
|
0x1f, 0x02, 0x1f, 0x02, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_BR_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0xe1, 0x03,
|
||||||
|
0xe1, 0x03, 0xe1, 0x03, 0xff, 0x03 };
|
||||||
|
|
||||||
|
static unsigned char MENU_SNAP_TILED_INDICATOR_XBM_DATA[] = {
|
||||||
|
0xff, 0x03, 0x1f, 0x02, 0x1f, 0x02, 0x1f, 0x02, 0x1f, 0x02, 0x1f, 0x02,
|
||||||
|
0xdf, 0x03, 0xdf, 0x03, 0xff, 0x03 };
|
||||||
|
|
||||||
/* button pixmaps */
|
/* button pixmaps */
|
||||||
/* the first one is for normal state, the second is for when
|
/* the first one is for normal state, the second is for when
|
||||||
|
|||||||
+53
-5
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 1998-2003 Dan Pascu
|
* Copyright (c) 1998-2003 Dan Pascu
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
|
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@@ -151,6 +151,7 @@ static WDECallbackUpdate setSwPOptions;
|
|||||||
static WDECallbackUpdate updateUsableArea;
|
static WDECallbackUpdate updateUsableArea;
|
||||||
|
|
||||||
static WDECallbackUpdate setModifierKeyLabels;
|
static WDECallbackUpdate setModifierKeyLabels;
|
||||||
|
static WDECallbackUpdate setHotCornerActions;
|
||||||
|
|
||||||
static WDECallbackConvert getCursor;
|
static WDECallbackConvert getCursor;
|
||||||
static WDECallbackUpdate setCursor;
|
static WDECallbackUpdate setCursor;
|
||||||
@@ -525,6 +526,14 @@ WDefaultEntry optionList[] = {
|
|||||||
{"KeepDockOnPrimaryHead", "NO", NULL,
|
{"KeepDockOnPrimaryHead", "NO", NULL,
|
||||||
&wPreferences.keep_dock_on_primary_head, getBool, updateDock,
|
&wPreferences.keep_dock_on_primary_head, getBool, updateDock,
|
||||||
NULL, NULL},
|
NULL, NULL},
|
||||||
|
{"HotCorners", "NO", NULL,
|
||||||
|
&wPreferences.hot_corners, getBool, NULL, NULL, NULL},
|
||||||
|
{"HotCornerDelay", "250", (void *)&wPreferences.hot_corner_delay,
|
||||||
|
&wPreferences.hot_corner_delay, getInt, NULL, NULL, NULL},
|
||||||
|
{"HotCornerEdge", "2", (void *)&wPreferences.hot_corner_edge,
|
||||||
|
&wPreferences.hot_corner_edge, getInt, NULL, NULL, NULL},
|
||||||
|
{"HotCornerActions", "(\"None\", \"None\", \"None\", \"None\")", &wPreferences,
|
||||||
|
NULL, getPropList, setHotCornerActions, NULL, NULL},
|
||||||
|
|
||||||
/* style options */
|
/* style options */
|
||||||
|
|
||||||
@@ -662,16 +671,18 @@ WDefaultEntry optionList[] = {
|
|||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"BHMaximizeKey", "None", (void*)WKBD_BHMAXIMIZE,
|
{"BHMaximizeKey", "None", (void*)WKBD_BHMAXIMIZE,
|
||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"LTCMaximizeKey", "None", (void*)WKBD_LTCMAXIMIZE,
|
{"TLCMaximizeKey", "None", (void*)WKBD_LTCMAXIMIZE,
|
||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"RTCMaximizeKey", "None", (void*)WKBD_RTCMAXIMIZE,
|
{"TRCMaximizeKey", "None", (void*)WKBD_RTCMAXIMIZE,
|
||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"LBCMaximizeKey", "None", (void*)WKBD_LBCMAXIMIZE,
|
{"BLCMaximizeKey", "None", (void*)WKBD_LBCMAXIMIZE,
|
||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"RBCMaximizeKey", "None", (void*)WKBD_RBCMAXIMIZE,
|
{"BRCMaximizeKey", "None", (void*)WKBD_RBCMAXIMIZE,
|
||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"MaximusKey", "None", (void*)WKBD_MAXIMUS,
|
{"MaximusKey", "None", (void*)WKBD_MAXIMUS,
|
||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
|
{"CenterKey", "None", (void *)WKBD_CENTRAL,
|
||||||
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"KeepOnTopKey", "None", (void *)WKBD_KEEP_ON_TOP,
|
{"KeepOnTopKey", "None", (void *)WKBD_KEEP_ON_TOP,
|
||||||
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
NULL, getKeybind, setKeyGrab, NULL, NULL},
|
||||||
{"KeepAtBottomKey", "None", (void *)WKBD_KEEP_AT_BOTTOM,
|
{"KeepAtBottomKey", "None", (void *)WKBD_KEEP_AT_BOTTOM,
|
||||||
@@ -3461,6 +3472,43 @@ static int setModifierKeyLabels(WScreen * scr, WDefaultEntry * entry, void *tdat
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int setHotCornerActions(WScreen * scr, WDefaultEntry * entry, void *tdata, void *foo)
|
||||||
|
{
|
||||||
|
WMPropList *array = tdata;
|
||||||
|
int i;
|
||||||
|
struct WPreferences *prefs = foo;
|
||||||
|
|
||||||
|
if (!WMIsPLArray(array) || WMGetPropListItemCount(array) != 4) {
|
||||||
|
wwarning(_("Value for option \"%s\" must be an array of 4 strings"), entry->key);
|
||||||
|
WMReleasePropList(array);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
DestroyWindowMenu(scr);
|
||||||
|
|
||||||
|
for (i = 0; i < 4; i++) {
|
||||||
|
if (prefs->hot_corner_actions[i])
|
||||||
|
wfree(prefs->hot_corner_actions[i]);
|
||||||
|
|
||||||
|
if (WMIsPLString(WMGetFromPLArray(array, i))) {
|
||||||
|
const char *val;
|
||||||
|
val = WMGetFromPLString(WMGetFromPLArray(array, i));
|
||||||
|
if (strcasecmp(val, "NONE") != 0)
|
||||||
|
prefs->hot_corner_actions[i] = wstrdup(val);
|
||||||
|
else
|
||||||
|
prefs->hot_corner_actions[i] = NULL;
|
||||||
|
} else {
|
||||||
|
wwarning(_("Invalid argument for option \"%s\" item %d"), entry->key, i);
|
||||||
|
prefs->hot_corner_actions[i] = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
WMReleasePropList(array);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static int setDoubleClick(WScreen *scr, WDefaultEntry *entry, void *tdata, void *foo)
|
static int setDoubleClick(WScreen *scr, WDefaultEntry *entry, void *tdata, void *foo)
|
||||||
{
|
{
|
||||||
int *value = tdata;
|
int *value = tdata;
|
||||||
|
|||||||
+5
-1
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 1998-2003 Dan Pascu
|
* Copyright (c) 1998-2003 Dan Pascu
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -1383,6 +1383,10 @@ void wShowInfoPanel(WScreen *scr)
|
|||||||
case 32:
|
case 32:
|
||||||
strbuf = wstrappend(strbuf, _("(16 million colors)\n"));
|
strbuf = wstrappend(strbuf, _("(16 million colors)\n"));
|
||||||
break;
|
break;
|
||||||
|
case 30:
|
||||||
|
case 40:
|
||||||
|
strbuf = wstrappend(strbuf, _("(1 billion colors)\n"));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
snprintf(buffer, sizeof(buffer), _("(%d colors)\n"), 1 << scr->w_depth);
|
snprintf(buffer, sizeof(buffer), _("(%d colors)\n"), 1 << scr->w_depth);
|
||||||
strbuf = wstrappend(strbuf, buffer);
|
strbuf = wstrappend(strbuf, buffer);
|
||||||
|
|||||||
+12
-2
@@ -4,6 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 1998-2003 Dan Pascu
|
* Copyright (c) 1998-2003 Dan Pascu
|
||||||
|
* Copyright (c) 2009-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -3038,7 +3039,6 @@ void wDockSwap(WDock *dock)
|
|||||||
WAppIcon *btn;
|
WAppIcon *btn;
|
||||||
int x, i;
|
int x, i;
|
||||||
|
|
||||||
|
|
||||||
x = getDockXPosition(scr, dock->on_right_side);
|
x = getDockXPosition(scr, dock->on_right_side);
|
||||||
swapDrawers(scr, x);
|
swapDrawers(scr, x);
|
||||||
dock->x_pos = x;
|
dock->x_pos = x;
|
||||||
@@ -4619,7 +4619,10 @@ static void swapDrawer(WDock *drawer, int new_x)
|
|||||||
ai = drawer->icon_array[i];
|
ai = drawer->icon_array[i];
|
||||||
if (ai == NULL)
|
if (ai == NULL)
|
||||||
continue;
|
continue;
|
||||||
ai->xindex *= -1; /* so A B C becomes C B A */
|
if (drawer->on_right_side)
|
||||||
|
ai->xindex = -abs(ai->xindex);
|
||||||
|
else
|
||||||
|
ai->xindex = abs(ai->xindex);
|
||||||
ai->x_pos = new_x + ai->xindex * ICON_SIZE;
|
ai->x_pos = new_x + ai->xindex * ICON_SIZE;
|
||||||
|
|
||||||
/* Update drawer's tile */
|
/* Update drawer's tile */
|
||||||
@@ -4923,6 +4926,13 @@ static WDock * drawerRestoreState(WScreen *scr, WMPropList *drawer_state)
|
|||||||
drawer->icon_array[drawer->icon_count] = aicon;
|
drawer->icon_array[drawer->icon_count] = aicon;
|
||||||
|
|
||||||
if (aicon) {
|
if (aicon) {
|
||||||
|
/* don't trust the stored direction sign as the dock is
|
||||||
|
* dynamically positioned depending on the screen size
|
||||||
|
*/
|
||||||
|
if (drawer->screen_ptr->dock->on_right_side)
|
||||||
|
aicon->xindex = -abs(aicon->xindex);
|
||||||
|
else
|
||||||
|
aicon->xindex = abs(aicon->xindex);
|
||||||
aicon->dock = drawer;
|
aicon->dock = drawer;
|
||||||
aicon->x_pos = drawer->x_pos + (aicon->xindex * ICON_SIZE);
|
aicon->x_pos = drawer->x_pos + (aicon->xindex * ICON_SIZE);
|
||||||
aicon->y_pos = drawer->y_pos + (aicon->yindex * ICON_SIZE);
|
aicon->y_pos = drawer->y_pos + (aicon->yindex * ICON_SIZE);
|
||||||
|
|||||||
+99
-14
@@ -3,7 +3,7 @@
|
|||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -1512,7 +1512,15 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_HORIZONTAL | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_HORIZONTAL | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case WKBD_CENTRAL:
|
||||||
|
if (ISMAPPED(wwin) && ISFOCUSED(wwin) && IS_RESIZABLE(wwin)) {
|
||||||
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
|
handleMaximize(wwin, MAX_CENTRAL | MAX_KEYBOARD);
|
||||||
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_LHMAXIMIZE:
|
case WKBD_LHMAXIMIZE:
|
||||||
@@ -1520,7 +1528,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_VERTICAL | MAX_LEFTHALF | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_VERTICAL | MAX_LEFTHALF | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_RHMAXIMIZE:
|
case WKBD_RHMAXIMIZE:
|
||||||
@@ -1528,7 +1536,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_VERTICAL | MAX_RIGHTHALF | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_VERTICAL | MAX_RIGHTHALF | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_THMAXIMIZE:
|
case WKBD_THMAXIMIZE:
|
||||||
@@ -1536,7 +1544,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_HORIZONTAL | MAX_TOPHALF | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_HORIZONTAL | MAX_TOPHALF | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_BHMAXIMIZE:
|
case WKBD_BHMAXIMIZE:
|
||||||
@@ -1544,7 +1552,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_HORIZONTAL | MAX_BOTTOMHALF | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_HORIZONTAL | MAX_BOTTOMHALF | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_LTCMAXIMIZE:
|
case WKBD_LTCMAXIMIZE:
|
||||||
@@ -1552,7 +1560,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_LEFTHALF | MAX_TOPHALF | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_LEFTHALF | MAX_TOPHALF | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_RTCMAXIMIZE:
|
case WKBD_RTCMAXIMIZE:
|
||||||
@@ -1560,7 +1568,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_RIGHTHALF | MAX_TOPHALF | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_RIGHTHALF | MAX_TOPHALF | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_LBCMAXIMIZE:
|
case WKBD_LBCMAXIMIZE:
|
||||||
@@ -1568,7 +1576,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_LEFTHALF | MAX_BOTTOMHALF | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_LEFTHALF | MAX_BOTTOMHALF | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_RBCMAXIMIZE:
|
case WKBD_RBCMAXIMIZE:
|
||||||
@@ -1576,7 +1584,7 @@ static void handleKeyPress(XEvent * event)
|
|||||||
CloseWindowMenu(scr);
|
CloseWindowMenu(scr);
|
||||||
|
|
||||||
handleMaximize(wwin, MAX_RIGHTHALF | MAX_BOTTOMHALF | MAX_KEYBOARD);
|
handleMaximize(wwin, MAX_RIGHTHALF | MAX_BOTTOMHALF | MAX_KEYBOARD);
|
||||||
movePionterToWindowCenter(wwin);
|
movePointerToWindowCenter(wwin);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WKBD_MAXIMUS:
|
case WKBD_MAXIMUS:
|
||||||
@@ -1928,14 +1936,84 @@ static void handleKeyPress(XEvent * event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void handleMotionNotify(XEvent * event)
|
#define CORNER_NONE 0
|
||||||
{
|
#define CORNER_TOPLEFT 1
|
||||||
WScreen *scr = wScreenForRootWindow(event->xmotion.root);
|
#define CORNER_TOPRIGHT 2
|
||||||
|
#define CORNER_BOTTOMLEFT 3
|
||||||
|
#define CORNER_BOTTOMRIGHT 4
|
||||||
|
|
||||||
if (wPreferences.scrollable_menus) {
|
static int get_corner(WMRect rect, WMPoint p)
|
||||||
|
{
|
||||||
|
if (p.x <= (rect.pos.x + wPreferences.hot_corner_edge) && p.y <= (rect.pos.y + wPreferences.hot_corner_edge))
|
||||||
|
return CORNER_TOPLEFT;
|
||||||
|
if (p.x >= (rect.pos.x + rect.size.width - wPreferences.hot_corner_edge) && p.y <= (rect.pos.y + wPreferences.hot_corner_edge))
|
||||||
|
return CORNER_TOPRIGHT;
|
||||||
|
if (p.x <= (rect.pos.x + wPreferences.hot_corner_edge) && p.y >= (rect.pos.y + rect.size.height - wPreferences.hot_corner_edge))
|
||||||
|
return CORNER_BOTTOMLEFT;
|
||||||
|
if (p.x >= (rect.pos.x + rect.size.width - wPreferences.hot_corner_edge) && p.y >= (rect.pos.y + rect.size.height - wPreferences.hot_corner_edge))
|
||||||
|
return CORNER_BOTTOMRIGHT;
|
||||||
|
return CORNER_NONE;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void hotCornerDelay(void *data)
|
||||||
|
{
|
||||||
|
WScreen *scr = (WScreen *) data;
|
||||||
|
if (scr->flags.in_hot_corner && wPreferences.hot_corner_actions[scr->flags.in_hot_corner - 1])
|
||||||
|
ExecuteShellCommand(scr, wPreferences.hot_corner_actions[scr->flags.in_hot_corner - 1]);
|
||||||
|
WMDeleteTimerHandler(scr->hot_corner_timer);
|
||||||
|
scr->hot_corner_timer = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void handleMotionNotify(XEvent *event)
|
||||||
|
{
|
||||||
|
if (wPreferences.scrollable_menus || wPreferences.hot_corners) {
|
||||||
|
WScreen *scr = wScreenForRootWindow(event->xmotion.root);
|
||||||
WMPoint p = wmkpoint(event->xmotion.x_root, event->xmotion.y_root);
|
WMPoint p = wmkpoint(event->xmotion.x_root, event->xmotion.y_root);
|
||||||
WMRect rect = wGetRectForHead(scr, wGetHeadForPoint(scr, p));
|
WMRect rect = wGetRectForHead(scr, wGetHeadForPoint(scr, p));
|
||||||
|
|
||||||
|
if (wPreferences.hot_corners) {
|
||||||
|
if (!scr->flags.in_hot_corner) {
|
||||||
|
scr->flags.in_hot_corner = get_corner(rect, p);
|
||||||
|
if (scr->flags.in_hot_corner && !scr->hot_corner_timer)
|
||||||
|
scr->hot_corner_timer = WMAddTimerHandler(wPreferences.hot_corner_delay, hotCornerDelay, scr);
|
||||||
|
} else {
|
||||||
|
int out_hot_corner = 0;
|
||||||
|
|
||||||
|
switch (scr->flags.in_hot_corner) {
|
||||||
|
case CORNER_TOPLEFT:
|
||||||
|
if ((p.x > (rect.pos.x + wPreferences.hot_corner_edge)) ||
|
||||||
|
(p.y > (rect.pos.y + wPreferences.hot_corner_edge)))
|
||||||
|
out_hot_corner = 1;
|
||||||
|
break;
|
||||||
|
case CORNER_TOPRIGHT:
|
||||||
|
if ((p.x < (rect.pos.x + rect.size.width - wPreferences.hot_corner_edge)) ||
|
||||||
|
(p.y > (rect.pos.y + wPreferences.hot_corner_edge)))
|
||||||
|
out_hot_corner = 1;
|
||||||
|
break;
|
||||||
|
case CORNER_BOTTOMLEFT:
|
||||||
|
if ((p.x > (rect.pos.x + wPreferences.hot_corner_edge)) ||
|
||||||
|
(p.y < (rect.pos.y + rect.size.height - wPreferences.hot_corner_edge)))
|
||||||
|
out_hot_corner = 1;
|
||||||
|
break;
|
||||||
|
case CORNER_BOTTOMRIGHT:
|
||||||
|
if ((p.x < (rect.pos.x + rect.size.width - wPreferences.hot_corner_edge)) ||
|
||||||
|
(p.y < (rect.pos.y + rect.size.height - wPreferences.hot_corner_edge)))
|
||||||
|
out_hot_corner = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
if (out_hot_corner) {
|
||||||
|
scr->flags.in_hot_corner = CORNER_NONE;
|
||||||
|
if (scr->hot_corner_timer) {
|
||||||
|
WMDeleteTimerHandler(scr->hot_corner_timer);
|
||||||
|
scr->hot_corner_timer = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (wPreferences.scrollable_menus) {
|
||||||
if (scr->flags.jump_back_pending ||
|
if (scr->flags.jump_back_pending ||
|
||||||
p.x <= (rect.pos.x + 1) ||
|
p.x <= (rect.pos.x + 1) ||
|
||||||
p.x >= (rect.pos.x + rect.size.width - 2) ||
|
p.x >= (rect.pos.x + rect.size.width - 2) ||
|
||||||
@@ -1947,8 +2025,15 @@ static void handleMotionNotify(XEvent * event)
|
|||||||
wMenuScroll(menu);
|
wMenuScroll(menu);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef CORNER_NONE
|
||||||
|
#undef CORNER_TOPLEFT
|
||||||
|
#undef CORNER_TOPRIGHT
|
||||||
|
#undef CORNER_BOTTOMLEFT
|
||||||
|
#undef CORNER_BOTTOMRIGHT
|
||||||
|
|
||||||
static void handleVisibilityNotify(XEvent * event)
|
static void handleVisibilityNotify(XEvent * event)
|
||||||
{
|
{
|
||||||
WWindow *wwin;
|
WWindow *wwin;
|
||||||
|
|||||||
+2
-1
@@ -2,7 +2,7 @@
|
|||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -76,6 +76,7 @@ enum {
|
|||||||
WKBD_FOCUSPREV,
|
WKBD_FOCUSPREV,
|
||||||
WKBD_GROUPNEXT,
|
WKBD_GROUPNEXT,
|
||||||
WKBD_GROUPPREV,
|
WKBD_GROUPPREV,
|
||||||
|
WKBD_CENTRAL,
|
||||||
|
|
||||||
/* window, menu */
|
/* window, menu */
|
||||||
WKBD_CLOSE,
|
WKBD_CLOSE,
|
||||||
|
|||||||
+43
-3
@@ -724,9 +724,12 @@ static void paintEntry(WMenu * menu, int index, int selected)
|
|||||||
/* draw indicator */
|
/* draw indicator */
|
||||||
if (entry->flags.indicator && entry->flags.indicator_on) {
|
if (entry->flags.indicator && entry->flags.indicator_on) {
|
||||||
int iw, ih;
|
int iw, ih;
|
||||||
WPixmap *indicator;
|
WPixmap *indicator = NULL;
|
||||||
|
|
||||||
switch (entry->flags.indicator_type) {
|
switch (entry->flags.indicator_type) {
|
||||||
|
case MI_DIAMOND:
|
||||||
|
indicator = scr->menu_radio_indicator;
|
||||||
|
break;
|
||||||
case MI_CHECK:
|
case MI_CHECK:
|
||||||
indicator = scr->menu_check_indicator;
|
indicator = scr->menu_check_indicator;
|
||||||
break;
|
break;
|
||||||
@@ -739,12 +742,48 @@ static void paintEntry(WMenu * menu, int index, int selected)
|
|||||||
case MI_SHADED:
|
case MI_SHADED:
|
||||||
indicator = scr->menu_shade_indicator;
|
indicator = scr->menu_shade_indicator;
|
||||||
break;
|
break;
|
||||||
case MI_DIAMOND:
|
case MI_SNAP_V:
|
||||||
|
indicator = scr->menu_snap_vertical_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_H:
|
||||||
|
indicator = scr->menu_snap_horizontal_indicator;
|
||||||
|
break;
|
||||||
|
case MI_CENTRAL:
|
||||||
|
indicator = scr->menu_central_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_RH:
|
||||||
|
indicator = scr->menu_snap_rh_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_LH:
|
||||||
|
indicator = scr->menu_snap_lh_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_TH:
|
||||||
|
indicator = scr->menu_snap_th_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_BH:
|
||||||
|
indicator = scr->menu_snap_bh_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_TL:
|
||||||
|
indicator = scr->menu_snap_tl_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_TR:
|
||||||
|
indicator = scr->menu_snap_tr_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_BL:
|
||||||
|
indicator = scr->menu_snap_bl_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_BR:
|
||||||
|
indicator = scr->menu_snap_br_indicator;
|
||||||
|
break;
|
||||||
|
case MI_SNAP_TILED:
|
||||||
|
indicator = scr->menu_snap_tiled_indicator;
|
||||||
|
break;
|
||||||
|
case MI_NONE:
|
||||||
default:
|
default:
|
||||||
indicator = scr->menu_radio_indicator;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (indicator) {
|
||||||
iw = indicator->width;
|
iw = indicator->width;
|
||||||
ih = indicator->height;
|
ih = indicator->height;
|
||||||
XSetClipMask(dpy, scr->copy_gc, indicator->mask);
|
XSetClipMask(dpy, scr->copy_gc, indicator->mask);
|
||||||
@@ -769,6 +808,7 @@ static void paintEntry(WMenu * menu, int index, int selected)
|
|||||||
*/
|
*/
|
||||||
XSetClipOrigin(dpy, scr->copy_gc, 0, 0);
|
XSetClipOrigin(dpy, scr->copy_gc, 0, 0);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* draw right text */
|
/* draw right text */
|
||||||
|
|
||||||
|
|||||||
+19
-6
@@ -23,11 +23,24 @@
|
|||||||
|
|
||||||
#include "wcore.h"
|
#include "wcore.h"
|
||||||
|
|
||||||
#define MI_DIAMOND 0
|
#define MI_NONE 0
|
||||||
#define MI_CHECK 1
|
#define MI_DIAMOND 1
|
||||||
#define MI_MINIWINDOW 2
|
#define MI_CHECK 2
|
||||||
#define MI_HIDDEN 3
|
#define MI_MINIWINDOW 3
|
||||||
#define MI_SHADED 4
|
#define MI_HIDDEN 4
|
||||||
|
#define MI_SHADED 5
|
||||||
|
#define MI_SNAP_V 6
|
||||||
|
#define MI_SNAP_H 7
|
||||||
|
#define MI_SNAP_RH 8
|
||||||
|
#define MI_SNAP_LH 9
|
||||||
|
#define MI_SNAP_TH 10
|
||||||
|
#define MI_SNAP_BH 11
|
||||||
|
#define MI_SNAP_TL 12
|
||||||
|
#define MI_SNAP_TR 13
|
||||||
|
#define MI_SNAP_BL 14
|
||||||
|
#define MI_SNAP_BR 15
|
||||||
|
#define MI_SNAP_TILED 16
|
||||||
|
#define MI_CENTRAL 17
|
||||||
|
|
||||||
typedef struct WMenuEntry {
|
typedef struct WMenuEntry {
|
||||||
int order;
|
int order;
|
||||||
@@ -44,7 +57,7 @@ typedef struct WMenuEntry {
|
|||||||
unsigned int enabled:1; /* entry is selectable */
|
unsigned int enabled:1; /* entry is selectable */
|
||||||
unsigned int indicator:1; /* left indicator */
|
unsigned int indicator:1; /* left indicator */
|
||||||
unsigned int indicator_on:1;
|
unsigned int indicator_on:1;
|
||||||
unsigned int indicator_type:3;
|
unsigned int indicator_type:5;
|
||||||
unsigned int editable:1;
|
unsigned int editable:1;
|
||||||
} flags;
|
} flags;
|
||||||
} WMenuEntry;
|
} WMenuEntry;
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2013 Window Maker Team
|
* Copyright (c) 2013-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+2
-2
@@ -62,7 +62,7 @@ typedef struct {
|
|||||||
long functions;
|
long functions;
|
||||||
long decorations;
|
long decorations;
|
||||||
long inputMode;
|
long inputMode;
|
||||||
long unknown;
|
long status;
|
||||||
} MWMHints;
|
} MWMHints;
|
||||||
|
|
||||||
static Atom _XA_MOTIF_WM_HINTS;
|
static Atom _XA_MOTIF_WM_HINTS;
|
||||||
@@ -180,7 +180,7 @@ static int getMWMHints(Window window, MWMHints *mwmhints)
|
|||||||
mwmhints->decorations = data[2];
|
mwmhints->decorations = data[2];
|
||||||
mwmhints->inputMode = data[3];
|
mwmhints->inputMode = data[3];
|
||||||
if (count > 5)
|
if (count > 5)
|
||||||
mwmhints->unknown = data[4];
|
mwmhints->status = data[4];
|
||||||
}
|
}
|
||||||
XFree(data);
|
XFree(data);
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -1665,10 +1665,10 @@ int wKeyboardMoveResizeWindow(WWindow * wwin)
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (ww != original_w)
|
if (ww != original_w)
|
||||||
wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS);
|
wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS | MAX_CENTRAL);
|
||||||
|
|
||||||
if (wh != original_h)
|
if (wh != original_h)
|
||||||
wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS);
|
wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS | MAX_CENTRAL);
|
||||||
|
|
||||||
wWindowConfigure(wwin, src_x + off_x, src_y + off_y, ww, wh - vert_border);
|
wWindowConfigure(wwin, src_x + off_x, src_y + off_y, ww, wh - vert_border);
|
||||||
wWindowSynthConfigureNotify(wwin);
|
wWindowSynthConfigureNotify(wwin);
|
||||||
@@ -2283,10 +2283,10 @@ void wMouseResizeWindow(WWindow * wwin, XEvent * ev)
|
|||||||
XUngrabServer(dpy);
|
XUngrabServer(dpy);
|
||||||
|
|
||||||
if (fw != original_fw)
|
if (fw != original_fw)
|
||||||
wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS);
|
wwin->flags.maximized &= ~(MAX_HORIZONTAL | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS | MAX_CENTRAL);
|
||||||
|
|
||||||
if (fh != original_fh)
|
if (fh != original_fh)
|
||||||
wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS);
|
wwin->flags.maximized &= ~(MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_MAXIMUS | MAX_CENTRAL);
|
||||||
|
|
||||||
wWindowConfigure(wwin, fx, fy, fw, fh - vert_border);
|
wWindowConfigure(wwin, fx, fy, fw, fh - vert_border);
|
||||||
wWindowSynthConfigureNotify(wwin);
|
wWindowSynthConfigureNotify(wwin);
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2013 Window Maker Team
|
* Copyright (c) 2013-2016 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 1998-2003 Dan Pascu
|
* Copyright (c) 1998-2003 Dan Pascu
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+29
-40
@@ -484,45 +484,34 @@ static void createPixmaps(WScreen * scr)
|
|||||||
WPixmap *pix;
|
WPixmap *pix;
|
||||||
|
|
||||||
/* load pixmaps */
|
/* load pixmaps */
|
||||||
pix = wPixmapCreateFromXBMData(scr, (char *)MENU_RADIO_INDICATOR_XBM_DATA,
|
#define LOADPIXMAPINDICATOR(XBM,W,I) {\
|
||||||
(char *)MENU_RADIO_INDICATOR_XBM_DATA,
|
pix = wPixmapCreateFromXBMData(scr, (char *)XBM, (char *)XBM,\
|
||||||
MENU_RADIO_INDICATOR_XBM_SIZE,
|
W, MENU_SNAP_INDICATOR_H_XBM_SIZE,\
|
||||||
MENU_RADIO_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel);
|
scr->black_pixel, scr->white_pixel);\
|
||||||
if (pix != NULL)
|
if (pix != NULL)\
|
||||||
pix->shared = 1;
|
pix->shared = 1;\
|
||||||
scr->menu_radio_indicator = pix;
|
scr->I = pix;}
|
||||||
|
|
||||||
pix = wPixmapCreateFromXBMData(scr, (char *)MENU_CHECK_INDICATOR_XBM_DATA,
|
LOADPIXMAPINDICATOR(MENU_RADIO_INDICATOR_XBM_DATA, MENU_RADIO_INDICATOR_XBM_SIZE, menu_radio_indicator)
|
||||||
(char *)MENU_CHECK_INDICATOR_XBM_DATA,
|
LOADPIXMAPINDICATOR(MENU_CHECK_INDICATOR_XBM_DATA, MENU_CHECK_INDICATOR_XBM_SIZE, menu_check_indicator)
|
||||||
MENU_CHECK_INDICATOR_XBM_SIZE,
|
LOADPIXMAPINDICATOR(MENU_MINI_INDICATOR_XBM_DATA, MENU_MINI_INDICATOR_XBM_SIZE, menu_mini_indicator)
|
||||||
MENU_CHECK_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel);
|
LOADPIXMAPINDICATOR(MENU_HIDE_INDICATOR_XBM_DATA, MENU_HIDE_INDICATOR_XBM_SIZE, menu_hide_indicator)
|
||||||
if (pix != NULL)
|
LOADPIXMAPINDICATOR(MENU_SHADE_INDICATOR_XBM_DATA, MENU_SHADE_INDICATOR_XBM_SIZE, menu_shade_indicator)
|
||||||
pix->shared = 1;
|
|
||||||
scr->menu_check_indicator = pix;
|
|
||||||
|
|
||||||
pix = wPixmapCreateFromXBMData(scr, (char *)MENU_MINI_INDICATOR_XBM_DATA,
|
LOADPIXMAPINDICATOR(MENU_SNAP_V_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_vertical_indicator)
|
||||||
(char *)MENU_MINI_INDICATOR_XBM_DATA,
|
LOADPIXMAPINDICATOR(MENU_SNAP_H_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_horizontal_indicator)
|
||||||
MENU_MINI_INDICATOR_XBM_SIZE,
|
LOADPIXMAPINDICATOR(MENU_CENTRAL_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_central_indicator)
|
||||||
MENU_MINI_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel);
|
LOADPIXMAPINDICATOR(MENU_SNAP_RH_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_rh_indicator)
|
||||||
if (pix != NULL)
|
LOADPIXMAPINDICATOR(MENU_SNAP_LH_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_lh_indicator)
|
||||||
pix->shared = 1;
|
LOADPIXMAPINDICATOR(MENU_SNAP_TH_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_th_indicator)
|
||||||
scr->menu_mini_indicator = pix;
|
LOADPIXMAPINDICATOR(MENU_SNAP_BH_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_bh_indicator)
|
||||||
|
LOADPIXMAPINDICATOR(MENU_SNAP_TL_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_tl_indicator)
|
||||||
|
LOADPIXMAPINDICATOR(MENU_SNAP_TR_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_tr_indicator)
|
||||||
|
LOADPIXMAPINDICATOR(MENU_SNAP_BL_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_bl_indicator)
|
||||||
|
LOADPIXMAPINDICATOR(MENU_SNAP_BR_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_br_indicator)
|
||||||
|
LOADPIXMAPINDICATOR(MENU_SNAP_TILED_INDICATOR_XBM_DATA, MENU_SNAP_INDICATOR_W_XBM_SIZE, menu_snap_tiled_indicator)
|
||||||
|
|
||||||
pix = wPixmapCreateFromXBMData(scr, (char *)MENU_HIDE_INDICATOR_XBM_DATA,
|
#undef LOADPIXMAPINDICATOR
|
||||||
(char *)MENU_HIDE_INDICATOR_XBM_DATA,
|
|
||||||
MENU_HIDE_INDICATOR_XBM_SIZE,
|
|
||||||
MENU_HIDE_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel);
|
|
||||||
if (pix != NULL)
|
|
||||||
pix->shared = 1;
|
|
||||||
scr->menu_hide_indicator = pix;
|
|
||||||
|
|
||||||
pix = wPixmapCreateFromXBMData(scr, (char *)MENU_SHADE_INDICATOR_XBM_DATA,
|
|
||||||
(char *)MENU_SHADE_INDICATOR_XBM_DATA,
|
|
||||||
MENU_SHADE_INDICATOR_XBM_SIZE,
|
|
||||||
MENU_SHADE_INDICATOR_XBM_SIZE, scr->black_pixel, scr->white_pixel);
|
|
||||||
if (pix != NULL)
|
|
||||||
pix->shared = 1;
|
|
||||||
scr->menu_shade_indicator = pix;
|
|
||||||
|
|
||||||
create_logo_image(scr);
|
create_logo_image(scr);
|
||||||
|
|
||||||
@@ -1304,8 +1293,11 @@ void ScreenCapture(WScreen *scr, int mode)
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
|
WWindow *wwin;
|
||||||
|
XImage *pimg;
|
||||||
|
|
||||||
case PRINT_WINDOW:
|
case PRINT_WINDOW:
|
||||||
WWindow *wwin = scr->focused_window;
|
wwin = scr->focused_window;
|
||||||
if (wwin && !wwin->flags.shaded) {
|
if (wwin && !wwin->flags.shaded) {
|
||||||
/*
|
/*
|
||||||
* check if hint WM_TAKE_FOCUS is set, if it's the case
|
* check if hint WM_TAKE_FOCUS is set, if it's the case
|
||||||
@@ -1316,7 +1308,6 @@ void ScreenCapture(WScreen *scr, int mode)
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* we will only capture the visible window part */
|
/* we will only capture the visible window part */
|
||||||
XImage *pimg;
|
|
||||||
int x_crop = 0;
|
int x_crop = 0;
|
||||||
int y_crop = 0;
|
int y_crop = 0;
|
||||||
int w_crop = wwin->client.width;
|
int w_crop = wwin->client.width;
|
||||||
@@ -1345,8 +1336,6 @@ void ScreenCapture(WScreen *scr, int mode)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case PRINT_PARTIAL:
|
case PRINT_PARTIAL:
|
||||||
XImage *pimg;
|
|
||||||
|
|
||||||
pimg = imageCaptureArea(scr);
|
pimg = imageCaptureArea(scr);
|
||||||
if (pimg) {
|
if (pimg) {
|
||||||
img = RCreateImageFromXImage(scr->rcontext, pimg, None);
|
img = RCreateImageFromXImage(scr->rcontext, pimg, None);
|
||||||
|
|||||||
@@ -214,6 +214,19 @@ typedef struct _WScreen {
|
|||||||
struct WPixmap *menu_mini_indicator; /* for miniwindow */
|
struct WPixmap *menu_mini_indicator; /* for miniwindow */
|
||||||
struct WPixmap *menu_hide_indicator; /* for hidden window */
|
struct WPixmap *menu_hide_indicator; /* for hidden window */
|
||||||
struct WPixmap *menu_shade_indicator; /* for shaded window */
|
struct WPixmap *menu_shade_indicator; /* for shaded window */
|
||||||
|
struct WPixmap *menu_snap_vertical_indicator; /* for vertical snap window */
|
||||||
|
struct WPixmap *menu_snap_horizontal_indicator; /* for horizontal snap window */
|
||||||
|
struct WPixmap *menu_snap_rh_indicator; /* for righ half snap window */
|
||||||
|
struct WPixmap *menu_snap_lh_indicator; /* for left half snap window */
|
||||||
|
struct WPixmap *menu_snap_th_indicator; /* for top half snap window */
|
||||||
|
struct WPixmap *menu_snap_bh_indicator; /* for bottom half snap window */
|
||||||
|
struct WPixmap *menu_snap_tl_indicator; /* for top left snap window */
|
||||||
|
struct WPixmap *menu_snap_tr_indicator; /* for top rigt snap window */
|
||||||
|
struct WPixmap *menu_snap_bl_indicator; /* for bottom left snap window */
|
||||||
|
struct WPixmap *menu_snap_br_indicator; /* for bottom right snap window */
|
||||||
|
struct WPixmap *menu_snap_tiled_indicator; /* for tiled window */
|
||||||
|
struct WPixmap *menu_central_indicator; /* for central window */
|
||||||
|
|
||||||
int app_menu_x, app_menu_y; /* position for application menus */
|
int app_menu_x, app_menu_y; /* position for application menus */
|
||||||
|
|
||||||
struct WMenu *root_menu; /* root window menu */
|
struct WMenu *root_menu; /* root window menu */
|
||||||
@@ -283,6 +296,8 @@ typedef struct _WScreen {
|
|||||||
WMHandlerID *autoRaiseTimer;
|
WMHandlerID *autoRaiseTimer;
|
||||||
Window autoRaiseWindow; /* window that is scheduled to be
|
Window autoRaiseWindow; /* window that is scheduled to be
|
||||||
* raised */
|
* raised */
|
||||||
|
/* for hot-corners delay */
|
||||||
|
WMHandlerID *hot_corner_timer;
|
||||||
|
|
||||||
/* for window shortcuts */
|
/* for window shortcuts */
|
||||||
WMArray *shortcutWindows[MAX_WINDOW_SHORTCUTS];
|
WMArray *shortcutWindows[MAX_WINDOW_SHORTCUTS];
|
||||||
@@ -311,6 +326,7 @@ typedef struct _WScreen {
|
|||||||
unsigned int doing_alt_tab:1;
|
unsigned int doing_alt_tab:1;
|
||||||
unsigned int jump_back_pending:1;
|
unsigned int jump_back_pending:1;
|
||||||
unsigned int ignore_focus_events:1;
|
unsigned int ignore_focus_events:1;
|
||||||
|
unsigned int in_hot_corner:3;
|
||||||
} flags;
|
} flags;
|
||||||
} WScreen;
|
} WScreen;
|
||||||
|
|
||||||
|
|||||||
+25
-24
@@ -3,6 +3,7 @@
|
|||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
|
* Copyright (c) 2008-2023 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -1900,25 +1901,20 @@ void wWindowConstrainSize(WWindow *wwin, unsigned int *nwidth, unsigned int *nhe
|
|||||||
int baseW = 0;
|
int baseW = 0;
|
||||||
int baseH = 0;
|
int baseH = 0;
|
||||||
|
|
||||||
/*
|
|
||||||
* X11 proto defines width and height as a CARD16
|
|
||||||
* if window size is guaranteed to fail, failsafe to a reasonable size
|
|
||||||
*/
|
|
||||||
if (width > USHRT_MAX && height > USHRT_MAX) {
|
|
||||||
width = 640;
|
|
||||||
height = 480;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (wwin->normal_hints) {
|
if (wwin->normal_hints) {
|
||||||
if (!wwin->flags.maximized) {
|
if (!wwin->flags.maximized) {
|
||||||
winc = wwin->normal_hints->width_inc;
|
winc = wwin->normal_hints->width_inc;
|
||||||
hinc = wwin->normal_hints->height_inc;
|
hinc = wwin->normal_hints->height_inc;
|
||||||
}
|
}
|
||||||
|
if (wwin->normal_hints->min_width > minW)
|
||||||
minW = wwin->normal_hints->min_width;
|
minW = wwin->normal_hints->min_width;
|
||||||
|
if (wwin->normal_hints->min_height > minH)
|
||||||
minH = wwin->normal_hints->min_height;
|
minH = wwin->normal_hints->min_height;
|
||||||
|
if (wwin->normal_hints->max_width < maxW)
|
||||||
maxW = wwin->normal_hints->max_width;
|
maxW = wwin->normal_hints->max_width;
|
||||||
|
if (wwin->normal_hints->max_height < maxH)
|
||||||
maxH = wwin->normal_hints->max_height;
|
maxH = wwin->normal_hints->max_height;
|
||||||
|
|
||||||
if (wwin->normal_hints->flags & PAspect) {
|
if (wwin->normal_hints->flags & PAspect) {
|
||||||
minAX = wwin->normal_hints->min_aspect.x;
|
minAX = wwin->normal_hints->min_aspect.x;
|
||||||
minAY = wwin->normal_hints->min_aspect.y;
|
minAY = wwin->normal_hints->min_aspect.y;
|
||||||
@@ -1937,11 +1933,14 @@ void wWindowConstrainSize(WWindow *wwin, unsigned int *nwidth, unsigned int *nhe
|
|||||||
height = minH;
|
height = minH;
|
||||||
|
|
||||||
/* if only one dimension is over the top, set a default 4/3 ratio */
|
/* if only one dimension is over the top, set a default 4/3 ratio */
|
||||||
if (width > maxW && height < maxH) {
|
if (width > maxW && height < maxH)
|
||||||
width = height * 4 / 3;
|
width = height * 4 / 3;
|
||||||
} else {
|
else if(height > maxH && width < maxW)
|
||||||
if(height > maxH && width < maxW)
|
|
||||||
height = width * 3 / 4;
|
height = width * 3 / 4;
|
||||||
|
else if(width > maxW && height > maxH) {
|
||||||
|
/* if both are over the top, set size to almost fullscreen */
|
||||||
|
height = wwin->screen_ptr->scr_height - 2 * wPreferences.icon_size;
|
||||||
|
width = wwin->screen_ptr->scr_width - 2 * wPreferences.icon_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* aspect ratio code borrowed from olwm */
|
/* aspect ratio code borrowed from olwm */
|
||||||
@@ -2149,12 +2148,6 @@ void wWindowConfigure(WWindow *wwin, int req_x, int req_y, int req_width, int re
|
|||||||
int resize;
|
int resize;
|
||||||
|
|
||||||
resize = (req_width != wwin->client.width || req_height != wwin->client.height);
|
resize = (req_width != wwin->client.width || req_height != wwin->client.height);
|
||||||
/*
|
|
||||||
* if the window is being moved but not resized then
|
|
||||||
* send a synthetic ConfigureNotify
|
|
||||||
*/
|
|
||||||
if ((req_x != wwin->frame_x || req_y != wwin->frame_y) && !resize)
|
|
||||||
synth_notify = True;
|
|
||||||
|
|
||||||
if (WFLAGP(wwin, dont_move_off))
|
if (WFLAGP(wwin, dont_move_off))
|
||||||
wScreenBringInside(wwin->screen_ptr, &req_x, &req_y, req_width, req_height);
|
wScreenBringInside(wwin->screen_ptr, &req_x, &req_y, req_width, req_height);
|
||||||
@@ -2191,11 +2184,18 @@ void wWindowConfigure(WWindow *wwin, int req_x, int req_y, int req_width, int re
|
|||||||
wwin->client.width = req_width;
|
wwin->client.width = req_width;
|
||||||
wwin->client.height = req_height;
|
wwin->client.height = req_height;
|
||||||
} else {
|
} else {
|
||||||
|
if (req_x != wwin->frame_x || req_y != wwin->frame_y) {
|
||||||
wwin->client.x = req_x;
|
wwin->client.x = req_x;
|
||||||
wwin->client.y = req_y + wwin->frame->top_width;
|
wwin->client.y = req_y + wwin->frame->top_width;
|
||||||
|
|
||||||
XMoveWindow(dpy, wwin->frame->core->window, req_x, req_y);
|
XMoveWindow(dpy, wwin->frame->core->window, req_x, req_y);
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* if the window is being moved but not resized
|
||||||
|
* or if we change nothing then
|
||||||
|
* send a synthetic ConfigureNotify
|
||||||
|
*/
|
||||||
|
synth_notify = True;
|
||||||
|
}
|
||||||
wwin->frame_x = req_x;
|
wwin->frame_x = req_x;
|
||||||
wwin->frame_y = req_y;
|
wwin->frame_y = req_y;
|
||||||
if (HAS_BORDER(wwin)) {
|
if (HAS_BORDER(wwin)) {
|
||||||
@@ -2913,17 +2913,18 @@ static void titlebarDblClick(WCoreWindow *sender, void *data, XEvent *event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wPreferences.double_click_fullscreen){
|
if (wPreferences.double_click_fullscreen) {
|
||||||
int dir = 0;
|
int dir = 0;
|
||||||
|
|
||||||
if (event->xbutton.state == 0) {
|
if (event->xbutton.state == 0) {
|
||||||
/* maximize window full screen*/
|
/* maximize window full screen*/
|
||||||
dir |= (MAX_VERTICAL|MAX_HORIZONTAL);
|
dir |= (MAX_VERTICAL|MAX_HORIZONTAL);
|
||||||
int ndir = dir ^ wwin->flags.maximized;
|
int ndir = dir ^ wwin->flags.maximized;
|
||||||
|
if (ndir != 0)
|
||||||
wMaximizeWindow(wwin, ndir, wGetHeadForWindow(wwin));
|
wMaximizeWindow(wwin, ndir, wGetHeadForWindow(wwin));
|
||||||
|
else
|
||||||
|
wUnmaximizeWindow(wwin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
int dir = 0;
|
int dir = 0;
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -251,8 +251,8 @@ typedef struct WWindow {
|
|||||||
unsigned int miniaturized:1;
|
unsigned int miniaturized:1;
|
||||||
unsigned int hidden:1;
|
unsigned int hidden:1;
|
||||||
unsigned int shaded:1;
|
unsigned int shaded:1;
|
||||||
unsigned int maximized:7;
|
unsigned int maximized:10;
|
||||||
unsigned int old_maximized:7;
|
unsigned int old_maximized:10;
|
||||||
unsigned int fullscreen:1;
|
unsigned int fullscreen:1;
|
||||||
long fullscreen_monitors[4];
|
long fullscreen_monitors[4];
|
||||||
unsigned int omnipresent:1;
|
unsigned int omnipresent:1;
|
||||||
|
|||||||
+24
-14
@@ -119,21 +119,23 @@ static const char *const menu_options_entries[] = {
|
|||||||
* Defines the menu entries for the Other maximization sub-menu
|
* Defines the menu entries for the Other maximization sub-menu
|
||||||
*/
|
*/
|
||||||
static const struct {
|
static const struct {
|
||||||
|
unsigned int indicator;
|
||||||
const char *label;
|
const char *label;
|
||||||
unsigned int shortcut_idx;
|
unsigned int shortcut_idx;
|
||||||
int maxim_direction;
|
int maxim_direction;
|
||||||
} menu_maximize_entries[] = {
|
} menu_maximize_entries[] = {
|
||||||
{ N_("Maximize vertically"), WKBD_VMAXIMIZE, MAX_VERTICAL },
|
{ MI_SNAP_V, N_("Vertical"), WKBD_VMAXIMIZE, MAX_VERTICAL },
|
||||||
{ N_("Maximize horizontally"), WKBD_HMAXIMIZE, MAX_HORIZONTAL },
|
{ MI_SNAP_H, N_("Horizontal"), WKBD_HMAXIMIZE, MAX_HORIZONTAL },
|
||||||
{ N_("Maximize left half"), WKBD_LHMAXIMIZE, MAX_VERTICAL | MAX_LEFTHALF },
|
{ MI_CENTRAL, N_("Central"), WKBD_CENTRAL, MAX_CENTRAL },
|
||||||
{ N_("Maximize right half"), WKBD_RHMAXIMIZE, MAX_VERTICAL | MAX_RIGHTHALF },
|
{ MI_SNAP_LH, N_("Left half"), WKBD_LHMAXIMIZE, MAX_VERTICAL | MAX_LEFTHALF },
|
||||||
{ N_("Maximize top half"), WKBD_THMAXIMIZE, MAX_HORIZONTAL | MAX_TOPHALF },
|
{ MI_SNAP_RH, N_("Right half"), WKBD_RHMAXIMIZE, MAX_VERTICAL | MAX_RIGHTHALF },
|
||||||
{ N_("Maximize bottom half"), WKBD_BHMAXIMIZE, MAX_HORIZONTAL | MAX_BOTTOMHALF },
|
{ MI_SNAP_TH, N_("Top half"), WKBD_THMAXIMIZE, MAX_HORIZONTAL | MAX_TOPHALF },
|
||||||
{ N_("Maximize left top corner"), WKBD_LTCMAXIMIZE, MAX_LEFTHALF | MAX_TOPHALF },
|
{ MI_SNAP_BH, N_("Bottom half"), WKBD_BHMAXIMIZE, MAX_HORIZONTAL | MAX_BOTTOMHALF },
|
||||||
{ N_("Maximize right top corner"), WKBD_RTCMAXIMIZE, MAX_RIGHTHALF | MAX_TOPHALF },
|
{ MI_SNAP_TL, N_("Top left"), WKBD_LTCMAXIMIZE, MAX_LEFTHALF | MAX_TOPHALF },
|
||||||
{ N_("Maximize left bottom corner"), WKBD_LBCMAXIMIZE, MAX_LEFTHALF | MAX_BOTTOMHALF },
|
{ MI_SNAP_TR, N_("Top right"), WKBD_RTCMAXIMIZE, MAX_RIGHTHALF | MAX_TOPHALF },
|
||||||
{ N_("Maximize right bottom corner"), WKBD_RBCMAXIMIZE, MAX_RIGHTHALF | MAX_BOTTOMHALF },
|
{ MI_SNAP_BL, N_("Bottom left"), WKBD_LBCMAXIMIZE, MAX_LEFTHALF | MAX_BOTTOMHALF },
|
||||||
{ N_("Maximus: tiled maximization"), WKBD_MAXIMUS, MAX_MAXIMUS }
|
{ MI_SNAP_BR, N_("Bottom right"), WKBD_RBCMAXIMIZE, MAX_RIGHTHALF | MAX_BOTTOMHALF },
|
||||||
|
{ MI_SNAP_TILED, N_("Tiled"), WKBD_MAXIMUS, MAX_MAXIMUS }
|
||||||
};
|
};
|
||||||
|
|
||||||
static void updateOptionsMenu(WMenu * menu, WWindow * wwin);
|
static void updateOptionsMenu(WMenu * menu, WWindow * wwin);
|
||||||
@@ -180,7 +182,7 @@ static void updateUnmaximizeShortcut(WMenuEntry * entry, int flags)
|
|||||||
{
|
{
|
||||||
int key;
|
int key;
|
||||||
|
|
||||||
switch (flags & (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS)) {
|
switch (flags & (MAX_HORIZONTAL | MAX_VERTICAL | MAX_LEFTHALF | MAX_RIGHTHALF | MAX_TOPHALF | MAX_BOTTOMHALF | MAX_MAXIMUS | MAX_CENTRAL)) {
|
||||||
case MAX_HORIZONTAL:
|
case MAX_HORIZONTAL:
|
||||||
key = WKBD_HMAXIMIZE;
|
key = WKBD_HMAXIMIZE;
|
||||||
break;
|
break;
|
||||||
@@ -189,6 +191,10 @@ static void updateUnmaximizeShortcut(WMenuEntry * entry, int flags)
|
|||||||
key = WKBD_VMAXIMIZE;
|
key = WKBD_VMAXIMIZE;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MAX_CENTRAL:
|
||||||
|
key = WKBD_CENTRAL;
|
||||||
|
break;
|
||||||
|
|
||||||
case MAX_LEFTHALF | MAX_VERTICAL:
|
case MAX_LEFTHALF | MAX_VERTICAL:
|
||||||
key = WKBD_LHMAXIMIZE;
|
key = WKBD_LHMAXIMIZE;
|
||||||
break;
|
break;
|
||||||
@@ -562,6 +568,7 @@ static WMenu *makeOptionsMenu(WScreen * scr)
|
|||||||
static WMenu *makeMaximizeMenu(WScreen * scr)
|
static WMenu *makeMaximizeMenu(WScreen * scr)
|
||||||
{
|
{
|
||||||
WMenu *menu;
|
WMenu *menu;
|
||||||
|
WMenuEntry *entry;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
menu = wMenuCreate(scr, NULL, False);
|
menu = wMenuCreate(scr, NULL, False);
|
||||||
@@ -570,8 +577,11 @@ static WMenu *makeMaximizeMenu(WScreen * scr)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < wlengthof(menu_maximize_entries); i++)
|
for (i = 0; i < wlengthof(menu_maximize_entries); i++) {
|
||||||
wMenuAddCallback(menu, _(menu_maximize_entries[i].label), execMaximizeCommand, NULL);
|
entry = wMenuAddCallback(menu, _(menu_maximize_entries[i].label), execMaximizeCommand, NULL);
|
||||||
|
entry->flags.indicator = entry->flags.indicator_on = 1;
|
||||||
|
entry->flags.indicator_type = menu_maximize_entries[i].indicator;
|
||||||
|
}
|
||||||
|
|
||||||
return menu;
|
return menu;
|
||||||
}
|
}
|
||||||
|
|||||||
+31
-5
@@ -2,7 +2,7 @@
|
|||||||
*
|
*
|
||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014 Window Maker Team - David Maciejak
|
* Copyright (c) 2014-2023 Window Maker Team - David Maciejak
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -256,7 +256,7 @@ static WMPixmap *dummy_background_pixmap(WWorkspaceMap *wsmap)
|
|||||||
RImage *img;
|
RImage *img;
|
||||||
WMPixmap *icon;
|
WMPixmap *icon;
|
||||||
|
|
||||||
img = RCreateImage(wsmap->wswidth, wsmap->wsheight, 0);
|
img = RCreateImage(wsmap->mini_workspace_width, wsmap->mini_workspace_height, 0);
|
||||||
|
|
||||||
if (!img)
|
if (!img)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -327,7 +327,7 @@ static void hide_mini_workspace(W_WorkspaceMap *wsmap_array, int i)
|
|||||||
static WMPixmap *get_mini_workspace(WWorkspaceMap *wsmap, int index)
|
static WMPixmap *get_mini_workspace(WWorkspaceMap *wsmap, int index)
|
||||||
{
|
{
|
||||||
if (!wsmap->scr->workspaces[index]->map)
|
if (!wsmap->scr->workspaces[index]->map)
|
||||||
return dummy_background_pixmap(wsmap);
|
return NULL;
|
||||||
|
|
||||||
if (index == wsmap->scr->current_workspace)
|
if (index == wsmap->scr->current_workspace)
|
||||||
return enlight_workspace(wsmap->scr, wsmap->scr->workspaces[index]->map);
|
return enlight_workspace(wsmap->scr, wsmap->scr->workspaces[index]->map);
|
||||||
@@ -486,12 +486,15 @@ static void handle_event(WWorkspaceMap *wsmap, W_WorkspaceMap *wsmap_array)
|
|||||||
|
|
||||||
w_global.process_workspacemap_event = True;
|
w_global.process_workspacemap_event = True;
|
||||||
while (w_global.process_workspacemap_event) {
|
while (w_global.process_workspacemap_event) {
|
||||||
WMMaskEvent(dpy, KeyPressMask | KeyReleaseMask | ExposureMask
|
WMMaskEvent(dpy, KeyPressMask | KeyReleaseMask | ExposureMask | PointerMotionMask |
|
||||||
| PointerMotionMask | ButtonPressMask | ButtonReleaseMask | EnterWindowMask, &ev);
|
ButtonPressMask | ButtonReleaseMask | EnterWindowMask | FocusChangeMask, &ev);
|
||||||
|
|
||||||
modifiers = ev.xkey.state & w_global.shortcut.modifiers_mask;
|
modifiers = ev.xkey.state & w_global.shortcut.modifiers_mask;
|
||||||
|
|
||||||
switch (ev.type) {
|
switch (ev.type) {
|
||||||
|
WMScreen *wmscr;
|
||||||
|
WMColor *black;
|
||||||
|
|
||||||
case KeyPress:
|
case KeyPress:
|
||||||
if (ev.xkey.keycode == escKey || (wKeyBindings[WKBD_WORKSPACEMAP].keycode != 0 &&
|
if (ev.xkey.keycode == escKey || (wKeyBindings[WKBD_WORKSPACEMAP].keycode != 0 &&
|
||||||
wKeyBindings[WKBD_WORKSPACEMAP].keycode == ev.xkey.keycode &&
|
wKeyBindings[WKBD_WORKSPACEMAP].keycode == ev.xkey.keycode &&
|
||||||
@@ -530,6 +533,29 @@ static void handle_event(WWorkspaceMap *wsmap, W_WorkspaceMap *wsmap_array)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case FocusIn:
|
||||||
|
wmscr = wsmap->scr->wmscreen;
|
||||||
|
black = WMBlackColor(wmscr);
|
||||||
|
const char *text = "?";
|
||||||
|
WMFont *bold = WMBoldSystemFontOfSize(wmscr, wsmap->mini_workspace_width / 3);
|
||||||
|
int x = (wsmap->mini_workspace_width / 2) - (WMWidthOfString(bold, text, strlen(text)) / 2);
|
||||||
|
int y = (wsmap->mini_workspace_height / 2) - (WMFontHeight(bold) / 2);
|
||||||
|
WMPixmap *icon = dummy_background_pixmap(wsmap);
|
||||||
|
|
||||||
|
if (icon) {
|
||||||
|
int i;
|
||||||
|
|
||||||
|
WMDrawString(wmscr, WMGetPixmapXID(icon),
|
||||||
|
black, bold, x, y, text, strlen(text));
|
||||||
|
for (i = 0; i < wsmap->scr->workspace_count; i++) {
|
||||||
|
if (!wsmap->scr->workspaces[i]->map)
|
||||||
|
WMSetButtonImage(wsmap_array[i].workspace_img_button, icon);
|
||||||
|
}
|
||||||
|
WMReleasePixmap(icon);
|
||||||
|
}
|
||||||
|
WMHandleEvent(&ev);
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
WMHandleEvent(&ev);
|
WMHandleEvent(&ev);
|
||||||
break;
|
break;
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2015 Window Maker Team
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ CATALOGS = @UTILMOFILES@
|
|||||||
|
|
||||||
CLEANFILES = $(DOMAIN).pot $(CATALOGS)
|
CLEANFILES = $(DOMAIN).pot $(CATALOGS)
|
||||||
|
|
||||||
EXTRA_DIST = de.po es.po fr.po fy.po nl.po pt.po
|
EXTRA_DIST = de.po es.po fr.po fy.po nl.po pt.po sr.po
|
||||||
|
|
||||||
POTFILES = \
|
POTFILES = \
|
||||||
$(top_srcdir)/util/wmgenmenu.c \
|
$(top_srcdir)/util/wmgenmenu.c \
|
||||||
|
|||||||
+2007
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -217,7 +217,7 @@ int main(int argc, char *argv[])
|
|||||||
WMCreatePLString(label), \
|
WMCreatePLString(label), \
|
||||||
WMCreatePLString("EXEC"), \
|
WMCreatePLString("EXEC"), \
|
||||||
WMCreatePLString("wdwrite WindowMaker WorkspaceBack '(vgradient, \"" \
|
WMCreatePLString("wdwrite WindowMaker WorkspaceBack '(vgradient, \"" \
|
||||||
fcolorspec "\", \"" tcolorspec "\"'"), \
|
fcolorspec "\", \"" tcolorspec "\")'"), \
|
||||||
NULL \
|
NULL \
|
||||||
); \
|
); \
|
||||||
WMAddToPLArray(L3Menu, L4Menu)
|
WMAddToPLArray(L3Menu, L4Menu)
|
||||||
|
|||||||
+2
-4
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Window Maker window manager
|
* Window Maker window manager
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014 Window Maker Team - David Maciejak
|
* Copyright (c) 2014-2023 Window Maker Team - David Maciejak
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -63,8 +63,6 @@ RImage *img;
|
|||||||
Pixmap pix;
|
Pixmap pix;
|
||||||
|
|
||||||
const char *APPNAME = "wmiv";
|
const char *APPNAME = "wmiv";
|
||||||
int APPVERSION_MAJOR = 0;
|
|
||||||
int APPVERSION_MINOR = 7;
|
|
||||||
int NEXT = 0;
|
int NEXT = 0;
|
||||||
int PREV = 1;
|
int PREV = 1;
|
||||||
float zoom_factor = 0;
|
float zoom_factor = 0;
|
||||||
@@ -740,7 +738,7 @@ int main(int argc, char **argv)
|
|||||||
argv[0]);
|
argv[0]);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
case 'v':
|
case 'v':
|
||||||
fprintf(stderr, "%s version %d.%d\n", APPNAME, APPVERSION_MAJOR, APPVERSION_MINOR);
|
printf("%s version %s\n", APPNAME, VERSION);
|
||||||
return EXIT_SUCCESS;
|
return EXIT_SUCCESS;
|
||||||
case '?':
|
case '?':
|
||||||
return EXIT_FAILURE;
|
return EXIT_FAILURE;
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
*
|
*
|
||||||
* Raster graphics library
|
* Raster graphics library
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2021 Window Maker Team
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
* Raster graphics library
|
* Raster graphics library
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2021 Window Maker Team
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
*
|
*
|
||||||
* Raster graphics library
|
* Raster graphics library
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2021 Window Maker Team
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
* Raster graphics library
|
* Raster graphics library
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2021 Window Maker Team
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
*
|
*
|
||||||
* Raster graphics library
|
* Raster graphics library
|
||||||
*
|
*
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2021 Window Maker Team
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
* Raster graphics library
|
* Raster graphics library
|
||||||
*
|
*
|
||||||
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
* Copyright (c) 1997-2003 Alfredo K. Kojima
|
||||||
* Copyright (c) 2014 Window Maker Team
|
* Copyright (c) 2014-2021 Window Maker Team
|
||||||
*
|
*
|
||||||
* This library is free software; you can redistribute it and/or
|
* This library is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU Library General Public
|
* modify it under the terms of the GNU Library General Public
|
||||||
|
|||||||
+184
@@ -0,0 +1,184 @@
|
|||||||
|
# Serbian messages for Window Maker
|
||||||
|
# Copyright (C) 1997-2006 Alfredo K. Kojima
|
||||||
|
# 1998-2006 Dan Pascu
|
||||||
|
# 2013-2020 Window Maker Developers Team
|
||||||
|
# This file is distributed under the same license as the Window Maker package.
|
||||||
|
# Strahinya Radich (Страхиња Радић) <contact@strahinja.org>, 2023.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: WindowMaker 0.95.9\n"
|
||||||
|
"Report-Msgid-Bugs-To: wmaker-dev@googlegroups.com\n"
|
||||||
|
"POT-Creation-Date: 2023-10-25 14:44+0200\n"
|
||||||
|
"PO-Revision-Date: 2023-10-31 14:01+0100\n"
|
||||||
|
"Last-Translator: Страхиња Радић <contact@strahinja.org>\n"
|
||||||
|
"Language-Team: Serbian <sr@li.org>\n"
|
||||||
|
"Language: sr\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||||
|
"X-Generator: poe 1.6.0-2-ge0263e3\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/load.c:130
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: out of memory for image cache\n"
|
||||||
|
msgstr "wrlib: недовољно меморије за кеш слика\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/xpixmap.c:160
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: invalid window or pixmap passed to RCreateImageFromDrawable\n"
|
||||||
|
msgstr ""
|
||||||
|
"wrlib: RCreateImageFromDrawable прослеђени неисправан прозор или"
|
||||||
|
" пиксмапа\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/context.c:410
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: no standard colormap found for visual 0x%lX\n"
|
||||||
|
msgstr "wrlib: за visual 0x%lX није пронађена стандардна мапа боја\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/context.c:458 ../../wrlib/context.c:470
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: invalid value \"%s\" for %s\n"
|
||||||
|
msgstr "wrlib: неисправна вредност „%s“ за %s\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:207
|
||||||
|
msgid "no error"
|
||||||
|
msgstr "без грешке"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:210
|
||||||
|
msgid "could not open file"
|
||||||
|
msgstr "не може се отворити датотека"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:213
|
||||||
|
msgid "error reading from file"
|
||||||
|
msgstr "грешка приликом читања из датотеке"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:216
|
||||||
|
msgid "error writing to file"
|
||||||
|
msgstr "грешка приликом уписивања у датотеку"
|
||||||
|
|
||||||
|
#. Known codes as per libWebP 0.4.1
|
||||||
|
#: ../../wrlib/misc.c:219 ../../wrlib/load_webp.c:46
|
||||||
|
msgid "out of memory"
|
||||||
|
msgstr "недовољно меморије"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:222
|
||||||
|
msgid "out of color cells"
|
||||||
|
msgstr "недовољно ћелија боја"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:225
|
||||||
|
msgid "invalid or corrupted image file"
|
||||||
|
msgstr "неисправна или оштећена датотека слике"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:228
|
||||||
|
msgid "image format is not supported"
|
||||||
|
msgstr "формат слике није подржан"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:231
|
||||||
|
msgid "file does not contain requested image index"
|
||||||
|
msgstr "датотека не садржи захтевани индекс слике"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:234
|
||||||
|
msgid "request for an invalid Visual ID"
|
||||||
|
msgstr "захтевва се неисправни Visual ID"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:237
|
||||||
|
msgid "failed to create X standard colormap"
|
||||||
|
msgstr "не може се креирати стандардна X мапа боја"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:240
|
||||||
|
msgid "internal X error"
|
||||||
|
msgstr "интерна грешка X-а"
|
||||||
|
|
||||||
|
#: ../../wrlib/misc.c:244
|
||||||
|
msgid "internal error"
|
||||||
|
msgstr "интерна грешка"
|
||||||
|
|
||||||
|
#: ../../wrlib/xutil.c:115 ../../wrlib/xutil.c:122
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: could not allocate shared memory segment, %s: %s\n"
|
||||||
|
msgstr "wrlib: не може се алоцирати дељени сегмент меморије, %s: %s\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/xutil.c:125 ../../wrlib/xutil.c:145 ../../wrlib/xutil.c:147
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: error occured while aborting %s, %s\n"
|
||||||
|
msgstr "wrlib: грешка приликом прекидања %s, %s\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/xutil.c:141
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: could not attach shared memory segment to XImage\n"
|
||||||
|
msgstr "wrlib: не може се придружити меморијски сегмент XImage-у\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/xutil.c:169 ../../wrlib/xutil.c:171
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: error occured while releasing XImage, %s: %s\n"
|
||||||
|
msgstr "wrlib: грешка приликом ослобађања XImage-а, %s: %s\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_ppm.c:57 ../../wrlib/load_ppm.c:64
|
||||||
|
#: ../../wrlib/load_ppm.c:77
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: EOF / read error reading a byte from PPM file \"%s\"\n"
|
||||||
|
msgstr "wrlib: EOF / грешка приликом читања бајта из PPM датотеке \"%s\"\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_ppm.c:91
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"wrlib: junk in PPM file \"%s\", expected an unsigned integer but got"
|
||||||
|
" 0x%02X\n"
|
||||||
|
msgstr ""
|
||||||
|
"wrlib: смеће у PPM датотеци „%s“, очекује се неозначен цео број, али је"
|
||||||
|
" присутно 0x%02X\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_ppm.c:100 ../../wrlib/load_ppm.c:107
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"wrlib: ASCII decimal integer in PPM file \"%s\" is too large to be"
|
||||||
|
" processed\n"
|
||||||
|
msgstr ""
|
||||||
|
"wrlib: ASCII децимални цео број у PPM датотеци „%s“ је превелик за"
|
||||||
|
" обраду\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:47
|
||||||
|
msgid "invalid parameter"
|
||||||
|
msgstr "неисправан параметар"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:48
|
||||||
|
msgid "error in the bitstream"
|
||||||
|
msgstr "грешка у потоку битова"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:49
|
||||||
|
msgid "feature is not supported"
|
||||||
|
msgstr "одлика није подржана"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:50
|
||||||
|
msgid "operation suspended"
|
||||||
|
msgstr "операција је заустављена"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:51
|
||||||
|
msgid "aborted by user"
|
||||||
|
msgstr "кориснички прекид"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:52
|
||||||
|
msgid "not enough data"
|
||||||
|
msgstr "недовољно података"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:61
|
||||||
|
#, c-format
|
||||||
|
msgid "unknow status code %d"
|
||||||
|
msgstr "непознат статусни код %d"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:106
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: could not get size of WebP file \"%s\", %s\n"
|
||||||
|
msgstr "wrlib: не може се одредити величина WebP датотеке „%s“, %s\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:133
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: could not get features from WebP file \"%s\", %s\n"
|
||||||
|
msgstr "wrlib: не могу се одредити одлике WebP датотеке „%s“, %s\n"
|
||||||
|
|
||||||
|
#: ../../wrlib/load_webp.c:165
|
||||||
|
#, c-format
|
||||||
|
msgid "wrlib: failed to decode WebP from file \"%s\"\n"
|
||||||
|
msgstr "wrlib: не може се декодирати WebP из датотеке „%s“\n"
|
||||||
Reference in New Issue
Block a user