summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--core/apps/embeddedkonsole/TEWidget.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/core/apps/embeddedkonsole/TEWidget.cpp b/core/apps/embeddedkonsole/TEWidget.cpp
index 2e3e0f5..de5e585 100644
--- a/core/apps/embeddedkonsole/TEWidget.cpp
+++ b/core/apps/embeddedkonsole/TEWidget.cpp
@@ -845,589 +845,589 @@ void TEWidget::mouseDoubleClickEvent(QMouseEvent* ev)
845 845
846 QPoint tL = contentsRect().topLeft(); 846 QPoint tL = contentsRect().topLeft();
847 int tLx = tL.x(); 847 int tLx = tL.x();
848 int tLy = tL.y(); 848 int tLy = tL.y();
849 QPoint pos = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h); 849 QPoint pos = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h);
850 850
851 // pass on double click as two clicks. 851 // pass on double click as two clicks.
852 if (!mouse_marks && !(ev->state() & ShiftButton)) 852 if (!mouse_marks && !(ev->state() & ShiftButton))
853 { 853 {
854 emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button 854 emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button
855 emit mouseSignal( 3, pos.x()+1, pos.y()+1 ); // release 855 emit mouseSignal( 3, pos.x()+1, pos.y()+1 ); // release
856 emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button 856 emit mouseSignal( 0, pos.x()+1, pos.y()+1 ); // left button
857 return; 857 return;
858 } 858 }
859 859
860 860
861 emit clearSelectionSignal(); 861 emit clearSelectionSignal();
862 QPoint bgnSel = pos; 862 QPoint bgnSel = pos;
863 QPoint endSel = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h); 863 QPoint endSel = QPoint((ev->x()-tLx-blX)/font_w,(ev->y()-tLy-bY)/font_h);
864 int i = loc(bgnSel.x(),bgnSel.y()); 864 int i = loc(bgnSel.x(),bgnSel.y());
865 iPntSel = bgnSel; 865 iPntSel = bgnSel;
866 866
867 word_selection_mode = TRUE; 867 word_selection_mode = TRUE;
868 868
869 // find word boundaries... 869 // find word boundaries...
870 int selClass = charClass(image[i].c); 870 int selClass = charClass(image[i].c);
871 { 871 {
872 // set the start... 872 // set the start...
873 int x = bgnSel.x(); 873 int x = bgnSel.x();
874 while ( x > 0 && charClass(image[i-1].c) == selClass ) 874 while ( x > 0 && charClass(image[i-1].c) == selClass )
875 { i--; x--; } 875 { i--; x--; }
876 bgnSel.setX(x); 876 bgnSel.setX(x);
877 emit beginSelectionSignal( bgnSel.x(), bgnSel.y() ); 877 emit beginSelectionSignal( bgnSel.x(), bgnSel.y() );
878 878
879 // set the end... 879 // set the end...
880 i = loc( endSel.x(), endSel.y() ); 880 i = loc( endSel.x(), endSel.y() );
881 x = endSel.x(); 881 x = endSel.x();
882 while( x < columns-1 && charClass(image[i+1].c) == selClass ) 882 while( x < columns-1 && charClass(image[i+1].c) == selClass )
883 { i++; x++ ; } 883 { i++; x++ ; }
884 endSel.setX(x); 884 endSel.setX(x);
885 actSel = 2; // within selection 885 actSel = 2; // within selection
886 emit extendSelectionSignal( endSel.x(), endSel.y() ); 886 emit extendSelectionSignal( endSel.x(), endSel.y() );
887 emit endSelectionSignal(preserve_line_breaks); 887 emit endSelectionSignal(preserve_line_breaks);
888 preserve_line_breaks = TRUE; 888 preserve_line_breaks = TRUE;
889 } 889 }
890} 890}
891 891
892void TEWidget::focusInEvent( QFocusEvent * ) 892void TEWidget::focusInEvent( QFocusEvent * )
893{ 893{
894 894
895 // do nothing, to prevent repainting 895 // do nothing, to prevent repainting
896} 896}
897 897
898 898
899void TEWidget::focusOutEvent( QFocusEvent * ) 899void TEWidget::focusOutEvent( QFocusEvent * )
900{ 900{
901 // do nothing, to prevent repainting 901 // do nothing, to prevent repainting
902} 902}
903 903
904bool TEWidget::focusNextPrevChild( bool next ) 904bool TEWidget::focusNextPrevChild( bool next )
905{ 905{
906 if (next) 906 if (next)
907 return false; // This disables changing the active part in konqueror 907 return false; // This disables changing the active part in konqueror
908 // when pressing Tab 908 // when pressing Tab
909 return QFrame::focusNextPrevChild( next ); 909 return QFrame::focusNextPrevChild( next );
910} 910}
911 911
912 912
913int TEWidget::charClass(char ch) const 913int TEWidget::charClass(char ch) const
914{ 914{
915 // This might seem like overkill, but imagine if ch was a Unicode 915 // This might seem like overkill, but imagine if ch was a Unicode
916 // character (Qt 2.0 QChar) - it might then be sensible to separate 916 // character (Qt 2.0 QChar) - it might then be sensible to separate
917 // the different language ranges, etc. 917 // the different language ranges, etc.
918 918
919 if ( isspace(ch) ) return ' '; 919 if ( isspace(ch) ) return ' ';
920 920
921 static const char *word_characters = ":@-./_~"; 921 static const char *word_characters = ":@-./_~";
922 if ( isalnum(ch) || strchr(word_characters, ch) ) 922 if ( isalnum(ch) || strchr(word_characters, ch) )
923 return 'a'; 923 return 'a';
924 924
925 // Everything else is weird 925 // Everything else is weird
926 return 1; 926 return 1;
927} 927}
928 928
929void TEWidget::setMouseMarks(bool on) 929void TEWidget::setMouseMarks(bool on)
930{ 930{
931 mouse_marks = on; 931 mouse_marks = on;
932 setCursor( mouse_marks ? ibeamCursor : arrowCursor ); 932 setCursor( mouse_marks ? ibeamCursor : arrowCursor );
933} 933}
934 934
935/* ------------------------------------------------------------------------- */ 935/* ------------------------------------------------------------------------- */
936/* */ 936/* */
937/* Clipboard */ 937/* Clipboard */
938/* */ 938/* */
939/* ------------------------------------------------------------------------- */ 939/* ------------------------------------------------------------------------- */
940 940
941#undef KeyPress 941#undef KeyPress
942 942
943void TEWidget::emitSelection() 943void TEWidget::emitSelection()
944// Paste Clipboard by simulating keypress events 944// Paste Clipboard by simulating keypress events
945{ 945{
946#ifndef QT_NO_CLIPBOARD 946#ifndef QT_NO_CLIPBOARD
947 QString text = QApplication::clipboard()->text(); 947 QString text = QApplication::clipboard()->text();
948 //qDebug(text); 948 //qDebug(text);
949 if ( ! text.isNull()) 949 if ( ! text.isNull())
950 { 950 {
951 text.replace(QRegExp("\n"), "\r"); 951 text.replace(QRegExp("\n"), "\r");
952 QKeyEvent e(QEvent::KeyPress, 0, -1, 0, text); 952 QKeyEvent e(QEvent::KeyPress, 0, -1, 0, text);
953 emit keyPressedSignal(&e); // expose as a big fat keypress event 953 emit keyPressedSignal(&e); // expose as a big fat keypress event
954 emit clearSelectionSignal(); 954 emit clearSelectionSignal();
955 } 955 }
956#endif 956#endif
957} 957}
958 958
959void TEWidget::emitText(QString text) 959void TEWidget::emitText(QString text)
960{ 960{
961 QKeyEvent e(QEvent::KeyPress, 0, -1, 0, text); 961 QKeyEvent e(QEvent::KeyPress, 0, -1, 0, text);
962 emit keyPressedSignal(&e); // expose as a big fat keypress event 962 emit keyPressedSignal(&e); // expose as a big fat keypress event
963} 963}
964 964
965void TEWidget::pasteClipboard( ) 965void TEWidget::pasteClipboard( )
966{ 966{
967 emitSelection(); 967 emitSelection();
968} 968}
969 969
970void TEWidget::setSelection(const QString& t) 970void TEWidget::setSelection(const QString& t)
971{ 971{
972#ifndef QT_NO_CLIPBOARD 972#ifndef QT_NO_CLIPBOARD
973 // Disconnect signal while WE set the clipboard 973 // Disconnect signal while WE set the clipboard
974 QObject *cb = QApplication::clipboard(); 974 QObject *cb = QApplication::clipboard();
975 QObject::disconnect( cb, SIGNAL(dataChanged()), 975 QObject::disconnect( cb, SIGNAL(dataChanged()),
976 this, SLOT(onClearSelection()) ); 976 this, SLOT(onClearSelection()) );
977 977
978 QApplication::clipboard()->setText(t); 978 QApplication::clipboard()->setText(t);
979 979
980 QObject::connect( cb, SIGNAL(dataChanged()), 980 QObject::connect( cb, SIGNAL(dataChanged()),
981 this, SLOT(onClearSelection()) ); 981 this, SLOT(onClearSelection()) );
982#endif 982#endif
983} 983}
984 984
985void TEWidget::onClearSelection() 985void TEWidget::onClearSelection()
986{ 986{
987 emit clearSelectionSignal(); 987 emit clearSelectionSignal();
988} 988}
989 989
990/* ------------------------------------------------------------------------- */ 990/* ------------------------------------------------------------------------- */
991/* */ 991/* */
992/* Keyboard */ 992/* Keyboard */
993/* */ 993/* */
994/* ------------------------------------------------------------------------- */ 994/* ------------------------------------------------------------------------- */
995 995
996//FIXME: an `eventFilter' has been installed instead of a `keyPressEvent' 996//FIXME: an `eventFilter' has been installed instead of a `keyPressEvent'
997// due to a bug in `QT' or the ignorance of the author to prevent 997// due to a bug in `QT' or the ignorance of the author to prevent
998// repaint events being emitted to the screen whenever one leaves 998// repaint events being emitted to the screen whenever one leaves
999// or reenters the screen to/from another application. 999// or reenters the screen to/from another application.
1000// 1000//
1001// Troll says one needs to change focusInEvent() and focusOutEvent(), 1001// Troll says one needs to change focusInEvent() and focusOutEvent(),
1002// which would also let you have an in-focus cursor and an out-focus 1002// which would also let you have an in-focus cursor and an out-focus
1003// cursor like xterm does. 1003// cursor like xterm does.
1004 1004
1005// for the auto-hide cursor feature, I added empty focusInEvent() and 1005// for the auto-hide cursor feature, I added empty focusInEvent() and
1006// focusOutEvent() so that update() isn't called. 1006// focusOutEvent() so that update() isn't called.
1007// For auto-hide, we need to get keypress-events, but we only get them when 1007// For auto-hide, we need to get keypress-events, but we only get them when
1008// we have focus. 1008// we have focus.
1009 1009
1010void TEWidget::doScroll(int lines) 1010void TEWidget::doScroll(int lines)
1011{ 1011{
1012 scrollbar->setValue(scrollbar->value()+lines); 1012 scrollbar->setValue(scrollbar->value()+lines);
1013} 1013}
1014 1014
1015void TEWidget::doHScroll(int lines) { 1015void TEWidget::doHScroll(int lines) {
1016 hScrollbar->setValue( hScrollbar->value()+lines); 1016 hScrollbar->setValue( hScrollbar->value()+lines);
1017} 1017}
1018 1018
1019bool TEWidget::eventFilter( QObject *obj, QEvent *e ) 1019bool TEWidget::eventFilter( QObject *obj, QEvent *e )
1020{ 1020{
1021 if ( (e->type() == QEvent::Accel || 1021 if ( (e->type() == QEvent::Accel ||
1022 e->type() == QEvent::AccelAvailable ) && qApp->focusWidget() == this ) { 1022 e->type() == QEvent::AccelAvailable ) && qApp->focusWidget() == this ) {
1023 static_cast<QKeyEvent *>( e )->ignore(); 1023 static_cast<QKeyEvent *>( e )->ignore();
1024 return true; 1024 return true;
1025 } 1025 }
1026 if ( obj != this /* when embedded */ && obj != parent() /* when standalone */ ) 1026 if ( obj != this /* when embedded */ && obj != parent() /* when standalone */ )
1027 return FALSE; // not us 1027 return FALSE; // not us
1028 if ( e->type() == QEvent::Wheel) { 1028 if ( e->type() == QEvent::Wheel) {
1029 QApplication::sendEvent(scrollbar, e); 1029 QApplication::sendEvent(scrollbar, e);
1030 } 1030 }
1031 1031
1032#ifdef FAKE_CTRL_AND_ALT 1032#ifdef FAKE_CTRL_AND_ALT
1033 static bool control = FALSE; 1033 static bool control = FALSE;
1034 static bool alt = FALSE; 1034 static bool alt = FALSE;
1035// qDebug(" Has a keyboard with no CTRL and ALT keys, but we fake it:"); 1035// qDebug(" Has a keyboard with no CTRL and ALT keys, but we fake it:");
1036 bool dele=FALSE; 1036 bool dele=FALSE;
1037 if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) { 1037 if ( e->type() == QEvent::KeyPress || e->type() == QEvent::KeyRelease ) {
1038 QKeyEvent* ke = (QKeyEvent*)e; 1038 QKeyEvent* ke = (QKeyEvent*)e;
1039 bool keydown = e->type() == QEvent::KeyPress || ke->isAutoRepeat(); 1039 bool keydown = e->type() == QEvent::KeyPress || ke->isAutoRepeat();
1040 switch (ke->key()) { 1040 switch (ke->key()) {
1041 case Key_F9: // let this be "Control" 1041 case Key_F9: // let this be "Control"
1042 control = keydown; 1042 control = keydown;
1043 e = new QKeyEvent(QEvent::KeyPress, Key_Control, 0, ke->state()); 1043 e = new QKeyEvent(QEvent::KeyPress, Key_Control, 0, ke->state());
1044 dele=TRUE; 1044 dele=TRUE;
1045 break; 1045 break;
1046 case Key_F13: // let this be "Alt" 1046 case Key_F13: // let this be "Alt"
1047 alt = keydown; 1047 alt = keydown;
1048 e = new QKeyEvent(QEvent::KeyPress, Key_Alt, 0, ke->state()); 1048 e = new QKeyEvent(QEvent::KeyPress, Key_Alt, 0, ke->state());
1049 dele=TRUE; 1049 dele=TRUE;
1050 break; 1050 break;
1051 default: 1051 default:
1052 if ( control ) { 1052 if ( control ) {
1053 int a = toupper(ke->ascii())-64; 1053 int a = toupper(ke->ascii())-64;
1054 if ( a >= 0 && a < ' ' ) { 1054 if ( a >= 0 && a < ' ' ) {
1055 e = new QKeyEvent(e->type(), ke->key(), 1055 e = new QKeyEvent(e->type(), ke->key(),
1056 a, ke->state()|ControlButton, QChar(a,0)); 1056 a, ke->state()|ControlButton, QChar(a,0));
1057 dele=TRUE; 1057 dele=TRUE;
1058 } 1058 }
1059 } 1059 }
1060 if ( alt ) { 1060 if ( alt ) {
1061 e = new QKeyEvent(e->type(), ke->key(), 1061 e = new QKeyEvent(e->type(), ke->key(),
1062 ke->ascii(), ke->state()|AltButton, ke->text()); 1062 ke->ascii(), ke->state()|AltButton, ke->text());
1063 dele=TRUE; 1063 dele=TRUE;
1064 } 1064 }
1065 } 1065 }
1066 } 1066 }
1067#endif 1067#endif
1068 1068
1069 if ( e->type() == QEvent::KeyPress ) { 1069 if ( e->type() == QEvent::KeyPress ) {
1070 QKeyEvent* ke = (QKeyEvent*)e; 1070 QKeyEvent* ke = (QKeyEvent*)e;
1071 actSel=0; // Key stroke implies a screen update, so TEWidget won't 1071 actSel=0; // Key stroke implies a screen update, so TEWidget won't
1072 // know where the current selection is. 1072 // know where the current selection is.
1073 1073
1074// qDebug("key pressed is 0x%x, ascii is 0x%x, state %d", ke->key(), ke->ascii(), ke->state()); 1074// qDebug("key pressed is 0x%x, ascii is 0x%x, state %d", ke->key(), ke->ascii(), ke->state());
1075 1075
1076 bool special_function = true; 1076 bool special_function = true;
1077 switch(ke->key()) { 1077 switch(ke->key()) {
1078 //case 0x201b: // fn-5 1078 //case 0x201b: // fn-5
1079 //case Key_F1: 1079 //case Key_F1:
1080 // switch sessions (?) 1080 // switch sessions (?)
1081 // emitText("\\"); // expose (??) 1081 // emitText("\\"); // expose (??)
1082 // break; 1082 // break;
1083 1083
1084 case 0x2016: // fn-p 1084 case 0x2016: // fn-p
1085 case Key_F2: 1085 case Key_F2:
1086 pasteClipboard(); 1086 pasteClipboard();
1087 break; 1087 break;
1088 1088
1089 case 0x2018: // fn-S 1089 case 0x2018: // fn-S
1090 case Key_F3: 1090 case Key_F3:
1091 emit changeSession(1); 1091 emit changeSession(1);
1092 break; 1092 break;
1093 1093
1094 case 0x2019: // fn-n 1094 case 0x2019: // fn-n
1095 emit newSession(); 1095 emit newSession();
1096 break; 1096 break;
1097 1097
1098 case Qt::Key_Tab: 1098 case Qt::Key_Tab:
1099 if (ke->state() == ControlButton) { 1099 if (ke->state() == ControlButton) {
1100 emit changeSession(1); 1100 emit changeSession(1);
1101 } else { 1101 } else {
1102 special_function = false; 1102 special_function = false;
1103 } 1103 }
1104 break; 1104 break;
1105 1105
1106#if 0 1106#if 0
1107 case Qt::Key_Left: 1107 case Qt::Key_Left:
1108 if (vcolumns == 0) { 1108 if (vcolumns == 0) {
1109 emit changeSession(-1); 1109 emit changeSession(-1);
1110 } else { 1110 } else {
1111 special_function = false; 1111 special_function = false;
1112 } 1112 }
1113 break; 1113 break;
1114 1114
1115 case Qt::Key_Right: 1115 case Qt::Key_Right:
1116 if (vcolumns == 0) { 1116 if (vcolumns == 0) {
1117 emit changeSession(1); 1117 emit changeSession(1);
1118 } else { 1118 } else {
1119 special_function = false; 1119 special_function = false;
1120 } 1120 }
1121 break; 1121 break;
1122#endif 1122#endif
1123 1123
1124 case 0x201b: // fn-5 1124 case 0x201b: // fn-5
1125 case Key_F4: 1125 case Key_F4:
1126 emit toggleFullScreen(); 1126 emit toggleFullScreen();
1127 break; 1127 break;
1128 1128
1129 case 0x200f: // fn-1 magnify minus 1129 case 0x200f: // fn-1 magnify minus
1130 case Key_F5: 1130 case Key_F5:
1131 emit changeFontSize(-1); 1131 emit changeFontSize(-1);
1132 break; 1132 break;
1133 1133
1134 case 0x2010: // fn-2 magnify plus 1134 case 0x2010: // fn-2 magnify plus
1135 case Key_F6: 1135 case Key_F6:
1136 emit changeFontSize(1); 1136 emit changeFontSize(1);
1137 break; 1137 break;
1138 1138
1139 default: 1139 default:
1140 special_function = false; 1140 special_function = false;
1141 } 1141 }
1142 if (special_function) { 1142 if (special_function) {
1143 return true; 1143 return true;
1144 } 1144 }
1145 // else if( ke->state() == ControlButton && ke->key() == Key_V) { 1145 // else if( ke->state() == ControlButton && ke->key() == Key_V) {
1146 // pasteClipboard(); 1146 // pasteClipboard();
1147 // } 1147 // }
1148 // else if( ke->state() == ControlButton && ke->key() == Key_C) { 1148 // else if( ke->state() == ControlButton && ke->key() == Key_C) {
1149 // pasteClipboard(); 1149 // pasteClipboard();
1150 // } 1150 // }
1151 emit keyPressedSignal(ke); // expose 1151 emit keyPressedSignal(ke); // expose
1152 ke->accept(); 1152 ke->accept();
1153#ifdef FAKE_CTRL_AND_ALT 1153#ifdef FAKE_CTRL_AND_ALT
1154 if ( dele ) delete e; 1154 if ( dele ) delete e;
1155#endif 1155#endif
1156 return true; // stop the event 1156 return true; // stop the event
1157 } 1157 }
1158 if ( e->type() == QEvent::Enter ) { 1158 if ( e->type() == QEvent::Enter ) {
1159 QObject::disconnect( (QObject*)cb, SIGNAL(dataChanged()), 1159 QObject::disconnect( (QObject*)cb, SIGNAL(dataChanged()),
1160 this, SLOT(onClearSelection()) ); 1160 this, SLOT(onClearSelection()) );
1161 } 1161 }
1162 if ( e->type() == QEvent::Leave ) { 1162 if ( e->type() == QEvent::Leave ) {
1163 QObject::connect( (QObject*)cb, SIGNAL(dataChanged()), 1163 QObject::connect( (QObject*)cb, SIGNAL(dataChanged()),
1164 this, SLOT(onClearSelection()) ); 1164 this, SLOT(onClearSelection()) );
1165 } 1165 }
1166 return QFrame::eventFilter( obj, e ); 1166 return QFrame::eventFilter( obj, e );
1167} 1167}
1168 1168
1169/* ------------------------------------------------------------------------- */ 1169/* ------------------------------------------------------------------------- */
1170/* */ 1170/* */
1171/* Frame */ 1171/* Frame */
1172/* */ 1172/* */
1173/* ------------------------------------------------------------------------- */ 1173/* ------------------------------------------------------------------------- */
1174 1174
1175void TEWidget::frameChanged() 1175void TEWidget::frameChanged()
1176{ 1176{
1177 propagateSize(); 1177 propagateSize();
1178 update(); 1178 update();
1179} 1179}
1180/* ------------------------------------------------------------------------- */ 1180/* ------------------------------------------------------------------------- */
1181/* */ 1181/* */
1182/* Sound */ 1182/* Sound */
1183/* */ 1183/* */
1184/* ------------------------------------------------------------------------- */ 1184/* ------------------------------------------------------------------------- */
1185 1185
1186void TEWidget::Bell() 1186void TEWidget::Bell()
1187{ 1187{
1188//#ifdef QT_QWS_SL5XXX 1188//#ifdef QT_QWS_SL5XXX
1189//# ifndef QT_NO_COP 1189//# ifndef QT_NO_COP
1190 if(useBeep) 1190 if(useBeep)
1191 QCopEnvelope( "QPE/TaskBar", "soundAlarm()" ); 1191 QCopEnvelope( "QPE/TaskBar", "soundAlarm()" );
1192 1192
1193//# endif 1193//# endif
1194//#else 1194//#else
1195//# ifndef QT_NO_SOUND 1195//# ifndef QT_NO_SOUND
1196// QSound::play(Resource::findSound("alarm")); 1196// QSound::play(Resource::findSound("alarm"));
1197//# endif 1197//# endif
1198//#endif 1198//#endif
1199 1199
1200// QApplication::beep(); 1200// QApplication::beep();
1201} 1201}
1202 1202
1203/* ------------------------------------------------------------------------- */ 1203/* ------------------------------------------------------------------------- */
1204/* */ 1204/* */
1205/* Auxiluary */ 1205/* Auxiluary */
1206/* */ 1206/* */
1207/* ------------------------------------------------------------------------- */ 1207/* ------------------------------------------------------------------------- */
1208 1208
1209void TEWidget::clearImage() 1209void TEWidget::clearImage()
1210// initialize the image 1210// initialize the image
1211// for internal use only 1211// for internal use only
1212{ 1212{
1213 for (int y = 0; y < lines; y++) 1213 for (int y = 0; y < lines; y++)
1214 for (int x = 0; x < columns; x++) 1214 for (int x = 0; x < columns; x++)
1215 { 1215 {
1216 image[loc(x,y)].c = 0xff; //' '; 1216 image[loc(x,y)].c = 0xff; //' ';
1217 image[loc(x,y)].f = 0xff; //DEFAULT_FORE_COLOR; 1217 image[loc(x,y)].f = 0xff; //DEFAULT_FORE_COLOR;
1218 image[loc(x,y)].b = 0xff; //DEFAULT_BACK_COLOR; 1218 image[loc(x,y)].b = 0xff; //DEFAULT_BACK_COLOR;
1219 image[loc(x,y)].r = 0xff; //DEFAULT_RENDITION; 1219 image[loc(x,y)].r = 0xff; //DEFAULT_RENDITION;
1220 } 1220 }
1221} 1221}
1222 1222
1223// Create Image /////////////////////////////////////////////////////// 1223// Create Image ///////////////////////////////////////////////////////
1224 1224
1225void TEWidget::calcGeometry() 1225void TEWidget::calcGeometry()
1226{ 1226{
1227 int showhscrollbar = 1; 1227 int showhscrollbar = 1;
1228 int hwidth = 0; 1228 int hwidth = 0;
1229 int dcolumns; 1229 int dcolumns = 0;
1230 Config cfg( "Konsole" ); 1230 Config cfg( "Konsole" );
1231 cfg.setGroup("ScrollBar"); 1231 cfg.setGroup("ScrollBar");
1232 useHorzScroll=cfg.readBoolEntry("HorzScroll",0); 1232 useHorzScroll=cfg.readBoolEntry("HorzScroll",0);
1233 1233
1234 if(vcolumns == 0) showhscrollbar = 0; 1234 if(vcolumns == 0) showhscrollbar = 0;
1235 if(showhscrollbar == 1) hwidth = QApplication::style().scrollBarExtent().width(); 1235 if(showhscrollbar == 1) hwidth = QApplication::style().scrollBarExtent().width();
1236 1236
1237 scrollbar->resize(QApplication::style().scrollBarExtent().width(), 1237 scrollbar->resize(QApplication::style().scrollBarExtent().width(),
1238 contentsRect().height() - hwidth); 1238 contentsRect().height() - hwidth);
1239 1239
1240 switch(scrollLoc) { 1240 switch(scrollLoc) {
1241 case SCRNONE : 1241 case SCRNONE :
1242 columns = ( contentsRect().width() - 2 * rimX ) / font_w; 1242 columns = ( contentsRect().width() - 2 * rimX ) / font_w;
1243 dcolumns = columns; 1243 dcolumns = columns;
1244 if(vcolumns) columns = vcolumns; 1244 if(vcolumns) columns = vcolumns;
1245 blX = (contentsRect().width() - (columns*font_w) ) / 2; 1245 blX = (contentsRect().width() - (columns*font_w) ) / 2;
1246 if(showhscrollbar) 1246 if(showhscrollbar)
1247 blX = -hposition * font_w; 1247 blX = -hposition * font_w;
1248 brX = blX; 1248 brX = blX;
1249 scrollbar->hide(); 1249 scrollbar->hide();
1250 break; 1250 break;
1251 case SCRLEFT : 1251 case SCRLEFT :
1252 columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w; 1252 columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w;
1253 dcolumns = columns; 1253 dcolumns = columns;
1254 if(vcolumns) columns = vcolumns; 1254 if(vcolumns) columns = vcolumns;
1255 brX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2; 1255 brX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2;
1256 if(showhscrollbar) 1256 if(showhscrollbar)
1257 brX = -hposition * font_w; 1257 brX = -hposition * font_w;
1258 blX = brX + scrollbar->width(); 1258 blX = brX + scrollbar->width();
1259 scrollbar->move(contentsRect().topLeft()); 1259 scrollbar->move(contentsRect().topLeft());
1260 scrollbar->show(); 1260 scrollbar->show();
1261 break; 1261 break;
1262 case SCRRIGHT: 1262 case SCRRIGHT:
1263 columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w; 1263 columns = ( contentsRect().width() - 2 * rimX - scrollbar->width()) / font_w;
1264 dcolumns = columns; 1264 dcolumns = columns;
1265 if(vcolumns) columns = vcolumns; 1265 if(vcolumns) columns = vcolumns;
1266 blX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2; 1266 blX = (contentsRect().width() - (columns*font_w) - scrollbar->width() ) / 2;
1267 if(showhscrollbar) 1267 if(showhscrollbar)
1268 blX = -hposition * font_w; 1268 blX = -hposition * font_w;
1269 brX = blX; 1269 brX = blX;
1270 scrollbar->move(contentsRect().topRight() - QPoint(scrollbar->width()-1,0)); 1270 scrollbar->move(contentsRect().topRight() - QPoint(scrollbar->width()-1,0));
1271 scrollbar->show(); 1271 scrollbar->show();
1272 break; 1272 break;
1273 } 1273 }
1274 //FIXME: support 'rounding' styles 1274 //FIXME: support 'rounding' styles
1275 lines = ( contentsRect().height() - 2 * rimY ) / font_h; 1275 lines = ( contentsRect().height() - 2 * rimY ) / font_h;
1276 bY = (contentsRect().height() - (lines *font_h)) / 2; 1276 bY = (contentsRect().height() - (lines *font_h)) / 2;
1277 1277
1278 if(showhscrollbar == 1) { 1278 if(showhscrollbar == 1) {
1279 hScrollbar->resize(contentsRect().width() - hwidth, hwidth); 1279 hScrollbar->resize(contentsRect().width() - hwidth, hwidth);
1280 hScrollbar->setRange(0, vcolumns - dcolumns); 1280 hScrollbar->setRange(0, vcolumns - dcolumns);
1281 1281
1282 QPoint p = contentsRect().bottomLeft(); 1282 QPoint p = contentsRect().bottomLeft();
1283 if(scrollLoc == SCRLEFT) 1283 if(scrollLoc == SCRLEFT)
1284 hScrollbar->move(QPoint(p.x()+hwidth, p.y() - hwidth)); 1284 hScrollbar->move(QPoint(p.x()+hwidth, p.y() - hwidth));
1285 else 1285 else
1286 hScrollbar->move(QPoint(p.x(), p.y() - hwidth)); 1286 hScrollbar->move(QPoint(p.x(), p.y() - hwidth));
1287 1287
1288 hScrollbar->show(); 1288 hScrollbar->show();
1289 } 1289 }
1290 else hScrollbar->hide(); 1290 else hScrollbar->hide();
1291 1291
1292 if(showhscrollbar == 1) { 1292 if(showhscrollbar == 1) {
1293 lines = lines - (hwidth / font_h) - 1; 1293 lines = lines - (hwidth / font_h) - 1;
1294 if(lines < 1) lines = 1; 1294 if(lines < 1) lines = 1;
1295 } 1295 }
1296 //FIXME: support 'rounding' styles 1296 //FIXME: support 'rounding' styles
1297} 1297}
1298 1298
1299void TEWidget::makeImage() 1299void TEWidget::makeImage()
1300//FIXME: rename 'calcGeometry? 1300//FIXME: rename 'calcGeometry?
1301{ 1301{
1302 calcGeometry(); 1302 calcGeometry();
1303 image = (ca*) malloc(lines*columns*sizeof(ca)); 1303 image = (ca*) malloc(lines*columns*sizeof(ca));
1304 clearImage(); 1304 clearImage();
1305} 1305}
1306 1306
1307// calculate the needed size 1307// calculate the needed size
1308QSize TEWidget::calcSize(int cols, int lins) const 1308QSize TEWidget::calcSize(int cols, int lins) const
1309{ 1309{
1310 int frw = width() - contentsRect().width(); 1310 int frw = width() - contentsRect().width();
1311 int frh = height() - contentsRect().height(); 1311 int frh = height() - contentsRect().height();
1312 int scw = (scrollLoc==SCRNONE?0:scrollbar->width()); 1312 int scw = (scrollLoc==SCRNONE?0:scrollbar->width());
1313 return QSize( font_w*cols + 2*rimX + frw + scw, font_h*lins + 2*rimY + frh ); 1313 return QSize( font_w*cols + 2*rimX + frw + scw, font_h*lins + 2*rimY + frh );
1314} 1314}
1315 1315
1316QSize TEWidget::sizeHint() const 1316QSize TEWidget::sizeHint() const
1317{ 1317{
1318 return size(); 1318 return size();
1319} 1319}
1320 1320
1321void TEWidget::styleChange(QStyle &) 1321void TEWidget::styleChange(QStyle &)
1322{ 1322{
1323 propagateSize(); 1323 propagateSize();
1324} 1324}
1325 1325
1326#ifndef QT_NO_DRAGANDDROP 1326#ifndef QT_NO_DRAGANDDROP
1327 1327
1328/* --------------------------------------------------------------------- */ 1328/* --------------------------------------------------------------------- */
1329/* */ 1329/* */
1330/* Drag & Drop */ 1330/* Drag & Drop */
1331/* */ 1331/* */
1332/* --------------------------------------------------------------------- */ 1332/* --------------------------------------------------------------------- */
1333 1333
1334 1334
1335void TEWidget::dragEnterEvent(QDragEnterEvent* e) 1335void TEWidget::dragEnterEvent(QDragEnterEvent* e)
1336{ 1336{
1337 e->accept(QTextDrag::canDecode(e) || 1337 e->accept(QTextDrag::canDecode(e) ||
1338 QUriDrag::canDecode(e)); 1338 QUriDrag::canDecode(e));
1339} 1339}
1340 1340
1341void TEWidget::dropEvent(QDropEvent* event) 1341void TEWidget::dropEvent(QDropEvent* event)
1342{ 1342{
1343 // The current behaviour when url(s) are dropped is 1343 // The current behaviour when url(s) are dropped is
1344 // * if there is only ONE url and if it's a LOCAL one, ask for paste or cd 1344 // * if there is only ONE url and if it's a LOCAL one, ask for paste or cd
1345 // * in all other cases, just paste 1345 // * in all other cases, just paste
1346 // (for non-local ones, or for a list of URLs, 'cd' is nonsense) 1346 // (for non-local ones, or for a list of URLs, 'cd' is nonsense)
1347 QStrList strlist; 1347 QStrList strlist;
1348 int file_count = 0; 1348 int file_count = 0;
1349 dropText = ""; 1349 dropText = "";
1350 bool bPopup = true; 1350 bool bPopup = true;
1351 1351
1352 if(QUriDrag::decode(event, strlist)) { 1352 if(QUriDrag::decode(event, strlist)) {
1353 if (strlist.count()) { 1353 if (strlist.count()) {
1354 for(const char* p = strlist.first(); p; p = strlist.next()) { 1354 for(const char* p = strlist.first(); p; p = strlist.next()) {
1355 if(file_count++ > 0) { 1355 if(file_count++ > 0) {
1356 dropText += " "; 1356 dropText += " ";
1357 bPopup = false; // more than one file, don't popup 1357 bPopup = false; // more than one file, don't popup
1358 } 1358 }
1359 1359
1360/* 1360/*
1361 KURL url(p); 1361 KURL url(p);
1362 if (url.isLocalFile()) { 1362 if (url.isLocalFile()) {
1363 dropText += url.path(); // local URL : remove protocol 1363 dropText += url.path(); // local URL : remove protocol
1364 } 1364 }
1365 else { 1365 else {
1366 dropText += url.prettyURL(); 1366 dropText += url.prettyURL();
1367 bPopup = false; // a non-local file, don't popup 1367 bPopup = false; // a non-local file, don't popup
1368 } 1368 }
1369*/ 1369*/
1370 1370
1371 } 1371 }
1372 1372
1373 if (bPopup) 1373 if (bPopup)
1374 // m_drop->popup(pos() + event->pos()); 1374 // m_drop->popup(pos() + event->pos());
1375 m_drop->popup(mapToGlobal(event->pos())); 1375 m_drop->popup(mapToGlobal(event->pos()));
1376 else 1376 else
1377 { 1377 {
1378 if (currentSession) { 1378 if (currentSession) {
1379 currentSession->getEmulation()->sendString(dropText.local8Bit()); 1379 currentSession->getEmulation()->sendString(dropText.local8Bit());
1380 } 1380 }
1381// kdDebug() << "Drop:" << dropText.local8Bit() << "\n"; 1381// kdDebug() << "Drop:" << dropText.local8Bit() << "\n";
1382 } 1382 }
1383 } 1383 }
1384 } 1384 }
1385 else if(QTextDrag::decode(event, dropText)) { 1385 else if(QTextDrag::decode(event, dropText)) {
1386// kdDebug() << "Drop:" << dropText.local8Bit() << "\n"; 1386// kdDebug() << "Drop:" << dropText.local8Bit() << "\n";
1387 if (currentSession) { 1387 if (currentSession) {
1388 currentSession->getEmulation()->sendString(dropText.local8Bit()); 1388 currentSession->getEmulation()->sendString(dropText.local8Bit());
1389 } 1389 }
1390 // Paste it 1390 // Paste it
1391 } 1391 }
1392} 1392}
1393#endif 1393#endif
1394 1394
1395 1395
1396void TEWidget::drop_menu_activated(int item) 1396void TEWidget::drop_menu_activated(int item)
1397{ 1397{
1398#ifndef QT_NO_DRAGANDDROP 1398#ifndef QT_NO_DRAGANDDROP
1399 switch (item) 1399 switch (item)
1400 { 1400 {
1401 case 0: // paste 1401 case 0: // paste
1402 currentSession->getEmulation()->sendString(dropText.local8Bit()); 1402 currentSession->getEmulation()->sendString(dropText.local8Bit());
1403// KWM::activate((Window)this->winId()); 1403// KWM::activate((Window)this->winId());
1404 break; 1404 break;
1405 case 1: // cd ... 1405 case 1: // cd ...
1406 currentSession->getEmulation()->sendString("cd "); 1406 currentSession->getEmulation()->sendString("cd ");
1407 struct stat statbuf; 1407 struct stat statbuf;
1408 if ( ::stat( QFile::encodeName( dropText ), &statbuf ) == 0 ) 1408 if ( ::stat( QFile::encodeName( dropText ), &statbuf ) == 0 )
1409 { 1409 {
1410 if ( !S_ISDIR(statbuf.st_mode) ) 1410 if ( !S_ISDIR(statbuf.st_mode) )
1411 { 1411 {
1412/* 1412/*
1413 KURL url; 1413 KURL url;
1414 url.setPath( dropText ); 1414 url.setPath( dropText );
1415 dropText = url.directory( true, false ); // remove filename 1415 dropText = url.directory( true, false ); // remove filename
1416*/ 1416*/
1417 } 1417 }
1418 } 1418 }
1419 dropText.replace(QRegExp(" "), "\\ "); // escape spaces 1419 dropText.replace(QRegExp(" "), "\\ "); // escape spaces
1420 currentSession->getEmulation()->sendString(dropText.local8Bit()); 1420 currentSession->getEmulation()->sendString(dropText.local8Bit());
1421 currentSession->getEmulation()->sendString("\n"); 1421 currentSession->getEmulation()->sendString("\n");
1422// KWM::activate((Window)this->winId()); 1422// KWM::activate((Window)this->winId());
1423 break; 1423 break;
1424 } 1424 }
1425#endif 1425#endif
1426} 1426}
1427 1427
1428void TEWidget::setWrapAt(int columns) 1428void TEWidget::setWrapAt(int columns)
1429{ 1429{
1430 vcolumns = columns; 1430 vcolumns = columns;
1431 propagateSize(); 1431 propagateSize();
1432 update(); 1432 update();
1433} 1433}