summaryrefslogtreecommitdiff
path: root/core/applets
Unidiff
Diffstat (limited to 'core/applets') (more/less context) (show whitespace changes)
-rw-r--r--core/applets/vtapplet/vt.cpp9
-rw-r--r--core/applets/vtapplet/vt.h1
2 files changed, 9 insertions, 1 deletions
diff --git a/core/applets/vtapplet/vt.cpp b/core/applets/vtapplet/vt.cpp
index 0d4e657..7885f83 100644
--- a/core/applets/vtapplet/vt.cpp
+++ b/core/applets/vtapplet/vt.cpp
@@ -30,13 +30,13 @@ using namespace Opie::Core;
30#include <sys/types.h> 30#include <sys/types.h>
31#include <sys/stat.h> 31#include <sys/stat.h>
32#include <sys/ioctl.h> 32#include <sys/ioctl.h>
33#include <linux/vt.h> 33#include <linux/vt.h>
34 34
35VTApplet::VTApplet ( ) 35VTApplet::VTApplet ( )
36 : QObject ( 0, "VTApplet" ) 36 :QObject( 0, "VTApplet" ), m_ourVT( 0 )
37{ 37{
38} 38}
39 39
40VTApplet::~VTApplet ( ) 40VTApplet::~VTApplet ( )
41{ 41{
42} 42}
@@ -93,12 +93,14 @@ QPopupMenu *VTApplet::popup ( QWidget* parent ) const
93 { 93 {
94 int id = m_subMenu->insertItem( QString::number( i ), 500+i ); 94 int id = m_subMenu->insertItem( QString::number( i ), 500+i );
95 m_subMenu->setItemChecked( id, id-500 == vtstat.v_active ); 95 m_subMenu->setItemChecked( id, id-500 == vtstat.v_active );
96 } 96 }
97 ::close( fd ); 97 ::close( fd );
98 98
99 m_ourVT = vtstat.v_active;
100
99 connect( m_subMenu, SIGNAL( activated(int) ), this, SLOT( changeVT(int) ) ); 101 connect( m_subMenu, SIGNAL( activated(int) ), this, SLOT( changeVT(int) ) );
100 connect( m_subMenu, SIGNAL( aboutToShow() ), this, SLOT( updateMenu() ) ); 102 connect( m_subMenu, SIGNAL( aboutToShow() ), this, SLOT( updateMenu() ) );
101 103
102 return m_subMenu; 104 return m_subMenu;
103} 105}
104 106
@@ -111,12 +113,17 @@ void VTApplet::changeVT( int index )
111 int fd = ::open("/dev/vc/0", O_RDWR); 113 int fd = ::open("/dev/vc/0", O_RDWR);
112#else 114#else
113 int fd = ::open("/dev/tty0", O_RDWR); 115 int fd = ::open("/dev/tty0", O_RDWR);
114#endif 116#endif
115 if ( fd == -1 ) return; 117 if ( fd == -1 ) return;
116 ioctl( fd, VT_ACTIVATE, index-500 ); 118 ioctl( fd, VT_ACTIVATE, index-500 );
119 if ( m_ourVT )
120 {
121 odebug << "VTApplet::waiting for user to return to VT " << m_ourVT << oendl;
122 ioctl( fd, VT_WAITACTIVE, m_ourVT );
123 }
117} 124}
118 125
119 126
120void VTApplet::updateMenu() 127void VTApplet::updateMenu()
121{ 128{
122 //odebug << "VTApplet::updateMenu()" << oendl; 129 //odebug << "VTApplet::updateMenu()" << oendl;
diff --git a/core/applets/vtapplet/vt.h b/core/applets/vtapplet/vt.h
index 4c92ddd..4fa73e5 100644
--- a/core/applets/vtapplet/vt.h
+++ b/core/applets/vtapplet/vt.h
@@ -43,10 +43,11 @@ public:
43 43
44public slots: 44public slots:
45 virtual void changeVT( int index ); 45 virtual void changeVT( int index );
46 virtual void updateMenu(); 46 virtual void updateMenu();
47private: 47private:
48 mutable QPopupMenu* m_subMenu; 48 mutable QPopupMenu* m_subMenu;
49 mutable int m_ourVT;
49}; 50};
50 51
51 52
52#endif 53#endif