Bug 169588 - Taskbar icon behaves funny
Summary: Taskbar icon behaves funny
Status: VERIFIED FIXED
Alias: None
Product: ktimetracker
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: unspecified Linux
: NOR normal
Target Milestone: ---
Assignee: Thorsten Staerk
URL:
Keywords:
: 173319 (view as bug list)
Depends on:
Blocks:
 
Reported: 2008-08-22 16:01 UTC by Thomas Jarosch
Modified: 2019-11-12 22:31 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:
Sentry Crash Report:


Attachments
start tray icon clock if task is running at program startup (9.70 KB, patch)
2008-08-23 10:07 UTC, Thorsten Staerk
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Jarosch 2008-08-22 16:01:09 UTC
Version:           4.0.0 (using 4.1.00 (KDE 4.1.0), 4.1.0-5.fc9 Fedora)
Compiler:          gcc
OS:                Linux (i686) release 2.6.25.14-108.fc9.i686

Hello,

I've just upgraded from KDE 3.5.9 to KDE 4.1.0 using the Fedora packages. I noticed three things about the new ktimetracker:

- Every second time I leave for my lunch hour and lock my screen, the taskbar icon is gone when I come back later. I tried to "strace" this one but with no lock so far.

- Set one task to active. You'll get a rotating clock in the taskbar and in the application. If you quit the application via "File -> Quit" and restart it, the animation of the taskbar is not restarted.

- On startup I see these messages on the console:
QObject::connect: Cannot connect (null)::totalTimesChanged( long, long ) to TimetrackerWidget::totalTimesChanged( long, long )
QObject::connect: Cannot connect (null)::reSetTimes() to TimetrackerWidget::reSetTimes()

FYI: I've not deleted or converted my karm KDE 3.5.9 in any special way.

Best regards,
Thomas
Comment 1 Thorsten Staerk 2008-08-23 10:07:41 UTC
Created attachment 26996 [details]
start tray icon clock if task is running at program startup
Comment 2 Thorsten Staerk 2008-08-23 10:08:10 UTC
ok, 2 bug reports in one...
Comment 3 Thomas Jarosch 2008-08-23 15:26:01 UTC
Thanks for the quick fix! I'll try to trace the disappearing traybar icon next week and will then open a second bug report if that is okay with you.
Comment 4 Thorsten Staerk 2008-08-27 07:49:20 UTC
If the taskbar icon has disappeared, is ktimetracker still running (ps -A | grep ktimetracker)? Obviously yes, because you strace it, but could you confirm?
Comment 5 Thomas Jarosch 2008-08-27 10:18:54 UTC
When I strace it, the icon stays in the taskbar, so the process still exists.
I also haven't figured out yet if it makes a difference if a task is running or not.

Today I won't strace it, but dump the process list every minute into a file. So we'll atleast know if the process still exists or how long it takes until the issue occurs.
Comment 6 Thomas Jarosch 2008-08-27 15:46:01 UTC
Yipee, I figured out how to reproduce this one :-)

1. Set the "idle detection" to 1 minute
2. Start a task
3. Close the window. ktimetracker stays in the taskbar
   and get a coffe or tea

4. You'll be asked if you want to continue or revert the tracked time.
   Select "continue" and then ktimetracker just exits.

I see this message on the gdb console:
"Object::connect: No such signal QWidget::changed(bool)
Program exited normally."

ktimetracker does not exit if the application window stays open.
Comment 7 Thorsten Staerk 2008-08-28 09:02:43 UTC
Great, you deserve a beer for making this reproducible!
However, I just ran into a bug so that I cannot use the idle time detection. As soon as I can, I will continue here.
Comment 8 Thorsten Staerk 2008-08-29 09:21:30 UTC
For me, it does not exit if I click "Continue". If the problem persists, please compile kdepim from 4.1 branch as outlined on http://techbase.kde.org/Getting_Started then start ktimetracker from console and attach the konsole output here. Good that you used gdb, but at the moment I prefer the konsole output...
Comment 9 Thomas Jarosch 2008-08-29 14:42:56 UTC
Ok, I just checked out the KDE 4.1 kdepim branched and compile ktimetracker.
Before running it, it set the LD_LIBRARY_PATH to "build_dir/kdepim/lib:$LD_LIBRARY_PATH" to make sure it picks up the new base libraries (verified via ldd)

The window still disappears. I've had a quick look around the code,
to me the "Object::connect: No such signal QWidget::changed(bool)" error messages gets issued in IdleTimeDetector::informOverrun(), so I've added debug output before and after the connect() call.

Here's the konsole ouput:
ktimetracker(13218) Task::changeTimes: Entering function
ktimetracker(13218) Task::changeTimes: Task's sessionStartTiMe is  KDateTime()
ktimetracker(13218) Task::changeTotalTimes: Task::changeTotalTimes( 1 , 1 ) for "Debug"
ktimetracker(13218) Task::update: Entering function
ktimetracker(13218) formatTime: Entering function(minutes= 1 ,decimal= false );
ktimetracker(13218) formatTime: Entering function(minutes= 1 ,decimal= false );
ktimetracker(13218) formatTime: Entering function(minutes= 1 ,decimal= false );
ktimetracker(13218) formatTime: Entering function(minutes= 1 ,decimal= false );
ktimetracker(13218) Task::update: Leaving function
ktimetracker(13218) MainWindow::updateTime: Entering function(sessionDiff= 1  totalDiff= 1 )
ktimetracker(13218) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( )
ktimetracker(13218) formatTime: Entering function(minutes= 45 ,decimal= false );
ktimetracker(13218) formatTime: Entering function(minutes= 9491 ,decimal= false );
ktimetracker(13218) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( )
ktimetracker(13218) MainWindow::updateTime: Exiting MainWindow::updateTime
ktimetracker(13218) Task::changeTotalTimes: Leaving function
ktimetracker(13218) Task::changeTimes: Leaving function
ktimetracker(13218) Task::changeTimes: Entering function
ktimetracker(13218) Task::changeTimes: Task's sessionStartTiMe is  KDateTime()
ktimetracker(13218) Task::changeTotalTimes: Task::changeTotalTimes( 1 , 1 ) for "Debug"
ktimetracker(13218) Task::update: Entering function
ktimetracker(13218) formatTime: Entering function(minutes= 2 ,decimal= false );
ktimetracker(13218) formatTime: Entering function(minutes= 2 ,decimal= false );
ktimetracker(13218) formatTime: Entering function(minutes= 2 ,decimal= false );
ktimetracker(13218) formatTime: Entering function(minutes= 2 ,decimal= false );
ktimetracker(13218) Task::update: Leaving function
ktimetracker(13218) MainWindow::updateTime: Entering function(sessionDiff= 1  totalDiff= 1 )
ktimetracker(13218) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( )
ktimetracker(13218) formatTime: Entering function(minutes= 46 ,decimal= false );
ktimetracker(13218) formatTime: Entering function(minutes= 9492 ,decimal= false );
ktimetracker(13218) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( )
ktimetracker(13218) MainWindow::updateTime: Exiting MainWindow::updateTime
ktimetracker(13218) Task::changeTotalTimes: Leaving function
ktimetracker(13218) Task::changeTimes: Leaving function
ktimetracker(13218) IdleTimeDetector::informOverrun: TOMJ: Before connect(SIGNAL(changed(bool))).
Object::connect: No such signal QWidget::changed(bool)
ktimetracker(13218) IdleTimeDetector::informOverrun: TOMJ: after connect(SIGNAL(changed(bool))).
ktimetracker(13218) MainWindow::~MainWindow: MainWindow::~MainWindows: Quitting ktimetracker.

If I do the same procedure with the "Revert" button, the application also closes:

ktimetracker(13751) Task::changeTimes: Entering function
ktimetracker(13751) Task::changeTimes: Task's sessionStartTiMe is  KDateTime()     
ktimetracker(13751) Task::changeTotalTimes: Task::changeTotalTimes( 1 , 1 ) for "Debug"
ktimetracker(13751) Task::update: Entering function                                    
ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false );        
ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false );        
ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false );        
ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false );        
ktimetracker(13751) Task::update: Leaving function                                     
ktimetracker(13751) MainWindow::updateTime: Entering function(sessionDiff= 1  totalDiff= 1 )
ktimetracker(13751) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( )    
ktimetracker(13751) formatTime: Entering function(minutes= 45 ,decimal= false );            
ktimetracker(13751) formatTime: Entering function(minutes= 9491 ,decimal= false );          
ktimetracker(13751) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( )     
ktimetracker(13751) MainWindow::updateTime: Exiting MainWindow::updateTime                  
ktimetracker(13751) Task::changeTotalTimes: Leaving function                                
ktimetracker(13751) Task::changeTimes: Leaving function                                     
ktimetracker(13751) Task::changeTimes: Entering function                                    
ktimetracker(13751) Task::changeTimes: Task's sessionStartTiMe is  KDateTime()              
ktimetracker(13751) Task::changeTotalTimes: Task::changeTotalTimes( 1 , 1 ) for "Debug"     
ktimetracker(13751) Task::update: Entering function                                         
ktimetracker(13751) formatTime: Entering function(minutes= 2 ,decimal= false );             
ktimetracker(13751) formatTime: Entering function(minutes= 2 ,decimal= false );             
ktimetracker(13751) formatTime: Entering function(minutes= 2 ,decimal= false );             
ktimetracker(13751) formatTime: Entering function(minutes= 2 ,decimal= false );             
ktimetracker(13751) Task::update: Leaving function                                          
ktimetracker(13751) MainWindow::updateTime: Entering function(sessionDiff= 1  totalDiff= 1 )
ktimetracker(13751) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( )    
ktimetracker(13751) formatTime: Entering function(minutes= 46 ,decimal= false );            
ktimetracker(13751) formatTime: Entering function(minutes= 9492 ,decimal= false );          
ktimetracker(13751) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( )     
ktimetracker(13751) MainWindow::updateTime: Exiting MainWindow::updateTime                  
ktimetracker(13751) Task::changeTotalTimes: Leaving function                                
ktimetracker(13751) Task::changeTimes: Leaving function
ktimetracker(13751) IdleTimeDetector::informOverrun: TOMJ: Before connect(SIGNAL(changed(bool))). wid:
Object::connect: No such signal QWidget::changed(bool)
ktimetracker(13751) IdleTimeDetector::informOverrun: TOMJ: after connect(SIGNAL(changed(bool))).
ktimetracker(13751) IdleTimeDetector::revert: Entering function
ktimetracker(13751) Task::changeTimes: Entering function
ktimetracker(13751) Task::changeTimes: Task's sessionStartTiMe is  KDateTime()
ktimetracker(13751) Task::changeTotalTimes: Task::changeTotalTimes( -1 , -1 ) for "Debug"
ktimetracker(13751) Task::update: Entering function
ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false );
ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false );
ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false );
ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false );
ktimetracker(13751) Task::update: Leaving function
ktimetracker(13751) MainWindow::updateTime: Entering function(sessionDiff= -1  totalDiff= -1 )
ktimetracker(13751) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( )
ktimetracker(13751) formatTime: Entering function(minutes= 45 ,decimal= false );
ktimetracker(13751) formatTime: Entering function(minutes= 9491 ,decimal= false );
ktimetracker(13751) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( )
ktimetracker(13751) MainWindow::updateTime: Exiting MainWindow::updateTime
ktimetracker(13751) Task::changeTotalTimes: Leaving function
ktimetracker(13751) Task::changeTimes: Leaving function
ktimetracker(13751) TaskView::stopAllTimers: Entering function
ktimetracker(13751) Task::setRunning: Entering function
ktimetracker(13751) KarmStorage::stopTimer: Entering function; when= QDateTime("Fri Aug 29 14:38:41 2008")
ktimetracker(13751) KarmStorage::stopTimer: found an event for task, event= "libkcal-1002365824.91"
ktimetracker(13751) KarmStorage::stopTimer: this event has an enddate
ktimetracker(13751) KarmStorage::stopTimer: end date is  KDateTime(2008-08-29T14:37:40,151Z)
ktimetracker(13751) KarmStorage::stopTimer: found an event for task, event= "libkcal-1025204879.738"
ktimetracker(13751) KarmStorage::stopTimer: this event has an enddate
ktimetracker(13751) KarmStorage::stopTimer: end date is  KDateTime(2008-08-29T14:16:29Z)
ktimetracker(13751) KarmStorage::stopTimer: found an event for task, event= "libkcal-40368163.383"
ktimetracker(13751) KarmStorage::stopTimer: this event has no enddate
ktimetracker(13751) KarmStorage::stopTimer: kwhen == KDateTime(2008-08-29T14:38:41,290Z)
ktimetracker(13751) KarmStorage::saveCalendar: Entering function
ktimetracker(13751) TimetrackerWidget::slotUpdateButtons: Entering function
ktimetracker(13751) TaskView::currentItem: Entering function
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  false
ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning  true
ktimetracker(13751) TimetrackerWidget::slotUpdateButtons: Leaving function
ktimetracker(13751) TrayIcon::stopClock: Entering function
ktimetracker(13751) TrayIcon::stopClock: Leaving function
ktimetracker(13751) TimetrackerWidget::updateTabs: Entering function
ktimetracker(13751) TimetrackerWidget::updateTabs: Leaving function
ktimetracker(13751) MainWindow::~MainWindow: MainWindow::~MainWindows: Quitting ktimetracker.
Comment 10 Thomas Jarosch 2008-09-17 13:24:43 UTC
The problem is gone with KDE 4.1.1, I'm closing the bug :-)
Comment 11 Thorsten Staerk 2008-09-21 18:26:02 UTC
Great! Feedback (especially this) is much appreciated.
Comment 12 Thorsten Staerk 2008-10-22 23:05:14 UTC
*** Bug 173319 has been marked as a duplicate of this bug. ***
Comment 13 Andrew Crouthamel 2018-09-04 18:54:20 UTC
Hello! Sorry to be the bearer of bad news, but this project has been unmaintained for many years so I will be closing this bug.