Back to index

texmacs  1.0.7.15
Public Member Functions | Public Attributes | Friends
x_window_rep Class Reference

#include <x_window.hpp>

Inheritance diagram for x_window_rep:
Inheritance graph
[legend]
Collaboration diagram for x_window_rep:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 x_window_rep (widget w, x_gui gui, char *name, SI min_w, SI min_h, SI def_w, SI def_h, SI max_w, SI max_h)
 ~x_window_rep ()
widget get_widget ()
renderer get_renderer ()
void get_extents (int &w, int &h)
void set_hints (SI min_w, SI min_h, SI max_w, SI max_h)
void initialize ()
void move_event (int x, int y)
void resize_event (int w, int h)
void destroy_event ()
void invalidate_event (int x1, int y1, int x2, int y2)
void key_event (string key)
void mouse_event (string ev, int x, int y, time_t t)
void focus_in_event ()
void focus_out_event ()
void repaint_invalid_regions ()
void set_name (string name)
string get_name ()
void set_visibility (bool flag)
void set_full_screen (bool flag)
void set_size (SI w, SI h)
void set_size_limits (SI min_w, SI min_h, SI max_w, SI max_h)
void get_size (SI &w, SI &h)
void get_size_limits (SI &min_w, SI &min_h, SI &max_w, SI &max_h)
void set_position (SI x, SI y)
void get_position (SI &x, SI &y)
void set_keyboard_focus (widget wid, bool get_focus)
bool get_keyboard_focus (widget wid)
void set_mouse_grab (widget wid, bool get_grab)
bool get_mouse_grab (widget w)
void set_mouse_pointer (widget wid, string name, string mask)
void delayed_message (widget wid, string s, time_t delay)
void invalidate (SI x1, SI y1, SI x2, SI y2)
bool repainted ()
void translate (SI x1, SI y1, SI x2, SI y2, SI dx, SI dy)
virtual void begin_draw ()
virtual void end_draw ()

Public Attributes

widget w
x_gui gui
char * name
string the_name
x_drawable_repren
Display * dpy
Window win
GC gc
rectangles invalid_regions
SI Min_w
SI Min_h
SI Def_w
SI Def_h
SI Max_w
SI Max_h
int win_x
int win_y
int win_w
int win_h
bool ic_ok
XIC ic
widget_repkbd_focus
bool has_focus
bool full_screen_flag
Window save_win
int save_x
int save_y
int save_w
int save_h

Friends

class x_gui_rep
class x_drawable_rep
Bool my_selnotify_predicate (Display *dpy, XEvent *ev, XPointer arg)
int get_identifier (window w)

Detailed Description

Definition at line 23 of file x_window.hpp.


Constructor & Destructor Documentation

x_window_rep::x_window_rep ( widget  w,
x_gui  gui,
char *  name,
SI  min_w,
SI  min_h,
SI  def_w,
SI  def_h,
SI  max_w,
SI  max_h 
)

Definition at line 157 of file x_window.cpp.

                                            :
  window_rep (), w (w2), gui (gui2), name (n2),
  ren (tm_new<x_drawable_rep> (gui2, this)),
  Min_w (min_w), Min_h (min_h), Def_w (def_w), Def_h (def_h),
  Max_w (max_w), Max_h (max_h),
  win_x (0), win_y (0), win_w (Def_w/PIXEL), win_h (Def_h/PIXEL),
  kbd_focus (w.rep), has_focus (false)
{
  //cout << "Min " << (min_w >> 8) << ", " << (min_h >> 8) << "\n";
  //cout << "Def " << (def_w >> 8) << ", " << (def_h >> 8) << "\n";
  //cout << "Max " << (max_w >> 8) << ", " << (max_h >> 8) << "\n";
  initialize ();
  gui->created_window (win);
}

Here is the call graph for this function:

Definition at line 174 of file x_window.cpp.

                             {
  set_identifier (w, 0);

  XEvent report;
  while (XCheckWindowEvent (dpy, win, 0xffffffff, &report));

  tm_delete (ren);
  if (ic_ok) XDestroyIC (ic);
  Window_to_window->reset (win);
  nr_windows--;
  XDestroyWindow (dpy, win);
  gui->deleted_window (win);
}

Here is the call graph for this function:


Member Function Documentation

virtual void window_rep::begin_draw ( ) [inline, virtual, inherited]

Definition at line 67 of file window.hpp.

{};

Here is the caller graph for this function:

void x_window_rep::delayed_message ( widget  wid,
string  s,
time_t  delay 
) [virtual]

Implements window_rep.

Definition at line 511 of file x_window.cpp.

                                                                 {
  time_t ct= texmacs_time ();
  the_gui->messages= insert_message (the_gui->messages, wid, s, ct, ct+ delay);
}

Here is the call graph for this function:

Definition at line 378 of file x_window.cpp.

                             {
  send_destroy (w);
}

Here is the call graph for this function:

Here is the caller graph for this function:

virtual void window_rep::end_draw ( ) [inline, virtual, inherited]

Definition at line 69 of file window.hpp.

{};

Here is the caller graph for this function:

Definition at line 397 of file x_window.cpp.

                              {
  if (ic_ok) XSetICFocus (ic);
  has_focus= true;
  notify_keyboard_focus (kbd_focus, true);
  gui->focussed_window (win);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 405 of file x_window.cpp.

                               {
  if (ic_ok) XUnsetICFocus (ic);
  has_focus= false;
  notify_keyboard_focus (kbd_focus, false);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void x_window_rep::get_extents ( int &  w,
int &  h 
)

Definition at line 199 of file x_window.cpp.

                                         {
  w= win_w;
  h= win_h;
}

Here is the caller graph for this function:

bool x_window_rep::get_keyboard_focus ( widget  wid) [virtual]

Implements window_rep.

Definition at line 466 of file x_window.cpp.

                                            {
  return has_focus && kbd_focus == wid.rep;
}
bool x_window_rep::get_mouse_grab ( widget  w) [virtual]

Implements window_rep.

Definition at line 477 of file x_window.cpp.

                                      {
  return gui->has_mouse_grab (w);
}

Here is the call graph for this function:

Definition at line 311 of file x_window.cpp.

                        {
  return the_name;
}

Here is the caller graph for this function:

void x_window_rep::get_position ( SI x,
SI y 
) [virtual]

Implements window_rep.

Definition at line 238 of file x_window.cpp.

                                        {
#ifdef OS_WIN32
  XGetWindowPos (dpy, win, &win_x, &win_y);
  x=  win_x*PIXEL;
  y= -win_y*PIXEL;
#else
  int xx, yy;
  Window ww;
  bool b;
  b=  XTranslateCoordinates (dpy, win, gui->root, 0, 0, &xx, &yy, &ww);
  x=  xx*PIXEL;
  y= -yy*PIXEL;
#endif
}

Implements window_rep.

Definition at line 194 of file x_window.cpp.

                            {
  return (renderer) ren;
}
void x_window_rep::get_size ( SI w,
SI h 
) [virtual]

Implements window_rep.

Definition at line 254 of file x_window.cpp.

                                      {
  ww= win_w*PIXEL;
  hh= win_h*PIXEL;
}
void x_window_rep::get_size_limits ( SI min_w,
SI min_h,
SI max_w,
SI max_h 
) [virtual]

Implements window_rep.

Definition at line 260 of file x_window.cpp.

                                                                         {
  min_w= Min_w; min_h= Min_h; max_w= Max_w; max_h= Max_h;
}

Implements window_rep.

Definition at line 189 of file x_window.cpp.

                          {
  return w;
}

Definition at line 79 of file x_window.cpp.

                          {
  SI min_w= Min_w, min_h= Min_h;
  SI def_w= Def_w, def_h= Def_h;
  SI max_w= Max_w, max_h= Max_h;

  dpy= gui->dpy;
  gc = gui->gc;
  full_screen_flag= false;

  // time_t start_1= texmacs_time ();
  ren->set_origin (0, 0);
  ren->decode (def_w, def_h); def_h= -def_h;
  ren->decode (min_w, min_h); min_h= -min_h;
  ren->decode (max_w, max_h); max_h= -max_h;
  // cout << "Size computation required " << (texmacs_time ()-start_1) << " ms\n";

  // time_t start_2= texmacs_time ();
  unsigned long valuemask= CWOverrideRedirect | CWSaveUnder;
  //unsigned long valuemask= CWOverrideRedirect | CWSaveUnder | CWBackingStore;
  XSetWindowAttributes setattr;
  setattr.override_redirect= (name==NULL);
  setattr.save_under       = True; // (name==NULL);
  // setattr.backing_store    = Always;
  // FIXME: backing store does not seem to work correctly
  if (win_w == 0) win_w= def_w;
  if (win_h == 0) win_h= def_h;
  if ((win_x+ win_w) > gui->screen_width) win_x= gui->screen_width- win_w;
  if (win_x < 0) win_x= 0;
  if ((win_y+ win_h) > gui->screen_height) win_y= gui->screen_height- win_h;
  if (win_y < 0) win_y=0;
  win= XCreateWindow (dpy, gui->root, win_x, win_y, win_w, win_h, 0,
                    gui->depth, InputOutput, CopyFromParent,
                    valuemask, &setattr);
  ren->win= (Drawable) win;
  // cout << "XWindow creation required " << (texmacs_time ()-start_2) << " ms\n";

  //cout << "Hints: "
  //     << min_w << ", " << min_h << " --- "
  //     << def_w << ", " << def_h << " --- "
  //     << max_w << ", " << max_h << "\n";
  if (name == NULL) name= const_cast<char*> ("popup");
  if (the_name == "") the_name= name;
  set_hints (min_w, min_h, max_w, max_h);

  unsigned long ic_mask= 0;
  ic_ok= false;
  if (gui->im_ok) {
    ic= XCreateIC (gui->im,
                 XNInputStyle, XIMPreeditNothing | XIMStatusNothing,
                 XNClientWindow, win,
                 NULL);
    if (ic == NULL)
      cout << "TeXmacs] Warning: couldn't create input context\n";
    else {
      ic_ok= true;
      XGetICValues (ic, XNFilterEvents, &ic_mask, NULL);
    }
  }

  XSelectInput (dpy, win,
              ExposureMask | StructureNotifyMask |
              SubstructureNotifyMask | FocusChangeMask |
              PointerMotionMask | EnterWindowMask | LeaveWindowMask |
              ButtonPressMask | ButtonReleaseMask |
              KeyPressMask | ic_mask);

  Atom wm_protocols     = XInternAtom(dpy, "WM_PROTOCOLS", 1);
  Atom wm_delete_window = XInternAtom(dpy, "WM_DELETE_WINDOW", 1);
  XSetWMProtocols (dpy, win, &wm_protocols, 1);
  XSetWMProtocols (dpy, win, &wm_delete_window, 1);

  nr_windows++;
  Window_to_window (win)= (void*) this;
  set_identifier (w, (int) win);
  notify_position (w, 0, 0);
  notify_size (w, Def_w, Def_h);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void x_window_rep::invalidate ( SI  x1,
SI  y1,
SI  x2,
SI  y2 
) [virtual]

Implements window_rep.

Definition at line 545 of file x_window.cpp.

                                                    {
  ren->outer_round (x1, y1, x2, y2);
  ren->decode (x1, y1);
  ren->decode (x2, y2);
  invalidate_event (x1, y2, x2, y1);
}

Here is the call graph for this function:

void x_window_rep::invalidate_event ( int  x1,
int  y1,
int  x2,
int  y2 
)

Definition at line 387 of file x_window.cpp.

Here is the caller graph for this function:

Definition at line 392 of file x_window.cpp.

                                   {
  send_keyboard (kbd_focus, key);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void x_window_rep::mouse_event ( string  ev,
int  x,
int  y,
time_t  t 
)

Definition at line 412 of file x_window.cpp.

                                                            {
  if (is_nil (gui->grab_ptr) || (get_x_window (gui->grab_ptr->item) == NULL)) {
    ren->set_origin (0, 0);
    ren->encode (x, y);
    send_mouse (w, ev, x, y, gui->state, t);
  }
  else {
    x_window grab_win= get_x_window (gui->grab_ptr->item);
    if (this != grab_win) {
      x += win_x - grab_win->win_x;
      y += win_y - grab_win->win_y;
      // return;
    }
    ren->set_origin (0, 0);
    ren->encode (x, y);
    send_mouse (gui->grab_ptr->item, ev, x, y, gui->state, t);
  }
}

Here is the call graph for this function:

Here is the caller graph for this function:

void x_window_rep::move_event ( int  x,
int  y 
)

Definition at line 364 of file x_window.cpp.

                                      {
  bool flag= (win_x!=x) || (win_y!=y);
  win_x= x; win_y= y;
  if (flag) notify_position (w, win_x*PIXEL, win_y*PIXEL);
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 432 of file x_window.cpp.

                                       {
  //if (!is_nil (invalid_regions)) cout << invalid_regions << "\n";
  //else { cout << "."; cout.flush (); }
  rectangles new_regions;
  if (!is_nil (invalid_regions)) {
    rectangle lub= least_upper_bound (invalid_regions);
    if (area (lub) < 1.2 * area (invalid_regions))
      invalid_regions= rectangles (lub);
  }
  while (!is_nil (invalid_regions)) {
    ren->set_origin (0, 0);
    rectangle r= copy (invalid_regions->item);
    ren->encode (r->x1, r->y1);
    ren->encode (r->x2, r->y2);
    ren->set_clipping (r->x1, r->y2, r->x2, r->y1);
    send_repaint (w, r->x1, r->y2, r->x2, r->y1);
    if (ren->interrupted ())
      new_regions= rectangles (invalid_regions->item, new_regions);
    invalid_regions= invalid_regions->next;
  }
  invalid_regions= new_regions;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 553 of file x_window.cpp.

                         {
  return is_nil (invalid_regions);
}

Here is the call graph for this function:

void x_window_rep::resize_event ( int  w,
int  h 
)

Definition at line 371 of file x_window.cpp.

                                          {
  bool flag= (win_w!=ww) || (win_h!=hh);
  win_w= ww; win_h= hh;
  if (flag) notify_size (w, win_w*PIXEL, win_h*PIXEL);
}

Here is the call graph for this function:

Here is the caller graph for this function:

void x_window_rep::set_full_screen ( bool  flag) [virtual]

Implements window_rep.

Definition at line 322 of file x_window.cpp.

                                        {
  if (full_screen_flag == flag) return;
  string old_name= get_name ();
  if (old_name == "")
    old_name= as_string (name);
  if (flag) {
    save_win= win;
    name= NULL;
    save_x= win_x; save_y= win_y;
    save_w= win_w; save_h= win_h;
    initialize ();
    XMoveResizeWindow (dpy, win, 0, 0,
                     gui->screen_width, gui->screen_height);
    move_event   (0, 0);
    resize_event (gui->screen_width, gui->screen_height);
    set_visibility (true);
    XSetInputFocus (dpy, win, PointerRoot, CurrentTime);
  }
  else {
    set_visibility (false);
    Window_to_window->reset (win);
    nr_windows--;
    XDestroyWindow (dpy, win);
    win= save_win;
    set_visibility (false);
    Window_to_window->reset (win);
    nr_windows--;
    XDestroyWindow (dpy, win);
    name= as_charp (old_name);
    win_x= save_x; win_y= save_y;
    win_w= save_w; win_h= save_h;
    initialize ();
    set_visibility (true);
    XMoveResizeWindow (dpy, win, save_x, save_y, save_w, save_h);
    resize_event (save_w, save_h);
    move_event   (save_x, save_y);
  }
  set_name (old_name);
  full_screen_flag= flag;
}

Here is the call graph for this function:

void x_window_rep::set_hints ( SI  min_w,
SI  min_h,
SI  max_w,
SI  max_h 
)

Definition at line 24 of file x_window.cpp.

                                                               {
  XSizeHints* size_hints;
  XWMHints*   wm_hints;
  XClassHint* class_hints;
  ASSERT (size_hints= XAllocSizeHints (), "out of memory (X server)");
  ASSERT (wm_hints= XAllocWMHints (), "out of memory (X server)");
  ASSERT (class_hints= XAllocClassHint (), "out of memory (X server)");

  XTextProperty Window_Name;
  XTextProperty Icon_Name;
  ASSERT (XStringListToTextProperty (&name, 1, &Window_Name) != 0,
         "out of memory (X server)");
  ASSERT (XStringListToTextProperty (&name, 1, &Icon_Name) != 0,
         "out of memory (X server)");

  // time_t start_1= texmacs_time ();
  if (!gui->xpm_pixmap->contains ("TeXmacs.xpm"))
    ren->xpm_initialize ("TeXmacs.xpm");
  Pixmap pm= (Pixmap) gui->xpm_pixmap ["TeXmacs.xpm"];
  // cout << "Getting pixmap required " << (texmacs_time ()-start_1) << " ms\n";

  // time_t start_2= texmacs_time ();
  size_hints->flags       = PPosition | PSize | PMinSize | PMaxSize;
  size_hints->min_width   = min_w;
  size_hints->min_height  = min_h;
  size_hints->max_width   = max_w;
  size_hints->max_height  = max_h;
  wm_hints->initial_state = NormalState;
  wm_hints->input         = true;
  wm_hints->icon_pixmap   = pm;
  wm_hints->flags         = StateHint | IconPixmapHint | InputHint;
  class_hints->res_name   = name;
  class_hints->res_class  = name;

  XSetWMProperties (
    dpy,
    win,
    &Window_Name,
    &Icon_Name,
    gui->argv,
    gui->argc,
    size_hints,
    wm_hints,
    class_hints
  );

  XFree(size_hints);
  XFree(wm_hints);
  XFree(class_hints);
  XFree(Window_Name.value);
  XFree(Icon_Name.value);
  // cout << "Setting hints required " << (texmacs_time ()-start_2) << " ms\n";
}

Here is the call graph for this function:

Here is the caller graph for this function:

void x_window_rep::set_keyboard_focus ( widget  wid,
bool  get_focus 
) [virtual]

Implements window_rep.

Definition at line 456 of file x_window.cpp.

                                                            {
  ASSERT (get_focus, "explicit loss of keyboard focus not yet implemented");
  if (has_focus && (kbd_focus != wid.rep)) {
    notify_keyboard_focus (kbd_focus, false);
    notify_keyboard_focus (wid, true);
  }
  kbd_focus= wid.rep;
}

Here is the call graph for this function:

void x_window_rep::set_mouse_grab ( widget  wid,
bool  get_grab 
) [virtual]

Implements window_rep.

Definition at line 471 of file x_window.cpp.

                                                       {
  if (get_grab) gui->obtain_mouse_grab (wid);
  else gui->release_mouse_grab ();
}

Here is the call graph for this function:

void x_window_rep::set_mouse_pointer ( widget  wid,
string  name,
string  mask 
) [virtual]

Implements window_rep.

Definition at line 482 of file x_window.cpp.

                                                                     {
  if (mask == "") gui->set_mouse_pointer (wid, name);
  else gui->set_mouse_pointer (wid, name, mask);
}

Here is the call graph for this function:

void x_window_rep::set_name ( string  name) [virtual]

Implements window_rep.

Definition at line 302 of file x_window.cpp.

                                   {
  char* s= as_charp (name);
  XStoreName (dpy, win, s);
  XSetIconName (dpy, win, s);
  tm_delete_array (s);
  the_name= name;
}

Here is the call graph for this function:

Here is the caller graph for this function:

void x_window_rep::set_position ( SI  x,
SI  y 
) [virtual]

Implements window_rep.

Definition at line 265 of file x_window.cpp.

                                      {
  x= x/PIXEL;
  y= -y/PIXEL;
  if ((x+ win_w) > gui->screen_width) x= gui->screen_width- win_w;
  if (x<0) x=0;
  if ((y+ win_h) > gui->screen_height) y= gui->screen_height- win_h;
  if (y<0) y=0;
  XMoveWindow (dpy, win, x, y);
}
void x_window_rep::set_size ( SI  w,
SI  h 
) [virtual]

Implements window_rep.

Definition at line 276 of file x_window.cpp.

                                  {
  w= w/PIXEL; h= h/PIXEL;
  //h=-h; ren->decode (w, h);
  XResizeWindow (dpy, win, w, h);
}
void x_window_rep::set_size_limits ( SI  min_w,
SI  min_h,
SI  max_w,
SI  max_h 
) [virtual]

Implements window_rep.

Definition at line 283 of file x_window.cpp.

                                                                     {
  if (min_w == Min_w && min_h == Min_h && max_w == Max_w && max_h == Max_h)
    return;
  Min_w= min_w; Min_h= min_h; Max_w= max_w; Max_h= max_h;
  min_w= min_w/PIXEL; min_h= min_h/PIXEL;
  max_w= max_w/PIXEL; max_h= max_h/PIXEL;

  XSizeHints* size_hints;
  ASSERT (size_hints= XAllocSizeHints (), "out of memory (X server)");
  size_hints->flags       = PMinSize | PMaxSize;
  size_hints->min_width   = min_w;
  size_hints->min_height  = min_h;
  size_hints->max_width   = max_w;
  size_hints->max_height  = max_h;
  XSetWMNormalHints (dpy, win, size_hints);
  XFree(size_hints);
}
void x_window_rep::set_visibility ( bool  flag) [virtual]

Implements window_rep.

Definition at line 316 of file x_window.cpp.

                                       {
  if (flag) XMapRaised (dpy, win);
  else XUnmapWindow (dpy, win);
}

Here is the caller graph for this function:

void x_window_rep::translate ( SI  x1,
SI  y1,
SI  x2,
SI  y2,
SI  dx,
SI  dy 
) [virtual]

Implements window_rep.

Definition at line 521 of file x_window.cpp.

                                                                 {
  SI X1= x1+ dx;
  SI Y2= y2+ dy;
  ren->decode (x1, y1);
  ren->decode (x2, y2);
  ren->decode (X1, Y2);
  dx= X1- x1;
  dy= Y2- y2;

  XEvent report;
  while (XCheckWindowEvent (dpy, win, ExposureMask, &report))
    gui->process_event (this, &report);

  rectangles region (rectangle (x1, y2, x2, y1));
  rectangles invalid_intern= invalid_regions & region;
  rectangles invalid_extern= invalid_regions - invalid_intern;
  invalid_intern = ::translate (invalid_intern, dx, dy) & region;
  invalid_regions= invalid_extern | invalid_intern;

  if (x1<x2 && y2<y1)
    XCopyArea (dpy, win, win, gc, x1, y2, x2-x1, y1-y2, X1, Y2);
}

Here is the call graph for this function:


Friends And Related Function Documentation

int get_identifier ( window  w) [friend]

Definition at line 222 of file x_window.cpp.

                          {
  if (w == NULL) return 0;
  else return (int) (((x_window) w) -> win);
}
Bool my_selnotify_predicate ( Display *  dpy,
XEvent *  ev,
XPointer  arg 
) [friend]

Definition at line 196 of file x_gui.cpp.

                                                                { (void) dpy;
  x_window win= (x_window) arg;
  return (win->win==ev->xany.window) && (ev->type==SelectionNotify);
}
friend class x_drawable_rep [friend]

Definition at line 101 of file x_window.hpp.

friend class x_gui_rep [friend]

Definition at line 100 of file x_window.hpp.


Member Data Documentation

Definition at line 36 of file x_window.hpp.

Definition at line 36 of file x_window.hpp.

Definition at line 31 of file x_window.hpp.

Definition at line 46 of file x_window.hpp.

Definition at line 33 of file x_window.hpp.

Definition at line 26 of file x_window.hpp.

Definition at line 44 of file x_window.hpp.

Definition at line 42 of file x_window.hpp.

Definition at line 41 of file x_window.hpp.

Definition at line 34 of file x_window.hpp.

Definition at line 43 of file x_window.hpp.

Definition at line 37 of file x_window.hpp.

Definition at line 37 of file x_window.hpp.

Definition at line 35 of file x_window.hpp.

Definition at line 35 of file x_window.hpp.

Definition at line 27 of file x_window.hpp.

Definition at line 29 of file x_window.hpp.

Definition at line 49 of file x_window.hpp.

Definition at line 49 of file x_window.hpp.

Definition at line 47 of file x_window.hpp.

Definition at line 48 of file x_window.hpp.

Definition at line 48 of file x_window.hpp.

Definition at line 28 of file x_window.hpp.

Definition at line 25 of file x_window.hpp.

Definition at line 32 of file x_window.hpp.

Definition at line 39 of file x_window.hpp.

Definition at line 39 of file x_window.hpp.

Definition at line 38 of file x_window.hpp.

Definition at line 38 of file x_window.hpp.


The documentation for this class was generated from the following files: