kiss-mfavila-large/ports/fvwm-patched/patches/12-FvwmButtonsTips.patch
2021-05-09 03:10:08 -03:00

323 lines
8.2 KiB
Diff

diff --unified --recursive --text fvwm-2.6.9/libs/FTips.c fvwm-patched/libs/FTips.c
--- fvwm-2.6.9/libs/FTips.c 2018-05-26 05:35:26.000000000 -0600
+++ fvwm-patched/libs/FTips.c 2020-08-21 16:20:45.638664630 -0600
@@ -504,7 +504,7 @@
if (fc == NULL)
{
fc = default_config;
- }
+ }
current_config = fc;
if (label != NULL)
Only in fvwm-patched/libs: FTips.c.orig
diff --unified --recursive --text fvwm-2.6.9/modules/FvwmButtons/FvwmButtons.c fvwm-patched/modules/FvwmButtons/FvwmButtons.c
--- fvwm-2.6.9/modules/FvwmButtons/FvwmButtons.c 2018-05-26 05:35:26.000000000 -0600
+++ fvwm-patched/modules/FvwmButtons/FvwmButtons.c 2020-08-21 16:28:07.722997146 -0600
@@ -55,6 +55,7 @@
#include "libs/Colorset.h"
#include "libs/vpacket.h"
#include "libs/FRender.h"
+#include "libs/FTips.h"
#include "libs/fsm.h"
#include "libs/ColorUtils.h"
#include "libs/Graphics.h"
@@ -900,6 +901,7 @@
button_info *tmp = ActiveButton;
ActiveButton = b;
RedrawButton(tmp, DRAW_FORCE, NULL);
+
}
if (
b->flags.b_ActiveIcon ||
@@ -1040,6 +1042,9 @@
tmp.name = NULL;
tmp.name_list = NULL;
+
+ FTipsInit(Dpy);
+
while ( !isTerminated )
{
if (My_FNextEvent(Dpy, &Event))
@@ -1166,6 +1171,10 @@
if (!event.xconfigure.send_event &&
Event.xconfigure.window != MyWindow)
continue;
+
+ if(FTipsHandleEvents(Dpy, &event))
+ continue;
+
fev_sanitise_configure_notify(&event.xconfigure);
Event.xconfigure.x = event.xconfigure.x;
Event.xconfigure.y = event.xconfigure.y;
@@ -1209,10 +1218,33 @@
case EnterNotify:
b = handle_new_position(
b, Event.xcrossing.x, Event.xcrossing.y);
+
+ if(Event.xcrossing.mode == NotifyNormal)
+ {
+ b = handle_new_position(
+ b, Event.xcrossing.x, Event.xcrossing.y);
+ FTipsOn(Dpy,MyWindow,UberButton->c->tips_config,
+ (void *)UberButton, b->tipslabel,
+ b->x, b->y, Width,Height);
+ FTipsUpdateLabel(Dpy, b->tipslabel);
+ }
break;
case MotionNotify:
+
b = handle_new_position(b, Event.xmotion.x, Event.xmotion.y);
+
+ x = Event.xbutton.x;
+ y = Event.xbutton.y;
+
+ if(b->tipslabel != NULL)
+ {
+ FTipsOn(Dpy,MyWindow,UberButton->c->tips_config, (void *)UberButton, b->tipslabel, x, y, w, h);
+ FTipsUpdateLabel(Dpy, b->tipslabel);
+ } else {
+ FTipsCancel(Dpy);
+ }
+
break;
case LeaveNotify:
@@ -1235,11 +1267,13 @@
b = ActiveButton;
ActiveButton = NULL;
RedrawButton(b, DRAW_FORCE, NULL);
+
}
if (CurrentButton)
{
RedrawButton(b, DRAW_FORCE, NULL);
}
+ FTipsCancel(Dpy);
}
break;
@@ -1261,8 +1295,8 @@
Window dummy;
XTranslateCoordinates(
- Dpy, Event.xbutton.window, MyWindow, Event.xbutton.x,
- Event.xbutton.y, &x, &y, &dummy);
+ Dpy, Event.xbutton.window, MyWindow, Event.xbutton.x,
+ Event.xbutton.y, &x, &y, &dummy);
}
if (CurrentButton)
{
@@ -1304,7 +1338,10 @@
RedrawButton(tmp, DRAW_FORCE, NULL);
}
else
+ {
RedrawButton(b, DRAW_FORCE, NULL);
+ }
+
if (!act)
{
break;
Only in fvwm-patched/modules/FvwmButtons: FvwmButtons.c.orig
diff --unified --recursive --text fvwm-2.6.9/modules/FvwmButtons/FvwmButtons.h fvwm-patched/modules/FvwmButtons/FvwmButtons.h
--- fvwm-2.6.9/modules/FvwmButtons/FvwmButtons.h 2018-05-26 05:35:26.000000000 -0600
+++ fvwm-patched/modules/FvwmButtons/FvwmButtons.h 2020-08-21 16:20:45.638664630 -0600
@@ -32,6 +32,8 @@
#include "libs/fvwmlib.h"
#include "libs/Picture.h"
#include "libs/Flocale.h"
+#include "libs/FTips.h"
+#define FONT_STRING "-*-fixed-medium-r-normal--13-*"
/* ------------------------------- structs --------------------------------- */
@@ -76,6 +78,7 @@
unsigned b_PressIcon : 1; /* Use alternate Icon on press */
unsigned b_PressColorset : 1; /* Use alternate Colorset on press */
unsigned b_PressTitle : 1; /* Use alternate Title text on press */
+ unsigned b_UseTips : 1; /* Whether to use tips or not. */
} flags_type;
/* Flags for b->swallow */
@@ -125,6 +128,9 @@
int colorset; /* b_Colorset */
int activeColorset; /* b_ActiveColorset */
int pressColorset; /* b_PressColorset */
+ char *tipsfont; /* b_TipsFont*/
+ ftips_config *tips_config; /* Struct that holds tips info.*/
+
Pixel fc; /* b_Fore */
Pixel bc, hc, sc; /* b_Back && !b_IconBack */
FvwmPicture *backicon; /* b_Back && b_IconBack */
@@ -181,6 +187,7 @@
FvwmPicture *pressicon; /* b_PressIcon */
int activeColorset; /* b_ActiveColorset */
int pressColorset; /* b_PressColorset */
+ char *tipslabel; /* b_TipsLabel */
Window IconWin; /* b_Swallow */
Window PanelWin; /* b_Panel */
Window BackIconWin; /* b_Back && b_IconBack */
Only in fvwm-patched/modules/FvwmButtons: FvwmButtons.h.orig
diff --unified --recursive --text fvwm-2.6.9/modules/FvwmButtons/parse.c fvwm-patched/modules/FvwmButtons/parse.c
--- fvwm-2.6.9/modules/FvwmButtons/parse.c 2018-05-26 05:35:26.000000000 -0600
+++ fvwm-patched/modules/FvwmButtons/parse.c 2020-08-21 16:20:45.638664630 -0600
@@ -882,6 +882,7 @@
"presstitle",
"activecolorset",
"presscolorset",
+ "tipslabel",
"top",
NULL
};
@@ -1605,7 +1606,33 @@
b->flags.b_ActiveColorset = 0;
}
break;
+ /* --------- TipsLabel ---------*/
+ case 28:
+ s = trimleft(s);
+ t = seekright(&s);
+ if(ub->c->flags.b_UseTips)
+ {
+ if (*s == '(')
+ {
+ fprintf(stderr,
+ "%s: justification not allowed "
+ "for TipsLabel.\n", MyName);
+ }
+
+
+
+ if (t && *t && (t[0] != '-' || t[1] != 0))
+ {
+ if (b->tipslabel != NULL)
+ {
+ free(b->tipslabel);
+ } else {
+ b->tipslabel = t;
+ }
+ }
+ }
+ break;
/* --------------- --------------- */
case 26: /* PressColorset */
i = strtol(s, &t, 10);
@@ -1777,6 +1804,14 @@
"colorset",
"activecolorset",
"presscolorset",
+ "usetips",
+ "tipsfont",
+ "tipsdelay",
+ "tipscolorset",
+ "tipsborderwidth",
+ "tipsplacement",
+ "tipsjustification",
+ "tipsoffset",
NULL
};
int i, j, k;
@@ -1924,7 +1959,97 @@
ub->c->flags.b_PressColorset = 0;
}
break;
+ case 15: /* UseTips */
+ /* We're using tips.*/
+ ub->c->flags.b_UseTips = 1;
+
+ /* Set the defaults up. */
+ ub->c->tips_config = FTipsNewConfig();
+
+ /* Include fonts. */
+ CopyStringWithQuotes(&ub->c->tipsfont,FONT_STRING);
+ ub->c->tips_config->Ffont = FlocaleLoadFont(Dpy,
+ ub->c->tipsfont, MyName);
+ break;
+ case 16: /* TipsFont */
+ if(ub->c->flags.b_UseTips)
+ {
+ CopyStringWithQuotes(&ub->c->tipsfont,s);
+ ub->c->tips_config->Ffont = FlocaleLoadFont(Dpy, ub->c->tipsfont,
+ MyName);
+ }
+
+ break;
+ case 17: /*TipsDelay */
+ if(ub->c->flags.b_UseTips)
+ {
+ i = sscanf(s, "%d %d", &j, &k);
+ if( i > 0)
+ {
+ /* Then only one value was given. Set the
+ * mapped_delay option to this given value
+ * also since it's optional.
+ */
+ ub->c->tips_config->delay = ub->c->tips_config->mapped_delay = j;
+ }
+ if( i > 1)
+ {
+ /* Two values passed in. We only need to
+ * change the value for mapped_delay here.
+ */
+
+ ub->c->tips_config->mapped_delay = k;
+
+ }
+ }
+ break;
+ case 18: /* TipsColorset */
+ if (ub->c->flags.b_UseTips)
+ {
+ i = sscanf(s, "%d", &j);
+ if (i > 0)
+ {
+ ub->c->tips_config->colorset = j;
+ AllocColorset(j);
+ }
+ }
+ break;
+ case 19: /* TipsBorderWidth */
+ if (ub->c->flags.b_UseTips)
+ {
+ i = sscanf(s, "%d", &j);
+
+ if(i > 0)
+ {
+ ub->c->tips_config->border_width = j;
+ }
+ }
+ break;
+ case 20: /* TipsPlacement */
+ if(ub->c->flags.b_UseTips)
+ {
+ s = trimleft(s);
+
+ /* Options ... */
+ if(!strcasecmp(s, "up"))
+ {
+ i = FTIPS_PLACEMENT_UP;
+ } else if(!strcasecmp(s, "down")) {
+ i = FTIPS_PLACEMENT_DOWN;
+ } else if(!strcasecmp(s, "left")) {
+ i = FTIPS_PLACEMENT_LEFT;
+ } else if(!strcasecmp(s, "right")) {
+ i = FTIPS_PLACEMENT_RIGHT;
+ } else if(!strcasecmp(s, "updown")) {
+ i = FTIPS_PLACEMENT_AUTO_UPDOWN;
+ } else if(!strcasecmp(s, "leftright")) {
+ i = FTIPS_PLACEMENT_AUTO_LEFTRIGHT;
+ }
+
+ ub->c->tips_config->placement = i;
+ }
+ break;
default:
s = trimleft(s);
ParseButton(ubb, s);
Only in fvwm-patched/modules/FvwmButtons: parse.c.orig