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 <kprocess.h> #include <qtabwidget.h> +#include <stdlib.h> #include <X11/X.h> #include <X11/Xlib.h> #include <X11/Xutil.h> @@ -1473,6 +1474,8 @@ void KTranslucencyConfig::load( void ) movingWindowOpacity->setEnabled(movingWindowTransparency->isChecked()); dockWindowOpacity->setEnabled(dockWindowTransparency->isChecked()); + if( !QFile::exists( QDir::homeDirPath() + "/.xcompmgrrc" )) + system( "/bin/cp /etc/opt/kde3/share/config/xcompmgrrc $HOME/.xcompmgrrc" ); KConfig conf_(QDir::homeDirPath() + "/.xcompmgrrc"); conf_.setGroup("xcompmgr"); --- kwin/kompmgr/kompmgr.c.sav 2006-11-08 12:03:40.000000000 +0100 +++ kwin/kompmgr/kompmgr.c 2006-11-09 17:55:37.000000000 +0100 @@ -2420,6 +2420,8 @@ loadConfig(char *filename){ strcat(filename, home); strcat(filename, configfile); + if( access( filename, R_OK ) != 0 ) + system( "/bin/cp /etc/opt/kde3/share/config/xcompmgrrc $HOME/.xcompmgrrc" ); } printf("trying '%s' as configfile\n\n", filename); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org