diff options
| author | Bent Bisballe Nyeng <deva@aasimon.org> | 2013-10-19 11:20:12 +0200 | 
|---|---|---|
| committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2013-10-19 11:20:12 +0200 | 
| commit | c4f69d2af7d995eb0dd4592c18dc2f6b930bd193 (patch) | |
| tree | 05118efa264bb2623719cfa1d579ca1ed1cf1980 /plugingui | |
| parent | ae63d465c7252602500c4de5aa2d2a99df852bfb (diff) | |
Make window fixed size.
Diffstat (limited to 'plugingui')
| -rw-r--r-- | plugingui/nativewindow.h | 1 | ||||
| -rw-r--r-- | plugingui/nativewindow_win32.cc | 8 | ||||
| -rw-r--r-- | plugingui/nativewindow_win32.h | 1 | ||||
| -rw-r--r-- | plugingui/nativewindow_x11.cc | 25 | ||||
| -rw-r--r-- | plugingui/nativewindow_x11.h | 1 | ||||
| -rw-r--r-- | plugingui/plugingui.cc | 2 | ||||
| -rw-r--r-- | plugingui/window.cc | 11 | ||||
| -rw-r--r-- | plugingui/window.h | 1 | 
8 files changed, 47 insertions, 3 deletions
| diff --git a/plugingui/nativewindow.h b/plugingui/nativewindow.h index f27989f..d68909d 100644 --- a/plugingui/nativewindow.h +++ b/plugingui/nativewindow.h @@ -38,6 +38,7 @@ public:    NativeWindow() {}    virtual ~NativeWindow() {} +  virtual void setFixedSize(int width, int height) = 0;    virtual void resize(int width, int height) = 0;    virtual void move(int x, int y) = 0;    virtual void show() = 0; diff --git a/plugingui/nativewindow_win32.cc b/plugingui/nativewindow_win32.cc index 935cd04..89844da 100644 --- a/plugingui/nativewindow_win32.cc +++ b/plugingui/nativewindow_win32.cc @@ -320,6 +320,14 @@ GUI::NativeWindowWin32::~NativeWindowWin32()  	free(m_className);  } +void GUI::NativeWindowWin32::setFixedSize(int width, int height) +{ +  resize(width, height); +  LONG style =  GetWindowLong(m_hwnd, GWL_STYLE); +  style &= ~(WS_THICKFRAME | WS_MAXIMIZEBOX); +  SetWindowLong(m_hwnd, GWL_STYLE, style); +} +  void GUI::NativeWindowWin32::resize(int width, int height)  {    SetWindowPos(m_hwnd, NULL, -1, -1, (int)width, (int)height, SWP_NOMOVE); diff --git a/plugingui/nativewindow_win32.h b/plugingui/nativewindow_win32.h index d8ba7b3..6afc7b1 100644 --- a/plugingui/nativewindow_win32.h +++ b/plugingui/nativewindow_win32.h @@ -44,6 +44,7 @@ public:    NativeWindowWin32(GUI::Window *window);    ~NativeWindowWin32(); +  void setFixedSize(int width, int height);    void resize(int width, int height);    void move(int x, int y);    void show(); diff --git a/plugingui/nativewindow_x11.cc b/plugingui/nativewindow_x11.cc index f8511a0..cb6cf73 100644 --- a/plugingui/nativewindow_x11.cc +++ b/plugingui/nativewindow_x11.cc @@ -82,6 +82,31 @@ GUI::NativeWindowX11::~NativeWindowX11()    XCloseDisplay(display);  } +void GUI::NativeWindowX11::setFixedSize(int width, int height) +{ +  resize(width, height); + +  XSizeHints *size_hints; +  size_hints = XAllocSizeHints(); + +  if(size_hints == NULL) { +    //fprintf(stderr,"XMallocSizeHints() failed\n"); +    //exit(1); +    return; +  } + +  size_hints->flags = USPosition | PMinSize | PMaxSize; +  size_hints->min_width = size_hints->max_width = width; +  size_hints->min_height = size_hints->max_height = height; +  /* +    size_hints->min_aspect.x = window->width()/window->height(); +    size_hints->max_aspect.x = window->width()/window->height(); +    size_hints->min_aspect.y = window->width()/window->height(); +    size_hints->max_aspect.y = size_hints->min_aspect.y; +  */ +  XSetWMNormalHints(display, xwindow, size_hints); +} +  void GUI::NativeWindowX11::resize(int width, int height)  {    XResizeWindow(display, xwindow, width, height); diff --git a/plugingui/nativewindow_x11.h b/plugingui/nativewindow_x11.h index 84044de..3dcc0bb 100644 --- a/plugingui/nativewindow_x11.h +++ b/plugingui/nativewindow_x11.h @@ -41,6 +41,7 @@ public:    NativeWindowX11(GUI::Window *window);    ~NativeWindowX11(); +  void setFixedSize(int width, int height);    void resize(int width, int height);    void move(int x, int y);    void show(); diff --git a/plugingui/plugingui.cc b/plugingui/plugingui.cc index e452965..6601be7 100644 --- a/plugingui/plugingui.cc +++ b/plugingui/plugingui.cc @@ -284,7 +284,7 @@ void PluginGUI::init()    window->eventHandler()->registerCloseHandler(closeEventHandler,                                                 (void*)&closing); -  window->resize(370, 330); +  window->setFixedSize(370, 330);    window->setCaption("DrumGizmo v"VERSION);    GUI::Label *lbl_title = new GUI::Label(window); diff --git a/plugingui/window.cc b/plugingui/window.cc index 0d11b17..41d4d82 100644 --- a/plugingui/window.cc +++ b/plugingui/window.cc @@ -92,16 +92,23 @@ void GUI::Window::repaintEvent(GUI::RepaintEvent *e)                height() - logo.height(), &logo);  } +void GUI::Window::setFixedSize(int w, int h) +{ +  native->setFixedSize(w, h); +  resize(w,h); +} +  void GUI::Window::resize(int width, int height)  {    if(width < 1 || height < 1) return; -#ifdef WIN32 +  // This needs to be done on all platoforms when setFixedSize is introduced. +  //#ifdef WIN32    // Fix to force buffer size reallocation    // FIXME: This should've been done indirectly through a WM_SIZE message in the    //  EventHandler...    resized(width, height); -#endif +  //#endif    native->resize(width, height);    Widget::resize(width, height); diff --git a/plugingui/window.h b/plugingui/window.h index 2e3d17c..f8deef0 100644 --- a/plugingui/window.h +++ b/plugingui/window.h @@ -44,6 +44,7 @@ public:    void show();    void hide(); +  void setFixedSize(int width, int height);    void resize(int width, int height);    void move(size_t x, size_t y); | 
