Phase 80b: eliminate if(dpy) guards and replace X11 calls with vtable dispatch
- Remove all 20 'if (dpy &&' guards from policy files - Replace XMapWindow, XUnmapWindow, XMoveWindow, XClearWindow, XFreePixmap, XFlush, XSync, XResizeWindow, XSetWindowBackground, XSetWindowBackgroundPixmap, XMoveResizeWindow, XSelectInput, XMapRaised, XUngrabPointer, XUngrabKeyboard, XGrabKeyboard, XGrabServer, XUngrabServer, XRestackWindows, XDestroyWindow, XReparentWindow, XAddToSaveSet, XSetWindowBorderWidth with vtable dispatch across all policy files - Make wFrameWindowPaint mechanism code: X11 backend's frame_paint now calls it; all policy call sites dispatch through vtable - Replace dpy feature-gating in main.c/startup.c with is_wayland Remaining: 278 dpy refs in policy files, mostly in rendering functions (wIconPaint, wAppIconPaint, paintEntry, drawFrame, balloon, dock, dialog, superfluous, event) that are X11 mechanism code reachable only through the X11 backend path.
This commit is contained in:
parent
553d2ca0ba
commit
9cfe322573
|
|
@ -1066,7 +1066,7 @@ void wUnfullscreenWindow(WWindow *wwin)
|
|||
wWindowConfigureBorders(wwin);
|
||||
/*
|
||||
// seems unnecessary, but also harmless (doesn't generate flicker) -Dan
|
||||
wFrameWindowPaint(wwin->frame);
|
||||
wm_backend->frame_paint(wwin->frame);
|
||||
*/
|
||||
|
||||
WMPostNotificationName(WMNChangedState, wwin, "fullscreen");
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ void unpaint_app_icon(WApplication *wapp)
|
|||
clip = scr->workspaces[scr->current_workspace]->clip;
|
||||
|
||||
if (!clip || !aicon->attracted || !clip->collapsed)
|
||||
XUnmapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)aicon->icon->core->window);
|
||||
|
||||
/* We want to avoid having it on the list because otherwise
|
||||
* there will be a hole when the icons are arranged with
|
||||
|
|
@ -246,7 +246,7 @@ void paint_app_icon(WApplication *wapp)
|
|||
add_to_appicon_list(scr, wapp->app_icon);
|
||||
|
||||
if (!attracting_dock || !wapp->app_icon->attracted || !attracting_dock->collapsed)
|
||||
XMapWindow(dpy, icon->core->window);
|
||||
wm_backend->window_map((WNativeWindow)icon->core->window);
|
||||
|
||||
if (wPreferences.auto_arrange_icons && !wapp->app_icon->attracted)
|
||||
wArrangeIcons(scr, True);
|
||||
|
|
@ -828,18 +828,18 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||
|
||||
wins[0] = icon->core->window;
|
||||
wins[1] = scr->dock_shadow;
|
||||
XRestackWindows(dpy, wins, 2);
|
||||
XMoveResizeWindow(dpy, scr->dock_shadow, aicon->x_pos, aicon->y_pos, ICON_SIZE, ICON_SIZE);
|
||||
wm_backend->stacking_restack((WNativeWindow *)wins, 2);
|
||||
wm_backend->frame_configure((WNativeWindow)scr->dock_shadow, aicon->x_pos, aicon->y_pos, ICON_SIZE, ICON_SIZE);
|
||||
if (superfluous) {
|
||||
if (icon->pixmap != None)
|
||||
ghost = MakeGhostIcon(scr, icon->pixmap);
|
||||
else
|
||||
ghost = MakeGhostIcon(scr, icon->core->window);
|
||||
XSetWindowBackgroundPixmap(dpy, scr->dock_shadow, ghost);
|
||||
XClearWindow(dpy, scr->dock_shadow);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)scr->dock_shadow, (unsigned long)ghost);
|
||||
wm_backend->window_clear((WNativeWindow)scr->dock_shadow);
|
||||
}
|
||||
if (ondock)
|
||||
XMapWindow(dpy, scr->dock_shadow);
|
||||
wm_backend->window_map((WNativeWindow)scr->dock_shadow);
|
||||
|
||||
while (1) {
|
||||
WMMaskEvent(scr->wmscreen, PointerMotionMask | ButtonReleaseMask | ButtonPressMask
|
||||
|
|
@ -936,16 +936,16 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||
shad_x = lastDock->x_pos + ix*wPreferences.icon_size;
|
||||
shad_y = lastDock->y_pos + iy*wPreferences.icon_size;
|
||||
|
||||
XMoveWindow(dpy, scr->dock_shadow, shad_x, shad_y);
|
||||
wm_backend->window_move((WNativeWindow)scr->dock_shadow, shad_x, shad_y);
|
||||
|
||||
if (!ondock) {
|
||||
XMapWindow(dpy, scr->dock_shadow);
|
||||
wm_backend->window_map((WNativeWindow)scr->dock_shadow);
|
||||
}
|
||||
ondock = 1;
|
||||
} else {
|
||||
lastDock = theNewDock; // i.e., NULL
|
||||
if (ondock) {
|
||||
XUnmapWindow(dpy, scr->dock_shadow);
|
||||
wm_backend->window_unmap((WNativeWindow)scr->dock_shadow);
|
||||
/*
|
||||
* Leaving that weird comment for now.
|
||||
* But if we see no gap, there is no need to fill one!
|
||||
|
|
@ -965,12 +965,12 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||
case WME_BUTTON_RELEASE:
|
||||
if (ev.u.button.button != clickButton)
|
||||
break;
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
wm_backend->pointer_ungrab(0);
|
||||
|
||||
Bool docked = False;
|
||||
if (ondock) {
|
||||
slide_window(icon->core->window, x, y, shad_x, shad_y);
|
||||
XUnmapWindow(dpy, scr->dock_shadow);
|
||||
wm_backend->window_unmap((WNativeWindow)scr->dock_shadow);
|
||||
if (originalDock == NULL) { // docking an undocked appicon
|
||||
docked = wDockAttachIcon(lastDock, aicon, ix, iy, False);
|
||||
if (!docked) {
|
||||
|
|
@ -1073,8 +1073,8 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
|
|||
*/
|
||||
if (superfluous) {
|
||||
if (ghost != None)
|
||||
XFreePixmap(dpy, ghost);
|
||||
XSetWindowBackground(dpy, scr->dock_shadow, scr->white_pixel);
|
||||
wm_backend->pixmap_free((unsigned long)ghost);
|
||||
wm_backend->window_set_background((WNativeWindow)scr->dock_shadow, scr->white_pixel);
|
||||
}
|
||||
if (showed_all_clips) {
|
||||
int i;
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ static void sendMessage(Window window, int what, int tag)
|
|||
event.xclient.data.l[2] = tag;
|
||||
event.xclient.data.l[3] = 0;
|
||||
XSendEvent(dpy, window, False, NoEventMask, &event);
|
||||
XFlush(dpy);
|
||||
wm_backend->event_flush();
|
||||
}
|
||||
|
||||
static void notifyClient(WMenu * menu, WMenuEntry * entry)
|
||||
|
|
@ -233,9 +233,9 @@ static void mapmenus(WMenu * menu)
|
|||
int i;
|
||||
|
||||
if (menu->flags.mapped)
|
||||
XMapWindow(dpy, menu->frame->core->window);
|
||||
wm_backend->window_map((WNativeWindow)menu->frame->core->window);
|
||||
if (menu->brother->flags.mapped)
|
||||
XMapWindow(dpy, menu->brother->frame->core->window);
|
||||
wm_backend->window_map((WNativeWindow)menu->brother->frame->core->window);
|
||||
for (i = 0; i < menu->cascade_no; i++) {
|
||||
if (menu->cascades[i])
|
||||
mapmenus(menu->cascades[i]);
|
||||
|
|
@ -271,9 +271,9 @@ static void unmapmenus(WMenu * menu)
|
|||
int i;
|
||||
|
||||
if (menu->flags.mapped)
|
||||
XUnmapWindow(dpy, menu->frame->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)menu->frame->core->window);
|
||||
if (menu->brother->flags.mapped)
|
||||
XUnmapWindow(dpy, menu->brother->frame->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)menu->brother->frame->core->window);
|
||||
for (i = 0; i < menu->cascade_no; i++) {
|
||||
if (menu->cascades[i])
|
||||
unmapmenus(menu->cascades[i]);
|
||||
|
|
|
|||
|
|
@ -2471,6 +2471,13 @@ x11_texture_free_gc(GC gc)
|
|||
/* Frame decoration helpers (Phase 80) */
|
||||
/* -------------------------------------------------------------------- */
|
||||
|
||||
static int
|
||||
x11_frame_paint_impl(struct WFrameWindow *fwin)
|
||||
{
|
||||
wFrameWindowPaint(fwin);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static void x11_frame_paint_button(WCoreWindow *button, WTexture *texture,
|
||||
unsigned long color, WPixmap *image, int pushed);
|
||||
|
||||
|
|
@ -2933,7 +2940,7 @@ const WMBackend x11_backend = {
|
|||
.frame_create_child = x11_frame_create_child,
|
||||
.frame_destroy = x11_frame_destroy,
|
||||
.frame_configure = x11_frame_configure,
|
||||
.frame_paint = NULL, /* X11: use legacy Xlib code in framewin.c */
|
||||
.frame_paint = x11_frame_paint_impl,
|
||||
.context_save = x11_context_save,
|
||||
.context_find = x11_context_find,
|
||||
.context_delete = x11_context_delete,
|
||||
|
|
|
|||
|
|
@ -268,7 +268,7 @@ static void showText(WScreen *scr, int x, int y, int h, int w, const char *text)
|
|||
int bx, by;
|
||||
|
||||
if (scr->balloon->contents)
|
||||
XFreePixmap(dpy, scr->balloon->contents);
|
||||
wm_backend->pixmap_free((unsigned long)scr->balloon->contents);
|
||||
|
||||
width = getMaxStringWidth(font, text) + 16;
|
||||
height = countLines(text) * WMFontHeight(font) + 4;
|
||||
|
|
@ -303,14 +303,14 @@ static void showText(WScreen *scr, int x, int y, int h, int w, const char *text)
|
|||
|
||||
drawMultiLineString(scr->wmscreen, pixmap, scr->black, font, 8, ty + 2, text, strlen(text));
|
||||
|
||||
XSetWindowBackgroundPixmap(dpy, scr->balloon->window, pixmap);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)scr->balloon->window, (unsigned long)pixmap);
|
||||
scr->balloon->contents = pixmap;
|
||||
|
||||
XResizeWindow(dpy, scr->balloon->window, width, height + SPACE);
|
||||
wm_backend->window_resize((WNativeWindow)scr->balloon->window, width, height + SPACE);
|
||||
wm_backend->shape_combine_mask(scr->balloon->window, (WNativeWindow)mask);
|
||||
XFreePixmap(dpy, mask);
|
||||
XMoveWindow(dpy, scr->balloon->window, bx, by);
|
||||
XMapRaised(dpy, scr->balloon->window);
|
||||
wm_backend->pixmap_free((unsigned long)mask);
|
||||
wm_backend->window_move((WNativeWindow)scr->balloon->window, bx, by);
|
||||
wm_backend->window_map_raised((WNativeWindow)scr->balloon->window);
|
||||
|
||||
scr->balloon->mapped = 1;
|
||||
}
|
||||
|
|
@ -324,7 +324,7 @@ static void showText(WScreen *scr, int x, int y, int h, int w, const char *text)
|
|||
WMFont *font = scr->info_text_font;
|
||||
|
||||
if (scr->balloon->contents)
|
||||
XFreePixmap(dpy, scr->balloon->contents);
|
||||
wm_backend->pixmap_free((unsigned long)scr->balloon->contents);
|
||||
|
||||
width = getMaxStringWidth(font, text) + 8;
|
||||
/*width = WMWidthOfString(font, text, strlen(text))+8; */
|
||||
|
|
@ -353,12 +353,12 @@ static void showText(WScreen *scr, int x, int y, int h, int w, const char *text)
|
|||
|
||||
drawMultiLineString(scr->wmscreen, pixmap, scr->window_title_color[0], font, 4, 2, text, strlen(text));
|
||||
|
||||
XResizeWindow(dpy, scr->balloon->window, width, height);
|
||||
XMoveWindow(dpy, scr->balloon->window, x, y);
|
||||
wm_backend->window_resize((WNativeWindow)scr->balloon->window, width, height);
|
||||
wm_backend->window_move((WNativeWindow)scr->balloon->window, x, y);
|
||||
|
||||
XSetWindowBackgroundPixmap(dpy, scr->balloon->window, pixmap);
|
||||
XClearWindow(dpy, scr->balloon->window);
|
||||
XMapRaised(dpy, scr->balloon->window);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)scr->balloon->window, (unsigned long)pixmap);
|
||||
wm_backend->window_clear((WNativeWindow)scr->balloon->window);
|
||||
wm_backend->window_map_raised((WNativeWindow)scr->balloon->window);
|
||||
|
||||
scr->balloon->contents = pixmap;
|
||||
|
||||
|
|
@ -375,7 +375,7 @@ static void show_minipreview(WScreen *scr, int x, int y, const char *title, Pixm
|
|||
char *shortenTitle;
|
||||
|
||||
if (scr->balloon->contents)
|
||||
XFreePixmap(dpy, scr->balloon->contents);
|
||||
wm_backend->pixmap_free((unsigned long)scr->balloon->contents);
|
||||
|
||||
width = wPreferences.minipreview_size;
|
||||
height = wPreferences.minipreview_size;
|
||||
|
|
@ -422,13 +422,13 @@ static void show_minipreview(WScreen *scr, int x, int y, const char *title, Pixm
|
|||
MINIPREVIEW_BORDER, MINIPREVIEW_BORDER + titleHeight);
|
||||
|
||||
wm_backend->shape_combine_mask(scr->balloon->window, WNATIVE_NONE);
|
||||
XResizeWindow(dpy, scr->balloon->window, width, height);
|
||||
XMoveWindow(dpy, scr->balloon->window, x, y);
|
||||
wm_backend->window_resize((WNativeWindow)scr->balloon->window, width, height);
|
||||
wm_backend->window_move((WNativeWindow)scr->balloon->window, x, y);
|
||||
|
||||
XSetWindowBackgroundPixmap(dpy, scr->balloon->window, pixmap);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)scr->balloon->window, (unsigned long)pixmap);
|
||||
|
||||
XClearWindow(dpy, scr->balloon->window);
|
||||
XMapRaised(dpy, scr->balloon->window);
|
||||
wm_backend->window_clear((WNativeWindow)scr->balloon->window);
|
||||
wm_backend->window_map_raised((WNativeWindow)scr->balloon->window);
|
||||
|
||||
|
||||
scr->balloon->contents = pixmap;
|
||||
|
|
@ -490,7 +490,7 @@ static void miniwindowBalloon(WObjDescriptor *object)
|
|||
|
||||
if ((scr->balloon->prevType == object->parent_type || scr->balloon->prevType == WCLASS_APPICON)
|
||||
&& scr->balloon->ignoreTimer) {
|
||||
XUnmapWindow(dpy, scr->balloon->window);
|
||||
wm_backend->window_unmap((WNativeWindow)scr->balloon->window);
|
||||
showBalloon(scr);
|
||||
} else {
|
||||
scr->balloon->timer = WMAddTimerHandler(BALLOON_DELAY, (WMCallback *) showBalloon, scr);
|
||||
|
|
@ -564,7 +564,7 @@ static void appiconBalloon(WObjDescriptor *object)
|
|||
scr->balloon->objectWindow = aicon->icon->core->window;
|
||||
if ((scr->balloon->prevType == object->parent_type || scr->balloon->prevType == WCLASS_MINIWINDOW)
|
||||
&& scr->balloon->ignoreTimer) {
|
||||
XUnmapWindow(dpy, scr->balloon->window);
|
||||
wm_backend->window_unmap((WNativeWindow)scr->balloon->window);
|
||||
showBalloon(scr);
|
||||
} else {
|
||||
scr->balloon->timer = WMAddTimerHandler(BALLOON_DELAY, (WMCallback *) showBalloon, scr);
|
||||
|
|
@ -593,7 +593,7 @@ void wBalloonInitialize(WScreen *scr)
|
|||
#if 0
|
||||
/* select EnterNotify to so that the balloon will be unmapped
|
||||
* when the pointer is moved over it */
|
||||
XSelectInput(dpy, bal->window, EnterWindowMask);
|
||||
wm_backend->window_select_events((WNativeWindow)bal->window, EnterWindowMask);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -647,7 +647,7 @@ void wBalloonHide(WScreen *scr)
|
|||
{
|
||||
if (scr) {
|
||||
if (scr->balloon->mapped) {
|
||||
XUnmapWindow(dpy, scr->balloon->window);
|
||||
wm_backend->window_unmap((WNativeWindow)scr->balloon->window);
|
||||
scr->balloon->mapped = 0;
|
||||
} else if (scr->balloon->timer) {
|
||||
WMDeleteTimerHandler(scr->balloon->timer);
|
||||
|
|
|
|||
|
|
@ -461,7 +461,7 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
|
|||
owner->flags.semi_focused = 0;
|
||||
if ((owner->flags.mapped || owner->flags.shaded)
|
||||
&& owner->frame)
|
||||
wFrameWindowPaint(owner->frame);
|
||||
wm_backend->frame_paint(owner->frame);
|
||||
}
|
||||
}
|
||||
owner = wWindowFor(new_owner);
|
||||
|
|
@ -470,7 +470,7 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
|
|||
owner->flags.semi_focused = 1;
|
||||
if ((owner->flags.mapped || owner->flags.shaded)
|
||||
&& owner->frame)
|
||||
wFrameWindowPaint(owner->frame);
|
||||
wm_backend->frame_paint(owner->frame);
|
||||
}
|
||||
}
|
||||
wwin->transient_for = new_owner;
|
||||
|
|
@ -543,7 +543,7 @@ void wClientCheckProperty(WWindow * wwin, XPropertyEvent * event)
|
|||
}
|
||||
|
||||
if (fPtr->leader != None)
|
||||
XDestroyWindow(dpy, fPtr->leader);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)fPtr->leader);
|
||||
fPtr->retainCount = 0;
|
||||
fPtr->leader = None;
|
||||
fPtr->origLeader = None;
|
||||
|
|
|
|||
|
|
@ -2282,7 +2282,7 @@ static void check_bitmap_status(int status, const char *filename, Pixmap bitmap)
|
|||
wwarning(_("out of memory reading bitmap file \"%s\""), filename);
|
||||
break;
|
||||
case BitmapSuccess:
|
||||
XFreePixmap(dpy, bitmap);
|
||||
wm_backend->pixmap_free((unsigned long)bitmap);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -2537,7 +2537,7 @@ static int setIconTile(WScreen * scr, WDefaultEntry * entry, void *tdata, void *
|
|||
if (scr->icon_tile) {
|
||||
reset = 1;
|
||||
RReleaseImage(scr->icon_tile);
|
||||
XFreePixmap(dpy, scr->icon_tile_pixmap);
|
||||
wm_backend->pixmap_free((unsigned long)scr->icon_tile_pixmap);
|
||||
}
|
||||
|
||||
scr->icon_tile = img;
|
||||
|
|
|
|||
16
src/dialog.c
16
src/dialog.c
|
|
@ -102,7 +102,7 @@ int wMessageDialog(WScreen *scr, const char *title, const char *message, const c
|
|||
|
||||
WMDestroyAlertPanel(panel);
|
||||
|
||||
XDestroyWindow(dpy, parent);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)parent);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -161,7 +161,7 @@ int wExitDialog(WScreen *scr, const char *title, const char *message, const char
|
|||
|
||||
WMDestroyAlertPanel(panel);
|
||||
|
||||
XDestroyWindow(dpy, parent);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)parent);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
@ -448,7 +448,7 @@ int wAdvancedInputDialog(WScreen *scr, const char *title, const char *message, c
|
|||
pheight = WMWidgetHeight(p->panel->win);
|
||||
|
||||
parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0);
|
||||
XSelectInput(dpy, parent, KeyPressMask | KeyReleaseMask);
|
||||
wm_backend->window_select_events((WNativeWindow)parent, KeyPressMask | KeyReleaseMask);
|
||||
|
||||
XReparentWindow(dpy, WMWidgetXID(p->panel->win), parent, 0, 0);
|
||||
|
||||
|
|
@ -477,7 +477,7 @@ int wAdvancedInputDialog(WScreen *scr, const char *title, const char *message, c
|
|||
wfree(p);
|
||||
wfree(filename);
|
||||
|
||||
XDestroyWindow(dpy, parent);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)parent);
|
||||
|
||||
if (result == NULL)
|
||||
return False;
|
||||
|
|
@ -504,7 +504,7 @@ int wInputDialog(WScreen *scr, const char *title, const char *message, char **te
|
|||
pheight = WMWidgetHeight(panel->win);
|
||||
|
||||
parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0);
|
||||
XSelectInput(dpy, parent, KeyPressMask | KeyReleaseMask);
|
||||
wm_backend->window_select_events((WNativeWindow)parent, KeyPressMask | KeyReleaseMask);
|
||||
|
||||
XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0);
|
||||
|
||||
|
|
@ -528,7 +528,7 @@ int wInputDialog(WScreen *scr, const char *title, const char *message, char **te
|
|||
|
||||
WMDestroyInputPanel(panel);
|
||||
|
||||
XDestroyWindow(dpy, parent);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)parent);
|
||||
|
||||
if (result == NULL)
|
||||
return False;
|
||||
|
|
@ -807,7 +807,7 @@ static void drawIconProc(WMList * lPtr, int index, Drawable d, char *text, int s
|
|||
|
||||
WMReleasePixmap(pixmap);
|
||||
/* I hope it is better to do not use cache / on my box it is fast nuff */
|
||||
XFlush(dpy);
|
||||
wm_backend->event_flush();
|
||||
}
|
||||
|
||||
static void buttonCallback(void *self, void *clientData)
|
||||
|
|
@ -1127,7 +1127,7 @@ Bool wIconChooserDialog(WScreen *scr, char **file, const char *instance, const c
|
|||
|
||||
wfree(panel);
|
||||
|
||||
XDestroyWindow(dpy, parent);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)parent);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
|
|
|||
64
src/dock.c
64
src/dock.c
|
|
@ -474,9 +474,9 @@ static void removeIcons(WMArray *icons, WDock *dock)
|
|||
/* XXX: can: aicon->icon == NULL ? */
|
||||
PlaceIcon(dock->screen_ptr, &aicon->x_pos, &aicon->y_pos,
|
||||
wGetHeadForWindow(aicon->icon->owner));
|
||||
XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos);
|
||||
wm_backend->window_move((WNativeWindow)aicon->icon->core->window, aicon->x_pos, aicon->y_pos);
|
||||
if (!dock->mapped || dock->collapsed)
|
||||
XMapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_map((WNativeWindow)aicon->icon->core->window);
|
||||
}
|
||||
}
|
||||
WMFreeArray(icons);
|
||||
|
|
@ -670,7 +670,7 @@ static void attractIconsCallback(WMenu *menu, WMenuEntry *entry)
|
|||
}
|
||||
wDockAttachIcon(clip, aicon, x, y, update_icon);
|
||||
if (clip->collapsed || !clip->mapped)
|
||||
XUnmapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)aicon->icon->core->window);
|
||||
}
|
||||
aicon = aicon->next;
|
||||
}
|
||||
|
|
@ -878,7 +878,7 @@ static WAppIcon *mainIconCreate(WScreen *scr, int type, const char *name)
|
|||
btn->icon->core->descriptor.handle_leavenotify = clipLeaveNotify;
|
||||
btn->icon->core->descriptor.parent_type = WCLASS_DOCK_ICON;
|
||||
btn->icon->core->descriptor.parent = btn;
|
||||
XMapWindow(dpy, btn->icon->core->window);
|
||||
wm_backend->window_map((WNativeWindow)btn->icon->core->window);
|
||||
btn->x_pos = x_pos;
|
||||
btn->y_pos = 0;
|
||||
btn->docked = 1;
|
||||
|
|
@ -914,13 +914,13 @@ static void switchWSCommand(WMenu *menu, WMenuEntry *entry)
|
|||
WM_ITERATE_ARRAY(selectedIcons, btn, iter) {
|
||||
if (wDockFindFreeSlot(dest, &x, &y)) {
|
||||
wDockMoveIconBetweenDocks(src, dest, btn, x, y);
|
||||
XUnmapWindow(dpy, btn->icon->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)btn->icon->core->window);
|
||||
}
|
||||
}
|
||||
} else if (icon != scr->clip_icon) {
|
||||
if (wDockFindFreeSlot(dest, &x, &y)) {
|
||||
wDockMoveIconBetweenDocks(src, dest, icon, x, y);
|
||||
XUnmapWindow(dpy, icon->icon->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)icon->icon->core->window);
|
||||
}
|
||||
}
|
||||
WMFreeArray(selectedIcons);
|
||||
|
|
@ -1366,7 +1366,7 @@ WDock *wDockCreate(WScreen *scr, int type, const char *name)
|
|||
dock->lowered = 1;
|
||||
dock->icon_array[0] = btn;
|
||||
wRaiseFrame(btn->icon->core);
|
||||
XMoveWindow(dpy, btn->icon->core->window, btn->x_pos, btn->y_pos);
|
||||
wm_backend->window_move((WNativeWindow)btn->icon->core->window, btn->x_pos, btn->y_pos);
|
||||
|
||||
/* create dock menu */
|
||||
dock->menu = dockMenuCreate(scr, type);
|
||||
|
|
@ -1393,9 +1393,9 @@ void wDockDestroy(WDock *dock)
|
|||
/* XXX: can: aicon->icon == NULL ? */
|
||||
PlaceIcon(dock->screen_ptr, &aicon->x_pos, &aicon->y_pos,
|
||||
wGetHeadForWindow(aicon->icon->owner));
|
||||
XMoveWindow(dpy, aicon->icon->core->window, aicon->x_pos, aicon->y_pos);
|
||||
wm_backend->window_move((WNativeWindow)aicon->icon->core->window, aicon->x_pos, aicon->y_pos);
|
||||
if (!dock->mapped || dock->collapsed)
|
||||
XMapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_map((WNativeWindow)aicon->icon->core->window);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1989,7 +1989,7 @@ WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type)
|
|||
|
||||
wCoreConfigure(aicon->icon->core, aicon->x_pos, aicon->y_pos, 0, 0);
|
||||
if (!dock->collapsed)
|
||||
XMapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_map((WNativeWindow)aicon->icon->core->window);
|
||||
|
||||
wRaiseFrame(aicon->icon->core);
|
||||
|
||||
|
|
@ -2010,7 +2010,7 @@ WDock *wDockRestoreState(WScreen *scr, WMPropList *dock_state, int type)
|
|||
ChangeStackingLevel(old_top->icon->core, WMDockLevel);
|
||||
|
||||
dock->icon_array[0] = old_top;
|
||||
XMoveWindow(dpy, old_top->icon->core->window, dock->x_pos, dock->y_pos);
|
||||
wm_backend->window_move((WNativeWindow)old_top->icon->core->window, dock->x_pos, dock->y_pos);
|
||||
/* we don't need to increment dock->icon_count here because it was
|
||||
* incremented in the loop above.
|
||||
*/
|
||||
|
|
@ -3027,7 +3027,7 @@ static void moveDock(WDock *dock, int new_x, int new_y)
|
|||
if (btn) {
|
||||
btn->x_pos = new_x + btn->xindex * ICON_SIZE;
|
||||
btn->y_pos = new_y + btn->yindex * ICON_SIZE;
|
||||
XMoveWindow(dpy, btn->icon->core->window, btn->x_pos, btn->y_pos);
|
||||
wm_backend->window_move((WNativeWindow)btn->icon->core->window, btn->x_pos, btn->y_pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3046,7 +3046,7 @@ void wDockSwap(WDock *dock)
|
|||
btn = dock->icon_array[i];
|
||||
if (btn) {
|
||||
btn->x_pos = x;
|
||||
XMoveWindow(dpy, btn->icon->core->window, btn->x_pos, btn->y_pos);
|
||||
wm_backend->window_move((WNativeWindow)btn->icon->core->window, btn->x_pos, btn->y_pos);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3134,7 +3134,7 @@ void wDockHideIcons(WDock *dock)
|
|||
|
||||
for (i = 1; i < dock->max_icons; i++) {
|
||||
if (dock->icon_array[i])
|
||||
XUnmapWindow(dpy, dock->icon_array[i]->icon->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)dock->icon_array[i]->icon->core->window);
|
||||
}
|
||||
dock->mapped = 0;
|
||||
|
||||
|
|
@ -3158,7 +3158,7 @@ void wDockShowIcons(WDock *dock)
|
|||
if (!dock->collapsed) {
|
||||
for (i = 1; i < dock->max_icons; i++) {
|
||||
if (dock->icon_array[i])
|
||||
XMapWindow(dpy, dock->icon_array[i]->icon->core->window);
|
||||
wm_backend->window_map((WNativeWindow)dock->icon_array[i]->icon->core->window);
|
||||
}
|
||||
}
|
||||
dock->mapped = 1;
|
||||
|
|
@ -3297,11 +3297,11 @@ void wDockTrackWindowLaunch(WDock *dock, Window window)
|
|||
/* Should this always be lowered? -Dan */
|
||||
if (dock->lowered)
|
||||
wLowerFrame(aicon->icon->core);
|
||||
XMapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_map((WNativeWindow)aicon->icon->core->window);
|
||||
aicon->launching = 1;
|
||||
wm_backend->appicon_paint(aicon);
|
||||
slide_window(aicon->icon->core->window, x0, y0, icon->x_pos, icon->y_pos);
|
||||
XUnmapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)aicon->icon->core->window);
|
||||
wAppIconDestroy(aicon);
|
||||
}
|
||||
wDockFinishLaunch(icon);
|
||||
|
|
@ -3336,7 +3336,7 @@ void wClipUpdateForWorkspaceChange(WScreen *scr, int workspace)
|
|||
scr->workspaces[workspace]->clip,
|
||||
chain->aicon, chain->aicon->xindex, chain->aicon->yindex);
|
||||
if (scr->workspaces[workspace]->clip->collapsed)
|
||||
XUnmapWindow(dpy, chain->aicon->icon->core->window);
|
||||
wm_backend->window_unmap((WNativeWindow)chain->aicon->icon->core->window);
|
||||
chain = chain->next;
|
||||
}
|
||||
|
||||
|
|
@ -3715,7 +3715,7 @@ static void handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event)
|
|||
Window wins[2];
|
||||
wins[0] = icon->core->window;
|
||||
wins[1] = scr->dock_shadow;
|
||||
XRestackWindows(dpy, wins, 2);
|
||||
wm_backend->stacking_restack((WNativeWindow *)wins, 2);
|
||||
XMoveResizeWindow(dpy, scr->dock_shadow, aicon->x_pos, aicon->y_pos,
|
||||
ICON_SIZE, ICON_SIZE);
|
||||
if (superfluous) {
|
||||
|
|
@ -3724,10 +3724,10 @@ static void handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event)
|
|||
else
|
||||
ghost = MakeGhostIcon(scr, icon->core->window);
|
||||
|
||||
XSetWindowBackgroundPixmap(dpy, scr->dock_shadow, ghost);
|
||||
XClearWindow(dpy, scr->dock_shadow);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)scr->dock_shadow, (unsigned long)ghost);
|
||||
wm_backend->window_clear((WNativeWindow)scr->dock_shadow);
|
||||
}
|
||||
XMapWindow(dpy, scr->dock_shadow);
|
||||
wm_backend->window_map((WNativeWindow)scr->dock_shadow);
|
||||
}
|
||||
|
||||
previously_on_right = now_on_right = dock->on_right_side;
|
||||
|
|
@ -3851,7 +3851,7 @@ static void handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event)
|
|||
if (snapped) {
|
||||
shad_x = real_dock->x_pos + ix * wPreferences.icon_size;
|
||||
shad_y = real_dock->y_pos + iy * wPreferences.icon_size;
|
||||
XMoveWindow(dpy, scr->dock_shadow, shad_x, shad_y);
|
||||
wm_backend->window_move((WNativeWindow)scr->dock_shadow, shad_x, shad_y);
|
||||
}
|
||||
moveDock(dock, x, y);
|
||||
break;
|
||||
|
|
@ -3865,7 +3865,7 @@ static void handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event)
|
|||
case WME_BUTTON_RELEASE:
|
||||
if (ev.u.button.button != event->xbutton.button)
|
||||
break;
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
wm_backend->pointer_ungrab(0);
|
||||
if (dock->type == WM_DRAWER) {
|
||||
Window wins[dock->icon_count];
|
||||
int offset_index;
|
||||
|
|
@ -3892,9 +3892,9 @@ static void handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event)
|
|||
y,
|
||||
(dock->on_right_side ? shad_x - (dock->icon_count - 1) * ICON_SIZE : shad_x),
|
||||
shad_y);
|
||||
XUnmapWindow(dpy, scr->dock_shadow);
|
||||
wm_backend->window_unmap((WNativeWindow)scr->dock_shadow);
|
||||
moveDock(dock, shad_x, shad_y);
|
||||
XResizeWindow(dpy, scr->dock_shadow, ICON_SIZE, ICON_SIZE);
|
||||
wm_backend->window_resize((WNativeWindow)scr->dock_shadow, ICON_SIZE, ICON_SIZE);
|
||||
}
|
||||
done = 1;
|
||||
break;
|
||||
|
|
@ -3902,8 +3902,8 @@ static void handleDockMove(WDock *dock, WAppIcon *aicon, XEvent *event)
|
|||
}
|
||||
if (superfluous) {
|
||||
if (ghost != None)
|
||||
XFreePixmap(dpy, ghost);
|
||||
XSetWindowBackground(dpy, scr->dock_shadow, scr->white_pixel);
|
||||
wm_backend->pixmap_free((unsigned long)ghost);
|
||||
wm_backend->window_set_background((WNativeWindow)scr->dock_shadow, scr->white_pixel);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -4476,8 +4476,8 @@ static void drawerDestroy(WDock *drawer)
|
|||
|
||||
wDockMoveIconBetweenDocks(drawer, scr->dock, aicon,
|
||||
0, (drawer->y_pos - scr->dock->y_pos) / ICON_SIZE);
|
||||
XMoveWindow(dpy, aicon->icon->core->window, drawer->x_pos, drawer->y_pos);
|
||||
XMapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_move((WNativeWindow)aicon->icon->core->window, drawer->x_pos, drawer->y_pos);
|
||||
wm_backend->window_map((WNativeWindow)aicon->icon->core->window);
|
||||
} else if (drawer->icon_count > 2) {
|
||||
icons = WMCreateArray(drawer->icon_count - 1);
|
||||
for (i = 1; i < drawer->max_icons; i++) {
|
||||
|
|
@ -4625,7 +4625,7 @@ static void swapDrawer(WDock *drawer, int new_x)
|
|||
wIconUpdate(ai->icon);
|
||||
wDrawerIconPaint(ai);
|
||||
}
|
||||
XMoveWindow(dpy, ai->icon->core->window, ai->x_pos, ai->y_pos);
|
||||
wm_backend->window_move((WNativeWindow)ai->icon->core->window, ai->x_pos, ai->y_pos);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -4940,7 +4940,7 @@ static WDock * drawerRestoreState(WScreen *scr, WMPropList *drawer_state)
|
|||
wCoreConfigure(aicon->icon->core, aicon->x_pos, aicon->y_pos, 0, 0);
|
||||
|
||||
if (!drawer->collapsed)
|
||||
XMapWindow(dpy, aicon->icon->core->window);
|
||||
wm_backend->window_map((WNativeWindow)aicon->icon->core->window);
|
||||
wRaiseFrame(aicon->icon->core);
|
||||
|
||||
drawer->icon_count++;
|
||||
|
|
|
|||
|
|
@ -380,7 +380,7 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||
updateSettingsPanelIcon(panel);
|
||||
|
||||
parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, pwidth, pheight, 0, 0, 0);
|
||||
XSelectInput(dpy, parent, KeyPressMask | KeyReleaseMask);
|
||||
wm_backend->window_select_events((WNativeWindow)parent, KeyPressMask | KeyReleaseMask);
|
||||
|
||||
XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0);
|
||||
|
||||
|
|
@ -421,7 +421,7 @@ void ShowDockAppSettingsPanel(WAppIcon * aicon)
|
|||
void DestroyDockAppSettingsPanel(AppSettingsPanel * panel)
|
||||
{
|
||||
if (!panel->destroyed) {
|
||||
XUnmapWindow(dpy, panel->wwin->client_win);
|
||||
wm_backend->window_unmap((WNativeWindow)panel->wwin->client_win);
|
||||
XReparentWindow(dpy, panel->wwin->client_win, panel->wwin->screen_ptr->root_win, 0, 0);
|
||||
wUnmanageWindow(panel->wwin, False, False);
|
||||
}
|
||||
|
|
@ -439,7 +439,7 @@ void DestroyDockAppSettingsPanel(AppSettingsPanel * panel)
|
|||
|
||||
WMDestroyWidget(panel->win);
|
||||
|
||||
XDestroyWindow(dpy, panel->parent);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)panel->parent);
|
||||
|
||||
panel->editedIcon->panel = NULL;
|
||||
|
||||
|
|
|
|||
30
src/event.c
30
src/event.c
|
|
@ -667,9 +667,9 @@ static void handleDestroyNotify(WMEvent * event)
|
|||
if (fPtr->retainCount > 0) {
|
||||
fPtr->retainCount--;
|
||||
if (fPtr->retainCount == 0 && fPtr->leader != None) {
|
||||
XDestroyWindow(dpy, fPtr->leader);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)fPtr->leader);
|
||||
fPtr->leader = None;
|
||||
XFlush(dpy);
|
||||
wm_backend->event_flush();
|
||||
}
|
||||
}
|
||||
fPtr->origLeader = None;
|
||||
|
|
@ -837,7 +837,7 @@ static void handleButtonPress(WMEvent * event)
|
|||
return;
|
||||
|
||||
if (desc->parent_type == WCLASS_WINDOW) {
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
|
||||
if (event->u.button.state & ( MOD_MASK | ControlMask )) {
|
||||
XAllowEvents(dpy, AsyncPointer, CurrentTime);
|
||||
|
|
@ -849,13 +849,13 @@ static void handleButtonPress(WMEvent * event)
|
|||
XAllowEvents(dpy, ReplayPointer, CurrentTime);
|
||||
/* } */
|
||||
}
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
} else if (desc->parent_type == WCLASS_APPICON
|
||||
|| desc->parent_type == WCLASS_MINIWINDOW || desc->parent_type == WCLASS_DOCK_ICON) {
|
||||
if (event->u.button.state & MOD_MASK) {
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
XAllowEvents(dpy, AsyncPointer, CurrentTime);
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -882,10 +882,10 @@ static void handleMapNotify(WMEvent * event)
|
|||
if (wwin->flags.miniaturized) {
|
||||
wDeiconifyWindow(wwin);
|
||||
} else {
|
||||
XGrabServer(dpy);
|
||||
wm_backend->server_grab();
|
||||
wWindowMap(wwin);
|
||||
wClientSetState(wwin, NormalState, None);
|
||||
XUngrabServer(dpy);
|
||||
wm_backend->server_ungrab();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -917,10 +917,10 @@ static void handleUnmapNotify(WMEvent * event)
|
|||
&& !wwin->flags.miniaturized && !wwin->flags.hidden)
|
||||
return;
|
||||
|
||||
XGrabServer(dpy);
|
||||
XUnmapWindow(dpy, wwin->frame->core->window);
|
||||
wm_backend->server_grab();
|
||||
wm_backend->window_unmap((WNativeWindow)wwin->frame->core->window);
|
||||
wwin->flags.mapped = 0;
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
/* check if the window was destroyed */
|
||||
if (XCheckTypedWindowEvent(dpy, wwin->client_win, DestroyNotify, &ev)) {
|
||||
WMEvent wev;
|
||||
|
|
@ -941,7 +941,7 @@ static void handleUnmapNotify(WMEvent * event)
|
|||
* root window */
|
||||
wUnmanageWindow(wwin, !reparented, False);
|
||||
}
|
||||
XUngrabServer(dpy);
|
||||
wm_backend->server_ungrab();
|
||||
}
|
||||
|
||||
static void handleConfigureRequest(WMEvent * event)
|
||||
|
|
@ -1139,7 +1139,7 @@ static void raiseWindow(WScreen * scr)
|
|||
if (!wwin->flags.destroyed && wwin->flags.focused) {
|
||||
wRaiseFrame(wwin->frame->core);
|
||||
/* this is needed or a race condition will occur */
|
||||
XSync(dpy, False);
|
||||
wm_backend->event_sync(False);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1866,10 +1866,10 @@ static void handleKeyPress(WMEvent * event)
|
|||
}
|
||||
|
||||
wSelectWindow(wwin, !wwin->flags.selected);
|
||||
XFlush(dpy);
|
||||
wm_backend->event_flush();
|
||||
wusleep(3000);
|
||||
wSelectWindow(wwin, !wwin->flags.selected);
|
||||
XFlush(dpy);
|
||||
wm_backend->event_flush();
|
||||
|
||||
} else if (scr->selected_windows && WMGetArrayItemCount(scr->selected_windows)) {
|
||||
|
||||
|
|
|
|||
|
|
@ -475,7 +475,7 @@ void wFrameWindowChangeState(WFrameWindow * fwin, int state)
|
|||
if (fwin->border_pixel)
|
||||
wm_backend->window_set_border(fwin->core->window, *fwin->border_pixel);
|
||||
}
|
||||
wFrameWindowPaint(fwin);
|
||||
wm_backend->frame_paint(fwin);
|
||||
}
|
||||
|
||||
static void updateTitlebar(WFrameWindow * fwin)
|
||||
|
|
@ -550,17 +550,17 @@ static void updateTitlebar(WFrameWindow * fwin)
|
|||
void wFrameWindowHideButton(WFrameWindow * fwin, int flags)
|
||||
{
|
||||
if ((flags & WFF_RIGHT_BUTTON) && fwin->right_button) {
|
||||
if (dpy && fwin->right_button->window) XUnmapWindow(dpy, fwin->right_button->window);
|
||||
if (fwin->right_button->window) wm_backend->window_unmap((WNativeWindow)fwin->right_button->window);
|
||||
fwin->flags.hide_right_button = 1;
|
||||
}
|
||||
|
||||
if ((flags & WFF_LEFT_BUTTON) && fwin->left_button) {
|
||||
if (dpy && fwin->left_button->window) XUnmapWindow(dpy, fwin->left_button->window);
|
||||
if (fwin->left_button->window) wm_backend->window_unmap((WNativeWindow)fwin->left_button->window);
|
||||
fwin->flags.hide_left_button = 1;
|
||||
}
|
||||
#ifdef XKB_BUTTON_HINT
|
||||
if ((flags & WFF_LANGUAGE_BUTTON) && fwin->language_button) {
|
||||
if (dpy && fwin->language_button->window) XUnmapWindow(dpy, fwin->language_button->window);
|
||||
if (fwin->language_button->window) wm_backend->window_unmap((WNativeWindow)fwin->language_button->window);
|
||||
fwin->flags.hide_language_button = 1;
|
||||
}
|
||||
#endif
|
||||
|
|
@ -572,8 +572,8 @@ void wFrameWindowHideButton(WFrameWindow * fwin, int flags)
|
|||
#ifdef XKB_BUTTON_HINT
|
||||
updateTitlebar(fwin);
|
||||
#else
|
||||
if (dpy && fwin->titlebar->window) XClearWindow(dpy, fwin->titlebar->window);
|
||||
wFrameWindowPaint(fwin);
|
||||
if (fwin->titlebar->window) wm_backend->window_clear((WNativeWindow)fwin->titlebar->window);
|
||||
wm_backend->frame_paint(fwin);
|
||||
#endif
|
||||
}
|
||||
checkTitleSize(fwin);
|
||||
|
|
@ -584,16 +584,16 @@ void wFrameWindowShowButton(WFrameWindow * fwin, int flags)
|
|||
{
|
||||
if ((flags & WFF_RIGHT_BUTTON) && fwin->right_button && fwin->flags.hide_right_button) {
|
||||
|
||||
if (!fwin->flags.rbutton_dont_fit && dpy && fwin->right_button->window)
|
||||
XMapWindow(dpy, fwin->right_button->window);
|
||||
if (!fwin->flags.rbutton_dont_fit && fwin->right_button->window)
|
||||
wm_backend->window_map((WNativeWindow)fwin->right_button->window);
|
||||
|
||||
fwin->flags.hide_right_button = 0;
|
||||
}
|
||||
#ifdef XKB_BUTTON_HINT
|
||||
if ((flags & WFF_LANGUAGE_BUTTON) && fwin->language_button && fwin->flags.hide_language_button) {
|
||||
|
||||
if (!fwin->flags.languagebutton_dont_fit && dpy && fwin->language_button->window)
|
||||
XMapWindow(dpy, fwin->language_button->window);
|
||||
if (!fwin->flags.languagebutton_dont_fit && fwin->language_button->window)
|
||||
wm_backend->window_map((WNativeWindow)fwin->language_button->window);
|
||||
|
||||
fwin->flags.hide_language_button = 0;
|
||||
}
|
||||
|
|
@ -601,8 +601,8 @@ void wFrameWindowShowButton(WFrameWindow * fwin, int flags)
|
|||
|
||||
if ((flags & WFF_LEFT_BUTTON) && fwin->left_button && fwin->flags.hide_left_button) {
|
||||
|
||||
if (!fwin->flags.lbutton_dont_fit && dpy && fwin->left_button->window)
|
||||
XMapWindow(dpy, fwin->left_button->window);
|
||||
if (!fwin->flags.lbutton_dont_fit && fwin->left_button->window)
|
||||
wm_backend->window_map((WNativeWindow)fwin->left_button->window);
|
||||
|
||||
fwin->flags.hide_left_button = 0;
|
||||
}
|
||||
|
|
@ -611,8 +611,8 @@ void wFrameWindowShowButton(WFrameWindow * fwin, int flags)
|
|||
if (wPreferences.new_style == TS_NEW) {
|
||||
updateTitlebar(fwin);
|
||||
} else {
|
||||
if (dpy && fwin->titlebar->window) XClearWindow(dpy, fwin->titlebar->window);
|
||||
wFrameWindowPaint(fwin);
|
||||
if (fwin->titlebar->window) wm_backend->window_clear((WNativeWindow)fwin->titlebar->window);
|
||||
wm_backend->frame_paint(fwin);
|
||||
}
|
||||
checkTitleSize(fwin);
|
||||
}
|
||||
|
|
@ -863,10 +863,6 @@ void wFrameWindowPaint(WFrameWindow * fwin)
|
|||
WScreen *scr = fwin->screen_ptr;
|
||||
int state;
|
||||
|
||||
/* Let the backend handle painting if it can (Wayland: pixman rendering). */
|
||||
if (wm_backend->frame_paint && wm_backend->frame_paint(fwin))
|
||||
return;
|
||||
|
||||
state = fwin->flags.state;
|
||||
|
||||
if (fwin->flags.is_client_window_frame)
|
||||
|
|
@ -906,7 +902,7 @@ void wFrameWindowPaint(WFrameWindow * fwin)
|
|||
fwin->titlebar->height, (WTexSolid *) fwin->title_texture[state], WREL_RAISED);
|
||||
}
|
||||
|
||||
if (dpy && fwin->resizebar && fwin->resizebar->window
|
||||
if (fwin->resizebar && fwin->resizebar->window
|
||||
&& !fwin->flags.repaint_only_titlebar
|
||||
&& fwin->resizebar_texture[0]->any.type == WTEX_SOLID) {
|
||||
Window win;
|
||||
|
|
@ -969,7 +965,7 @@ void wFrameWindowPaint(WFrameWindow * fwin)
|
|||
fwin->languagebutton_image = scr->b_pixmaps[WBUT_XKBGROUP1 + fwin->languagemode];
|
||||
#endif
|
||||
|
||||
if (dpy && fwin->title && fwin->titlebar->window) {
|
||||
if (fwin->title && fwin->titlebar->window) {
|
||||
Drawable buf;
|
||||
char *title;
|
||||
|
||||
|
|
@ -1028,7 +1024,7 @@ void wFrameWindowPaint(WFrameWindow * fwin)
|
|||
|
||||
XCopyArea(dpy, buf, fwin->titlebar->window, scr->copy_gc, 0, 0, w + 2, h, x - 1, y);
|
||||
|
||||
XFreePixmap(dpy, buf);
|
||||
wm_backend->pixmap_free((unsigned long)buf);
|
||||
|
||||
wfree(title);
|
||||
}
|
||||
|
|
@ -1049,11 +1045,11 @@ static void reconfigure(WFrameWindow * fwin, int x, int y, int width, int height
|
|||
int k = (wPreferences.new_style == TS_NEW ? 4 : 3);
|
||||
int resizedHorizontally = 0;
|
||||
|
||||
if (dpy && fwin->core->window) {
|
||||
if (fwin->core->window) {
|
||||
if (dontMove)
|
||||
XResizeWindow(dpy, fwin->core->window, width, height);
|
||||
wm_backend->window_resize((WNativeWindow)fwin->core->window, width, height);
|
||||
else
|
||||
XMoveResizeWindow(dpy, fwin->core->window, x, y, width, height);
|
||||
wm_backend->frame_configure((WNativeWindow)fwin->core->window, x, y, width, height);
|
||||
}
|
||||
|
||||
if (fwin->core->width != width) {
|
||||
|
|
@ -1070,13 +1066,13 @@ static void reconfigure(WFrameWindow * fwin, int x, int y, int width, int height
|
|||
*/
|
||||
if (fwin->left_button) {
|
||||
if (width < fwin->top_width * k && !fwin->flags.lbutton_dont_fit) {
|
||||
if (!fwin->flags.hide_left_button && dpy && fwin->left_button->window)
|
||||
XUnmapWindow(dpy, fwin->left_button->window);
|
||||
if (!fwin->flags.hide_left_button && fwin->left_button->window)
|
||||
wm_backend->window_unmap((WNativeWindow)fwin->left_button->window);
|
||||
|
||||
fwin->flags.lbutton_dont_fit = 1;
|
||||
} else if (width >= fwin->top_width * k && fwin->flags.lbutton_dont_fit) {
|
||||
if (!fwin->flags.hide_left_button && dpy && fwin->left_button->window)
|
||||
XMapWindow(dpy, fwin->left_button->window);
|
||||
if (!fwin->flags.hide_left_button && fwin->left_button->window)
|
||||
wm_backend->window_map((WNativeWindow)fwin->left_button->window);
|
||||
|
||||
fwin->flags.lbutton_dont_fit = 0;
|
||||
}
|
||||
|
|
@ -1084,13 +1080,13 @@ static void reconfigure(WFrameWindow * fwin, int x, int y, int width, int height
|
|||
#ifdef XKB_BUTTON_HINT
|
||||
if (fwin->language_button) {
|
||||
if (width < fwin->top_width * k && !fwin->flags.languagebutton_dont_fit) {
|
||||
if (!fwin->flags.hide_language_button && dpy && fwin->language_button->window)
|
||||
XUnmapWindow(dpy, fwin->language_button->window);
|
||||
if (!fwin->flags.hide_language_button && fwin->language_button->window)
|
||||
wm_backend->window_unmap((WNativeWindow)fwin->language_button->window);
|
||||
|
||||
fwin->flags.languagebutton_dont_fit = 1;
|
||||
} else if (width >= fwin->top_width * k && fwin->flags.languagebutton_dont_fit) {
|
||||
if (!fwin->flags.hide_language_button && dpy && fwin->language_button->window)
|
||||
XMapWindow(dpy, fwin->language_button->window);
|
||||
if (!fwin->flags.hide_language_button && fwin->language_button->window)
|
||||
wm_backend->window_map((WNativeWindow)fwin->language_button->window);
|
||||
|
||||
fwin->flags.languagebutton_dont_fit = 0;
|
||||
}
|
||||
|
|
@ -1099,13 +1095,13 @@ static void reconfigure(WFrameWindow * fwin, int x, int y, int width, int height
|
|||
|
||||
if (fwin->right_button) {
|
||||
if (width < fwin->top_width * 2 && !fwin->flags.rbutton_dont_fit) {
|
||||
if (!fwin->flags.hide_right_button && dpy && fwin->right_button->window)
|
||||
XUnmapWindow(dpy, fwin->right_button->window);
|
||||
if (!fwin->flags.hide_right_button && fwin->right_button->window)
|
||||
wm_backend->window_unmap((WNativeWindow)fwin->right_button->window);
|
||||
|
||||
fwin->flags.rbutton_dont_fit = 1;
|
||||
} else if (width >= fwin->top_width * 2 && fwin->flags.rbutton_dont_fit) {
|
||||
if (!fwin->flags.hide_right_button && dpy && fwin->right_button->window)
|
||||
XMapWindow(dpy, fwin->right_button->window);
|
||||
if (!fwin->flags.hide_right_button && fwin->right_button->window)
|
||||
wm_backend->window_map((WNativeWindow)fwin->right_button->window);
|
||||
|
||||
fwin->flags.rbutton_dont_fit = 0;
|
||||
}
|
||||
|
|
@ -1165,7 +1161,7 @@ int wFrameWindowChangeTitle(WFrameWindow *fwin, const char *new_title)
|
|||
if (fwin->titlebar) {
|
||||
wm_backend->window_clear(fwin->titlebar->window);
|
||||
|
||||
wFrameWindowPaint(fwin);
|
||||
wm_backend->frame_paint(fwin);
|
||||
}
|
||||
checkTitleSize(fwin);
|
||||
|
||||
|
|
@ -1190,7 +1186,7 @@ static void handleExpose(WObjDescriptor * desc, WBackendEvent * event)
|
|||
fwin->flags.repaint_only_titlebar = 1;
|
||||
if (fwin->resizebar && fwin->resizebar->window == event->u.expose.window)
|
||||
fwin->flags.repaint_only_resizebar = 1;
|
||||
wFrameWindowPaint(fwin);
|
||||
wm_backend->frame_paint(fwin);
|
||||
fwin->flags.repaint_only_titlebar = 0;
|
||||
fwin->flags.repaint_only_resizebar = 0;
|
||||
}
|
||||
|
|
|
|||
36
src/icon.c
36
src/icon.c
|
|
@ -214,17 +214,17 @@ void wIconDestroy(WIcon *icon)
|
|||
x = icon->owner->icon_x;
|
||||
y = icon->owner->icon_y;
|
||||
}
|
||||
XUnmapWindow(dpy, icon->icon_win);
|
||||
XReparentWindow(dpy, icon->icon_win, scr->root_win, x, y);
|
||||
wm_backend->window_unmap((WNativeWindow)icon->icon_win);
|
||||
wm_backend->client_reparent((WNativeWindow)icon->icon_win, (WNativeWindow)scr->root_win, x, y);
|
||||
}
|
||||
if (icon->icon_name)
|
||||
XFree(icon->icon_name);
|
||||
|
||||
if (icon->pixmap && dpy)
|
||||
XFreePixmap(dpy, icon->pixmap);
|
||||
if (icon->pixmap)
|
||||
wm_backend->pixmap_free((unsigned long)icon->pixmap);
|
||||
|
||||
if (icon->mini_preview && dpy)
|
||||
XFreePixmap(dpy, icon->mini_preview);
|
||||
if (icon->mini_preview)
|
||||
wm_backend->pixmap_free((unsigned long)icon->mini_preview);
|
||||
|
||||
unset_icon_image(icon);
|
||||
|
||||
|
|
@ -621,8 +621,8 @@ void set_icon_minipreview(WIcon *icon, RImage *image)
|
|||
wPreferences.minipreview_size - 2 * MINIPREVIEW_BORDER);
|
||||
|
||||
if (RConvertImage(scr->rcontext, scaled_mini_preview, &tmp)) {
|
||||
if (icon->mini_preview != None && dpy)
|
||||
XFreePixmap(dpy, icon->mini_preview);
|
||||
if (icon->mini_preview != None)
|
||||
wm_backend->pixmap_free((unsigned long)icon->mini_preview);
|
||||
icon->mini_preview = tmp;
|
||||
}
|
||||
RReleaseImage(scaled_mini_preview);
|
||||
|
|
@ -662,7 +662,7 @@ void update_icon_pixmap(WIcon *icon)
|
|||
{
|
||||
|
||||
if (icon->pixmap != None)
|
||||
XFreePixmap(dpy, icon->pixmap);
|
||||
wm_backend->pixmap_free((unsigned long)icon->pixmap);
|
||||
|
||||
icon->pixmap = None;
|
||||
|
||||
|
|
@ -679,7 +679,7 @@ void update_icon_pixmap(WIcon *icon)
|
|||
|
||||
/* No pixmap, set default background */
|
||||
if (icon->pixmap != None)
|
||||
XSetWindowBackgroundPixmap(dpy, icon->core->window, icon->pixmap);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)icon->core->window, (unsigned long)icon->pixmap);
|
||||
|
||||
/* Paint it */
|
||||
wIconPaint(icon);
|
||||
|
|
@ -746,10 +746,10 @@ static void set_dockapp_in_icon(WIcon *icon)
|
|||
getSize(icon->icon_win, &w, &h, &d);
|
||||
|
||||
/* Set the background pixmap */
|
||||
XSetWindowBackgroundPixmap(dpy, icon->core->window, scr->icon_tile_pixmap);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)icon->core->window, (unsigned long)scr->icon_tile_pixmap);
|
||||
|
||||
/* Set the icon border */
|
||||
XSetWindowBorderWidth(dpy, icon->icon_win, 0);
|
||||
wm_backend->window_set_border_width((WNativeWindow)icon->icon_win, 0);
|
||||
|
||||
/* Put the dock application in the icon */
|
||||
XReparentWindow(dpy, icon->icon_win, icon->core->window,
|
||||
|
|
@ -757,8 +757,8 @@ static void set_dockapp_in_icon(WIcon *icon)
|
|||
(wPreferences.icon_size - h) / 2);
|
||||
|
||||
/* Show it and save */
|
||||
XMapWindow(dpy, icon->icon_win);
|
||||
XAddToSaveSet(dpy, icon->icon_win);
|
||||
wm_backend->window_map((WNativeWindow)icon->icon_win);
|
||||
wm_backend->client_add_to_save_set((WNativeWindow)icon->icon_win);
|
||||
|
||||
/* Needed to move the icon clicking on the application part */
|
||||
if ((XGetWindowAttributes(dpy, icon->icon_win, &attr)) &&
|
||||
|
|
@ -830,7 +830,7 @@ void wIconPaint(WIcon *icon)
|
|||
|
||||
WScreen *scr = icon->core->screen_ptr;
|
||||
|
||||
XClearWindow(dpy, icon->core->window);
|
||||
wm_backend->window_clear((WNativeWindow)icon->core->window);
|
||||
|
||||
update_icon_title(icon);
|
||||
|
||||
|
|
@ -930,7 +930,7 @@ static void miniwindowMouseDown(WObjDescriptor *desc, WBackendEvent *event)
|
|||
}
|
||||
x = ev.u.motion.x_root - dx;
|
||||
y = ev.u.motion.y_root - dy;
|
||||
XMoveWindow(dpy, icon->core->window, x, y);
|
||||
wm_backend->window_move((WNativeWindow)icon->core->window, x, y);
|
||||
break;
|
||||
|
||||
case WME_BUTTON_PRESS:
|
||||
|
|
@ -943,11 +943,11 @@ static void miniwindowMouseDown(WObjDescriptor *desc, WBackendEvent *event)
|
|||
if (wwin->icon_x != x || wwin->icon_y != y)
|
||||
wwin->flags.icon_moved = 1;
|
||||
|
||||
XMoveWindow(dpy, icon->core->window, x, y);
|
||||
wm_backend->window_move((WNativeWindow)icon->core->window, x, y);
|
||||
|
||||
wwin->icon_x = x;
|
||||
wwin->icon_y = y;
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
wm_backend->pointer_ungrab(0);
|
||||
|
||||
if (wPreferences.auto_arrange_icons)
|
||||
wArrangeIcons(wwin->screen_ptr, True);
|
||||
|
|
|
|||
|
|
@ -779,12 +779,12 @@ static int real_main(int argc, char **argv)
|
|||
|
||||
/* open display */
|
||||
dpy = (Display *)wm_backend->display_open(DisplayName);
|
||||
if (dpy == NULL && wm_backend == &x11_backend) {
|
||||
if (!wm_backend->is_wayland && dpy == NULL) {
|
||||
wfatal(_("could not open display \"%s\""), XDisplayName(DisplayName));
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (dpy != NULL) {
|
||||
if (!wm_backend->is_wayland) {
|
||||
if (getWVisualID(0) < 0) {
|
||||
/*
|
||||
* If unspecified, use default visual instead of waiting
|
||||
|
|
|
|||
66
src/menu.c
66
src/menu.c
|
|
@ -107,7 +107,7 @@ static void appearanceObserver(void *self, WMNotification * notif)
|
|||
menu->frame->flags.need_texture_remake = 1;
|
||||
}
|
||||
if (flags & (WColorSettings | WTextureSettings)) {
|
||||
wFrameWindowPaint(menu->frame);
|
||||
wm_backend->frame_paint(menu->frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -200,12 +200,12 @@ WMenu *wMenuCreate(WScreen *screen, const char *title, int main_menu)
|
|||
menu->menu_texture_data = None;
|
||||
|
||||
wwarning("menu: wMenuCreate XMapWindow win=0x%lx", (unsigned long)menu->menu->window);
|
||||
if (dpy && menu->menu->window)
|
||||
XMapWindow(dpy, menu->menu->window);
|
||||
if (menu->menu->window)
|
||||
wm_backend->window_map((WNativeWindow)menu->menu->window);
|
||||
wwarning("menu: wMenuCreate XMapWindow done");
|
||||
|
||||
if (dpy && menu->menu->window)
|
||||
XFlush(dpy);
|
||||
if (menu->menu->window)
|
||||
wm_backend->event_flush();
|
||||
wwarning("menu: wMenuCreate XFlush done");
|
||||
|
||||
if (!brother) {
|
||||
|
|
@ -453,15 +453,15 @@ static void updateTexture(WMenu * menu)
|
|||
|
||||
menu->menu_texture_data = renderTexture(menu);
|
||||
|
||||
XSetWindowBackgroundPixmap(dpy, menu->menu->window, menu->menu_texture_data);
|
||||
XClearWindow(dpy, menu->menu->window);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)menu->menu->window, (unsigned long)menu->menu_texture_data);
|
||||
wm_backend->window_clear((WNativeWindow)menu->menu->window);
|
||||
|
||||
XSetWindowBackgroundPixmap(dpy, menu->brother->menu->window, menu->menu_texture_data);
|
||||
XClearWindow(dpy, menu->brother->menu->window);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)menu->brother->menu->window, (unsigned long)menu->menu_texture_data);
|
||||
wm_backend->window_clear((WNativeWindow)menu->brother->menu->window);
|
||||
}
|
||||
} else {
|
||||
XSetWindowBackground(dpy, menu->menu->window, scr->menu_item_texture->any.color.pixel);
|
||||
XClearWindow(dpy, menu->menu->window);
|
||||
wm_backend->window_set_background((WNativeWindow)menu->menu->window, scr->menu_item_texture->any.color.pixel);
|
||||
wm_backend->window_clear((WNativeWindow)menu->menu->window);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -917,7 +917,7 @@ static int keyboardMenu(WMenu * menu)
|
|||
if (menu->flags.editing)
|
||||
return False;
|
||||
|
||||
XGrabKeyboard(dpy, menu->frame->core->window, True, GrabModeAsync, GrabModeAsync, CurrentTime);
|
||||
wm_backend->keyboard_grab((WNativeWindow)menu->frame->core->window);
|
||||
|
||||
if (menu->frame_y + menu->frame->top_width >= rect.pos.y + rect.size.height)
|
||||
new_y = rect.pos.y + rect.size.height - menu->frame->top_width;
|
||||
|
|
@ -1003,7 +1003,7 @@ static int keyboardMenu(WMenu * menu)
|
|||
if (entry->cascade >= 0 && menu->cascades
|
||||
&& menu->cascades[entry->cascade]->entry_no > 0) {
|
||||
|
||||
XUngrabKeyboard(dpy, CurrentTime);
|
||||
wm_backend->keyboard_ungrab();
|
||||
|
||||
selectEntry(menu->cascades[entry->cascade], 0);
|
||||
if (!keyboardMenu(menu->cascades[entry->cascade]))
|
||||
|
|
@ -1046,7 +1046,7 @@ static int keyboardMenu(WMenu * menu)
|
|||
}
|
||||
}
|
||||
|
||||
XUngrabKeyboard(dpy, CurrentTime);
|
||||
wm_backend->keyboard_ungrab();
|
||||
|
||||
if (done == 2 && menu->selected_entry >= 0) {
|
||||
entry = menu->entries[menu->selected_entry];
|
||||
|
|
@ -1061,10 +1061,10 @@ static int keyboardMenu(WMenu * menu)
|
|||
|
||||
for (i = 0; i < MENU_BLINK_COUNT; i++) {
|
||||
paintEntry(menu, sel, False);
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
wusleep(MENU_BLINK_DELAY);
|
||||
paintEntry(menu, sel, True);
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
wusleep(MENU_BLINK_DELAY);
|
||||
}
|
||||
#endif
|
||||
|
|
@ -1112,12 +1112,12 @@ void wMenuMapAt(WMenu * menu, int x, int y, int keyboard)
|
|||
y = rect.pos.y + rect.size.height - MENUH(menu);
|
||||
}
|
||||
|
||||
if (dpy && menu->frame->core->window)
|
||||
XMoveWindow(dpy, menu->frame->core->window, x, y);
|
||||
if (menu->frame->core->window)
|
||||
wm_backend->window_move((WNativeWindow)menu->frame->core->window, x, y);
|
||||
menu->frame_x = x;
|
||||
menu->frame_y = y;
|
||||
if (dpy && menu->frame->core->window)
|
||||
XMapWindow(dpy, menu->frame->core->window);
|
||||
if (menu->frame->core->window)
|
||||
wm_backend->window_map((WNativeWindow)menu->frame->core->window);
|
||||
wRaiseFrame(menu->frame->core);
|
||||
menu->flags.mapped = 1;
|
||||
} else {
|
||||
|
|
@ -1137,11 +1137,11 @@ void wMenuMap(WMenu * menu)
|
|||
if (menu->flags.app_menu && menu->parent == NULL) {
|
||||
menu->frame_x = menu->frame->screen_ptr->app_menu_x;
|
||||
menu->frame_y = menu->frame->screen_ptr->app_menu_y;
|
||||
if (dpy && menu->frame->core->window)
|
||||
XMoveWindow(dpy, menu->frame->core->window, menu->frame_x, menu->frame_y);
|
||||
if (menu->frame->core->window)
|
||||
wm_backend->window_move((WNativeWindow)menu->frame->core->window, menu->frame_x, menu->frame_y);
|
||||
}
|
||||
if (dpy && menu->frame->core->window)
|
||||
XMapWindow(dpy, menu->frame->core->window);
|
||||
if (menu->frame->core->window)
|
||||
wm_backend->window_map((WNativeWindow)menu->frame->core->window);
|
||||
wRaiseFrame(menu->frame->core);
|
||||
menu->flags.mapped = 1;
|
||||
}
|
||||
|
|
@ -1150,8 +1150,8 @@ void wMenuUnmap(WMenu * menu)
|
|||
{
|
||||
int i;
|
||||
|
||||
if (dpy && menu->frame->core->window)
|
||||
XUnmapWindow(dpy, menu->frame->core->window);
|
||||
if (menu->frame->core->window)
|
||||
wm_backend->window_unmap((WNativeWindow)menu->frame->core->window);
|
||||
if (menu->flags.titled && menu->flags.buttoned) {
|
||||
wFrameWindowHideButton(menu->frame, WFF_RIGHT_BUTTON);
|
||||
}
|
||||
|
|
@ -1339,7 +1339,7 @@ static void closeCascade(WMenu * menu)
|
|||
if (menu->flags.brother || (!menu->flags.buttoned && (!menu->flags.app_menu || menu->parent != NULL))) {
|
||||
|
||||
selectEntry(menu, -1);
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
#if (MENU_BLINK_DELAY > 2)
|
||||
wusleep(MENU_BLINK_DELAY / 2);
|
||||
#endif
|
||||
|
|
@ -1856,7 +1856,7 @@ static void menuMouseDown(WObjDescriptor * desc, WBackendEvent * event)
|
|||
event->u.button.send_event = True;
|
||||
(*desc->handle_mousedown)(desc, event);
|
||||
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
wm_backend->pointer_ungrab(0);
|
||||
selectEntry(menu, -1);
|
||||
return;
|
||||
} else {
|
||||
|
|
@ -2032,10 +2032,10 @@ static void menuMouseDown(WObjDescriptor * desc, WBackendEvent * event)
|
|||
|
||||
for (i = 0; i < MENU_BLINK_COUNT; i++) {
|
||||
paintEntry(menu, sel, False);
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
wusleep(MENU_BLINK_DELAY);
|
||||
paintEntry(menu, sel, True);
|
||||
XSync(dpy, 0);
|
||||
wm_backend->event_sync(0);
|
||||
wusleep(MENU_BLINK_DELAY);
|
||||
}
|
||||
#endif
|
||||
|
|
@ -2094,8 +2094,8 @@ void wMenuMove(WMenu * menu, int x, int y, int submenus)
|
|||
|
||||
menu->frame_x = x;
|
||||
menu->frame_y = y;
|
||||
if (dpy && menu->frame->core->window)
|
||||
XMoveWindow(dpy, menu->frame->core->window, x, y);
|
||||
if (menu->frame->core->window)
|
||||
wm_backend->window_move((WNativeWindow)menu->frame->core->window, x, y);
|
||||
|
||||
if (submenus > 0 && menu->selected_entry >= 0) {
|
||||
i = menu->entries[menu->selected_entry]->cascade;
|
||||
|
|
@ -2263,7 +2263,7 @@ static void menuTitleMouseDown(WCoreWindow * sender, void *data, XEvent * event)
|
|||
case WME_BUTTON_RELEASE:
|
||||
if (ev.u.button.button != event->xbutton.button)
|
||||
break;
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
wm_backend->pointer_ungrab(0);
|
||||
return;
|
||||
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ static int showCrashDialog(int sig)
|
|||
|
||||
if (!wm_backend->is_wayland) {
|
||||
dpy = XOpenDisplay(NULL);
|
||||
XGrabServer(dpy);
|
||||
wm_backend->server_grab();
|
||||
crashAction = wShowCrashingDialogPanel(sig);
|
||||
XCloseDisplay(dpy);
|
||||
dpy = NULL;
|
||||
|
|
|
|||
|
|
@ -477,7 +477,7 @@ void StartUp(Bool defaultScreenOnly)
|
|||
/* set hook for our event dispatcher in WINGs event dispatcher (X11 only).
|
||||
* Skip for Wayland: we run a wlroots event loop, not a WINGs/X11 loop.
|
||||
* dpy may be set (XWayland bridge), but X11 event dispatch is not used. */
|
||||
if (dpy && !wm_backend->is_wayland)
|
||||
if (!wm_backend->is_wayland)
|
||||
WMHookEventHandler(DispatchEvent);
|
||||
|
||||
/* initialize defaults stuff */
|
||||
|
|
@ -619,7 +619,7 @@ void StartUp(Bool defaultScreenOnly)
|
|||
|
||||
#ifndef HAVE_INOTIFY
|
||||
/* setup defaults file polling (X11/WINGs timer only) */
|
||||
if (dpy && !wPreferences.flags.noupdates)
|
||||
if (!wm_backend->is_wayland && !wPreferences.flags.noupdates)
|
||||
WMAddTimerHandler(3000, wDefaultsCheckDomains, NULL);
|
||||
#endif
|
||||
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ void DoKaboom(WScreen * scr, Window win, int x, int y)
|
|||
image = XGetImage(dpy, win, 0, 0, wPreferences.icon_size,
|
||||
wPreferences.icon_size, AllPlanes, ZPixmap);
|
||||
if (!image) {
|
||||
XUnmapWindow(dpy, win);
|
||||
wm_backend->window_unmap((WNativeWindow)win);
|
||||
return;
|
||||
}
|
||||
XPutImage(dpy, tmp, scr->copy_gc, image, 0, 0, 0, 0,
|
||||
|
|
@ -93,7 +93,7 @@ void DoKaboom(WScreen * scr, Window win, int x, int y)
|
|||
}
|
||||
}
|
||||
|
||||
XUnmapWindow(dpy, win);
|
||||
wm_backend->window_unmap((WNativeWindow)win);
|
||||
|
||||
j = k;
|
||||
while (k > 0) {
|
||||
|
|
@ -101,7 +101,7 @@ void DoKaboom(WScreen * scr, Window win, int x, int y)
|
|||
|
||||
if (XCheckTypedEvent(dpy, ButtonPress, &foo)) {
|
||||
XPutBackEvent(dpy, &foo);
|
||||
XClearWindow(dpy, scr->root_win);
|
||||
wm_backend->window_clear((WNativeWindow)scr->root_win);
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -125,11 +125,11 @@ void DoKaboom(WScreen * scr, Window win, int x, int y)
|
|||
}
|
||||
}
|
||||
|
||||
XFlush(dpy);
|
||||
wm_backend->event_flush();
|
||||
wusleep(MINIATURIZE_ANIMATION_DELAY_Z * 2);
|
||||
}
|
||||
|
||||
XFreePixmap(dpy, tmp);
|
||||
wm_backend->pixmap_free((unsigned long)tmp);
|
||||
#endif /* NORMAL_ICON_KABOOM */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -170,9 +170,9 @@ static void changeImage(WSwitchPanel *panel, int idecks, int selected, Bool dim,
|
|||
opaq);
|
||||
|
||||
RConvertImage(panel->scr->rcontext, back, &p);
|
||||
XSetWindowBackgroundPixmap(dpy, WMWidgetXID(icon), p);
|
||||
XClearWindow(dpy, WMWidgetXID(icon));
|
||||
XFreePixmap(dpy, p);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)WMWidgetXID(icon), (unsigned long)p);
|
||||
wm_backend->window_clear((WNativeWindow)WMWidgetXID(icon));
|
||||
wm_backend->pixmap_free((unsigned long)p);
|
||||
}
|
||||
|
||||
if (!panel->bg && !panel->tile && selected)
|
||||
|
|
@ -341,7 +341,7 @@ static void drawTitle(WSwitchPanel *panel, int idecks, const char *title)
|
|||
}
|
||||
}
|
||||
|
||||
XClearWindow(dpy, WMWidgetXID(panel->win));
|
||||
wm_backend->window_clear((WNativeWindow)WMWidgetXID(panel->win));
|
||||
if (ntitle)
|
||||
WMDrawString(panel->scr->wmscreen,
|
||||
WMWidgetXID(panel->win),
|
||||
|
|
@ -504,15 +504,15 @@ WSwitchPanel *wInitSwitchPanel(WScreen *scr, WWindow *curwin, Bool class_only)
|
|||
|
||||
RConvertImageMask(scr->rcontext, panel->bg, &pixmap, &mask, 250);
|
||||
|
||||
XSetWindowBackgroundPixmap(dpy, WMWidgetXID(panel->win), pixmap);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)WMWidgetXID(panel->win), (unsigned long)pixmap);
|
||||
|
||||
if (mask)
|
||||
wm_backend->shape_combine_mask(WMWidgetXID(panel->win), (WNativeWindow)mask);
|
||||
if (pixmap)
|
||||
XFreePixmap(dpy, pixmap);
|
||||
wm_backend->pixmap_free((unsigned long)pixmap);
|
||||
|
||||
if (mask)
|
||||
XFreePixmap(dpy, mask);
|
||||
wm_backend->pixmap_free((unsigned long)mask);
|
||||
}
|
||||
|
||||
{
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ static void appearanceObserver(void *self, WMNotification * notif)
|
|||
if (wwin->frame->titlebar)
|
||||
wm_backend->window_clear(wwin->frame->titlebar->window);
|
||||
|
||||
wFrameWindowPaint(wwin->frame);
|
||||
wm_backend->frame_paint(wwin->frame);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1807,7 +1807,7 @@ void wWindowUnfocus(WWindow *wwin)
|
|||
if (owner->flags.mapped || owner->flags.shaded) {
|
||||
wWindowUnfocus(owner);
|
||||
if (owner->frame)
|
||||
wFrameWindowPaint(owner->frame);
|
||||
wm_backend->frame_paint(owner->frame);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2163,7 +2163,7 @@ void wWindowUpdateButtonImages(WWindow *wwin)
|
|||
|
||||
/* force buttons to be redrawn */
|
||||
fwin->flags.need_texture_change = 1;
|
||||
wFrameWindowPaint(fwin);
|
||||
wm_backend->frame_paint(fwin);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -355,10 +355,10 @@ static void makeShortcutCommand(WMenu * menu, WMenuEntry * entry)
|
|||
}
|
||||
|
||||
wSelectWindow(wwin, !wwin->flags.selected);
|
||||
XFlush(dpy);
|
||||
wm_backend->event_flush();
|
||||
wusleep(3000);
|
||||
wSelectWindow(wwin, !wwin->flags.selected);
|
||||
XFlush(dpy);
|
||||
wm_backend->event_flush();
|
||||
}
|
||||
|
||||
static void updateWorkspaceMenu(WMenu * menu)
|
||||
|
|
|
|||
|
|
@ -347,7 +347,7 @@ static void freeInspector(InspectorPanel *panel)
|
|||
return;
|
||||
|
||||
WMDestroyWidget(panel->win);
|
||||
XDestroyWindow(dpy, panel->parent);
|
||||
wm_backend->frame_destroy(NULL, (WNativeWindow)panel->parent);
|
||||
wfree(panel);
|
||||
}
|
||||
|
||||
|
|
@ -785,7 +785,7 @@ static void applySettings(WMWidget *button, void *client_data)
|
|||
|
||||
wwin->frame->flags.need_texture_change = 1;
|
||||
wWindowConfigureBorders(wwin);
|
||||
wFrameWindowPaint(wwin->frame);
|
||||
wm_backend->frame_paint(wwin->frame);
|
||||
wm_backend->netwm_update_actions(wwin, 0);
|
||||
|
||||
/* Can't apply emulate_appicon because it will probably cause problems. */
|
||||
|
|
@ -1033,7 +1033,7 @@ static void selectWindow(WMWidget *bPtr, void *data)
|
|||
|
||||
WMSetLabelText(panel->specLbl, _("Click in the window you wish to inspect."));
|
||||
WMMaskEvent(scr->wmscreen, ButtonPressMask, &event);
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
wm_backend->pointer_ungrab(0);
|
||||
|
||||
{
|
||||
XEvent *_xev = (XEvent *)event._x11_raw;
|
||||
|
|
@ -1215,7 +1215,7 @@ static InspectorPanel *createInspectorForWindow(WWindow *wwin, int xpos, int ypo
|
|||
}
|
||||
|
||||
parent = XCreateSimpleWindow(dpy, scr->root_win, 0, 0, PWIDTH, PHEIGHT, 0, 0, 0);
|
||||
XSelectInput(dpy, parent, KeyPressMask | KeyReleaseMask);
|
||||
wm_backend->window_select_events((WNativeWindow)parent, KeyPressMask | KeyReleaseMask);
|
||||
panel->parent = parent;
|
||||
XReparentWindow(dpy, WMWidgetXID(panel->win), parent, 0, 0);
|
||||
|
||||
|
|
@ -1287,8 +1287,8 @@ void wUnhideInspectorForWindow(WWindow *wwin)
|
|||
|
||||
pwin->flags.hidden = 0;
|
||||
pwin->flags.mapped = 1;
|
||||
XMapWindow(dpy, pwin->client_win);
|
||||
XMapWindow(dpy, pwin->frame->core->window);
|
||||
wm_backend->window_map((WNativeWindow)pwin->client_win);
|
||||
wm_backend->window_map((WNativeWindow)pwin->frame->core->window);
|
||||
wClientSetState(pwin, NormalState, None);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1530,7 +1530,7 @@ static void updateWindowType(WWindow *wwin)
|
|||
ChangeStackingLevel(wwin->frame->core, layer);
|
||||
wwin->frame->flags.need_texture_change = 1;
|
||||
wWindowConfigureBorders(wwin);
|
||||
wFrameWindowPaint(wwin->frame);
|
||||
wm_backend->frame_paint(wwin->frame);
|
||||
wNETWMUpdateActions(wwin, False);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -623,7 +623,7 @@ void wWorkspaceForceChange(WScreen * scr, int workspace)
|
|||
|
||||
WMPostNotificationName(WMNWorkspaceChanged, scr, (void *)(uintptr_t) workspace);
|
||||
|
||||
/* XSync(dpy, False); */
|
||||
/* wm_backend->event_sync(False); */
|
||||
}
|
||||
|
||||
static void switchWSCommand(WMenu * menu, WMenuEntry * entry)
|
||||
|
|
|
|||
12
src/wsmap.c
12
src/wsmap.c
|
|
@ -170,15 +170,15 @@ static void set_workspace_map_background_image(WWorkspaceMap *wsmap)
|
|||
if (!pixmap)
|
||||
return;
|
||||
|
||||
XSetWindowBackgroundPixmap(dpy, WMWidgetXID(wsmap->win), pixmap);
|
||||
wm_backend->window_set_background_pixmap((WNativeWindow)WMWidgetXID(wsmap->win), (unsigned long)pixmap);
|
||||
|
||||
if (mask)
|
||||
wm_backend->shape_combine_mask(WMWidgetXID(wsmap->win), (WNativeWindow)mask);
|
||||
|
||||
if (pixmap)
|
||||
XFreePixmap(dpy, pixmap);
|
||||
wm_backend->pixmap_free((unsigned long)pixmap);
|
||||
if (mask)
|
||||
XFreePixmap(dpy, mask);
|
||||
wm_backend->pixmap_free((unsigned long)mask);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -480,7 +480,7 @@ static void handle_event(WWorkspaceMap *wsmap, W_WorkspaceMap *wsmap_array)
|
|||
int modifiers;
|
||||
KeyCode escKey = wm_backend->keysym_to_keycode(WM_KEY_ESCAPE);
|
||||
|
||||
XGrabKeyboard(dpy, WMWidgetXID(wsmap->win), False, GrabModeAsync, GrabModeAsync, CurrentTime);
|
||||
wm_backend->keyboard_grab((WNativeWindow)WMWidgetXID(wsmap->win));
|
||||
XGrabPointer(dpy, WMWidgetXID(wsmap->win), True,
|
||||
ButtonMotionMask | ButtonReleaseMask | ButtonPressMask,
|
||||
GrabModeAsync, GrabModeAsync, WMWidgetXID(wsmap->win), None, CurrentTime);
|
||||
|
|
@ -564,8 +564,8 @@ static void handle_event(WWorkspaceMap *wsmap, W_WorkspaceMap *wsmap_array)
|
|||
}
|
||||
}
|
||||
|
||||
XUngrabPointer(dpy, CurrentTime);
|
||||
XUngrabKeyboard(dpy, CurrentTime);
|
||||
wm_backend->pointer_ungrab(0);
|
||||
wm_backend->keyboard_ungrab();
|
||||
|
||||
workspace_map_destroy(wsmap);
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue