summaryrefslogtreecommitdiff
path: root/noncore
authortreke <treke>2002-12-22 00:58:46 (UTC)
committer treke <treke>2002-12-22 00:58:46 (UTC)
commit17d7f11b16b650f6ee2b5c440506167ea41fbfe5 (patch) (unidiff)
treecd5924c9e374a82c1cac6433dce098f3f45f4286 /noncore
parent6853d02989fc01e5a65048aca9749c20e0f5d095 (diff)
downloadopie-17d7f11b16b650f6ee2b5c440506167ea41fbfe5.zip
opie-17d7f11b16b650f6ee2b5c440506167ea41fbfe5.tar.gz
opie-17d7f11b16b650f6ee2b5c440506167ea41fbfe5.tar.bz2
1) Fixed a bug where double clicking a blank spot on the bookmark list
caused a segfault. 2) Removed support for copying from the server. Trying to setText in the clipboard would segfault everytime from within the KRFBDecoder. Doesnt seem to like being called from within a slot.
Diffstat (limited to 'noncore') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/comm/keypebble/krfbcanvas.cpp4
-rw-r--r--noncore/comm/keypebble/krfbdecoder.cpp5
-rw-r--r--noncore/comm/keypebble/kvnc.cpp3
3 files changed, 6 insertions, 6 deletions
diff --git a/noncore/comm/keypebble/krfbcanvas.cpp b/noncore/comm/keypebble/krfbcanvas.cpp
index 049bbd4..bc71c90 100644
--- a/noncore/comm/keypebble/krfbcanvas.cpp
+++ b/noncore/comm/keypebble/krfbcanvas.cpp
@@ -122,62 +122,58 @@ void KRFBCanvas::viewportPaintEvent( QPaintEvent *e )
122} 122}
123 123
124void KRFBCanvas::viewportUpdate( int x, int y, int w, int h ) 124void KRFBCanvas::viewportUpdate( int x, int y, int w, int h )
125{ 125{
126 updateContents( x, y, w, h ); 126 updateContents( x, y, w, h );
127} 127}
128 128
129void KRFBCanvas::contentsMousePressEvent( QMouseEvent *e ) 129void KRFBCanvas::contentsMousePressEvent( QMouseEvent *e )
130{ 130{
131 131
132 if (nextDoubleClick) { 132 if (nextDoubleClick) {
133 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonPress, e->pos(),LeftButton,LeftButton)); 133 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonPress, e->pos(),LeftButton,LeftButton));
134 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),LeftButton,0)); 134 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),LeftButton,0));
135 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),LeftButton,0)); 135 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),LeftButton,0));
136 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonPress, e->pos(),NoButton,NoButton)); 136 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonPress, e->pos(),NoButton,NoButton));
137 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),NoButton,0)); 137 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),NoButton,0));
138 } if (nextRightClick) { 138 } if (nextRightClick) {
139 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonPress, e->pos(),RightButton,RightButton)); 139 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonPress, e->pos(),RightButton,RightButton));
140 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),RightButton,0)); 140 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),RightButton,0));
141 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonPress, e->pos(),NoButton,NoButton)); 141 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonPress, e->pos(),NoButton,NoButton));
142 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),NoButton,0)); 142 connection_->buffer()->mouseEvent( &QMouseEvent(QEvent::MouseButtonRelease, e->pos(),NoButton,0));
143 } else if ( loggedIn_ ) 143 } else if ( loggedIn_ )
144 connection_->buffer()->mouseEvent( e ); 144 connection_->buffer()->mouseEvent( e );
145 145
146 qDebug("Press");
147 qDebug(QString::number(e->type()==QEvent::MouseButtonPress));
148} 146}
149 147
150void KRFBCanvas::contentsMouseReleaseEvent( QMouseEvent *e ) 148void KRFBCanvas::contentsMouseReleaseEvent( QMouseEvent *e )
151{ 149{
152 if ( loggedIn_ && !nextRightClick && !nextDoubleClick) { 150 if ( loggedIn_ && !nextRightClick && !nextDoubleClick) {
153 connection_->buffer()->mouseEvent( e ); 151 connection_->buffer()->mouseEvent( e );
154 } 152 }
155 153
156 nextRightClick=0; 154 nextRightClick=0;
157 nextDoubleClick=0; 155 nextDoubleClick=0;
158 qDebug("Release");
159 qDebug(QString::number(e->button()));
160} 156}
161 157
162void KRFBCanvas::contentsMouseMoveEvent( QMouseEvent *e ) 158void KRFBCanvas::contentsMouseMoveEvent( QMouseEvent *e )
163{ 159{
164 if ( loggedIn_ ) 160 if ( loggedIn_ )
165 connection_->buffer()->mouseEvent( e ); 161 connection_->buffer()->mouseEvent( e );
166} 162}
167 163
168void KRFBCanvas::keyPressEvent( QKeyEvent *e ) 164void KRFBCanvas::keyPressEvent( QKeyEvent *e )
169{ 165{
170 if ( loggedIn_ ) 166 if ( loggedIn_ )
171 connection_->buffer()->keyPressEvent( e ); 167 connection_->buffer()->keyPressEvent( e );
172} 168}
173 169
174void KRFBCanvas::keyReleaseEvent( QKeyEvent *e ) 170void KRFBCanvas::keyReleaseEvent( QKeyEvent *e )
175{ 171{
176 if ( loggedIn_ ) 172 if ( loggedIn_ )
177 connection_->buffer()->keyReleaseEvent( e ); 173 connection_->buffer()->keyReleaseEvent( e );
178} 174}
179 175
180void KRFBCanvas::refresh() 176void KRFBCanvas::refresh()
181{ 177{
182 if ( loggedIn_ ) 178 if ( loggedIn_ )
183 connection_->refresh(); 179 connection_->refresh();
diff --git a/noncore/comm/keypebble/krfbdecoder.cpp b/noncore/comm/keypebble/krfbdecoder.cpp
index 94e3b79..33418ae 100644
--- a/noncore/comm/keypebble/krfbdecoder.cpp
+++ b/noncore/comm/keypebble/krfbdecoder.cpp
@@ -686,69 +686,72 @@ void KRFBDecoder::gotServerCut()
686void KRFBDecoder::gotServerCutLength() 686void KRFBDecoder::gotServerCutLength()
687{ 687{
688 assert( currentState = AwaitingServerCutLength ); 688 assert( currentState = AwaitingServerCutLength );
689 disconnect( con, SIGNAL( gotEnoughData() ), 689 disconnect( con, SIGNAL( gotEnoughData() ),
690 this, SLOT( gotServerCutLength() ) ); 690 this, SLOT( gotServerCutLength() ) );
691 691
692 CARD8 padding[3]; 692 CARD8 padding[3];
693 con->read( padding, 3 ); 693 con->read( padding, 3 );
694 694
695 con->read( &serverCutTextLen, 4 ); 695 con->read( &serverCutTextLen, 4 );
696 serverCutTextLen = Swap32IfLE( serverCutTextLen ); 696 serverCutTextLen = Swap32IfLE( serverCutTextLen );
697 697
698 currentState = AwaitingServerCutText; 698 currentState = AwaitingServerCutText;
699 connect( con, SIGNAL( gotEnoughData() ), SLOT( gotServerCutText() ) ); 699 connect( con, SIGNAL( gotEnoughData() ), SLOT( gotServerCutText() ) );
700 con->waitForData( serverCutTextLen ); 700 con->waitForData( serverCutTextLen );
701} 701}
702 702
703void KRFBDecoder::gotServerCutText() 703void KRFBDecoder::gotServerCutText()
704{ 704{
705 assert( currentState = AwaitingServerCutText ); 705 assert( currentState = AwaitingServerCutText );
706 706
707 disconnect( con, SIGNAL( gotEnoughData() ), 707 disconnect( con, SIGNAL( gotEnoughData() ),
708 this, SLOT( gotServerCutText() ) ); 708 this, SLOT( gotServerCutText() ) );
709 709
710
710 // 711 //
711 // Warning: There is a bug in the RFB protocol because there is no way to find 712 // Warning: There is a bug in the RFB protocol because there is no way to find
712 // out the codepage in use on the remote machine. This could be fixed by requiring 713 // out the codepage in use on the remote machine. This could be fixed by requiring
713 // the remote server to use utf8 etc. but for now we have to assume they're the 714 // the remote server to use utf8 etc. but for now we have to assume they're the
714 // same. I've reported this problem to the ORL guys, but they apparantly have no 715 // same. I've reported this problem to the ORL guys, but they apparantly have no
715 // immediate plans to fix the issue. :-( (rich) 716 // immediate plans to fix the issue. :-( (rich)
716 // 717 //
717 718
718 char *cutbuf = new char[ serverCutTextLen + 1 ]; 719 char *cutbuf = new char[ serverCutTextLen + 1 ];
719 CHECK_PTR( cutbuf ); 720 CHECK_PTR( cutbuf );
720 721
721 con->read( cutbuf, serverCutTextLen ); 722 con->read( cutbuf, serverCutTextLen );
722 cutbuf[ serverCutTextLen ] = '\0'; 723 cutbuf[ serverCutTextLen ] = '\0';
723 724
725 /* For some reason QApplication::clipboard()->setText() segfaults when called
726 * from within keypebble's mass of signals and slots
724 qWarning( "Server cut: %s", cutbuf ); 727 qWarning( "Server cut: %s", cutbuf );
725 728
726 QString cutText( cutbuf ); // DANGER!! 729 QString cutText( cutbuf ); // DANGER!!
727 qApp->clipboard()->setText( cutText ); 730 qApp->clipboard()->setText( cutText );
731 */
728 732
729 delete cutbuf; 733 delete cutbuf;
730
731 // Now wait for the update (again) 734 // Now wait for the update (again)
732 if ( oldState == AwaitingUpdate ) { 735 if ( oldState == AwaitingUpdate ) {
733 currentState = AwaitingUpdate; 736 currentState = AwaitingUpdate;
734 connect( con, SIGNAL( gotEnoughData() ), SLOT( gotUpdateHeader() ) ); 737 connect( con, SIGNAL( gotEnoughData() ), SLOT( gotUpdateHeader() ) );
735 con->waitForData( UpdateHeaderLength ); 738 con->waitForData( UpdateHeaderLength );
736 } 739 }
737 else if ( oldState == Idle ) { 740 else if ( oldState == Idle ) {
738 currentState = Idle; 741 currentState = Idle;
739 } 742 }
740 else { 743 else {
741 qWarning( "Async handled in weird state" ); 744 qWarning( "Async handled in weird state" );
742 currentState = oldState; 745 currentState = oldState;
743 }; 746 };
744} 747}
745 748
746void KRFBDecoder::gotBell() 749void KRFBDecoder::gotBell()
747{ 750{
748 qWarning( "Got server bell" ); 751 qWarning( "Got server bell" );
749 buf->soundBell(); 752 buf->soundBell();
750 753
751 // Now wait for the update (again) 754 // Now wait for the update (again)
752 if ( oldState == AwaitingUpdate ) { 755 if ( oldState == AwaitingUpdate ) {
753 currentState = AwaitingUpdate; 756 currentState = AwaitingUpdate;
754 connect( con, SIGNAL( gotEnoughData() ), SLOT( gotUpdateHeader() ) ); 757 connect( con, SIGNAL( gotEnoughData() ), SLOT( gotUpdateHeader() ) );
diff --git a/noncore/comm/keypebble/kvnc.cpp b/noncore/comm/keypebble/kvnc.cpp
index 5b1dc9f..48a442c 100644
--- a/noncore/comm/keypebble/kvnc.cpp
+++ b/noncore/comm/keypebble/kvnc.cpp
@@ -138,49 +138,50 @@ void KVNC::newConnection()
138 138
139void KVNC::openConnection( QString name) 139void KVNC::openConnection( QString name)
140{ 140{
141 curServer=bookmarkSelector->getServer(name); 141 curServer=bookmarkSelector->getServer(name);
142 142
143 if (curServer) { 143 if (curServer) {
144 KVNCConnDlg dlg( curServer,this); 144 KVNCConnDlg dlg( curServer,this);
145 dlg.showMaximized(); 145 dlg.showMaximized();
146 146
147 if ( dlg.exec() ) { 147 if ( dlg.exec() ) {
148 canvas->openConnection(*curServer); 148 canvas->openConnection(*curServer);
149 bookmarkSelector->writeBookmarks(); 149 bookmarkSelector->writeBookmarks();
150 } else 150 } else
151 curServer=0; 151 curServer=0;
152 } 152 }
153} 153}
154 154
155void KVNC::openConnection( void ) 155void KVNC::openConnection( void )
156{ 156{
157 openConnection( bookmarkSelector->selectedBookmark()); 157 openConnection( bookmarkSelector->selectedBookmark());
158} 158}
159 159
160void KVNC::openConnection( QListBoxItem * item) 160void KVNC::openConnection( QListBoxItem * item)
161{ 161{
162 openConnection(item->text()); 162 if (item)
163 openConnection(item->text());
163} 164}
164 165
165void KVNC::setupActions() 166void KVNC::setupActions()
166{ 167{
167 cornerMenu = new QPopupMenu( this ); 168 cornerMenu = new QPopupMenu( this );
168 169
169 fullScreenAction = new QAction( tr("Full Screen"), QString::null, 0, 0 ); 170 fullScreenAction = new QAction( tr("Full Screen"), QString::null, 0, 0 );
170 connect( fullScreenAction, SIGNAL(activated()), 171 connect( fullScreenAction, SIGNAL(activated()),
171 this, SLOT( toggleFullScreen() ) ); 172 this, SLOT( toggleFullScreen() ) );
172 fullScreenAction->addTo( cornerMenu ); 173 fullScreenAction->addTo( cornerMenu );
173 fullScreenAction->setEnabled( false ); 174 fullScreenAction->setEnabled( false );
174 175
175 ctlAltDelAction = new QAction( tr("Send Contrl-Alt-Delete"), QString::null, 0, 0 ); 176 ctlAltDelAction = new QAction( tr("Send Contrl-Alt-Delete"), QString::null, 0, 0 );
176 connect( ctlAltDelAction, SIGNAL(activated()), 177 connect( ctlAltDelAction, SIGNAL(activated()),
177 canvas, SLOT( sendCtlAltDel() ) ); 178 canvas, SLOT( sendCtlAltDel() ) );
178 ctlAltDelAction->addTo( cornerMenu ); 179 ctlAltDelAction->addTo( cornerMenu );
179 ctlAltDelAction->setEnabled( false ); 180 ctlAltDelAction->setEnabled( false );
180 181
181 disconnectAction = new QAction( tr("Disconnect"), QString::null, 0, 0 ); 182 disconnectAction = new QAction( tr("Disconnect"), QString::null, 0, 0 );
182 connect( disconnectAction, SIGNAL(activated()), 183 connect( disconnectAction, SIGNAL(activated()),
183 this, SLOT( closeConnection() ) ); 184 this, SLOT( closeConnection() ) );
184 disconnectAction->addTo( cornerMenu ); 185 disconnectAction->addTo( cornerMenu );
185 disconnectAction->setEnabled( false ); 186 disconnectAction->setEnabled( false );
186 187