summaryrefslogtreecommitdiff
authorhrw <hrw>2005-10-18 13:56:12 (UTC)
committer hrw <hrw>2005-10-18 13:56:12 (UTC)
commit0f25331618ea6cac8a59f2c2298a9e1684748b97 (patch) (unidiff)
treeeb734f970761359b4fd61166936b87550e2e1b2d
parent9f41cd10ef92daa889f86cb43793dc75de18e786 (diff)
downloadopie-0f25331618ea6cac8a59f2c2298a9e1684748b97.zip
opie-0f25331618ea6cac8a59f2c2298a9e1684748b97.tar.gz
opie-0f25331618ea6cac8a59f2c2298a9e1684748b97.tar.bz2
fixed bug #1647 - Opie-console doesn't respect scroll-bar on left side
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--ChangeLog1
-rw-r--r--noncore/apps/opie-console/TEWidget.cpp25
2 files changed, 16 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 2922afd..24ae63c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,139 +1,140 @@
1 2005-??-??Opie 1.2.2 1 2005-??-??Opie 1.2.2
2 2
3 3
4 New Features 4 New Features
5 ------------ 5 ------------
6 * Appearance: Added configuration options to set smallIconSize, bigIconSize, useBigPixmaps (hrw) 6 * Appearance: Added configuration options to set smallIconSize, bigIconSize, useBigPixmaps (hrw)
7 7
8 Fixed Bugs 8 Fixed Bugs
9 ---------- 9 ----------
10 * #1695 - Date selector use too small fontsize on VGA screen (hrw) 10 * #1695 - Date selector use too small fontsize on VGA screen (hrw)
11 * #1686 - opie-console lack UI setting for switching scrollbar (hrw) 11 * #1686 - opie-console lack UI setting for switching scrollbar (hrw)
12 * #1647 - Opie-console doesn't respect scroll-bar on left side (hrw)
12 * #1624 - Button settngs changes are applied only after restart (hrw) 13 * #1624 - Button settngs changes are applied only after restart (hrw)
13 * #1492 - Backup and Restore does not show list of backups to restore on start (hrw) 14 * #1492 - Backup and Restore does not show list of backups to restore on start (hrw)
14 * n.a. - remove hardcoded font size from wellenreiter (hrw) 15 * n.a. - remove hardcoded font size from wellenreiter (hrw)
15 * n.a. - added patch to build QT/E 2.3.10 with gc 4.x.x (hrw) 16 * n.a. - added patch to build QT/E 2.3.10 with gc 4.x.x (hrw)
16 17
17 2005-09-11Opie 1.2.1 18 2005-09-11Opie 1.2.1
18 19
19 20
20 New Features 21 New Features
21 ------------ 22 ------------
22 * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker) 23 * OpieStumbler: Scans WiFi networks using the wireless extension scanning (skyhusker)
23 * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly) 24 * Opie-Reader: Support for document formats ArriereGo and Reb, add flite output (tim,pohly)
24 * Opie-Networksettings: Add support for wlan-ng devices and improve WEP handling (Dirk Opfer) 25 * Opie-Networksettings: Add support for wlan-ng devices and improve WEP handling (Dirk Opfer)
25 * Wellenreiter: Remove Joining networks - use OpieStumbler for that (mickeyl) 26 * Wellenreiter: Remove Joining networks - use OpieStumbler for that (mickeyl)
26 * Opie-Mobilemsg has gone unsupported - it never really worked and there will be a replacement (mickeyl) 27 * Opie-Mobilemsg has gone unsupported - it never really worked and there will be a replacement (mickeyl)
27 * Opie-Tabmanager has gone unsupported - it barely works and there is not much of a use of it anyway (mickeyl) 28 * Opie-Tabmanager has gone unsupported - it barely works and there is not much of a use of it anyway (mickeyl)
28 * Checkbook: Added configuration option to use smaller font for checkbook transaction tab (hrw) 29 * Checkbook: Added configuration option to use smaller font for checkbook transaction tab (hrw)
29 * ZSafe: Made UI conform to Opie standards (drw) 30 * ZSafe: Made UI conform to Opie standards (drw)
30 * Today Addressbook plugin: Fixed configuration to show/not show birthdays, use checkboxes for selection (hrw) 31 * Today Addressbook plugin: Fixed configuration to show/not show birthdays, use checkboxes for selection (hrw)
31 * Opie-Console: Read initial fixed font configuration from qpe.conf (mickeyl) 32 * Opie-Console: Read initial fixed font configuration from qpe.conf (mickeyl)
32 * Opie-PcmciaApplet: Configure insert/resume actions and bind unsupported cards (mickeyl) 33 * Opie-PcmciaApplet: Configure insert/resume actions and bind unsupported cards (mickeyl)
33 * SysInfo: Remove CPU tab and add Devices tab instead (mickeyl) 34 * SysInfo: Remove CPU tab and add Devices tab instead (mickeyl)
34 * Opie-smb: Added Opie front end for Samba (ljp) 35 * Opie-smb: Added Opie front end for Samba (ljp)
35 * Opie-Bluetooth: Replace obex send implementation and patch libopieobex and the bluetoothapplet (Michael Haynie) 36 * Opie-Bluetooth: Replace obex send implementation and patch libopieobex and the bluetoothapplet (Michael Haynie)
36 * Opieplayer: rudimentary podcast support (ljp) 37 * Opieplayer: rudimentary podcast support (ljp)
37 38
38 Fixed Bugs 39 Fixed Bugs
39 ---------- 40 ----------
40 * #1377 - Suspend Powermanagement when switched to another VT (mickeyl) 41 * #1377 - Suspend Powermanagement when switched to another VT (mickeyl)
41 - We actually suspend the complete Opie now in that case. 42 - We actually suspend the complete Opie now in that case.
42 * #1384 - Battery status updated improperly when charging (skyhusker) 43 * #1384 - Battery status updated improperly when charging (skyhusker)
43 * #1476 - Wrong order of application entries in the O-menu (skyhusker) 44 * #1476 - Wrong order of application entries in the O-menu (skyhusker)
44 * #1514 - Remove usage of cardmon/pcmcia picture in applications. pcmcia is now an inline picture (mickeyl) 45 * #1514 - Remove usage of cardmon/pcmcia picture in applications. pcmcia is now an inline picture (mickeyl)
45 * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller) 46 * #1535- Missing line break and unnecessary location shown with Today-Calendar plugin (deller)
46 * #1543 - Time Settings: "predict" tab is displayed twice after reopen (hrw) 47 * #1543 - Time Settings: "predict" tab is displayed twice after reopen (hrw)
47 * #1546 - Battery applet popup is not always large enough to show jacket remaining info (skyhusker) 48 * #1546 - Battery applet popup is not always large enough to show jacket remaining info (skyhusker)
48 * #1557 - Light&Power-Settings don't store warning intervall and warning levels (skyhusker) 49 * #1557 - Light&Power-Settings don't store warning intervall and warning levels (skyhusker)
49 * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller) 50 * #1565 - crash-fix in odevice.cpp while scanning the distribution table (deller)
50 * #1614 - Make Opie-console start in $HOME instead of / (skyhusker) 51 * #1614 - Make Opie-console start in $HOME instead of / (skyhusker)
51 * #1635 - opie-today, datebook-plugin does not show notes (skyhusker) 52 * #1635 - opie-today, datebook-plugin does not show notes (skyhusker)
52 * #1665 - Opie-IRC displays the host prepended to the message when peer is using and ipv6 address (skyhusker) 53 * #1665 - Opie-IRC displays the host prepended to the message when peer is using and ipv6 address (skyhusker)
53 * #1666 - Opie-IRC does not allow to add !channels in config asautojoin ones (skyhusker) 54 * #1666 - Opie-IRC does not allow to add !channels in config asautojoin ones (skyhusker)
54 * #1667 - Opie-IRC does not show messages from !channel (skyhusker) 55 * #1667 - Opie-IRC does not show messages from !channel (skyhusker)
55 * #1679 - Security PIN plugin is QVGA sized (hrw) 56 * #1679 - Security PIN plugin is QVGA sized (hrw)
56 * #1682 - Properly resize tab control in OTabWidget (drw) 57 * #1682 - Properly resize tab control in OTabWidget (drw)
57 * n.a. - always show volume and wireless applet popups inside visible screen (deller) 58 * n.a. - always show volume and wireless applet popups inside visible screen (deller)
58 * n.a. - scale O-Menu-Applets appropriately (mickeyl) 59 * n.a. - scale O-Menu-Applets appropriately (mickeyl)
59 * n.a. - libopienet: fix bugs in wireless scanning and setting SSID (skyhusker) 60 * n.a. - libopienet: fix bugs in wireless scanning and setting SSID (skyhusker)
60 * n.a. - Wellenreiter: relax WE version matching test a bit (mickeyl) 61 * n.a. - Wellenreiter: relax WE version matching test a bit (mickeyl)
61 * n.a. - scale BluezApplet appropriately and use larger icons (mickeyl) 62 * n.a. - scale BluezApplet appropriately and use larger icons (mickeyl)
62 * n.a. - memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham) 63 * n.a. - memoryapplet: fix crash in memoryapplet on kernels without swap support (seneca cunningham)
63 * n.a. - networksettings: ignore hostap control interfaces wifi* (mickeyl) 64 * n.a. - networksettings: ignore hostap control interfaces wifi* (mickeyl)
64 * n.a. - Today Addressbook plugin fix configuration to show/not show birthdays, use checkboxes for selection (hrw) 65 * n.a. - Today Addressbook plugin fix configuration to show/not show birthdays, use checkboxes for selection (hrw)
65 * n.a. - remove hardcoded font size from netsystemtime (hrw) 66 * n.a. - remove hardcoded font size from netsystemtime (hrw)
66 * n.a. - remove hardcoded font size from checkbook graphs (hrw) 67 * n.a. - remove hardcoded font size from checkbook graphs (hrw)
67 * n.a. - Dagger - fixes for Sword 1.5.8, morph tag x-refs, closing last tab crash (drw) 68 * n.a. - Dagger - fixes for Sword 1.5.8, morph tag x-refs, closing last tab crash (drw)
68 69
69 70
70 Internal 71 Internal
71 -------- 72 --------
72 * Make BluezApplet use OTaskbarApplet (mickeyl) 73 * Make BluezApplet use OTaskbarApplet (mickeyl)
73 * libopiecore: rewrite OFileNotification to use the Linux 2.6 inotify interface (mickeyl) 74 * libopiecore: rewrite OFileNotification to use the Linux 2.6 inotify interface (mickeyl)
74 * libopiecore: add ODirNotification - recursive directory notifications (mickeyl) 75 * libopiecore: add ODirNotification - recursive directory notifications (mickeyl)
75 * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl) 76 * libopienet: Skip hostap control interfaces 'wifi' and improve robustness in ONetworkInterface (mickeyl)
76 * libopieui: Remove OVersatileView and OVersatileViewItem (mickeyl) 77 * libopieui: Remove OVersatileView and OVersatileViewItem (mickeyl)
77 * libopienet: Miscellaneous API cleanups (mickeyl) 78 * libopienet: Miscellaneous API cleanups (mickeyl)
78 * libopiecore: Add linux pcmcia system abstraction classes (mickeyl) 79 * libopiecore: Add linux pcmcia system abstraction classes (mickeyl)
79 * libopiecore: ODevice now knows the default gfx driver to use (mteira,mickeyl) 80 * libopiecore: ODevice now knows the default gfx driver to use (mteira,mickeyl)
80 * libopiecore: Add support for the Sharp SL-C3100 "Borzoi" (mickeyl) 81 * libopiecore: Add support for the Sharp SL-C3100 "Borzoi" (mickeyl)
81 * libopiecore: Add support for the new Linux Inputsystem Switches type [necessary for auto rotation in 2.6.13] (mickeyl) 82 * libopiecore: Add support for the new Linux Inputsystem Switches type [necessary for auto rotation in 2.6.13] (mickeyl)
82 * Remove assumptions about default gfx driver ("Transformed") all over the place (mteira,mickeyl) 83 * Remove assumptions about default gfx driver ("Transformed") all over the place (mteira,mickeyl)
83 * Fix / Optimize number of scanned directories (ljp) 84 * Fix / Optimize number of scanned directories (ljp)
84 * Use five point mouse calibration to make calibrated mouse drivers work on newer Zaurii (rp,mickeyl) 85 * Use five point mouse calibration to make calibrated mouse drivers work on newer Zaurii (rp,mickeyl)
85 86
86 2005-03-25Opie 1.2.0 87 2005-03-25Opie 1.2.0
87 88
88 Fixed Bugs 89 Fixed Bugs
89 ---------- 90 ----------
90 * #1613 - AdvancedFM - scale toolbar icons appropriately (drw) 91 * #1613 - AdvancedFM - scale toolbar icons appropriately (drw)
91 * #1620 - OFileSelector - show the button on press and not on press on hold (alwin) 92 * #1620 - OFileSelector - show the button on press and not on press on hold (alwin)
92 * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke) 93 * #1473 - Opie-Eye - Same as #1620 but we lack a common FileSystem Button class (zecke)
93 * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw) 94 * n.a. - PackageManager - fix bug where messages show up multiple times in install dialog (drw)
94 * n.a.- make qpeglobal.h include qglobal.h (zecke) 95 * n.a.- make qpeglobal.h include qglobal.h (zecke)
95 96
96 2005-03-20Opie 1.2.0-rc1 97 2005-03-20Opie 1.2.0-rc1
97 98
98 99
99 New Features 100 New Features
100 ------------ 101 ------------
101 * Launcher: Support a static background pixmap (mickeyl) 102 * Launcher: Support a static background pixmap (mickeyl)
102 * LauncherSettings: Choose whether to have a static background pixmap (mickeyl) 103 * LauncherSettings: Choose whether to have a static background pixmap (mickeyl)
103 * PackageManager supports the 'lists_dir' ipkg configuration option (drw) 104 * PackageManager supports the 'lists_dir' ipkg configuration option (drw)
104 * Added hi-res inline images for large resolution devices (drw) 105 * Added hi-res inline images for large resolution devices (drw)
105 * Improved launcher icons for consistency (ar) 106 * Improved launcher icons for consistency (ar)
106 * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin) 107 * Datebook: Added plugin system to datebook so holidays and birthdays from contacts may displayed in datebook (alwin)
107 108
108 Fixed Bugs 109 Fixed Bugs
109 ---------- 110 ----------
110 * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers) 111 * #1236 - VCards contained empty home and work address entries causing Palms to crash (eilers)
111 * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw) 112 * #1412 - Launcher Settings - fixed default settings for background in Edit tab dialog (drw)
112 * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp) 113 * #1472 - Opie textedit now check for unsaved changes on ESC key (ljp)
113 * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke) 114 * #1474 - Implement GUI for Scrollbars on the Left in Appearance (zecke)
114 * #1482 - Fix double '/' in paths (zecke) 115 * #1482 - Fix double '/' in paths (zecke)
115 * #1536 - Autosave of custom locations in opie backup (ar) 116 * #1536 - Autosave of custom locations in opie backup (ar)
116 * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke) 117 * #1539 - Fixed displaying too long path in the delete dialog in opie-eye (zecke)
117 * #1540 - Implemented deletion of DocLnks in opie-eye (zecke) 118 * #1540 - Implemented deletion of DocLnks in opie-eye (zecke)
118 * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw) 119 * #1542 - Fixed Todo crash when priority < 1 or > 5 (drw)
119 * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke) 120 * #1550 - Browse for alarm sound start in QPEDIR/sounds/ (zecke)
120 * #1554 - Fixed Opie-Console name in .desktop file (mickeyl) 121 * #1554 - Fixed Opie-Console name in .desktop file (mickeyl)
121 * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke) 122 * #1556 - Start to look for sound files in /opt/QtPalmtop/sounds (zecke)
122 * #1558 - Fixed opie-login breaking opie startup (mickeyl) 123 * #1558 - Fixed opie-login breaking opie startup (mickeyl)
123 * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning) 124 * #1560 - Fixed Opie-Console picking up the wrong shell (bluelightning)
124 * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar) 125 * #1570 - Confirmation needed befor Restore a backup and overwrite local data (ar)
125 * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers) 126 * #1591 - Addressbook sortorder changed by clicking on column 0 (eilers)
126 * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints) 127 * #1599 - Security - change recommendation for opie-multiauth to opie-securityplugin (gints)
127 * #1604 - Checkbook crashed on startup (drw) 128 * #1604 - Checkbook crashed on startup (drw)
128 * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers) 129 * #1608 - Addressbook crashed after search, which may caused by not initialzed member variable (eilers)
129 * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers) 130 * #1608 - QueryByExampe-Datediff on SQL database did not worked properly (eilers)
130 * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw) 131 * n.a. - Netsystemtime - fixed UI to prevent error dialog from displaying when it shouldn't, get rid of some compiler warnings (drw)
131 * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw) 132 * n.a. - PackageManager - fixed where last package in status file was not shown as installed when it should be (drw)
132 * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw) 133 * n.a. - PackageManager - fixed bug where lists_dir was not being honored at startup (drw)
133 * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw) 134 * n.a. - PackageManager - provided default value for lists_dir when none is entered in configuration dialog (drw)
134 * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw) 135 * n.a. - OTabWidget - fixed scroll buttons, fix display position of tabs (drw)
135 * n.a. - AddressBook - fixed sorting by 'File As' name (drw) 136 * n.a. - AddressBook - fixed sorting by 'File As' name (drw)
136 * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers) 137 * n.a. - AddressBook - fixed category handling for 'All' and 'Unfiled' (eilers)
137 * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw) 138 * n.a. - AddressBook - fixed letter picker record selection and sort records afterwards (drw)
138 139
139 Internal 140 Internal
diff --git a/noncore/apps/opie-console/TEWidget.cpp b/noncore/apps/opie-console/TEWidget.cpp
index 1199e4f..117f6dd 100644
--- a/noncore/apps/opie-console/TEWidget.cpp
+++ b/noncore/apps/opie-console/TEWidget.cpp
@@ -195,266 +195,271 @@ void TEWidget::setColorTable(const ColorEntry table[])
195 195
196 We treat non-iso10646 fonts as VT100 extended and do the requiered mapping 196 We treat non-iso10646 fonts as VT100 extended and do the requiered mapping
197 from unicode to 0x00..0x1f. The remaining translation is then left to the 197 from unicode to 0x00..0x1f. The remaining translation is then left to the
198 QCodec. 198 QCodec.
199*/ 199*/
200 200
201// assert for i in [0..31] : vt100extended(vt100_graphics[i]) == i. 201// assert for i in [0..31] : vt100extended(vt100_graphics[i]) == i.
202 202
203unsigned short vt100_graphics[32] = 203unsigned short vt100_graphics[32] =
204{ // 0/8 1/9 2/10 3/11 4/12 5/13 6/14 7/15 204{ // 0/8 1/9 2/10 3/11 4/12 5/13 6/14 7/15
205 0x0020, 0x25C6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0, 205 0x0020, 0x25C6, 0x2592, 0x2409, 0x240c, 0x240d, 0x240a, 0x00b0,
206 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c, 206 0x00b1, 0x2424, 0x240b, 0x2518, 0x2510, 0x250c, 0x2514, 0x253c,
207 0xF800, 0xF801, 0x2500, 0xF803, 0xF804, 0x251c, 0x2524, 0x2534, 207 0xF800, 0xF801, 0x2500, 0xF803, 0xF804, 0x251c, 0x2524, 0x2534,
208 0x252c, 0x2502, 0x2264, 0x2265, 0x03C0, 0x2260, 0x00A3, 0x00b7 208 0x252c, 0x2502, 0x2264, 0x2265, 0x03C0, 0x2260, 0x00A3, 0x00b7
209}; 209};
210 210
211static QChar vt100extended(QChar c) 211static QChar vt100extended(QChar c)
212{ 212{
213 switch (c.unicode()) 213 switch (c.unicode())
214 { 214 {
215 case 0x25c6 : return 1; 215 case 0x25c6 : return 1;
216 case 0x2592 : return 2; 216 case 0x2592 : return 2;
217 case 0x2409 : return 3; 217 case 0x2409 : return 3;
218 case 0x240c : return 4; 218 case 0x240c : return 4;
219 case 0x240d : return 5; 219 case 0x240d : return 5;
220 case 0x240a : return 6; 220 case 0x240a : return 6;
221 case 0x00b0 : return 7; 221 case 0x00b0 : return 7;
222 case 0x00b1 : return 8; 222 case 0x00b1 : return 8;
223 case 0x2424 : return 9; 223 case 0x2424 : return 9;
224 case 0x240b : return 10; 224 case 0x240b : return 10;
225 case 0x2518 : return 11; 225 case 0x2518 : return 11;
226 case 0x2510 : return 12; 226 case 0x2510 : return 12;
227 case 0x250c : return 13; 227 case 0x250c : return 13;
228 case 0x2514 : return 14; 228 case 0x2514 : return 14;
229 case 0x253c : return 15; 229 case 0x253c : return 15;
230 case 0xf800 : return 16; 230 case 0xf800 : return 16;
231 case 0xf801 : return 17; 231 case 0xf801 : return 17;
232 case 0x2500 : return 18; 232 case 0x2500 : return 18;
233 case 0xf803 : return 19; 233 case 0xf803 : return 19;
234 case 0xf804 : return 20; 234 case 0xf804 : return 20;
235 case 0x251c : return 21; 235 case 0x251c : return 21;
236 case 0x2524 : return 22; 236 case 0x2524 : return 22;
237 case 0x2534 : return 23; 237 case 0x2534 : return 23;
238 case 0x252c : return 24; 238 case 0x252c : return 24;
239 case 0x2502 : return 25; 239 case 0x2502 : return 25;
240 case 0x2264 : return 26; 240 case 0x2264 : return 26;
241 case 0x2265 : return 27; 241 case 0x2265 : return 27;
242 case 0x03c0 : return 28; 242 case 0x03c0 : return 28;
243 case 0x2260 : return 29; 243 case 0x2260 : return 29;
244 case 0x00a3 : return 30; 244 case 0x00a3 : return 30;
245 case 0x00b7 : return 31; 245 case 0x00b7 : return 31;
246 } 246 }
247 return c; 247 return c;
248} 248}
249 249
250static QChar identicalMap(QChar c) 250static QChar identicalMap(QChar c)
251{ 251{
252 return c; 252 return c;
253} 253}
254 254
255void TEWidget::fontChange(const QFont &) 255void TEWidget::fontChange(const QFont &)
256{ 256{
257 QFontMetrics fm(font()); 257 QFontMetrics fm(font());
258 font_h = fm.height(); 258 font_h = fm.height();
259 font_w = fm.maxWidth(); 259 font_w = fm.maxWidth();
260 font_a = fm.ascent(); 260 font_a = fm.ascent();
261//printf("font_h: %d\n",font_h); 261//printf("font_h: %d\n",font_h);
262//printf("font_w: %d\n",font_w); 262//printf("font_w: %d\n",font_w);
263//printf("font_a: %d\n",font_a); 263//printf("font_a: %d\n",font_a);
264//printf("charset: %s\n",QFont::encodingName(font().charSet()).ascii()); 264//printf("charset: %s\n",QFont::encodingName(font().charSet()).ascii());
265//printf("rawname: %s\n",font().rawName().ascii()); 265//printf("rawname: %s\n",font().rawName().ascii());
266 fontMap = 266 fontMap =
267#if QT_VERSION < 0x030000 267#if QT_VERSION < 0x030000
268 strcmp(QFont::encodingName(font().charSet()).ascii(),"iso10646") 268 strcmp(QFont::encodingName(font().charSet()).ascii(),"iso10646")
269 ? vt100extended 269 ? vt100extended
270 : 270 :
271#endif 271#endif
272 identicalMap; 272 identicalMap;
273 propagateSize(); 273 propagateSize();
274 update(); 274 update();
275} 275}
276 276
277void TEWidget::setVTFont(const QFont& f) 277void TEWidget::setVTFont(const QFont& f)
278{ 278{
279 QFrame::setFont(f); 279 QFrame::setFont(f);
280} 280}
281 281
282QFont TEWidget::getVTFont() { 282QFont TEWidget::getVTFont() {
283 return font(); 283 return font();
284} 284}
285 285
286void TEWidget::setFont(const QFont &) 286void TEWidget::setFont(const QFont &)
287{ 287{
288 // ignore font change request if not coming from konsole itself 288 // ignore font change request if not coming from konsole itself
289} 289}
290 290
291/* ------------------------------------------------------------------------- */ 291/* ------------------------------------------------------------------------- */
292/* */ 292/* */
293/* Constructor / Destructor */ 293/* Constructor / Destructor */
294/* */ 294/* */
295/* ----------------------------------------------------------------------- */ 295/* ----------------------------------------------------------------------- */
296 296
297 297
298 298
299TEWidget::TEWidget(QWidget *parent, const char *name) : QFrame(parent,name) 299TEWidget::TEWidget(QWidget *parent, const char *name) : QFrame(parent,name)
300{ 300{
301#ifndef QT_NO_CLIPBOARD 301#ifndef QT_NO_CLIPBOARD
302 cb = QApplication::clipboard(); 302 cb = QApplication::clipboard();
303 QObject::connect( (QObject*)cb, SIGNAL(dataChanged()), 303 QObject::connect( (QObject*)cb, SIGNAL(dataChanged()),
304 this, SLOT(onClearSelection()) ); 304 this, SLOT(onClearSelection()) );
305#endif 305#endif
306 306
307 307
308 scrollbar = new QScrollBar( this ); 308 scrollbar = new QScrollBar( this );
309 scrollbar->setCursor( arrowCursor ); 309 scrollbar->setCursor( arrowCursor );
310 connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(scrollChanged(int))); 310 connect(scrollbar, SIGNAL(valueChanged(int)), this, SLOT(scrollChanged(int)));
311 311
312 hscrollbar = new QScrollBar( Qt::Horizontal, this ); 312 hscrollbar = new QScrollBar( Qt::Horizontal, this );
313 hscrollbar->setCursor( arrowCursor ); 313 hscrollbar->setCursor( arrowCursor );
314 connect(hscrollbar, SIGNAL(valueChanged(int)), this, SLOT(hscrollChanged(int))); 314 connect(hscrollbar, SIGNAL(valueChanged(int)), this, SLOT(hscrollChanged(int)));
315 315
316 m_cornerButton = new QPushButton( this ); 316 m_cornerButton = new QPushButton( this );
317 m_cornerButton->setPixmap( QPixmap( (const char**)menu_xpm ) ); 317 m_cornerButton->setPixmap( QPixmap( (const char**)menu_xpm ) );
318 m_cornerButton->setMaximumSize( 14, 14 ); 318 m_cornerButton->setMaximumSize( 14, 14 );
319 m_cornerButton->hide(); 319 m_cornerButton->hide();
320 320
321 Config cfg("Konsole"); 321 Config cfg("Konsole");
322 cfg.setGroup("ScrollBar"); 322 cfg.setGroup("ScrollBar");
323 switch( cfg.readNumEntry("Position",2)){ 323
324 case 0: 324 scrollLoc = cfg.readNumEntry("Position", -1);
325 scrollLoc = SCRNONE; 325
326 break; 326 // bugfix for #1647
327 case 1: 327 // if user set 'show scrollbar on left' then let it be on left
328 scrollLoc = SCRLEFT; 328 // but only if it is not set in opie-console itself
329 break; 329 if(scrollLoc == -1)
330 case 2: 330 {
331 scrollLoc = SCRRIGHT; 331 Config qpecfg ("qpe");
332 break; 332 qpecfg.setGroup("Appearance");
333 scrollLoc = qpecfg.readNumEntry("LeftHand", SCRRIGHT);
334 if(scrollLoc == 0) // user set LeftHand in past and switched it off later
335 {
336 scrollLoc = SCRRIGHT;
337 }
333 }; 338 };
334 339
335 blinkT = new QTimer(this); 340 blinkT = new QTimer(this);
336 connect(blinkT, SIGNAL(timeout()), this, SLOT(blinkEvent())); 341 connect(blinkT, SIGNAL(timeout()), this, SLOT(blinkEvent()));
337 // blinking = FALSE; 342 // blinking = FALSE;
338 blinking = TRUE; 343 blinking = TRUE;
339 344
340 resizing = FALSE; 345 resizing = FALSE;
341 actSel = 0; 346 actSel = 0;
342 image = 0; 347 image = 0;
343 lines = 1; 348 lines = 1;
344 columns = 1; 349 columns = 1;
345 font_w = 1; 350 font_w = 1;
346 font_h = 1; 351 font_h = 1;
347 font_a = 1; 352 font_a = 1;
348 word_selection_mode = FALSE; 353 word_selection_mode = FALSE;
349 vcolumns = 0; 354 vcolumns = 0;
350 hposition = 0; 355 hposition = 0;
351 356
352 setMouseMarks(TRUE); 357 setMouseMarks(TRUE);
353 setVTFont( QFont("fixed") ); 358 setVTFont( QFont("fixed") );
354 setColorTable(base_color_table); // init color table 359 setColorTable(base_color_table); // init color table
355 360
356 qApp->installEventFilter( this ); //FIXME: see below 361 qApp->installEventFilter( this ); //FIXME: see below
357// KCursor::setAutoHideCursor( this, true ); 362// KCursor::setAutoHideCursor( this, true );
358 363
359 // Init DnD //////////////////////////////////////////////////////////////// 364 // Init DnD ////////////////////////////////////////////////////////////////
360 currentSession = NULL; 365 currentSession = NULL;
361// setAcceptDrops(true); // attempt 366// setAcceptDrops(true); // attempt
362// m_drop = new QPopupMenu(this); 367// m_drop = new QPopupMenu(this);
363// m_drop->insertItem( QString("Paste"), 0); 368// m_drop->insertItem( QString("Paste"), 0);
364// m_drop->insertItem( QString("cd"), 1); 369// m_drop->insertItem( QString("cd"), 1);
365// connect(m_drop, SIGNAL(activated(int)), SLOT(drop_menu_activated(int))); 370// connect(m_drop, SIGNAL(activated(int)), SLOT(drop_menu_activated(int)));
366 371
367 // we need focus so that the auto-hide cursor feature works 372 // we need focus so that the auto-hide cursor feature works
368 setFocus(); 373 setFocus();
369 setFocusPolicy( WheelFocus ); 374 setFocusPolicy( WheelFocus );
370} 375}
371 376
372//FIXME: make proper destructor 377//FIXME: make proper destructor
373// Here's a start (David) 378// Here's a start (David)
374TEWidget::~TEWidget() 379TEWidget::~TEWidget()
375{ 380{
376 qApp->removeEventFilter( this ); 381 qApp->removeEventFilter( this );
377 if (image) free(image); 382 if (image) free(image);
378} 383}
379 384
380/* ------------------------------------------------------------------------- */ 385/* ------------------------------------------------------------------------- */
381/* */ 386/* */
382/* Display Operations */ 387/* Display Operations */
383/* */ 388/* */
384/* ------------------------------------------------------------------------- */ 389/* ------------------------------------------------------------------------- */
385 390
386/*! 391/*!
387 attributed string draw primitive 392 attributed string draw primitive
388*/ 393*/
389 394
390void TEWidget::drawAttrStr(QPainter &paint, QRect rect, 395void TEWidget::drawAttrStr(QPainter &paint, QRect rect,
391 QString& str, ca attr, BOOL pm, BOOL clear) 396 QString& str, ca attr, BOOL pm, BOOL clear)
392{ 397{
393 if (pm && color_table[attr.b].transparent) 398 if (pm && color_table[attr.b].transparent)
394 { 399 {
395 paint.setBackgroundMode( TransparentMode ); 400 paint.setBackgroundMode( TransparentMode );
396 if (clear) erase(rect); 401 if (clear) erase(rect);
397 } 402 }
398 else 403 else
399 { 404 {
400 if (blinking) 405 if (blinking)
401 paint.fillRect(rect, color_table[attr.b].color); 406 paint.fillRect(rect, color_table[attr.b].color);
402 else 407 else
403 { 408 {
404 paint.setBackgroundMode( OpaqueMode ); 409 paint.setBackgroundMode( OpaqueMode );
405 paint.setBackgroundColor( color_table[attr.b].color ); 410 paint.setBackgroundColor( color_table[attr.b].color );
406 } 411 }
407 } 412 }
408 413
409 if (color_table[attr.f].bold) 414 if (color_table[attr.f].bold)
410 paint.setPen(QColor( 0x8F, 0x00, 0x00 )); 415 paint.setPen(QColor( 0x8F, 0x00, 0x00 ));
411 else 416 else
412 paint.setPen(color_table[attr.f].color); 417 paint.setPen(color_table[attr.f].color);
413 418
414 paint.drawText(rect.x(),rect.y()+font_a, str); 419 paint.drawText(rect.x(),rect.y()+font_a, str);
415 420
416 if (attr.r & RE_UNDERLINE) 421 if (attr.r & RE_UNDERLINE)
417 paint.drawLine(rect.left(), rect.y()+font_a+1, rect.right(),rect.y()+font_a+1 ); 422 paint.drawLine(rect.left(), rect.y()+font_a+1, rect.right(),rect.y()+font_a+1 );
418} 423}
419 424
420/*! 425/*!
421 The image can only be set completely. 426 The image can only be set completely.
422 427
423 The size of the new image may or may not match the size of the widget. 428 The size of the new image may or may not match the size of the widget.
424*/ 429*/
425 430
426void TEWidget::setImage(const ca* const newimg, int lines, int columns) 431void TEWidget::setImage(const ca* const newimg, int lines, int columns)
427{ int y,x,len; 432{ int y,x,len;
428 const QPixmap* pm = backgroundPixmap(); 433 const QPixmap* pm = backgroundPixmap();
429 QPainter paint; 434 QPainter paint;
430 setUpdatesEnabled(FALSE); 435 setUpdatesEnabled(FALSE);
431 paint.begin( this ); 436 paint.begin( this );
432HCNT("setImage"); 437HCNT("setImage");
433 438
434 QPoint tL = contentsRect().topLeft(); 439 QPoint tL = contentsRect().topLeft();
435 int tLx = tL.x(); 440 int tLx = tL.x();
436 int tLy = tL.y(); 441 int tLy = tL.y();
437 hasBlinker = FALSE; 442 hasBlinker = FALSE;
438 443
439 int cf = -1; // undefined 444 int cf = -1; // undefined
440 int cb = -1; // undefined 445 int cb = -1; // undefined
441 int cr = -1; // undefined 446 int cr = -1; // undefined
442 447
443 int lins = QMIN(this->lines, QMAX(0,lines )); 448 int lins = QMIN(this->lines, QMAX(0,lines ));
444 int cols = QMIN(this->columns,QMAX(0,columns)); 449 int cols = QMIN(this->columns,QMAX(0,columns));
445 QChar *disstrU = new QChar[cols]; 450 QChar *disstrU = new QChar[cols];
446 451
447//{ static int cnt = 0; printf("setImage %d\n",cnt++); } 452//{ static int cnt = 0; printf("setImage %d\n",cnt++); }
448 for (y = 0; y < lins; y++) 453 for (y = 0; y < lins; y++)
449 { 454 {
450 const ca* lcl = &image[y*this->columns]; 455 const ca* lcl = &image[y*this->columns];
451 const ca* const ext = &newimg[y*columns]; 456 const ca* const ext = &newimg[y*columns];
452 if (!resizing) // not while resizing, we're expecting a paintEvent 457 if (!resizing) // not while resizing, we're expecting a paintEvent
453 for (x = 0; x < cols; x++) 458 for (x = 0; x < cols; x++)
454 { 459 {
455 hasBlinker |= (ext[x].r & RE_BLINK); 460 hasBlinker |= (ext[x].r & RE_BLINK);
456 if (ext[x] != lcl[x]) 461 if (ext[x] != lcl[x])
457 { 462 {
458 cr = ext[x].r; 463 cr = ext[x].r;
459 cb = ext[x].b; 464 cb = ext[x].b;
460 if (ext[x].f != cf) cf = ext[x].f; 465 if (ext[x].f != cf) cf = ext[x].f;