mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-20 04:48:06 +01:00
menu jump back delay
This commit is contained in:
@@ -1744,7 +1744,8 @@ handleMotionNotify(XEvent *event)
|
|||||||
WScreen *scr = wScreenForRootWindow(event->xmotion.root);
|
WScreen *scr = wScreenForRootWindow(event->xmotion.root);
|
||||||
|
|
||||||
if (wPreferences.scrollable_menus) {
|
if (wPreferences.scrollable_menus) {
|
||||||
if (event->xmotion.x_root <= 1 ||
|
if (scr->flags.jump_back_pending ||
|
||||||
|
event->xmotion.x_root <= 1 ||
|
||||||
event->xmotion.x_root >= (scr->scr_width - 2) ||
|
event->xmotion.x_root >= (scr->scr_width - 2) ||
|
||||||
event->xmotion.y_root <= 1 ||
|
event->xmotion.y_root <= 1 ||
|
||||||
event->xmotion.y_root >= (scr->scr_height - 2)) {
|
event->xmotion.y_root >= (scr->scr_height - 2)) {
|
||||||
|
|||||||
35
src/menu.c
35
src/menu.c
@@ -1740,6 +1740,23 @@ isPointNearBoder(WMenu *menu, int x, int y)
|
|||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct _delay {
|
||||||
|
WWindow *wwin;
|
||||||
|
WMenu *menu;
|
||||||
|
int ox,oy;
|
||||||
|
} _delay;
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
_leaving(_delay *dl)
|
||||||
|
{
|
||||||
|
wMenuMove(dl->menu, dl->ox, dl->oy, True);
|
||||||
|
dl->menu->jump_back=NULL;
|
||||||
|
dl->menu->menu->screen_ptr->flags.jump_back_pending = 0;
|
||||||
|
free(dl);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
wMenuScroll(WMenu *menu, XEvent *event)
|
wMenuScroll(WMenu *menu, XEvent *event)
|
||||||
@@ -1756,6 +1773,10 @@ wMenuScroll(WMenu *menu, XEvent *event)
|
|||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
puts("Entering menu Scroll");
|
puts("Entering menu Scroll");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (omenu->jump_back)
|
||||||
|
WMDeleteTimerWithClientData(omenu->jump_back);
|
||||||
|
|
||||||
|
|
||||||
if ((/*omenu->flags.buttoned &&*/ !wPreferences.wrap_menus)
|
if ((/*omenu->flags.buttoned &&*/ !wPreferences.wrap_menus)
|
||||||
|| omenu->flags.app_menu) {
|
|| omenu->flags.app_menu) {
|
||||||
@@ -1842,6 +1863,20 @@ wMenuScroll(WMenu *menu, XEvent *event)
|
|||||||
|
|
||||||
if (jump_back)
|
if (jump_back)
|
||||||
wMenuMove(omenu, old_frame_x, old_frame_y, True);
|
wMenuMove(omenu, old_frame_x, old_frame_y, True);
|
||||||
|
if (jump_back) {
|
||||||
|
_delay *delayer;
|
||||||
|
if (!omenu->jump_back) {
|
||||||
|
delayer=wmalloc(sizeof(_delay));
|
||||||
|
delayer->menu=omenu;
|
||||||
|
delayer->ox=old_frame_x;
|
||||||
|
delayer->oy=old_frame_y;
|
||||||
|
omenu->jump_back=delayer;
|
||||||
|
scr->flags.jump_back_pending = 1;
|
||||||
|
}
|
||||||
|
else delayer = omenu->jump_back;
|
||||||
|
WMAddTimerHandler(MENU_JUMP_BACK_DELAY,(WMCallback*)_leaving, delayer);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
puts("Leaving menu Scroll");
|
puts("Leaving menu Scroll");
|
||||||
|
|||||||
@@ -78,6 +78,8 @@ typedef struct WMenu {
|
|||||||
|
|
||||||
WMHandlerID timer; /* timer for the autoscroll */
|
WMHandlerID timer; /* timer for the autoscroll */
|
||||||
|
|
||||||
|
void *jump_back; /* jump back data */
|
||||||
|
|
||||||
/* to be called when some entry is edited */
|
/* to be called when some entry is edited */
|
||||||
void (*on_edit)(struct WMenu *menu, struct WMenuEntry *entry);
|
void (*on_edit)(struct WMenu *menu, struct WMenuEntry *entry);
|
||||||
/* to be called when destroyed */
|
/* to be called when destroyed */
|
||||||
|
|||||||
@@ -315,6 +315,7 @@ typedef struct _WScreen {
|
|||||||
/* some client has issued a WM_COLORMAP_NOTIFY */
|
/* some client has issued a WM_COLORMAP_NOTIFY */
|
||||||
unsigned int colormap_stuff_blocked:1;
|
unsigned int colormap_stuff_blocked:1;
|
||||||
unsigned int doing_alt_tab:1;
|
unsigned int doing_alt_tab:1;
|
||||||
|
unsigned int jump_back_pending:1;
|
||||||
#ifdef KWM_HINTS
|
#ifdef KWM_HINTS
|
||||||
unsigned int kwm_syncing_name:1;
|
unsigned int kwm_syncing_name:1;
|
||||||
unsigned int kwm_syncing_count:1;
|
unsigned int kwm_syncing_count:1;
|
||||||
|
|||||||
@@ -400,6 +400,7 @@
|
|||||||
|
|
||||||
#define MENU_SCROLL_STEPS_U 1
|
#define MENU_SCROLL_STEPS_U 1
|
||||||
#define MENU_SCROLL_DELAY_U 8
|
#define MENU_SCROLL_DELAY_U 8
|
||||||
|
#define MENU_JUMP_BACK_DELAY 0
|
||||||
|
|
||||||
/* shade animation */
|
/* shade animation */
|
||||||
#define SHADE_STEPS_UF 5
|
#define SHADE_STEPS_UF 5
|
||||||
|
|||||||
Reference in New Issue
Block a user