summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/launcher/inputmethods.cpp88
-rw-r--r--core/launcher/inputmethods.h1
2 files changed, 75 insertions, 14 deletions
diff --git a/core/launcher/inputmethods.cpp b/core/launcher/inputmethods.cpp
index d89a366..8f3e812 100644
--- a/core/launcher/inputmethods.cpp
+++ b/core/launcher/inputmethods.cpp
@@ -101,6 +101,6 @@ InputMethods::InputMethods( QWidget *parent ) :
101 Config cfg( "Launcher" ); 101 Config cfg( "Launcher" );
102 cfg.setGroup( "InputMethods" ); 102 cfg.setGroup( "InputMethods" );
103 inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader; 103 inputWidgetStyle = QWidget::WStyle_Customize | QWidget::WStyle_StaysOnTop | QWidget::WGroupLeader | QWidget::WStyle_Tool;
104 inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : QWidget::WStyle_Tool; 104 inputWidgetStyle |= cfg.readBoolEntry( "Float", false ) ? QWidget::WStyle_DialogBorder : 0;
105 inputWidgetWidth = cfg.readNumEntry( "Width", 100 ); 105 inputWidgetWidth = cfg.readNumEntry( "Width", 100 );
106 106
@@ -531,16 +531,64 @@ void InputMethods::showKbd( bool on )
531{ 531{
532 if ( !mkeyboard ) 532 if ( !mkeyboard )
533 return; 533 return;
534 534
535 if ( on ) { 535 if ( on )
536 mkeyboard->resetState(); 536 {
537 // HACK... Make the texteditor fit with all input methods 537 mkeyboard->resetState();
538 // Input methods should also never use more than about 40% of the screen 538
539 int height = QMIN( mkeyboard->widget->sizeHint().height(), 134 ); 539 int height = QMIN( mkeyboard->widget->sizeHint().height(), 134 );
540 mkeyboard->widget->resize( qApp->desktop()->width() * (inputWidgetWidth*0.01), height ); 540 int width = qApp->desktop()->width() * (inputWidgetWidth*0.01);
541 mkeyboard->widget->move( 0, mapToGlobal( QPoint() ).y() - height ); 541 int left = 0;
542 mkeyboard->widget->show(); 542 int top = mapToGlobal( QPoint() ).y() - height;
543 } else { 543
544 mkeyboard->widget->hide(); 544 if ( inputWidgetStyle & QWidget::WStyle_DialogBorder )
545 {
546 qDebug( "InputMethods: reading geometry." );
547 Config cfg( "Launcher" );
548 cfg.setGroup( "InputMethods" );
549 int l = cfg.readNumEntry( "absX", -1 );
550 int t = cfg.readNumEntry( "absY", -1 );
551 int w = cfg.readNumEntry( "absWidth", -1 );
552 int h = cfg.readNumEntry( "absHeight", -1 );
553
554 if ( l > -1 && t > -1 && w > -1 && h > -1 )
555 {
556 qDebug( "InputMethods: config values ( %d, %d, %d, %d ) are ok.", l, t, w, h );
557 left = l;
558 top = t;
559 width = w;
560 height = h;
561 }
562 else
563 {
564 qDebug( "InputMethods: config values are new or not ok." );
565 }
566 }
567 else
568 {
569 qDebug( "InputMethods: no floating selected." );
570 }
571 mkeyboard->widget->resize( width, height );
572 mkeyboard->widget->move( left, top );
573 mkeyboard->widget->show();
574 mkeyboard->widget->installEventFilter( this );
575 }
576 else
577 {
578 if ( inputWidgetStyle & QWidget::WStyle_DialogBorder )
579 {
580 QPoint pos = mkeyboard->widget->pos();
581 QSize siz = mkeyboard->widget->size();
582 qDebug( "InputMethods: saving geometry." );
583 Config cfg( "Launcher" );
584 cfg.setGroup( "InputMethods" );
585 cfg.writeEntry( "absX", pos.x() );
586 cfg.writeEntry( "absY", pos.y() );
587 cfg.writeEntry( "absWidth", siz.width() );
588 cfg.writeEntry( "absHeight", siz.height() );
589 cfg.write();
590 mkeyboard->widget->hide();
591 mkeyboard->widget->removeEventFilter( this );
592 }
545 } 593 }
546 594
@@ -565,2 +613,14 @@ void InputMethods::sendKey( ushort unicode, ushort scancode, ushort mod, bool pr
565#endif 613#endif
566} 614}
615
616bool InputMethods::eventFilter( QObject* o, QEvent* e )
617{
618 if ( e->type() == QEvent::Close )
619 {
620 ( (QCloseEvent*) e )->ignore();
621 showKbd( false );
622 kbdButton->setOn( false );
623 return true;
624 }
625 return false;
626}
diff --git a/core/launcher/inputmethods.h b/core/launcher/inputmethods.h
index 246661a..55ac020 100644
--- a/core/launcher/inputmethods.h
+++ b/core/launcher/inputmethods.h
@@ -74,4 +74,5 @@ public:
74 void unloadInputMethods(); 74 void unloadInputMethods();
75 void loadInputMethods(); 75 void loadInputMethods();
76 virtual bool eventFilter( QObject *, QEvent * );
76 77
77signals: 78signals: