Hello community,
here is the log from the commit of package kdebase3
checked in at Fri Nov 10 16:08:31 CET 2006.
--------
--- KDE/kdebase3/kdebase3.changes 2006-11-09 20:04:01.000000000 +0100
+++ /mounts/work_src_done/STABLE/kdebase3/kdebase3.changes 2006-11-10 15:43:13.000000000 +0100
@@ -1,0 +2,9 @@
+Fri Nov 10 15:40:30 CET 2006 - llunak@suse.cz
+
+- make kompmgr read default settings from /etc/opt/kde3/... .
+- fix clickraise with compositing (KDE#128648)
+- fix possible infinite loop in kompmgr
+- composite manager selection in kompmgr
+- fix focus chain when opening links in background
+
+-------------------------------------------------------------------
New:
----
3_5_BRANCH_kde_128648.diff
3_5_BRANCH_kompmgr_fix_loop.diff
3_5_BRANCH_kwin_open_in_bg.diff
3_5_BRANCH_net_wm_cm_selection.diff
kompmgr_use_defaults.diff
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ kdebase3.spec ++++++
--- /var/tmp/diff_new_pack.PAUwaB/_old 2006-11-10 16:06:39.000000000 +0100
+++ /var/tmp/diff_new_pack.PAUwaB/_new 2006-11-10 16:06:39.000000000 +0100
@@ -52,7 +52,7 @@
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Url: http://www.kde.org/
Version: 3.5.5
-Release: 43
+Release: 44
%define kde_version 3.5.5
Source0: kdebase-%{kde_version}.tar.bz2
Source3: startkde.suse.sh
@@ -183,6 +183,11 @@
Patch177: kio-media-errorhandling.diff
Patch178: kcheckpass.diff
Patch179: restore-description-parens.diff
+Patch180: kompmgr_use_defaults.diff
+Patch181: 3_5_BRANCH_kde_128648.diff
+Patch182: 3_5_BRANCH_net_wm_cm_selection.diff
+Patch183: 3_5_BRANCH_kompmgr_fix_loop.diff
+Patch184: 3_5_BRANCH_kwin_open_in_bg.diff
%description
This package contains kdebase, one of the basic packages of the K
@@ -368,7 +373,7 @@
Summary: Set and list fileshares
Group: System/Management
Version: 2.0
-Release: 172
+Release: 173
%description -n fileshareset
This package contains the the fileshareset utility to allow users to
@@ -525,6 +530,11 @@
%patch177
%patch178
%patch179
+%patch180
+%patch181
+%patch182
+%patch183
+%patch184
cp %SOURCE17 l10n/tw/flag.png
. /etc/opt/kde3/common_options
cd ../fileshareset2
@@ -1482,6 +1492,12 @@
%endif
%changelog -n kdebase3
+* Fri Nov 10 2006 - llunak@suse.cz
+- make kompmgr read default settings from /etc/opt/kde3/... .
+- fix clickraise with compositing (KDE#128648)
+- fix possible infinite loop in kompmgr
+- composite manager selection in kompmgr
+- fix focus chain when opening links in background
* Thu Nov 09 2006 - stbinner@suse.de
- fix Kicker default behavior: don't turn on right hide button
- restore parens for NameAndDescription format in Kicker (#213450)
++++++ 3_5_BRANCH_kde_128648.diff ++++++
--- kwin/events.cpp.sav 2006-11-08 12:38:48.000000000 +0100
+++ kwin/events.cpp 2006-11-08 14:33:33.000000000 +0100
@@ -631,9 +631,6 @@ bool Client::windowEvent( XEvent* e )
workspace()->updateColormap();
}
break;
- case VisibilityNotify:
- visibilityNotifyEvent( &e->xvisibility );
- break;
default:
if( e->xany.window == window())
{
@@ -1009,18 +1006,13 @@ void Client::ungrabButton( int modifier
*/
void Client::updateMouseGrab()
{
- if( workspace()->globalShortcutsDisabled())
- {
- XUngrabButton( qt_xdisplay(), AnyButton, AnyModifier, wrapperId());
- // keep grab for the simple click without modifiers if needed
- if( !( !options->clickRaise || not_obscured ))
- grabButton( None );
- return;
- }
if( isActive() && !workspace()->forcedGlobalMouseGrab()) // see Workspace::establishTabBoxGrab()
{
// remove the grab for no modifiers only if the window
// is unobscured or if the user doesn't want click raise
+ // (it is unobscured if it the topmost in the unconstrained stacking order, i.e. it is
+ // the most recently raised window)
+ bool not_obscured = workspace()->topClientOnDesktop( workspace()->currentDesktop(), true ) == this;
if( !options->clickRaise || not_obscured )
ungrabButton( None );
else
@@ -1455,17 +1447,6 @@ void Client::focusOutEvent( XFocusOutEve
setActive( FALSE );
}
-void Client::visibilityNotifyEvent( XVisibilityEvent * e)
- {
- if( e->window != frameId())
- return; // care only about the whole frame
- bool new_not_obscured = e->state == VisibilityUnobscured;
- if( not_obscured == new_not_obscured )
- return;
- not_obscured = new_not_obscured;
- updateMouseGrab();
- }
-
// performs _NET_WM_MOVERESIZE
void Client::NETMoveResize( int x_root, int y_root, NET::Direction direction )
{
--- kwin/client.h.sav 2006-11-08 12:38:48.000000000 +0100
+++ kwin/client.h 2006-11-08 12:44:05.000000000 +0100
@@ -336,7 +336,6 @@ class Client : public QObject, public KD
void clientMessageEvent( XClientMessageEvent* e );
void enterNotifyEvent( XCrossingEvent* e );
void leaveNotifyEvent( XCrossingEvent* e );
- void visibilityNotifyEvent( XVisibilityEvent* e );
void focusInEvent( XFocusInEvent* e );
void focusOutEvent( XFocusOutEvent* e );
@@ -485,7 +484,6 @@ class Client : public QObject, public KD
uint modal : 1; // NET::Modal
uint noborder : 1;
uint user_noborder : 1;
- uint not_obscured : 1;
uint urgency : 1; // XWMHints, UrgencyHint
uint ignore_focus_stealing : 1; // don't apply focus stealing prevention to this client
uint demands_attention : 1;
--- kwin/client.cpp.sav 2006-11-08 12:38:48.000000000 +0100
+++ kwin/client.cpp 2006-11-08 12:44:05.000000000 +0100
@@ -128,7 +128,6 @@ Client::Client( Workspace *ws )
modal = false;
noborder = false;
user_noborder = false;
- not_obscured = false;
urgency = false;
ignore_focus_stealing = false;
demands_attention = false;
--- kwin/manage.cpp.sav 2006-08-10 15:05:22.000000000 +0200
+++ kwin/manage.cpp 2006-11-08 12:49:50.000000000 +0100
@@ -565,8 +565,7 @@ void Client::embedClient( Window w, cons
FocusChangeMask |
ExposureMask |
PropertyChangeMask |
- StructureNotifyMask | SubstructureRedirectMask |
- VisibilityChangeMask );
+ StructureNotifyMask | SubstructureRedirectMask );
XSelectInput( qt_xdisplay(), wrapper, ClientWinMask | SubstructureNotifyMask );
XSelectInput( qt_xdisplay(), client,
FocusChangeMask |
--- kwin/workspace.cpp.sav 2006-11-08 12:38:48.000000000 +0100
+++ kwin/workspace.cpp 2006-11-08 12:50:52.000000000 +0100
@@ -2022,8 +2022,7 @@ void Workspace::createBorderWindows()
XSetWindowAttributes attributes;
unsigned long valuemask;
attributes.override_redirect = True;
- attributes.event_mask = (EnterWindowMask | LeaveWindowMask |
- VisibilityChangeMask);
+ attributes.event_mask = ( EnterWindowMask | LeaveWindowMask );
valuemask= (CWOverrideRedirect | CWEventMask | CWCursor );
attributes.cursor = XCreateFontCursor(qt_xdisplay(),
XC_sb_up_arrow);
--- kwin/layers.cpp.sav 2006-11-08 12:30:11.000000000 +0100
+++ kwin/layers.cpp 2006-11-08 13:15:39.000000000 +0100
@@ -117,7 +117,11 @@ void Workspace::updateStackingOrder( boo
}
#endif
if( changed || propagate_new_clients )
+ {
propagateClients( propagate_new_clients );
+ if( active_client )
+ active_client->updateMouseGrab();
+ }
}
/*!
++++++ 3_5_BRANCH_kompmgr_fix_loop.diff ++++++
--- kwin/kompmgr/kompmgr.c.sav 2006-09-01 13:22:04.000000000 +0200
+++ kwin/kompmgr/kompmgr.c 2006-11-08 12:02:15.000000000 +0100
@@ -2434,7 +2434,7 @@ loadConfig(char *filename){
}
/*find section*/
- while( !section && fgets(line, 1023, file) != -1 ){
+ while( !section && fgets(line, 1023, file) != NULL ){
if( strcmp(line, "[xcompmgr]\n") == 0 )
section = True;
}
++++++ 3_5_BRANCH_kwin_open_in_bg.diff ++++++
--- kwin/layers.cpp.sav 2006-11-07 16:37:15.000000000 +0100
+++ kwin/layers.cpp 2006-11-07 17:29:49.000000000 +0100
@@ -404,20 +404,27 @@ void Workspace::restackClientUnderActive
return;
}
- // put in the stacking order below _all_ windows belonging to the active application
assert( unconstrained_stacking_order.contains( active_client ));
- for( ClientList::Iterator it = unconstrained_stacking_order.begin();
- it != unconstrained_stacking_order.end();
- ++it )
- { // TODO ignore topmenus?
- if( Client::belongToSameApplication( active_client, *it ))
- {
- if( *it != c )
+ if( Client::belongToSameApplication( active_client, c ))
+ { // put it below the active window if it's the same app
+ unconstrained_stacking_order.remove( c );
+ unconstrained_stacking_order.insert( unconstrained_stacking_order.find( active_client ), c );
+ }
+ else
+ { // put in the stacking order below _all_ windows belonging to the active application
+ for( ClientList::Iterator it = unconstrained_stacking_order.begin();
+ it != unconstrained_stacking_order.end();
+ ++it )
+ { // TODO ignore topmenus?
+ if( Client::belongToSameApplication( active_client, *it ))
{
- unconstrained_stacking_order.remove( c );
- unconstrained_stacking_order.insert( it, c );
+ if( *it != c )
+ {
+ unconstrained_stacking_order.remove( c );
+ unconstrained_stacking_order.insert( it, c );
+ }
+ break;
}
- break;
}
}
assert( unconstrained_stacking_order.contains( c ));
@@ -427,16 +434,23 @@ void Workspace::restackClientUnderActive
{ // do for every virtual desktop to handle the case of onalldesktop windows
if( c->wantsTabFocus() && c->isOnDesktop( desktop ) && focus_chain[ desktop ].contains( active_client ))
{
- // also put in focus_chain[currentDesktop()] after all windows belonging to the active applicationa
- focus_chain[ desktop ].remove( c );
- for( ClientList::Iterator it = focus_chain[ desktop ].fromLast();
- it != focus_chain[ desktop ].end();
- --it )
- {
- if( Client::belongToSameApplication( active_client, *it ))
- {
- focus_chain[ desktop ].insert( it, c );
- break;
+ if( Client::belongToSameApplication( active_client, c ))
+ { // put it after the active window if it's the same app
+ focus_chain[ desktop ].remove( c );
+ focus_chain[ desktop ].insert( focus_chain[ desktop ].find( active_client ), c );
+ }
+ else
+ { // put it in focus_chain[currentDesktop()] after all windows belonging to the active applicationa
+ focus_chain[ desktop ].remove( c );
+ for( ClientList::Iterator it = focus_chain[ desktop ].fromLast();
+ it != focus_chain[ desktop ].end();
+ --it )
+ {
+ if( Client::belongToSameApplication( active_client, *it ))
+ {
+ focus_chain[ desktop ].insert( it, c );
+ break;
+ }
}
}
}
@@ -444,15 +458,23 @@ void Workspace::restackClientUnderActive
// the same for global_focus_chain
if( c->wantsTabFocus() && global_focus_chain.contains( active_client ))
{
- global_focus_chain.remove( c );
- for( ClientList::Iterator it = global_focus_chain.fromLast();
- it != global_focus_chain.end();
- --it )
+ if( Client::belongToSameApplication( active_client, c ))
{
- if( Client::belongToSameApplication( active_client, *it ))
+ global_focus_chain.remove( c );
+ global_focus_chain.insert( global_focus_chain.find( active_client ), c );
+ }
+ else
+ {
+ global_focus_chain.remove( c );
+ for( ClientList::Iterator it = global_focus_chain.fromLast();
+ it != global_focus_chain.end();
+ --it )
{
- global_focus_chain.insert( it, c );
- break;
+ if( Client::belongToSameApplication( active_client, *it ))
+ {
+ global_focus_chain.insert( it, c );
+ break;
+ }
}
}
}
++++++ 3_5_BRANCH_net_wm_cm_selection.diff ++++++
--- kwin/workspace.cpp.sav 2006-11-08 15:21:19.000000000 +0100
+++ kwin/workspace.cpp 2006-11-08 15:41:44.000000000 +0100
@@ -55,6 +55,7 @@ extern int screen_number;
Workspace *Workspace::_self = 0;
KProcess* kompmgr = 0;
+KSelectionOwner* kompmgr_selection;
bool allowKompmgrRestart = TRUE;
@@ -2437,6 +2438,12 @@ void Workspace::startKompmgr()
}
else
{
+ delete kompmgr_selection;
+ char selection_name[ 100 ];
+ sprintf( selection_name, "_NET_WM_CM_S%d", DefaultScreen( qt_xdisplay()));
+ kompmgr_selection = new KSelectionOwner( selection_name );
+ connect( kompmgr_selection, SIGNAL( lostOwnership()), SLOT( stopKompmgr()));
+ kompmgr_selection->claim( true );
connect(kompmgr, SIGNAL(processExited(KProcess*)), SLOT(restartKompmgr()));
options->useTranslucency = TRUE;
allowKompmgrRestart = FALSE;
@@ -2453,6 +2460,8 @@ void Workspace::stopKompmgr()
{
if (!kompmgr || !kompmgr->isRunning())
return;
+ delete kompmgr_selection;
+ kompmgr_selection = NULL;
kompmgr->disconnect(this, SLOT(restartKompmgr()));
options->useTranslucency = FALSE;
if (popup){ delete popup; popup = 0L; } // to add/remove opacity slider
@@ -2478,6 +2487,8 @@ void Workspace::restartKompmgr()
{
if (!allowKompmgrRestart) // uh-ohh
{
+ delete kompmgr_selection;
+ kompmgr_selection = NULL;
options->useTranslucency = FALSE;
KProcess proc;
proc << "kdialog" << "--error"
@@ -2498,6 +2509,8 @@ void Workspace::restartKompmgr()
// -------------------
if (!kompmgr->start(KProcess::NotifyOnExit, KProcess::Stderr))
{
+ delete kompmgr_selection;
+ kompmgr_selection = NULL;
options->useTranslucency = FALSE;
KProcess proc;
proc << "kdialog" << "--error"
--- kwin/workspace.h.sav 2006-11-08 15:21:19.000000000 +0100
+++ kwin/workspace.h 2006-11-08 15:24:21.000000000 +0100
@@ -234,7 +234,6 @@ class Workspace : public QObject, public
void sendPingToWindow( Window w, Time timestamp ); // called from Client::pingWindow()
void sendTakeActivity( Client* c, Time timestamp, long flags ); // called from Client::takeActivity()
- void stopKompmgr();
bool kompmgrIsRunning();
void setOpacity(unsigned long winId, unsigned int opacityPercent);
void setShadowSize(unsigned long winId, unsigned int shadowSizePercent);
@@ -382,6 +381,7 @@ class Workspace : public QObject, public
void unblockKompmgrRestart();
void restartKompmgr();
void handleKompmgrOutput( KProcess *proc, char *buffer, int buflen);
+ void stopKompmgr();
// end
protected:
++++++ kompmgr_use_defaults.diff ++++++
--- kwin/kcmkwin/kwinoptions/windows.cpp.sav 2006-09-01 13:22:04.000000000 +0200
+++ kwin/kcmkwin/kwinoptions/windows.cpp 2006-11-09 19:10:48.000000000 +0100
@@ -46,6 +46,7 @@
#include