1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-02-01 21:45:45 +01:00

added patch with bugfixes for wings/textfield/panel exit with escape/bag etc

changed iconchooser to center icons/text
updated po files
This commit is contained in:
kojima
1999-10-02 20:24:41 +00:00
parent 4545d536bd
commit dbdb44a4db
19 changed files with 3651 additions and 3014 deletions

View File

@@ -2,6 +2,9 @@ changes since wmaker 0.61.0:
............................
- added WMGetTextFieldFont()
- escape key in panels (craig nellist <crn@ozemail.com.au>)
- applied patch with fixes and enhancements to textfield
(Franck Wolff <wolff@cybercable.fr>)
changes since wmaker 0.60.0:

View File

@@ -211,7 +211,7 @@ DIST_COMMON = README ChangeLog Makefile.am Makefile.in TODO
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
TAR = gtar
GZIP_ENV = --best
SOURCES = $(libWINGs_a_SOURCES) $(libWUtil_a_SOURCES) $(wtest_SOURCES) $(wmquery_SOURCES) $(wmfile_SOURCES) $(fontl_SOURCES) $(testmywidget_SOURCES) $(testcolorpanel_SOURCES) $(testnot_SOURCES)
OBJECTS = $(libWINGs_a_OBJECTS) $(libWUtil_a_OBJECTS) $(wtest_OBJECTS) $(wmquery_OBJECTS) $(wmfile_OBJECTS) $(fontl_OBJECTS) $(testmywidget_OBJECTS) $(testcolorpanel_OBJECTS) $(testnot_OBJECTS)

View File

@@ -180,6 +180,7 @@ typedef enum {
enum {
WMIllegalTextMovement,
WMReturnTextMovement,
WMEscapeTextMovement,
WMTabTextMovement,
WMBacktabTextMovement,
WMLeftTextMovement,
@@ -350,6 +351,7 @@ typedef struct WMAlertPanel {
short done;
KeyCode retKey;
KeyCode escKey;
} WMAlertPanel;
@@ -364,6 +366,7 @@ typedef struct WMInputPanel {
short done;
KeyCode retKey;
KeyCode escKey;
} WMInputPanel;

View File

@@ -355,7 +355,7 @@ typedef struct _WINGsConfiguration {
unsigned doubleClickDelay;
} _WINGsConfiguration;
_WINGsConfiguration WINGsConfiguration;
extern _WINGsConfiguration WINGsConfiguration;
@@ -460,11 +460,6 @@ char *W_GetTextSelection(WMScreen *scr, Atom selection);
void W_HandleSelectionEvent(XEvent *event);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _WINGSP_H_ */
void W_FlushASAPNotificationQueue();
@@ -475,3 +470,9 @@ struct W_Balloon *W_CreateBalloon(WMScreen *scr);
void W_BalloonHandleEnterView(WMView *view);
void W_BalloonHandleLeaveView(WMView *view);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* _WINGSP_H_ */

View File

@@ -49,9 +49,11 @@ WMAppendBag(WMBag *bag, WMBag *appendedBag)
bag->items = wrealloc(bag->items,
sizeof(void*) * (bag->size+appendedBag->count));
memcpy(bag->items + bag->count, appendedBag->items, appendedBag->count);
memcpy(bag->items + bag->count, appendedBag->items,
sizeof(void*) * appendedBag->count);
bag->count += appendedBag->count;
bag->size += appendedBag->count;
}

View File

@@ -30,7 +30,6 @@
extern _WINGsConfiguration WINGsConfiguration;

View File

@@ -27,9 +27,17 @@ handleKeyPress(XEvent *event, void *clientData)
{
WMAlertPanel *panel = (WMAlertPanel*)clientData;
if (event->xkey.keycode == panel->retKey) {
if (event->xkey.keycode == panel->retKey && panel->defBtn) {
WMPerformButtonClick(panel->defBtn);
}
if (event->xkey.keycode == panel->escKey) {
if (panel->altBtn || panel->othBtn) {
WMPerformButtonClick(panel->othBtn ? panel->othBtn : panel->altBtn);
} else {
panel->result = WAPRDefault;
panel->done=1;
}
}
}
@@ -87,6 +95,7 @@ WMCreateAlertPanel(WMScreen *scrPtr, WMWindow *owner,
panel->retKey = XKeysymToKeycode(scrPtr->display, XK_Return);
panel->escKey = XKeysymToKeycode(scrPtr->display, XK_Escape);
if (owner)
panel->win = WMCreatePanelWithStyleForWindow(owner, "alertPanel",
@@ -231,9 +240,18 @@ handleKeyPress2(XEvent *event, void *clientData)
{
WMInputPanel *panel = (WMInputPanel*)clientData;
if (event->xkey.keycode == panel->retKey) {
if (event->xkey.keycode == panel->retKey && panel->defBtn) {
WMPerformButtonClick(panel->defBtn);
}
if (event->xkey.keycode == panel->escKey) {
if (panel->altBtn) {
WMPerformButtonClick(panel->altBtn);
} else {
/* printf("got esc\n");*/
panel->done = 1;
panel->result = WAPRDefault;
}
}
}
@@ -285,8 +303,21 @@ endedEditingObserver(void *observerData, WMNotification *notification)
{
WMInputPanel *panel = (WMInputPanel*)observerData;
if ((int)WMGetNotificationClientData(notification) == WMReturnTextMovement) {
WMPerformButtonClick(panel->defBtn);
switch ((int)WMGetNotificationClientData(notification)) {
case WMReturnTextMovement:
if (panel->defBtn)
WMPerformButtonClick(panel->defBtn);
break;
case WMEscapeTextMovement:
if (panel->altBtn)
WMPerformButtonClick(panel->altBtn);
else {
panel->done = 1;
panel->result = WAPRDefault;
}
break;
default:
break;
}
}
@@ -303,6 +334,7 @@ WMCreateInputPanel(WMScreen *scrPtr, WMWindow *owner, char *title, char *msg,
memset(panel, 0, sizeof(WMInputPanel));
panel->retKey = XKeysymToKeycode(scrPtr->display, XK_Return);
panel->escKey = XKeysymToKeycode(scrPtr->display, XK_Escape);
if (owner)
panel->win = WMCreatePanelWithStyleForWindow(owner, "inputPanel",

View File

@@ -40,7 +40,6 @@ typedef struct W_TextField {
short offsetWidth; /* offset of text from border */
WMRange selection;
WMRange prevselection;
WMFont *font;
@@ -124,6 +123,40 @@ struct W_ViewDelegate _TextFieldViewDelegate = {
&((tPtr)->text[(start)]), (end) - (start) + 1))
static void
normalizeRange(TextField *tPtr, WMRange *range)
{
if (range->position < 0 && range->count < 0)
range->count = 0;
if (range->count == 0) {
range->position = 0;
return;
}
/* (1,-2) ~> (0,1) ; (1,-1) ~> (0,1) ; (2,-1) ~> (1,1) */
if (range->count < 0) { /* && range->position >= 0 */
if (range->position + range->count < 0) {
range->count = range->position;
range->position = 0;
} else {
range->count = -range->count;
range->position -= range->count;
}
/* (-2,1) ~> (0,0) ; (-1,1) ~> (0,0) ; (-1,2) ~> (0,1) */
} else if (range->position < 0) { /* && range->count > 0 */
if (range->position + range->count < 0) {
range->position = range->count = 0;
} else {
range->count += range->position;
range->position = 0;
}
}
if (range->position + range->count > tPtr->textLen)
range->count = tPtr->textLen - range->position;
}
static void
memmv(char *dest, char *src, int size)
{
@@ -308,6 +341,8 @@ WMCreateTextField(WMWidget *parent)
void
WMSetTextFieldDelegate(WMTextField *tPtr, WMTextFieldDelegate *delegate)
{
CHECK_CLASS(tPtr, WC_TextField);
tPtr->delegate = delegate;
}
@@ -357,35 +392,28 @@ WMInsertTextFieldText(WMTextField *tPtr, char *text, int position)
paintTextField(tPtr);
}
void
WMDeleteTextFieldRange(WMTextField *tPtr, WMRange range)
{
CHECK_CLASS(tPtr, WC_TextField);
if (range.position >= tPtr->textLen)
return;
if (range.count < 1) {
if (range.position < 0)
range.position = 0;
tPtr->text[range.position] = 0;
tPtr->textLen = range.position;
tPtr->cursorPosition = 0;
tPtr->viewPosition = 0;
} else {
if (range.position + range.count > tPtr->textLen)
range.count = tPtr->textLen - range.position;
memmv(&(tPtr->text[range.position]), &(tPtr->text[range.position+range.count]),
tPtr->textLen - (range.position+range.count) + 1);
tPtr->textLen -= range.count;
if (tPtr->cursorPosition > range.position)
tPtr->cursorPosition -= range.count;
normalizeRange(tPtr, &range);
decrToFit(tPtr);
}
if (!range.count)
return;
memmv(&(tPtr->text[range.position]), &(tPtr->text[range.position+range.count]),
tPtr->textLen - (range.position+range.count) + 1);
tPtr->textLen -= range.count;
/* try to keep cursorPosition at the same place */
tPtr->viewPosition -= range.count;
if (tPtr->viewPosition < 0)
tPtr->viewPosition = 0;
tPtr->cursorPosition = range.position;
decrToFit(tPtr);
paintTextField(tPtr);
}
@@ -404,6 +432,8 @@ WMGetTextFieldText(WMTextField *tPtr)
void
WMSetTextFieldText(WMTextField *tPtr, char *text)
{
CHECK_CLASS(tPtr, WC_TextField);
if ((text && strcmp(tPtr->text, text) == 0) ||
(!text && tPtr->textLen == 0))
return;
@@ -420,11 +450,8 @@ WMSetTextFieldText(WMTextField *tPtr, char *text)
}
strcpy(tPtr->text, text);
}
/*
if (tPtr->textLen < tPtr->cursorPosition)
tPtr->cursorPosition = tPtr->textLen;
*/
tPtr->cursorPosition = tPtr->textLen;
tPtr->cursorPosition = tPtr->selection.position = tPtr->textLen;
tPtr->viewPosition = 0;
tPtr->selection.count = 0;
@@ -436,12 +463,15 @@ WMSetTextFieldText(WMTextField *tPtr, char *text)
void
WMSetTextFieldAlignment(WMTextField *tPtr, WMAlignment alignment)
{
CHECK_CLASS(tPtr, WC_TextField);
tPtr->flags.alignment = alignment;
if (alignment!=WALeft) {
wwarning("only left alignment is supported in textfields");
return;
}
if (tPtr->view->flags.realized) {
paintTextField(tPtr);
}
@@ -451,6 +481,8 @@ WMSetTextFieldAlignment(WMTextField *tPtr, WMAlignment alignment)
void
WMSetTextFieldBordered(WMTextField *tPtr, Bool bordered)
{
CHECK_CLASS(tPtr, WC_TextField);
tPtr->flags.bordered = bordered;
if (tPtr->view->flags.realized) {
@@ -462,6 +494,8 @@ WMSetTextFieldBordered(WMTextField *tPtr, Bool bordered)
void
WMSetTextFieldBeveled(WMTextField *tPtr, Bool flag)
{
CHECK_CLASS(tPtr, WC_TextField);
tPtr->flags.beveled = flag;
if (tPtr->view->flags.realized) {
@@ -474,6 +508,8 @@ WMSetTextFieldBeveled(WMTextField *tPtr, Bool flag)
void
WMSetTextFieldSecure(WMTextField *tPtr, Bool flag)
{
CHECK_CLASS(tPtr, WC_TextField);
tPtr->flags.secure = flag;
if (tPtr->view->flags.realized) {
@@ -485,6 +521,8 @@ WMSetTextFieldSecure(WMTextField *tPtr, Bool flag)
Bool
WMGetTextFieldEditable(WMTextField *tPtr)
{
CHECK_CLASS(tPtr, WC_TextField);
return tPtr->flags.enabled;
}
@@ -492,6 +530,8 @@ WMGetTextFieldEditable(WMTextField *tPtr)
void
WMSetTextFieldEditable(WMTextField *tPtr, Bool flag)
{
CHECK_CLASS(tPtr, WC_TextField);
tPtr->flags.enabled = flag;
if (tPtr->view->flags.realized) {
@@ -503,20 +543,10 @@ WMSetTextFieldEditable(WMTextField *tPtr, Bool flag)
void
WMSelectTextFieldRange(WMTextField *tPtr, WMRange range)
{
CHECK_CLASS(tPtr, WC_TextField);
if (tPtr->flags.enabled) {
if (range.position < 0) {
range.count += range.position;
range.count = (range.count < 0) ? 0 : range.count;
range.position = 0;
} else if (range.position > tPtr->textLen) {
range.position = tPtr->textLen;
range.count = 0;
}
if (range.position + range.count > tPtr->textLen)
range.count = tPtr->textLen - range.position;
tPtr->prevselection = tPtr->selection; /* check if this is needed */
normalizeRange(tPtr, &range);
tPtr->selection = range;
@@ -530,6 +560,8 @@ WMSelectTextFieldRange(WMTextField *tPtr, WMRange range)
void
WMSetTextFieldCursorPosition(WMTextField *tPtr, unsigned int position)
{
CHECK_CLASS(tPtr, WC_TextField);
if (tPtr->flags.enabled) {
if (position > tPtr->textLen)
position = tPtr->textLen;
@@ -591,6 +623,8 @@ WMSetTextFieldPrevTextField(WMTextField *tPtr, WMTextField *prev)
void
WMSetTextFieldFont(WMTextField *tPtr, WMFont *font)
{
CHECK_CLASS(tPtr, WC_TextField);
if (tPtr->font)
WMReleaseFont(tPtr->font);
tPtr->font = WMRetainFont(font);
@@ -604,6 +638,7 @@ WMSetTextFieldFont(WMTextField *tPtr, WMFont *font)
}
WMFont*
WMGetTextFieldFont(WMTextField *tPtr)
{
@@ -611,7 +646,6 @@ WMGetTextFieldFont(WMTextField *tPtr)
}
static void
didResizeTextField(W_ViewDelegate *self, WMView *view)
{
@@ -941,22 +975,15 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
KeySym ksym;
int count, refresh = 0;
int control_pressed = 0;
int cancelSelection = 1;
if (((XKeyEvent *) event)->state & WM_EMACSKEYMASK) {
/*printf("(%d,%d) -> ", tPtr->selection.position, tPtr->selection.count);*/
if (((XKeyEvent *) event)->state & WM_EMACSKEYMASK)
control_pressed = 1;
}
count = XLookupString(&event->xkey, buffer, 63, &ksym, NULL);
buffer[count] = '\0';
if (!(event->xkey.state & ShiftMask)) {
if (tPtr->selection.count)
refresh = 1;
tPtr->prevselection = tPtr->selection;
tPtr->selection.position = tPtr->cursorPosition;
tPtr->selection.count = 0;
}
/* Be careful in any case in this switch statement, never to call
* to more than a function that can generate text change notifications.
* Only one text change notification should be sent in any case.
@@ -1005,22 +1032,23 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
if (tPtr->cursorPosition > 0) {
paintCursor(tPtr);
if (event->xkey.state & ControlMask) {
int i;
for (i = tPtr->cursorPosition - 1; i >= 0; i--)
if (tPtr->text[i] == ' ' || i == 0) {
tPtr->cursorPosition = i;
break;
}
} else {
int i = tPtr->cursorPosition - 1;
while (i > 0 && tPtr->text[i] != ' ') i--;
while (i > 0 && tPtr->text[i] == ' ') i--;
tPtr->cursorPosition = (i > 0) ? i + 1 : 0;
} else
tPtr->cursorPosition--;
}
if (tPtr->cursorPosition < tPtr->viewPosition) {
tPtr->viewPosition = tPtr->cursorPosition;
refresh = 1;
} else {
} else
paintCursor(tPtr);
}
}
if (event->xkey.state & ShiftMask)
cancelSelection = 0;
break;
case WM_EMACSKEY_RIGHT:
@@ -1034,12 +1062,12 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
if (tPtr->cursorPosition < tPtr->textLen) {
paintCursor(tPtr);
if (event->xkey.state & ControlMask) {
int i;
for (i = tPtr->cursorPosition + 1; i <= tPtr->textLen; i++)
if (tPtr->text[i] == ' ' || i == tPtr->textLen) {
tPtr->cursorPosition = i;
break;
}
int i = tPtr->cursorPosition;
while (tPtr->text[i] && tPtr->text[i] != ' ') i++;
while (tPtr->text[i] == ' ') i++;
tPtr->cursorPosition = i;
} else {
tPtr->cursorPosition++;
}
@@ -1053,6 +1081,8 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
if (!refresh)
paintCursor(tPtr);
}
if (event->xkey.state & ShiftMask)
cancelSelection = 0;
break;
case WM_EMACSKEY_HOME:
@@ -1069,10 +1099,11 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
if (tPtr->viewPosition > 0) {
tPtr->viewPosition = 0;
refresh = 1;
} else {
} else
paintCursor(tPtr);
}
}
if (event->xkey.state & ShiftMask)
cancelSelection = 0;
break;
case WM_EMACSKEY_END:
@@ -1097,6 +1128,8 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
if (!refresh)
paintCursor(tPtr);
}
if (event->xkey.state & ShiftMask)
cancelSelection = 0;
break;
case WM_EMACSKEY_BS:
@@ -1104,19 +1137,14 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
goto normal_key;
}
case XK_BackSpace:
if (tPtr->cursorPosition > 0) {
if (tPtr->selection.count) {
WMDeleteTextFieldRange(tPtr, tPtr->selection);
NOTIFY(tPtr, didChange, WMTextDidChangeNotification,
(void*)WMDeleteTextEvent);
} else if (tPtr->cursorPosition > 0) {
WMRange range;
if (tPtr->prevselection.count) {
range.position = tPtr->prevselection.count < 0
? tPtr->prevselection.position + tPtr->prevselection.count
: tPtr->prevselection.position;
range.count = abs(tPtr->prevselection.count);
} else {
range.position = tPtr->cursorPosition - 1;
range.count = 1;
}
range.position = tPtr->cursorPosition - 1;
range.count = 1;
WMDeleteTextFieldRange(tPtr, range);
NOTIFY(tPtr, didChange, WMTextDidChangeNotification,
(void*)WMDeleteTextEvent);
@@ -1131,19 +1159,14 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
case XK_KP_Delete:
#endif
case XK_Delete:
if (tPtr->cursorPosition < tPtr->textLen || tPtr->prevselection.count) {
if (tPtr->selection.count) {
WMDeleteTextFieldRange(tPtr, tPtr->selection);
NOTIFY(tPtr, didChange, WMTextDidChangeNotification,
(void*)WMDeleteTextEvent);
} else if (tPtr->cursorPosition < tPtr->textLen) {
WMRange range;
if (tPtr->prevselection.count) {
range.position = tPtr->prevselection.count < 0
? tPtr->prevselection.position + tPtr->prevselection.count
: tPtr->prevselection.position;
range.count = abs(tPtr->prevselection.count);
} else {
range.position = tPtr->cursorPosition;
range.count = 1;
}
range.position = tPtr->cursorPosition;
range.count = 1;
WMDeleteTextFieldRange(tPtr, range);
NOTIFY(tPtr, didChange, WMTextDidChangeNotification,
(void*)WMDeleteTextEvent);
@@ -1153,38 +1176,43 @@ handleTextFieldKeyPress(TextField *tPtr, XEvent *event)
normal_key:
default:
if (count > 0 && !iscntrl(buffer[0])) {
WMRange range;
if (tPtr->prevselection.count) {
range.position = tPtr->prevselection.count < 0
? tPtr->prevselection.position + tPtr->prevselection.count
: tPtr->prevselection.position;
range.count = abs(tPtr->prevselection.count);
} else {
range.position = tPtr->cursorPosition;
range.count = 1;
}
if (tPtr->prevselection.count)
WMDeleteTextFieldRange(tPtr, range);
if (tPtr->selection.count)
WMDeleteTextFieldRange(tPtr, tPtr->selection);
WMInsertTextFieldText(tPtr, buffer, tPtr->cursorPosition);
NOTIFY(tPtr, didChange, WMTextDidChangeNotification,
(void*)WMInsertTextEvent);
} else {
} else
return;
}
break;
}
if (event->xkey.state & ShiftMask) {
if (tPtr->selection.count == 0)
tPtr->selection.position = tPtr->cursorPosition;
tPtr->selection.count = tPtr->cursorPosition - tPtr->selection.position;
refresh = 1;
if (!cancelSelection) {
if (tPtr->selection.count != tPtr->cursorPosition - tPtr->selection.position) {
WMNotification *notif;
tPtr->selection.count = tPtr->cursorPosition - tPtr->selection.position;
XSetSelectionOwner(tPtr->view->screen->display,
XA_PRIMARY, tPtr->view->window,
event->xbutton.time);
notif = WMCreateNotification("_lostOwnership", NULL,tPtr);
WMPostNotification(notif);
WMReleaseNotification(notif);
refresh = 1;
}
} else {
if (tPtr->selection.count) {
tPtr->selection.count = 0;
refresh = 1;
}
tPtr->selection.position = tPtr->cursorPosition;
}
tPtr->prevselection.count = 0;
if (refresh) {
if (refresh)
paintTextField(tPtr);
}
/*printf("(%d,%d)\n", tPtr->selection.position, tPtr->selection.count);*/
}
@@ -1222,7 +1250,8 @@ static void
handleTextFieldActionEvents(XEvent *event, void *data)
{
TextField *tPtr = (TextField*)data;
static int move;
static int move = 0;
static Time lastButtonReleasedEvent = 0;
CHECK_CLASS(data, WC_TextField);
@@ -1262,14 +1291,15 @@ handleTextFieldActionEvents(XEvent *event, void *data)
tPtr->viewPosition--;
}
if (!tPtr->selection.count) {
/*if (!tPtr->selection.count) {
tPtr->selection.position = tPtr->cursorPosition;
}
}*/
tPtr->cursorPosition =
pointToCursorPosition(tPtr, event->xmotion.x);
tPtr->selection.count = tPtr->cursorPosition - tPtr->selection.position;
/*printf("(%d,%d)\n", tPtr->selection.position, tPtr->selection.count);*/
/*
printf("notify %d %d\n",event->xmotion.x,tPtr->usableWidth);
@@ -1306,6 +1336,7 @@ handleTextFieldActionEvents(XEvent *event, void *data)
if (tPtr->flags.enabled && !tPtr->flags.focused) {
WMSetFocusToWidget(tPtr);
} else if (tPtr->flags.focused) {
tPtr->selection.position = tPtr->cursorPosition;
tPtr->selection.count = 0;
}
if(textWidth < tPtr->usableWidth){
@@ -1336,6 +1367,7 @@ handleTextFieldActionEvents(XEvent *event, void *data)
} else if (tPtr->flags.focused) {
tPtr->cursorPosition = pointToCursorPosition(tPtr,
event->xbutton.x);
tPtr->selection.position = tPtr->cursorPosition;
tPtr->selection.count = 0;
paintTextField(tPtr);
}
@@ -1345,7 +1377,7 @@ handleTextFieldActionEvents(XEvent *event, void *data)
text = W_GetTextSelection(tPtr->view->screen, XA_PRIMARY);
if (!text) {
text = W_GetTextSelection(tPtr->view->screen,
text = W_GetTextSelection(tPtr->view->screen,
tPtr->view->screen->clipboardAtom);
}
if (!text) {
@@ -1363,13 +1395,30 @@ handleTextFieldActionEvents(XEvent *event, void *data)
}
break;
case ButtonRelease:
if (tPtr->flags.pointerGrabbed) {
tPtr->flags.pointerGrabbed = 0;
XUngrabPointer(WMScreenDisplay(W_VIEW(tPtr)->screen), CurrentTime);
}
case ButtonRelease:
if (tPtr->flags.pointerGrabbed) {
tPtr->flags.pointerGrabbed = 0;
XUngrabPointer(WMScreenDisplay(W_VIEW(tPtr)->screen), CurrentTime);
}
move = 0;
move = 0;
if (event->xbutton.time - lastButtonReleasedEvent
<= WINGsConfiguration.doubleClickDelay) {
tPtr->selection.position = 0;
tPtr->selection.count = tPtr->textLen;
paintTextField(tPtr);
XSetSelectionOwner(tPtr->view->screen->display,
XA_PRIMARY, tPtr->view->window, event->xbutton.time);
{
WMNotification *notif = WMCreateNotification("_lostOwnership",
NULL,tPtr);
WMPostNotification(notif);
WMReleaseNotification(notif);
}
}
lastButtonReleasedEvent = event->xbutton.time;
break;
}
}

View File

@@ -441,7 +441,7 @@ msgstr ""
"\"Gimmicks\" und Animationen ein-/ausschalten. Z.B.\n"
"das \"Ghosting\" einen bewegten Docks wenn es aus die\n"
"andere Seite gezogen wird und die \"Explosion\" für\n"
"aus dem Dock genommene Icons.\n"
"aus dem Dock genommene Icons."
#: ../../WPrefs.app/Configurations.c:396
msgid "Sounds"
@@ -504,7 +504,7 @@ msgid ""
msgstr ""
"Animationsgeschwindigkeit, Titelzeilen-Stil, diverse\n"
"Optionen und für Window Maker reservierte Farbtiefe\n"
"bei 8bit-Displays\n"
"bei 8bit-Displays"
#: ../../WPrefs.app/Expert.c:74
msgid "Disable miniwindows (icons for miniaturized windows). For use with KDE/GNOME."
@@ -1184,7 +1184,7 @@ msgstr "konnte tempor
#: ../../WPrefs.app/MouseSettings.c:843
msgid "could not rename file %s to %s\n"
msgstr "konnte Datei %s nicht in Datei %s umbenennen"
msgstr "konnte Datei %s nicht in Datei %s umbenennen\n"
#: ../../WPrefs.app/MouseSettings.c:927
msgid "Mouse Preferences"
@@ -1531,7 +1531,7 @@ msgid ""
"frame should be displayed.\n"
msgstr ""
"Ob die Fenster mit Inhalt verschoben werden\n"
"oder nur ein Rahmen angezeigt werden soll."
"oder nur ein Rahmen angezeigt werden soll.\n"
#: ../../WPrefs.app/WindowHandling.c:341
msgid "When maximizing..."

View File

@@ -826,7 +826,7 @@ msgid ""
"Always open submenus inside the screen, instead of scrolling.\n"
"Note: this can be an annoyance at some circumstances.\n"
msgstr ""
"÷ÓÅÇÄÁ ÏÔËÒÙ×ÁÔØ ÐÏÄÍÅÎÀ ×ÎÕÔÒÉ ÜËÒÁÎÁ, ×ÍÅÓÔÏ ÐÒÏËÒÕÔËÉ."
"÷ÓÅÇÄÁ ÏÔËÒÙ×ÁÔØ ÐÏÄÍÅÎÀ ×ÎÕÔÒÉ ÜËÒÁÎÁ, ×ÍÅÓÔÏ ÐÒÏËÒÕÔËÉ.\n"
#: ../../WPrefs.app/MenuPreferences.c:209
msgid "Scroll off-screen menus when pointer is moved over them."

View File

@@ -10,7 +10,7 @@ CLEANFILES = Default.iconset
Default.iconset: $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes
-rm -f Default.iconset
echo '{' > Default.iconset
grep Icon $(top_srcdir)/WindowMaker/Defaults/WMWindowAttributes >> Default.iconset
grep Icon $(top_builddir)/WindowMaker/Defaults/WMWindowAttributes >> Default.iconset
echo '}' >> Default.iconset
chmod 644 Default.iconset

View File

@@ -25,6 +25,7 @@ prefsdata_DATA =\
menu.ko\
menu.nl\
menu.no\
menu.pl\
menu.pt\
menu.ru\
menu.se\

View File

@@ -1,5 +1,5 @@
/*
* Το Root μενού του WindowMaker
* Το Μητρικό μενού του Window Maker
*
* Η σύνταξη είναι:
*
@@ -16,72 +16,79 @@
* Δεν μπορεί να δηλωθεί ένα shortcut για MENU και για OPEN_MENU εντολή.
*
* <Command> μία από τις εντολές:
* MENU - το σημείο που ξεκινά ένα (υπο)μενού
* END - το σημείο που τελειώνει ένα (υπο)μενού
* MENU - το σημείο που ξεκινά ένα υπομενού
* END - το σημείο που τελειώνει ένα υπομενού
* OPEN_MENU - ανοίγει ένα μενού από ένα αρχείο, pipe ή τα περιεχόμενα ενός
* καταλόγου(ων) και αντιστοιχεί μια εντολή στο καθένα.
* WORKSPACE_MENU - προσθέτει ένα υπομενού για τη διαχείρηση των Επιφανειών.
* WORKSPACE_MENU - προσθέτει το υπομενού για τη διαχείρηση των Επιφανειών.
* Μόνο ένα workspace_menu επιτρέπεται.
* EXEC <program> - εκτέλεση προγράμματος
* EXIT - έξοδος από τον window manager
* RESTART [<window manager>] - επανεκκινεί τον Window Maker ή ξεκινάει ένας
* άλλος window manager
* SHEXEC <command> - εκτέλεση εντολής κέλυφους (όπως gimp > /dev/null)
* EXIT - έξοδος από τον Διαχειριστή Παραθύρων
* RESTART [<window manager>] - επανεκκινεί τον Window Maker ή ξεκινάει
* ένας άλλος window manager
* REFRESH - ανανεώνει την προβολή της Επιφάνειας στην οθόνη
* ARRANGE_ICONS - τακτοποίηση των εικονιδίων στην Επιφάνεια
* SHUTDOWN - τερματίζει βίαια όλους τους clients (και τερματίζει το X window
* session)
* SHOW_ALL - εμφανίζει όλα τα "κρυμένα" παράθυρα στην Επιφάνεια
* SHUTDOWN - τερματίζει βίαια όλους τους clients
* (και τερματίζει το X window session)
* SHOW_ALL - εμφανίζει όλα τα "κρυμμένα" παράθυρα στην Επιφάνεια
* HIDE_OTHERS - "κρύβει" όλα τα παράθυρα στην Επιφάνεια, εκτός από
* αυτό που είναι "ενεργό" (ή το τελευταίο που ήταν "ενεργό")
* SAVE_SESSION - αποθηκεύει το εκάστοτε "κατάσταση" της Επιφάνειας, το οποίο
* σημαίνει, όλα τα προγράμματα που εκτελούνται εκείνη τη
* αυτό που είναι "ενεργό" (ή το τελευταίο που ήταν "ενεργό")
* SAVE_SESSION - αποθηκεύει την εκάστοτε "κατάσταση" της Επιφάνειας, το
* οποίο σημαίνει, όλα τα προγράμματα που εκτελούνται εκείνη τη
* στιγμή με όλες τους τις ιδιότητες (γεωμετρία, θέση στην
* οθόνη, επιφάνεια εργασίας στην οποία έχουν εκτελεστεί, Dock ή
* Clip από όπου εκτελέστηκαν, αν είναι ελαχιστοποιημένα,
* αναδιπλωμένα ή κρυμμένα). Επίσης αποθηκεύει σε πια Επιφάνεια
* εργασίας ήταν ο χρήστης την τελευταία φορά. Όλες οι
* θα ανακληθούν την επόμενη φορά που ο χρήστης
* εκκινίσει τον Window Maker μέχρι η εντολή SAVE_SESSION ή
* εκκινήσει τον Window Maker μέχρι η εντολή SAVE_SESSION ή
* CLEAR_SESSION χρησιμοποιηθούν. Αν στο αρχείο Window Maker του
* καταλόγου "$HOME/GNUstep/Defaults/" υπάρχει η εντολή:
* "SaveSessionOnExit = Yes;", τότε όλα τα παραπάνω γίνονται
* αυτόματα με κάθε έξοδο του χρήστη από τον Window Maker,
* ακυρώνοντας ουσιαστικά κάθε προηγούμενη χρήση τως εντολών
* SAVE_SESSION ή CLEAR_SESSION (βλέπε παρακάτω).
* CLEAR_SESSION - σβήνει όλες τις πληροφορίες που έχουν αποθηκευθεί σύμφωνα με
* τα παραπάνω. Δεν θα έχει όμως κανένα αποτέλεσμα αν η εντολή
* SaveSessionOnExit=Yes.
* INFO - Πληροφορίες σχετικά με τον Window Mmaker
* CLEAR_SESSION - σβήνει όλες τις πληροφορίες που έχουν αποθηκευθεί
* σύμφωνα με τα παραπάνω. Δεν θα έχει όμως κανένα αποτέλεσμα
* αν η εντολή SaveSessionOnExit=Yes.
* INFO - Πληροφορίες σχετικά με τον Window Maker
*
* OPEN_MENU σύνταξη:
* 1. Χειρισμός ενός αρχείου-μενού.
* // ανοίγει το "αρχείο.μενού" το οποίο περιέχει ένα έγκυρο αρχείο-μενού και
* // το εισάγει στην εκάστοτε θέση
* // ανοίγει το "αρχείο.μενού" το οποίο περιέχει ένα έγκυρο αρχείο-μενού
* // καιτο εισάγει στην εκάστοτε θέση
* OPEN_MENU αρχείο.μενού
* 2. Χειρισμός ενός Pipe μενού.
* // τρέχει μια εντολή και χρησιμοποιεί την stdout αυτής για την κατασκευή του
* // μενού. Το αποτέλεσμα της εντολής πρέπει να έχει έγκυρη σύνταξη για χρήση
* // ως μενού. Το κενό διάστημα μεταξύ "|" και "εντολής" είναι προεραιτικό.
* // τρέχει μια εντολή και χρησιμοποιεί την stdout αυτής για την κατασκευή
* // του μενού. Το αποτέλεσμα της εντολής πρέπει να έχει έγκυρη σύνταξη
* // για χρήση ως μενού. Το κενό διάστημα μεταξύ "|" και "εντολής" είναι
* // προεραιτικό.
* OPEN_MENU | εντολή
* 3. Χειρισμός ενός καταλόγου.
* // Ανοίγει έναν ή περισσότερους καταλόγους και κατασκευάζει ένα μενού με
* // όλους τους υποκαταλόγους και τα εκτελέσιμα αρχεία σε αυτούς κατανεμημένα
* // αλφαβητικά.
* // Ανοίγει έναν ή περισσότερους καταλόγους και κατασκευάζει ένα μενού με
* // όλους τους υποκαταλόγους και τα εκτελέσιμα αρχεία σε αυτούς
* // κατανεμημένα αλφαβητικά.
* OPEN_MENU /κάποιος/κατάλογος [/κάποιος/άλλος/κατάλογος ...]
* 4. Χειρισμός ενός καταλόγου με κάποια εντολή.
* // Ανοίγει έναν ή περισσότερους καταλόγους και κατασκευάζει ένα μενού με
* // όλους τους υποκαταλόγους και τα αναγνώσιμα αρχεία σε αυτούς κατανεμημένα
* // αλφαβητικά, τα οποία μπορούν να εκτελεστούν με μία εντολή.
* // Ανοίγει έναν ή περισσότερους καταλόγους και κατασκευάζει ένα μενού με
* // όλους τους υποκαταλόγους και τα αναγνώσιμα αρχεία σε αυτούς
* // κατανεμημένα αλφαβητικά, τα οποία μπορούν να εκτελεστούν με μία
* // εντολή.
* OPEN_MENU /κάποιος/κατάλογος [/κάποιος/άλλος/κατάλογος ...] WITH εντολή -παράμετροι
*
* Παράμετροι:
* -noext αφαιρεί ότι βρίσκεται μετά την τελευταία τελεία του
* ονόματος του αρχείου.
*
* <Parameters> είναι το πρόγραμμα προς εκτέλεση.
*
* ** Παράμετροι για την εντολή EXEC:
* %s - Αντικατάσταση με την εκάστοτε επιλογή.
* %a(μύνημα) - Ανοίγει ένα παράθυρο εισαγωγής δεδομένων και αντικαθιστά με αυτό
* που πληκτρολογήθηκε.
* %a(τίτλος[,προτροπή]) - Ανοίγει ένα παράθυρο εισαγωγής δεδομένων με τον
* προκαθορισμένο τίτλο και την προεραιτική προτροπή
* και αντικαθιστά με αυτό που πληκτρολογήθηκε.
* %w - Αντικατάσταση με την XID του εκάστοτε ενεργού παραθύρου
* %W - Αντικατάσταση με τον αριθμό της εκάστοτε Επιφάνειας
*
* Μπορούν να εισαχθούν ειδικοί χαρακτήρες (όπως % ή ") με τον χαρακτήρα \:
* π.χ.: xterm -T "\"Καλημέρα Σου\""
@@ -99,7 +106,7 @@
* // some X11 apps in different directories
* "X11 apps" OPEN_MENU /usr/X11/bin $HOME/bin/X11
* // set some background images
* "Φόντο" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t
* "Παρασκήνιο" OPEN_MENU $HOME/images /usr/share/images WITH wmsetbg -u -t
* // inserts the style.menu in this entry
* "Στυλ" OPEN_MENU style.menu
* "Δοκιμαστικό" END
@@ -109,15 +116,16 @@
"Μενού" MENU
"Πληροφορίες" MENU
"Info..." INFO_PANEL
"Legal..." LEGAL_PANEL
"System Console" EXEC xconsole
"System Load" SHEXEC xosview || xload
"Process List" EXEC xterm -e top
"Σχετικά..." INFO_PANEL
"Νομικά..." LEGAL_PANEL
"Κονσόλα Συστήματος" EXEC xconsole
"Εργασία Συστήματος" SHEXEC xosview || xload
"Λίστα Εργασιών" EXEC xterm -e top
"Βοήθεια" EXEC xman
"Πληροφορίες" END
"Εκτέλεση..." SHEXEC %a(Εκτέλεση,Γράψε την εντολή προς εκτέλεση:)
"XTerm" EXEC xterm -sb
"Rxvt" EXEC rxvt -bg black -fg white -fn fixed
"Rxvt" EXEC rxvt -bg black -fg white -fn grfixed
"Επιφάνειες" WORKSPACE_MENU
"Προγράμματα" MENU
"Γραφικά" MENU
@@ -131,7 +139,7 @@
"LyX" EXEC lyx
"Netscape" EXEC netscape
"Ghostview" EXEC ghostview %a(Αρχείο προς ανάγνωση)
"Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Αρχείο προς ανάγνωση)
"Acrobat" EXEC /usr/local/Acrobat3/bin/acroread %a(Acrobar,Γράψε το PDF προς προβολή)
"TkDesk" EXEC tkdesk
"Προγράμματα" END
"Κειμενογράφοι" MENU
@@ -154,9 +162,9 @@
"Εξομοιωτής Τερματικού" EXEC xminicom
"Μεγέθυνση" EXEC xmag
"Χάρτης Χρωμάτων" EXEC xcmap
"XKill" EXEC xkill
"ASClock" EXEC asclock -shape
"Clipboard" EXEC xclipboard
"Θανάτωση Παραθύρου" EXEC xkill
"Ρολόι" EXEC asclock -shape
"Πρόχειρο" EXEC xclipboard
"Εργαλεία" END
"Επιλογή" MENU
@@ -172,40 +180,47 @@
"Τακτοποίηση Εικονιδίων" ARRANGE_ICONS
"Ανανέωση Προβολής" REFRESH
"Κλείδωμα" EXEC xlock -allowroot -usefirst
"Σώσιμο Κατάστασης" SAVE_SESSION
"Διαγραφή σωσμένης Κατάστασης" CLEAR_SESSION
"Σώσιμο Session" SAVE_SESSION
"Διαγραφή σωσμένου Session" CLEAR_SESSION
"Επιφάνεια" END
"Εμφάνιση" MENU
"Θέματα" OPEN_MENU -noext THEMES_DIR $HOME/GNUstep/Library/WindowMaker/Themes WITH setstyle
"Στυλ" OPEN_MENU -noext STYLES_DIR $HOME/GNUstep/Library/WindowMaker/Styles WITH setstyle
"Ομάδα Εικονιδίων" OPEN_MENU -noext ICON_SETS_DIR $HOME/GNUstep/Library/WindowMaker/IconSets WITH seticons
"Φόντο" MENU
"Παρασκήνιο" MENU
"Μονόχρωμο" MENU
"Μαύρο" WS_BACK '(solid, black)'
"Μπλε" WS_BACK '(solid, "#505075")'
"Λουλακί" WS_BACK '(solid, "#243e6c")'
"Σκούρο Μπλε" WS_BACK '(solid, "#180090")'
"Λουλακί" WS_BACK '(solid, "#243e6c")'
"Σκούρο Μπλε" WS_BACK '(solid, "#180090")'
"Βυσσινί" WS_BACK '(solid, "#554466")'
"Σταρένιο" WS_BACK '(solid, "wheat4")'
"Σκούρο Γκρι" WS_BACK '(solid, "#333340")'
"Κρασιού" WS_BACK '(solid, "#400020")'
"Κοκκινωπό" WS_BACK '(solid, "#400020")'
"Μονόχρωμο" END
"Διαβαθμισμένο" MENU
"Σημαία" WS_BACK '(mdgradient, green, red, white, green)'
"Ουράνος" WS_BACK '(vgradient, blue4, white)'
"Ηλιοβασίλεμα" 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
"Εικόνες" OPEN_MENU -noext BACKGROUNDS_DIR $HOME/GNUstep/Library/WindowMaker/Backgrounds WITH wmsetbg -u -t
"Φόντο" END
"Αποθήκευση Θέματος" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Όνομα Θέματος)"
"Αποθήκευση Ομάδας Εικονιδίων" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Όνομα Ομάδας)"
"Παρασκήνιο" END
"Αποθήκευση Θέματος" SHEXEC getstyle -t $HOME/GNUstep/Library/WindowMaker/Themes/"%a(Όνομα Θέματος,Γράψε το όνομα του αρχείου:)"
"Αποθήκευση Ομάδας Εικονιδίων" SHEXEC geticonset $HOME/GNUstep/Library/WindowMaker/IconSets/"%a(Όνομα Ομάδας,Γράψε το όνομα του αρχείου:)"
"Εμφάνιση" END
"Έξοδος" MENU
"Επανεκκίνηση" RESTART
"Εκκίνηση του AfterStep" RESTART afterstep
"Έξοδος..." EXIT
"Πλήρης Έξοδος..." SHUTDOWN
"Έξοδος" MENU
"Επανεκκίνηση" RESTART
"Εκκίνηση του BlackBox" RESTART blackbox
"Εκκίνηση του kwm" RESTART kwm
"Εκκίνηση του IceWM" RESTART icewm
"Έξοδος..." EXIT
"Έξοδος" END
"Μενού" END

3415
po/da.po

File diff suppressed because it is too large Load Diff

2641
po/el.po

File diff suppressed because it is too large Load Diff

View File

@@ -133,11 +133,18 @@ processEvents(int event_count)
void
wSetFocusTo(WScreen *scr, WWindow *wwin)
{
static WScreen *old_scr=NULL;
WWindow *old_focused;
WWindow *focused=scr->focused_window;
int timestamp=LastTimestamp;
WApplication *oapp=NULL, *napp=NULL;
int wasfocused;
if (!old_scr)
old_scr=scr;
old_focused=old_scr->focused_window;
LastFocusChange = timestamp;
/*
@@ -148,13 +155,13 @@ wSetFocusTo(WScreen *scr, WWindow *wwin)
*/
timestamp = CurrentTime;
if (focused)
oapp = wApplicationOf(focused->main_window);
if (old_focused)
oapp = wApplicationOf(old_focused->main_window);
if (wwin == NULL) {
XSetInputFocus(dpy, scr->no_focus_win, RevertToParent, timestamp);
if (focused) {
wWindowUnfocus(focused);
if (old_focused) {
wWindowUnfocus(old_focused);
}
if (oapp) {
wAppMenuUnmap(oapp->menu);
@@ -167,7 +174,10 @@ wSetFocusTo(WScreen *scr, WWindow *wwin)
wKWMSendEventMessage(NULL, WKWMFocusWindow);
#endif
return;
} else if(old_scr != scr && old_focused) {
wWindowUnfocus(old_focused);
}
wasfocused = wwin->flags.focused;
napp = wApplicationOf(wwin->main_window);
@@ -245,6 +255,7 @@ wSetFocusTo(WScreen *scr, WWindow *wwin)
wKWMSendEventMessage(wwin, WKWMFocusWindow);
#endif
XFlush(dpy);
old_scr=scr;
}

View File

@@ -352,12 +352,14 @@ listIconPaths(WMList *lPtr)
}
void drawIconProc(WMList *lPtr, int index, Drawable d, char *text,
int state, WMRect *rect) {
void
drawIconProc(WMList *lPtr, int index, Drawable d, char *text,
int state, WMRect *rect)
{
IconPanel *panel = WMGetHangedData(lPtr);
GC gc = panel->scr->draw_gc;
GC copygc = panel->scr->copy_gc;
char *buffer, *dirfile, *iconfile;
char *buffer, *dirfile;
WMPixmap *pixmap;
WMColor *blackcolor;
WMColor *whitecolor;
@@ -383,29 +385,53 @@ void drawIconProc(WMList *lPtr, int index, Drawable d, char *text,
return;
}
XClearArea(dpy, d, rect->pos.x,rect->pos.y, width, 64, False);
XClearArea(dpy, d, rect->pos.x, rect->pos.y, width, rect->size.height,
False);
XSetClipMask(dpy, gc, None);
XDrawRectangle(dpy, d, WMColorGC(whitecolor), rect->pos.x + 5,rect->pos.y +5, width - 10, 54);
/*
XDrawRectangle(dpy, d, WMColorGC(whitecolor), rect->pos.x + 5,
rect->pos.y +5, width - 10, 54);
*/
XDrawLine(dpy, d, WMColorGC(whitecolor), rect->pos.x,
rect->pos.y+rect->size.height-1, rect->pos.x+width,
rect->pos.y+rect->size.height-1);
if (state&WLDSSelected) {
XFillRectangle(dpy, d, WMColorGC(whitecolor), rect->pos.x + 5,rect->pos.y +5, width - 10, 54);
XFillRectangle(dpy, d, WMColorGC(whitecolor), rect->pos.x,
rect->pos.y, width, rect->size.height);
}
size = WMGetPixmapSize(pixmap);
XSetClipMask(dpy, copygc, WMGetPixmapMaskXID(pixmap));
XSetClipOrigin(dpy, copygc, rect->pos.x, rect->pos.y);
size = WMGetPixmapSize(pixmap);
XSetClipOrigin(dpy, copygc, rect->pos.x + (width-size.width)/2,
rect->pos.y+2);
XCopyArea(dpy, WMGetPixmapXID(pixmap), d, copygc, 0, 0,
size.width>100?100:size.width, size.height>64?64:size.height, rect->pos.x,rect->pos.y);
size.width>100?100:size.width, size.height>64?64:size.height,
rect->pos.x + (width-size.width)/2, rect->pos.y+2);
{
int i,j;
int fheight = WMFontHeight(panel->normalfont);
int tlen = strlen(text);
int twidth = WMWidthOfString(panel->normalfont, text, tlen);
int ofx, ofy;
ofx = rect->pos.x + (width - twidth)/2;
ofy = rect->pos.y + 64 - fheight;
for(i=-1;i<2;i++)
for(j=-1;j<2;j++)
WMDrawString(wmscr, d, WMColorGC(whitecolor), panel->normalfont , rect->pos.x+i+7, rect->pos.y+62+j-WMFontHeight(panel->normalfont), text, strlen(text));
}
WMDrawString(wmscr, d, WMColorGC(blackcolor), panel->normalfont , rect->pos.x+7, rect->pos.y+62-WMFontHeight(panel->normalfont), text, strlen(text));
for(j=-1;j<2;j++)
WMDrawString(wmscr, d, WMColorGC(whitecolor),
panel->normalfont, ofx+i, ofy+j,
text, tlen);
WMReleasePixmap(pixmap);
WMDrawString(wmscr, d, WMColorGC(blackcolor), panel->normalfont,
ofx, ofy, text, tlen);
}
WMReleasePixmap(pixmap);
/* I hope it is better to do not use cache / on my box it is fast nuff */
XFlush(dpy);
@@ -413,6 +439,7 @@ void drawIconProc(WMList *lPtr, int index, Drawable d, char *text,
WMReleaseColor(whitecolor);
}
static void
buttonCallback(void *self, void *clientData)
{
@@ -429,7 +456,7 @@ buttonCallback(void *self, void *clientData)
} else if (bPtr==panel->previewButton) {
/**** Previewer ****/
WMSetButtonEnabled(bPtr, False);
WMSetListUserDrawItemHeight(panel->iconList, 64);
WMSetListUserDrawItemHeight(panel->iconList, 68);
WMSetListUserDrawProc(panel->iconList, drawIconProc);
WMRedisplayWidget(panel->iconList);
/* for draw proc to access screen/gc */

View File

@@ -157,13 +157,13 @@ MakeCPPArgs(char *path)
tmp = wstrdup(path);
buf = strchr(tmp+1, ' ');
if (buf) {
*buf = 0;
}
*buf = 0;
}
buf = strrchr(tmp, '/');
if (buf) {
*buf = 0; /* trunc filename */
putdef(line, " -I", tmp);
}
*buf = 0; /* trunc filename */
putdef(line, " -I", tmp);
}
free(tmp);
}

View File

@@ -38,7 +38,7 @@ libwraster_la_SOURCES = \
INCLUDES = @DFLAGS@ @HEADER_SEARCH_PATH@
LIBLIST = libwraster.la @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @XLIBS@ -lm
LIBLIST = $(top_builddir)/wrlib/libwraster.la @LIBRARY_SEARCH_PATH@ @GFXLIBS@ @XLIBS@ -lm
view_SOURCES= view.c