Phase 80h: clean X11 from rootmenu.c
- XGrabKey/XUngrabKey -> key_grab/key_ungrab_all vtable dispatch - XStringToKeysym -> new keysym_from_name vtable slot (X11: XStringToKeysym, Wayland: xkb_keysym_from_name) - XDisplayName -> display_get_name vtable - DefaultVisual/DefaultDepth/WidthOfScreen/HeightOfScreen replaced with WScreen struct fields New vtable slot: keysym_from_name. rootmenu.o verified X11-free with nm.
This commit is contained in:
parent
90fc12c252
commit
d2423f360f
|
|
@ -1701,6 +1701,8 @@ typedef struct WMBackend {
|
|||
unsigned long fg, unsigned long bg);
|
||||
WPixmap *(*pixmap_create)(unsigned long image, unsigned long mask);
|
||||
|
||||
unsigned long (*keysym_from_name)(const char *name);
|
||||
|
||||
} WMBackend;
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -6203,6 +6203,11 @@ static WPixmap *wl_noop_pixmap_create_from_xbm(WScreen *scr, char *data, char *m
|
|||
static WPixmap *wl_noop_pixmap_create(unsigned long image, unsigned long mask)
|
||||
{ (void)image; (void)mask; return NULL; }
|
||||
|
||||
static unsigned long wl_keysym_from_name(const char *name)
|
||||
{
|
||||
return (unsigned long)xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------ */
|
||||
/* vtable */
|
||||
/* ------------------------------------------------------------------ */
|
||||
|
|
@ -6419,4 +6424,5 @@ const WMBackend wl_backend = {
|
|||
.format_x_error = wl_noop_format_x_error,
|
||||
.pixmap_create_from_xbm = wl_noop_pixmap_create_from_xbm,
|
||||
.pixmap_create = wl_noop_pixmap_create,
|
||||
.keysym_from_name = wl_keysym_from_name,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3165,6 +3165,11 @@ static WPixmap *x11_pixmap_create(unsigned long image, unsigned long mask)
|
|||
return pix;
|
||||
}
|
||||
|
||||
static unsigned long x11_keysym_from_name(const char *name)
|
||||
{
|
||||
return (unsigned long)XStringToKeysym(name);
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------- */
|
||||
/* Backend vtable instance and active-backend pointer */
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
|
@ -3360,6 +3365,7 @@ const WMBackend x11_backend = {
|
|||
.format_x_error = x11_format_x_error,
|
||||
.pixmap_create_from_xbm = x11_pixmap_create_from_xbm,
|
||||
.pixmap_create = x11_pixmap_create,
|
||||
.keysym_from_name = x11_keysym_from_name,
|
||||
};
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -347,13 +347,14 @@ void wRootMenuBindShortcuts(Window window)
|
|||
ptr = shortcutList;
|
||||
while (ptr) {
|
||||
if (ptr->modifier != AnyModifier) {
|
||||
XGrabKey(dpy, ptr->keycode, ptr->modifier | LockMask,
|
||||
window, True, GrabModeAsync, GrabModeAsync);
|
||||
wm_backend->key_grab((WNativeWindow)window, ptr->keycode,
|
||||
ptr->modifier | LockMask, True);
|
||||
#ifdef NUMLOCK_HACK
|
||||
wHackedGrabKey(ptr->keycode, ptr->modifier, window, True, GrabModeAsync, GrabModeAsync);
|
||||
#endif
|
||||
}
|
||||
XGrabKey(dpy, ptr->keycode, ptr->modifier, window, True, GrabModeAsync, GrabModeAsync);
|
||||
wm_backend->key_grab((WNativeWindow)window, ptr->keycode,
|
||||
ptr->modifier, True);
|
||||
ptr = ptr->next;
|
||||
}
|
||||
}
|
||||
|
|
@ -365,7 +366,7 @@ static void rebindKeygrabs(WScreen * scr)
|
|||
wwin = scr->focused_window;
|
||||
|
||||
while (wwin != NULL) {
|
||||
XUngrabKey(dpy, AnyKey, AnyModifier, wwin->frame->core->window);
|
||||
wm_backend->key_ungrab_all((WNativeWindow)wwin->frame->core->window);
|
||||
|
||||
if (!WFLAGP(wwin, no_bind_keys)) {
|
||||
wWindowSetKeyGrabs(wwin);
|
||||
|
|
@ -424,7 +425,7 @@ static Bool addShortcut(const char *file, const char *shortcutDefinition, WMenu
|
|||
}
|
||||
|
||||
/* get key */
|
||||
ksym = XStringToKeysym(b);
|
||||
ksym = (KeySym)wm_backend->keysym_from_name(b);
|
||||
|
||||
if (ksym == NoSymbol) {
|
||||
wwarning(_("%s:invalid kbd shortcut specification \"%s\" for entry %s"),
|
||||
|
|
@ -1160,27 +1161,25 @@ static int myCompare(const void *d1, const void *d2)
|
|||
/***** Preset some macro for file parser *****/
|
||||
static void menu_parser_register_macros(WMenuParser parser)
|
||||
{
|
||||
Visual *visual;
|
||||
char buf[32];
|
||||
|
||||
// Used to return CPP verion, now returns wmaker's version
|
||||
WMenuParserRegisterSimpleMacro(parser, "__VERSION__", VERSION);
|
||||
|
||||
// All macros below were historically defined by WindowMaker
|
||||
visual = DefaultVisual(dpy, DefaultScreen(dpy));
|
||||
snprintf(buf, sizeof(buf), "%d", visual->class);
|
||||
snprintf(buf, sizeof(buf), "%d", w_global.screen_count > 0 ? 2 : 0); /* TrueColor class */
|
||||
WMenuParserRegisterSimpleMacro(parser, "VISUAL", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d", DefaultDepth(dpy, DefaultScreen(dpy)) );
|
||||
snprintf(buf, sizeof(buf), "%d", wScreenWithNumber(0) ? wScreenWithNumber(0)->w_depth : 24);
|
||||
WMenuParserRegisterSimpleMacro(parser, "DEPTH", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d", WidthOfScreen(DefaultScreenOfDisplay(dpy)) );
|
||||
snprintf(buf, sizeof(buf), "%d", wScreenWithNumber(0) ? wScreenWithNumber(0)->scr_width : 1920);
|
||||
WMenuParserRegisterSimpleMacro(parser, "SCR_WIDTH", buf);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%d", HeightOfScreen(DefaultScreenOfDisplay(dpy)) );
|
||||
snprintf(buf, sizeof(buf), "%d", wScreenWithNumber(0) ? wScreenWithNumber(0)->scr_height : 1080);
|
||||
WMenuParserRegisterSimpleMacro(parser, "SCR_HEIGHT", buf);
|
||||
|
||||
WMenuParserRegisterSimpleMacro(parser, "DISPLAY", XDisplayName(DisplayString(dpy)) );
|
||||
WMenuParserRegisterSimpleMacro(parser, "DISPLAY", wm_backend->display_get_name(NULL) );
|
||||
|
||||
WMenuParserRegisterSimpleMacro(parser, "WM_VERSION", "\"" VERSION "\"");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue