/* Copyright (C) 2000 Free Software Foundation This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details. */ #include #include #include #include #include #include #include #include void gnu::gcj::xlib::WMSizeHints::init(WMSizeHints* copyFrom) { XSizeHints* hints = XAllocSizeHints(); if (hints == 0) { jstring errorMessage = JvNewStringLatin1("XAllocSizeHints failed"); throw new ::java::lang::OutOfMemoryError(errorMessage); } if (copyFrom != 0) { XSizeHints* from = (XSizeHints*) copyFrom->structure; (*hints) = (*from); } else { // Is this necessary? hints->flags = 0; } structure = reinterpret_cast(hints); } void gnu::gcj::xlib::WMSizeHints::finalize() { delete structure; } void gnu::gcj::xlib::WMSizeHints::applyNormalHints(gnu::gcj::xlib::Window* window) { Display* display = window->display; ::Display* dpy = (::Display*) display->display; ::Window win = window->getXID(); XSizeHints* hints = (XSizeHints*) structure; XSetWMNormalHints(dpy, win, hints); /* FIXME, alternative? // X11 source reports XSetWMNormalHints() as an old routine. (?) XSetWMSizeHints(dpy, win, hints, display->getAtom("WM_NORMAL_HINTS")); */ } void gnu::gcj::xlib::WMSizeHints::setMinSize(jint width, jint height) { XSizeHints* hints = (XSizeHints*) structure; hints->min_width = width; hints->min_height = height; hints->flags = hints->flags | PMinSize; } void gnu::gcj::xlib::WMSizeHints::setMaxSize(jint width, jint height) { XSizeHints* hints = (XSizeHints*) structure; hints->max_width = width; hints->max_height = height; hints->flags = hints->flags | PMaxSize; }