diff --git a/src/actions.c b/src/actions.c index 5ee134f..d820f8b 100644 --- a/src/actions.c +++ b/src/actions.c @@ -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"); diff --git a/src/appicon.c b/src/appicon.c index 2aa8b1d..01081d0 100644 --- a/src/appicon.c +++ b/src/appicon.c @@ -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; diff --git a/src/appmenu.c b/src/appmenu.c index 6663715..410d6f5 100644 --- a/src/appmenu.c +++ b/src/appmenu.c @@ -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]); diff --git a/src/backend/x11/x11_backend.c b/src/backend/x11/x11_backend.c index d778027..6c4ca65 100644 --- a/src/backend/x11/x11_backend.c +++ b/src/backend/x11/x11_backend.c @@ -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, diff --git a/src/balloon.c b/src/balloon.c index c89a2a6..3a72e19 100644 --- a/src/balloon.c +++ b/src/balloon.c @@ -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); diff --git a/src/client.c b/src/client.c index f9105de..1c94d0e 100644 --- a/src/client.c +++ b/src/client.c @@ -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; diff --git a/src/defaults.c b/src/defaults.c index 75c5ee1..ba2307c 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -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; diff --git a/src/dialog.c b/src/dialog.c index 6f3e6d5..9e2fc38 100644 --- a/src/dialog.c +++ b/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; } diff --git a/src/dock.c b/src/dock.c index 93c96fc..f29d8c2 100644 --- a/src/dock.c +++ b/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++; diff --git a/src/dockedapp.c b/src/dockedapp.c index 0eb1430..199eb4a 100644 --- a/src/dockedapp.c +++ b/src/dockedapp.c @@ -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; diff --git a/src/event.c b/src/event.c index faab6ab..0b4e347 100644 --- a/src/event.c +++ b/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)) { diff --git a/src/framewin.c b/src/framewin.c index 3a734b0..2b396e6 100644 --- a/src/framewin.c +++ b/src/framewin.c @@ -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; } diff --git a/src/icon.c b/src/icon.c index 43bf1fa..1b45641 100644 --- a/src/icon.c +++ b/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); diff --git a/src/main.c b/src/main.c index 215ee4c..29c37e2 100644 --- a/src/main.c +++ b/src/main.c @@ -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 diff --git a/src/menu.c b/src/menu.c index ffe2e5c..dacdf48 100644 --- a/src/menu.c +++ b/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: diff --git a/src/monitor.c b/src/monitor.c index 6e489f2..f39ac70 100644 --- a/src/monitor.c +++ b/src/monitor.c @@ -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; diff --git a/src/startup.c b/src/startup.c index 36d131c..ce60d2c 100644 --- a/src/startup.c +++ b/src/startup.c @@ -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 diff --git a/src/superfluous.c b/src/superfluous.c index de0f2f0..44451b0 100644 --- a/src/superfluous.c +++ b/src/superfluous.c @@ -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 */ } diff --git a/src/switchpanel.c b/src/switchpanel.c index 651e154..57e44e2 100644 --- a/src/switchpanel.c +++ b/src/switchpanel.c @@ -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); } { diff --git a/src/window.c b/src/window.c index 1085d78..7d35992 100644 --- a/src/window.c +++ b/src/window.c @@ -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); } /* diff --git a/src/winmenu.c b/src/winmenu.c index 8e130f3..6153d47 100644 --- a/src/winmenu.c +++ b/src/winmenu.c @@ -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) diff --git a/src/winspector.c b/src/winspector.c index b01e472..4ca4b29 100644 --- a/src/winspector.c +++ b/src/winspector.c @@ -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); } diff --git a/src/wmspec.c b/src/wmspec.c index b449153..96c8941 100644 --- a/src/wmspec.c +++ b/src/wmspec.c @@ -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); } } diff --git a/src/workspace.c b/src/workspace.c index f8c1430..f280bf7 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -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) diff --git a/src/wsmap.c b/src/wsmap.c index 2555ce1..3206eb9 100644 --- a/src/wsmap.c +++ b/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); }