Changeset 7e29143


Ignore:
Timestamp:
05/09/14 10:17:33 (16 months ago)
Author:
Ken Moore <ken@…>
Branches:
master, enter/10, releng/10.0.2, releng/10.0.3, releng/10.1, releng/10.1.1, releng/10.1.2, releng/10.2, stable/10
Children:
f435093
Parents:
cadcbd2
Message:

Move the EWMH virtual desktop information get/set functions from the panel-plugin into the LuminaX11 library class.

Location:
lumina/libLumina
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • lumina/libLumina/LuminaX11.cpp

    rc47b1152 r7e29143  
    147147  } 
    148148  return window;                 
     149} 
     150 
     151// ===== SetNumberOfDesktops() ===== 
     152void LX11::SetNumberOfDesktops(int number){ 
     153  Display *display = QX11Info::display(); 
     154  Window rootWindow = QX11Info::appRootWindow(); 
     155 
     156  Atom atom = XInternAtom(display, "_NET_NUMBER_OF_DESKTOPS", False); 
     157  XEvent xevent; 
     158  xevent.type                 = ClientMessage; 
     159  xevent.xclient.type         = ClientMessage;  
     160  xevent.xclient.display      = display; 
     161  xevent.xclient.window       = rootWindow; 
     162  xevent.xclient.message_type = atom; 
     163  xevent.xclient.format       = 32; 
     164  xevent.xclient.data.l[0]    = number; 
     165  xevent.xclient.data.l[1]    = CurrentTime; 
     166  xevent.xclient.data.l[2]    = 0; 
     167  xevent.xclient.data.l[3]    = 0; 
     168  xevent.xclient.data.l[4]    = 0; 
     169  XSendEvent(display, rootWindow, False, SubstructureNotifyMask | SubstructureRedirectMask, &xevent); 
     170 
     171  XFlush(display);       
     172} 
     173 
     174// ===== SetCurrentDesktop() ===== 
     175void LX11::SetCurrentDesktop(int number){ 
     176  Display *display = QX11Info::display(); 
     177  Window rootWindow = QX11Info::appRootWindow(); 
     178 
     179  Atom atom = XInternAtom(display, "_NET_CURRENT_DESKTOP", False); 
     180  XEvent xevent; 
     181  xevent.type                 = ClientMessage; 
     182  xevent.xclient.type         = ClientMessage;  
     183  xevent.xclient.display      = display; 
     184  xevent.xclient.window       = rootWindow; 
     185  xevent.xclient.message_type = atom; 
     186  xevent.xclient.format       = 32; 
     187  xevent.xclient.data.l[0]    = number; 
     188  xevent.xclient.data.l[1]    = CurrentTime; 
     189  xevent.xclient.data.l[2]    = 0; 
     190  xevent.xclient.data.l[3]    = 0; 
     191  xevent.xclient.data.l[4]    = 0; 
     192  XSendEvent(display, rootWindow, False, SubstructureNotifyMask | SubstructureRedirectMask, &xevent); 
     193 
     194  XFlush(display);       
     195} 
     196 
     197// ===== GetNumberOfDesktops() ===== 
     198int LX11::GetNumberOfDesktops(){ 
     199  int number = -1; 
     200  Atom a = XInternAtom(QX11Info::display(), "_NET_NUMBER_OF_DESKTOPS", true); 
     201  Atom realType; 
     202  int format; 
     203  unsigned long num, bytes; 
     204  unsigned char *data = 0; 
     205  int status = XGetWindowProperty(QX11Info::display(), QX11Info::appRootWindow(), a, 0L, (~0L), 
     206             false, AnyPropertyType, &realType, &format, &num, &bytes, &data); 
     207  if( (status >= Success) && (num > 0) ){ 
     208    number = *data; 
     209    XFree(data); 
     210  } 
     211  return number; 
     212} 
     213 
     214// ===== GetCurrentDesktop ===== 
     215int LX11::GetCurrentDesktop(){ 
     216  int number = -1; 
     217  Atom a = XInternAtom(QX11Info::display(), "_NET_CURRENT_DESKTOP", true); 
     218  Atom realType; 
     219  int format; 
     220  unsigned long num, bytes; 
     221  unsigned char *data = 0; 
     222  int status = XGetWindowProperty(QX11Info::display(), QX11Info::appRootWindow(), a, 0L, (~0L), 
     223             false, AnyPropertyType, &realType, &format, &num, &bytes, &data); 
     224  if( (status >= Success) && (num > 0) ){ 
     225    number = *data; 
     226    XFree(data); 
     227  } 
     228  return number;         
    149229} 
    150230 
  • lumina/libLumina/LuminaX11.h

    re02b72f9 r7e29143  
    5050        static WId ActiveWindow();                              //List the currently-active window 
    5151         
     52        //Window Manager Interaction 
     53        static void SetNumberOfDesktops(int);   // set number of virtual desktops 
     54        static void SetCurrentDesktop(int);             // set current virtual desktop 
     55        static int GetNumberOfDesktops();               // get number of virtual desktops 
     56        static int GetCurrentDesktop();                 // get current virtual desktop 
     57         
    5258        //Single Window Management 
    5359        static void CloseWindow(WId);                   // Close the Window 
Note: See TracChangeset for help on using the changeset viewer.