void DisplaySkin(FcitxClassicUI* classicui, char * skinname) { char *pivot = classicui->skinType; classicui->skinType = strdup(skinname); if (pivot) free(pivot); if (LoadSkinConfig(&classicui->skin, &classicui->skinType)) FcitxInstanceEnd(classicui->owner); #ifndef _ENABLE_PANGO GetValidFont(classicui->strUserLocale, &classicui->font); GetValidFont(classicui->strUserLocale, &classicui->menuFont); #endif FcitxXlibWindowPaint(&classicui->mainWindow->parent); FcitxXlibWindowPaint(&classicui->inputWindow->parent); TrayWindowDraw(classicui->trayWindow); SaveClassicUIConfig(classicui); classicui->epoch ++; }
void DisplaySkin(FcitxClassicUI* classicui, char * skinname) { char *pivot = classicui->skinType; classicui->skinType = strdup(skinname); if (pivot) free(pivot); if (LoadSkinConfig(&classicui->skin, &classicui->skinType)) FcitxInstanceEnd(classicui->owner); #ifndef _ENABLE_PANGO GetValidFont(classicui->strUserLocale, &classicui->font); GetValidFont(classicui->strUserLocale, &classicui->menuFont); #endif LoadInputMessage(&classicui->skin, classicui->inputWindow, classicui->font); DrawMainWindow(classicui->mainWindow); DrawInputWindow(classicui->inputWindow); DrawTrayWindow(classicui->trayWindow); SaveClassicUIConfig(classicui); }
VKWindow* CreateVKWindow(FcitxVKState* vkstate) { XSetWindowAttributes attrib; unsigned long attribmask; char strWindowName[] = "Fcitx VK Window"; Colormap cmap; Visual * vs; int depth; VKWindow* vkWindow = fcitx_utils_new(VKWindow); vkWindow->owner = vkstate; LoadVKImage(vkWindow); vs = VKFindARGBVisual(vkstate); VKInitWindowAttribute(vkstate, &vs, &cmap, &attrib, &attribmask, &depth); vkWindow->dpy = InvokeVaArgs(vkstate->owner, FCITX_X11, GETDISPLAY); vkWindow->fontSize = 12; vkWindow->defaultFont = strdup("sans"); #ifndef _ENABLE_PANGO GetValidFont("zh", &vkWindow->defaultFont); #endif vkWindow->window = XCreateWindow(vkWindow->dpy, DefaultRootWindow(vkWindow->dpy), 0, 0, VK_WINDOW_WIDTH, VK_WINDOW_HEIGHT, 0, depth, InputOutput, vs, attribmask, &attrib); if (vkWindow->window == (Window) None) return NULL; vkWindow->surface = cairo_xlib_surface_create(vkWindow->dpy, vkWindow->window, vs, VK_WINDOW_WIDTH, VK_WINDOW_HEIGHT); XSelectInput(vkWindow->dpy, vkWindow->window, ExposureMask | ButtonPressMask | ButtonReleaseMask | PointerMotionMask); VKSetWindowProperty(vkstate, vkWindow->window, FCITX_WINDOW_DOCK, strWindowName); InvokeVaArgs(vkstate->owner, FCITX_X11, ADDXEVENTHANDLER, VKWindowEventHandler, vkWindow); return vkWindow; }