Merge in compilation fixes from trunk.

svn path=/branches/work/kwin_composite/; revision=619536
This commit is contained in:
Luboš Luňák 2007-01-03 16:53:26 +00:00
parent 9350d02134
commit f52407b829
6 changed files with 185 additions and 26 deletions

View file

@ -8,7 +8,13 @@ add_subdirectory( pics )
add_subdirectory( clients ) add_subdirectory( clients )
add_subdirectory( data ) add_subdirectory( data )
include_directories( ${CMAKE_CURRENT_BINARY_DIR}/lib ${CMAKE_CURRENT_SOURCE_DIR}/lib ) include_directories(
${CMAKE_CURRENT_BINARY_DIR}/lib
${CMAKE_CURRENT_SOURCE_DIR}/lib
${CMAKE_CURRENT_SOURCE_DIR}/effects
)
########### next target ############### ########### next target ###############
@ -35,33 +41,102 @@ set(kwin_KDEINIT_SRCS
activation.cpp activation.cpp
useractions.cpp useractions.cpp
geometry.cpp geometry.cpp
rules.cpp ) rules.cpp
composite.cpp
set(ksplash_xml ${CMAKE_SOURCE_DIR}/workspace/ksplashml/org.kde.KSplash.xml) toplevel.cpp
unmanaged.cpp
scene.cpp
QT4_ADD_DBUS_INTERFACE( kwin_KDEINIT_SRCS ${ksplash_xml} ksplash_interface ) scene_basic.cpp
scene_xrender.cpp
scene_opengl.cpp
glutils.cpp
effects.cpp
effects/fadein.cpp
effects/maketransparent.cpp
effects/scalein.cpp
effects/shakymove.cpp
effects/shiftworkspaceup.cpp
effects/howto.cpp
effects/dialogparent.cpp
effects/showfps.cpp
effects/zoom.cpp
)
qt4_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.KWin.xml workspace.h KWinInternal::Workspace ) qt4_add_dbus_adaptor( kwin_KDEINIT_SRCS org.kde.KWin.xml workspace.h KWinInternal::Workspace )
kde4_automoc(${kwin_KDEINIT_SRCS}) kde4_automoc(kwin ${kwin_KDEINIT_SRCS})
kde4_add_kdeinit_executable( kwin ${kwin_KDEINIT_SRCS}) kde4_add_kdeinit_executable( kwin ${kwin_KDEINIT_SRCS})
target_link_libraries(kdeinit_kwin ${KDE4_KDEUI_LIBS} kdecorations ${X11_LIBRARIES} ${QT_QT3SUPPORT_LIBRARY} ) target_link_libraries(kdeinit_kwin ${KDE4_KDEUI_LIBS} kdecorations ${X11_LIBRARIES} ${QT_QT3SUPPORT_LIBRARY} )
target_link_libraries(kdeinit_kwin -lGL)
# -ldl used by OpenGL code
target_link_libraries(kdeinit_kwin -ldl)
if (X11_Xrandr_FOUND)
target_link_libraries(kdeinit_kwin ${X11_Xrandr_LIB})
endif (X11_Xrandr_FOUND)
if (X11_Xcomposite_FOUND)
target_link_libraries(kdeinit_kwin ${X11_Xcomposite_LIB})
endif (X11_Xcomposite_FOUND)
if (X11_Xdamage_FOUND)
target_link_libraries(kdeinit_kwin ${X11_Xdamage_LIB})
endif (X11_Xdamage_FOUND)
if (X11_Xrender_FOUND)
target_link_libraries(kdeinit_kwin ${X11_Xrender_LIB})
endif (X11_Xrender_FOUND)
if (X11_Xfixes_FOUND)
target_link_libraries(kdeinit_kwin ${X11_Xfixes_LIB})
endif (X11_Xfixes_FOUND)
install(TARGETS kdeinit_kwin DESTINATION ${LIB_INSTALL_DIR} ) install(TARGETS kdeinit_kwin DESTINATION ${LIB_INSTALL_DIR} )
target_link_libraries( kwin kdeinit_kwin ) target_link_libraries( kwin kdeinit_kwin )
install(TARGETS kwin DESTINATION ${BIN_INSTALL_DIR}) install(TARGETS kwin DESTINATION bin)
########### install files ############### ########### install files ###############
install( FILES kwin.kcfg DESTINATION ${KCFG_INSTALL_DIR} ) install( FILES kwin.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
install( FILES kwin.notifyrc DESTINATION ${DATA_INSTALL_DIR}/kwin ) install( FILES kwin.notifyrc DESTINATION ${DATA_INSTALL_DIR}/kwin )
install( FILES org.kde.KWin.xml DESTINATION ${DBUS_INTERFACES_DIR} )
kde4_install_icons( ${ICON_INSTALL_DIR} ) kde4_install_icons( ${ICON_INSTALL_DIR} crystalsvg )
#original Makefile.am contents follow:
#INCLUDES = -I$(srcdir)/lib $(all_includes)
#
#SUBDIRS = lib . killer kcmkwin pics clients oldheaders data
#
#bin_PROGRAMS =
#lib_LTLIBRARIES =
#kdeinit_LTLIBRARIES = kwin.la
#
#kwin_la_SOURCES = workspace.cpp client.cpp placement.cpp atoms.cpp \
# utils.cpp layers.cpp main.cpp popupinfo.cpp tabbox.cpp \
# options.cpp plugins.cpp events.cpp KWinInterface.skel \
# killwindow.cpp geometrytip.cpp sm.cpp group.cpp bridge.cpp \
# manage.cpp notifications.cpp activation.cpp useractions.cpp \
# geometry.cpp rules.cpp
#
#kwin_la_LIBADD = $(LIB_KDEUI) lib/libkdecorations.la
#kwin_la_LDFLAGS = $(all_libraries) -module -avoid-version
#
#include_HEADERS = KWinInterface.h
#
#KDE_ICON = kwin
#
#METASOURCES = AUTO
#
#messages: rc.cpp
# $(XGETTEXT) *.h *.cpp killer/*.cpp lib/*.cpp -o $(podir)/kwin.pot
#
#kwin_datadir = $(kde_datadir)/kwin
#
#kwin_data_DATA= eventsrc
#
#kde_kcfg_DATA = kwin.kcfg
#
#include ../../admin/Doxyfile.am

View file

@ -29,6 +29,7 @@ License. See the file "COPYING" for the exact licensing terms.
#include "atoms.h" #include "atoms.h"
#include "group.h" #include "group.h"
#include "rules.h" #include "rules.h"
#include "effects.h"
#include <QX11Info> #include <QX11Info>
namespace KWinInternal namespace KWinInternal
@ -245,6 +246,8 @@ void Workspace::setActiveClient( Client* c, allowed_t )
rootInfo->setActiveWindow( active_client? active_client->window() : 0 ); rootInfo->setActiveWindow( active_client? active_client->window() : 0 );
updateColormap(); updateColormap();
if( effects )
effects->windowActivated( active_client );
--set_active_client_recursion; --set_active_client_recursion;
} }
@ -697,7 +700,7 @@ void Client::demandAttentionKNotify()
} }
// TODO I probably shouldn't be lazy here and do it without the macro, so that people can read it // TODO I probably shouldn't be lazy here and do it without the macro, so that people can read it
KWIN_COMPARE_PREDICATE( SameApplicationActiveHackPredicate, const Client*, KWIN_COMPARE_PREDICATE( SameApplicationActiveHackPredicate, Client, const Client*,
// ignore already existing splashes, toolbars, utilities, menus and topmenus, // ignore already existing splashes, toolbars, utilities, menus and topmenus,
// as the app may show those before the main window // as the app may show those before the main window
!cl->isSplash() && !cl->isToolbar() && !cl->isTopMenu() && !cl->isUtility() && !cl->isMenu() !cl->isSplash() && !cl->isToolbar() && !cl->isTopMenu() && !cl->isUtility() && !cl->isMenu()

View file

@ -6,18 +6,48 @@ include_directories( ${CMAKE_SOURCE_DIR}/workspace/kwin/lib )
########### next target ############### ########### next target ###############
set(kwin3_b2_PART_SRCS b2client.cpp) set(kwin3_b2_PART_SRCS b2client.cpp )
kde4_automoc(${kwin3_b2_PART_SRCS}) kde4_automoc(kwin3_b2 ${kwin3_b2_PART_SRCS})
kde4_add_plugin(kwin3_b2 ${kwin3_b2_PART_SRCS}) kde4_add_plugin(kwin3_b2 ${kwin3_b2_PART_SRCS})
kde4_install_libtool_file( ${PLUGIN_INSTALL_DIR} kwin3_b2 )
target_link_libraries(kwin3_b2 ${KDE4_KDEFX_LIBS} ${KDE4_KDEUI_LIBS} kdecorations ${QT_QT3SUPPORT_LIBRARY} ${X11_LIBRARIES} ${QT_QTGUI_LIBRARY}) target_link_libraries(kwin3_b2 ${KDE4_KDEUI_LIBS} kdecorations kdefx ${QT_QT3SUPPORT_LIBRARY} ${X11_LIBRARIES} ${QT_QTGUI_LIBRARY})
install(TARGETS kwin3_b2 DESTINATION ${PLUGIN_INSTALL_DIR}) install(TARGETS kwin3_b2 DESTINATION ${PLUGIN_INSTALL_DIR} )
########### install files ############### ########### install files ###############
install( FILES b2.desktop DESTINATION ${DATA_INSTALL_DIR}/kwin/ ) install( FILES b2.desktop DESTINATION ${DATA_INSTALL_DIR}/kwin/ )
#original Makefile.am contents follow:
#
#INCLUDES = -I$(srcdir)/../../lib $(all_includes)
#
#SUBDIRS = . config
#
#kde_module_LTLIBRARIES = kwin3_b2.la
#
#kwin3_b2_la_SOURCES = b2client.cpp
#kwin3_b2_la_LDFLAGS = $(all_libraries) $(KDE_PLUGIN) -module
## kwin_b2_la_LDFLAGS = $(all_libraries) -avoid-version -module $(KDE_RPATH) $(KDE_MT_LDFLAGS)
#kwin3_b2_la_LIBADD = ../../lib/libkdecorations.la -lkdefx
#
#METASOURCES = AUTO
#noinst_HEADERS = b2client.h
#
#lnkdir = $(kde_datadir)/kwin/
#lnk_DATA = b2.desktop
#
#EXTRA_DIST = $(lnk_DATA)
#
####KMAKE-start (don't edit or delete this block)
#
####KMAKE-end

View file

@ -10,7 +10,7 @@ set(kdecorations_LIB_SRCS
kdecorationfactory.cpp kdecorationfactory.cpp
kcommondecoration.cpp ) kcommondecoration.cpp )
kde4_automoc(${kdecorations_LIB_SRCS}) kde4_automoc(kdecorations ${kdecorations_LIB_SRCS})
kde4_add_library(kdecorations SHARED ${kdecorations_LIB_SRCS}) kde4_add_library(kdecorations SHARED ${kdecorations_LIB_SRCS})
@ -22,4 +22,30 @@ install(TARGETS kdecorations DESTINATION ${LIB_INSTALL_DIR} )
########### install files ############### ########### install files ###############
install( FILES kdecoration.h kdecoration_p.h kdecoration_plugins_p.h kdecorationfactory.h kcommondecoration.h DESTINATION ${INCLUDE_INSTALL_DIR}) install_files( /include FILES kdecoration.h kdecoration_p.h kdecoration_plugins_p.h kdecorationfactory.h kcommondecoration.h )
#original Makefile.am contents follow:
## FRAME libkwin???
#lib_LTLIBRARIES = libkdecorations.la
#
#libkdecorations_la_SOURCES = kdecoration.cpp kdecoration_p.cpp kdecoration_plugins_p.cpp \
# kdecorationfactory.cpp kcommondecoration.cpp
#libkdecorations_la_LIBADD = $(LIB_KDECORE)
#libkdecorations_la_LDFLAGS = $(all_libraries) -version-info 1:0:0 -no-undefined
#
## FRAME
#include_HEADERS = kdecoration.h kdecoration_p.h kdecoration_plugins_p.h \
# kdecorationfactory.h kcommondecoration.h
#
#INCLUDES = $(all_includes)
#METASOURCES = AUTO
#
#include ../../../admin/Doxyfile.am
#
#messages: rc.cpp
# $(XGETTEXT) `find . -name \*.cpp` -o $(podir)/kwin_lib.pot
# -rm rc.cpp

View file

@ -14,7 +14,6 @@ License. See the file "COPYING" for the exact licensing terms.
#include "main.h" #include "main.h"
#include <kglobal.h>
#include <klocale.h> #include <klocale.h>
#include <stdlib.h> #include <stdlib.h>
#include <kcmdlineargs.h> #include <kcmdlineargs.h>
@ -26,12 +25,13 @@ License. See the file "COPYING" for the exact licensing terms.
#include <stdio.h> #include <stdio.h>
#include <fixx11h.h> #include <fixx11h.h>
#include <QtDBus/QtDBus> #include <QtDBus/QtDBus>
#include "ksplash_interface.h" #include <kglobal.h>
#include "atoms.h" #include "atoms.h"
#include "options.h" #include "options.h"
#include "sm.h" #include "sm.h"
#include "utils.h" #include "utils.h"
#include "effects.h"
#define INT8 _X11INT8 #define INT8 _X11INT8
#define INT32 _X11INT32 #define INT32 _X11INT32
@ -119,6 +119,8 @@ Application::Application( )
options = new Options; options = new Options;
atoms = new Atoms; atoms = new Atoms;
initting = false; // TODO
// create workspace. // create workspace.
(void) new Workspace( isSessionRestored() ); (void) new Workspace( isSessionRestored() );
@ -127,9 +129,8 @@ Application::Application( )
initting = false; // startup done, we are up and running now. initting = false; // startup done, we are up and running now.
org::kde::KSplash ksplash("org.kde.ksplash", "/KSplash", QDBusConnection::sessionBus()); QDBusInterface ksplash( "org.kde.ksplash", "/ksplash", "org.kde.KSplash" );
ksplash.upAndRunning(QString( "wm started" )); ksplash.call( "upAndRunning", QString( "wm started" ));
XEvent e; XEvent e;
e.xclient.type = ClientMessage; e.xclient.type = ClientMessage;
e.xclient.message_type = XInternAtom( display(), "_KDE_SPLASH_PROGRESS", False ); e.xclient.message_type = XInternAtom( display(), "_KDE_SPLASH_PROGRESS", False );
@ -146,6 +147,8 @@ Application::~Application()
if( owner.ownerWindow() != None ) // if there was no --replace (no new WM) if( owner.ownerWindow() != None ) // if there was no --replace (no new WM)
XSetInputFocus( display(), PointerRoot, RevertToPointerRoot, xTime() ); XSetInputFocus( display(), PointerRoot, RevertToPointerRoot, xTime() );
delete options; delete options;
delete effects;
delete atoms;
} }
void Application::lostSelection() void Application::lostSelection()
@ -280,9 +283,9 @@ KDE_EXPORT int kdemain( int argc, char * argv[] )
QString appname; QString appname;
if (KWinInternal::screen_number == 0) if (KWinInternal::screen_number == 0)
appname = "org.kde.kwin"; appname = "kwin";
else else
appname.sprintf("org.kde.kwin-screen-%d", KWinInternal::screen_number); appname.sprintf("kwin-screen-%d", KWinInternal::screen_number);
QDBusConnection::sessionBus().interface()->registerService( appname, QDBusConnectionInterface::DontQueueService ); QDBusConnection::sessionBus().interface()->registerService( appname, QDBusConnectionInterface::DontQueueService );

24
sm.cpp
View file

@ -11,7 +11,6 @@ License. See the file "COPYING" for the exact licensing terms.
#include "sm.h" #include "sm.h"
//#include <kdebug.h>
#include <unistd.h> #include <unistd.h>
#include <stdlib.h> #include <stdlib.h>
#include <pwd.h> #include <pwd.h>
@ -23,6 +22,7 @@ License. See the file "COPYING" for the exact licensing terms.
#include "client.h" #include "client.h"
#include <QSocketNotifier> #include <QSocketNotifier>
#include <qsessionmanager.h> #include <qsessionmanager.h>
#include <kdebug.h>
namespace KWinInternal namespace KWinInternal
{ {
@ -257,6 +257,28 @@ bool Workspace::sessionInfoWindowTypeMatch( Client* c, SessionInfo* info )
return info->windowType == c->windowType(); return info->windowType == c->windowType();
} }
// maybe needed later
#if 0
// KMainWindow's without name() given have WM_WINDOW_ROLE in the form
// of <appname>-mainwindow#<number>
// when comparing them for fake session info, it's probably better to check
// them without the trailing number
bool Workspace::windowRoleMatch( const QByteArray& role1, const QByteArray& role2 )
{
if( role1.isEmpty() && role2.isEmpty())
return true;
int pos1 = role1.find( '#' );
int pos2 = role2.find( '#' );
bool ret;
if( pos1 < 0 || pos2 < 0 || pos1 != pos2 )
ret = role1 == role2;
else
ret = qstrncmp( role1, role2, pos1 ) == 0;
kDebug() << "WR:" << role1 << ":" << pos1 << ":" << role2 << ":" << pos2 << ":::" << ret << endl;
return ret;
}
#endif
static const char* const window_type_names[] = static const char* const window_type_names[] =
{ {
"Unknown", "Normal" , "Desktop", "Dock", "Toolbar", "Menu", "Dialog", "Unknown", "Normal" , "Desktop", "Dock", "Toolbar", "Menu", "Dialog",