From kde-core-devel Thu May 31 14:12:01 2001 From: Martijn Klingens Date: Thu, 31 May 2001 14:12:01 +0000 To: kde-core-devel Subject: Again: KAction X-MARC-Message: https://marc.info/?l=kde-core-devel&m=99131815621561 MIME-Version: 1 Content-Type: multipart/mixed; boundary="--------------Boundary-00=_14E7RE6D0K2R3BBMVHAF" --------------Boundary-00=_14E7RE6D0K2R3BBMVHAF Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Like I said yesterday in my previous patch: I encountered the icons-in-popupmenus issue by accident, because I was attempting to do something else... Attached is another KAction patch that enables to plug at least a basic KAction and a KToggleAction into a plain QWidget. As long as the widget can do its own layout management it's enough to do action->plug( widget ); Otherwise you need to do int index = action->plug( widget ); layout->addWidget( action->representative( index ), ... ); Or something similar for the used layout. Possible uses for this are plugging actions into wizard-style apps. Those normally have neither a menubar nor a toolbar, but can certainly benefit from actions. I'm not too familiar with KAction, so please review. The patch is so small that have a strong feeling to forget something, but it already seems to work now, don't ask me why. It should _not_ affect the behaviour of actions plugged into toolbars or popupmenu's, so if it does, it's a bug in my code. Martijn PS: Yesterday's patch is also in the diff because it's still not committed to CVS. If I commit this before the first patch I'll temporarily remove it from my code, I didn't bother to do this now... --------------Boundary-00=_14E7RE6D0K2R3BBMVHAF Content-Type: text/x-c; charset="iso-8859-1"; name="kaction.cpp.patch-2" Content-Transfer-Encoding: base64 Content-Description: KAction patch part #2 Content-Disposition: attachment; filename="kaction.cpp.patch-2" SW5kZXg6IGthY3Rpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9ob21lL2tkZS9rZGVsaWJz L2tkZXVpL2thY3Rpb24uY3BwLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjE4MgpkaWZmIC1iIC11 IC1wIC1yMS4xODIga2FjdGlvbi5jcHAKLS0tIGthY3Rpb24uY3BwCTIwMDEvMDUvMjUgMjI6MzI6 MTAJMS4xODIKKysrIGthY3Rpb24uY3BwCTIwMDEvMDUvMzEgMTM6NTk6MjEKQEAgLTM0LDYgKzM0 LDcgQEAKICNpbmNsdWRlIDxxcHRyZGljdC5oPgogI2luY2x1ZGUgPHFmb250ZGF0YWJhc2UuaD4K ICNpbmNsdWRlIDxxd2hhdHN0aGlzLmg+CisjaW5jbHVkZSA8cXB1c2hidXR0b24uaD4KICNpbmNs dWRlIDxxdG9vbHRpcC5oPgogI2luY2x1ZGUgPGtpY29ubG9hZGVyLmg+CiAjaW5jbHVkZSA8a3Bv cHVwbWVudS5oPgpAQCAtNDI4LDEyICs0MjksMTAgQEAgaW50IEtBY3Rpb246OnBsdWcoIFFXaWRn ZXQgKncsIGludCBpbmRleAogICAgIFFQb3B1cE1lbnUqIG1lbnUgPSBzdGF0aWNfY2FzdDxRUG9w dXBNZW51Kj4oIHcgKTsKICAgICBpbnQgaWQ7CiAKLSAgICBpZiAoIWluaGVyaXRzKCJLVG9nZ2xl QWN0aW9uIikpIHsKLSAgICAgICAgaWYgKCAhZC0+bV9waXhtYXAuaXNOdWxsKCkgKSB7CisgICAg aWYgKCAhZC0+bV9waXhtYXAuaXNOdWxsKCkgKQogICAgICAgICAgICAgaWQgPSBtZW51LT5pbnNl cnRJdGVtKCBkLT5tX3BpeG1hcCwgdGhpcywgU0xPVCggc2xvdEFjdGl2YXRlZCgpICksCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPm1fYWNjZWwsIC0xLCBpbmRleCApOwot ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKCBkLT5tX2JJY29uU2V0ICkKKyAgICBl bHNlIGlmICggZC0+bV9iSWNvblNldCApCiAgICAgICAgICAgICAgICAgaWQgPSBtZW51LT5pbnNl cnRJdGVtKCBpY29uU2V0KCksIGQtPm1fdGV4dCwgdGhpcywvL2Rzd2VldAogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVCggc2xvdEFjdGl2YXRlZCgpICksIGQtPm1f YWNjZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgaW5kZXgg KTsKQEAgLTQ0MSwxNCArNDQwLDYgQEAgaW50IEtBY3Rpb246OnBsdWcoIFFXaWRnZXQgKncsIGlu dCBpbmRleAogICAgICAgICAgICAgICAgIGlkID0gbWVudS0+aW5zZXJ0SXRlbSggZC0+bV90ZXh0 LCB0aGlzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0xPVCggc2xv dEFjdGl2YXRlZCgpICksICAvL2Rzd2VldAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZC0+bV9hY2NlbCwgLTEsIGluZGV4ICk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2Ug ewotICAgICAgICAvLyB0b2dnbGUgYWN0aW9ucyBkbyBub3QgaGF2ZSBhIHBpeG1hcCBvciBpY29u IGluIHRoZSBtZW51Ci0gICAgICAgIC8vIExvdHppIEIuCi0gICAgICAgIGlkID0gbWVudS0+aW5z ZXJ0SXRlbSggZC0+bV90ZXh0LCB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFNMT1QoIHNsb3RBY3RpdmF0ZWQoKSApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGQtPm1fYWNjZWwsIC0xLCBpbmRleCApOwotICAgIH0KIAogICAgIC8vIGNhbGwgc2V0SXRlbUVu YWJsZWQgb25seSBpZiB0aGUgaXRlbSByZWFsbHkgc2hvdWxkIGJlIGRpc2FibGVkLAogICAgIC8v IGJlY2F1c2UgdGhhdCBtZXRob2QgaXMgc2xvdyBhbmQgdGhlIGl0ZW0gaXMgcGVyIGRlZmF1bHQg ZW5hYmxlZApAQCAtNTA3LDYgKzQ5OCw0NSBAQCBpbnQgS0FjdGlvbjo6cGx1ZyggUVdpZGdldCAq dywgaW50IGluZGV4CiAKICAgICByZXR1cm4gY29udGFpbmVyQ291bnQoKSAtIDE7CiAgIH0KKyAg ZWxzZQorICB7CisgICAgLy8gV2UncmUgbm90IHBsdWdnaW5nIGludG8gYSB0b29sYmFyLCBub3Ig aW50byBhIHBvcHVwIG1lbnUuLi4KKyAgICAvLyBhcyBhIGxhc3QgcmVzb3J0LCBjcmVhdGUgYSBu b3JtYWwgd2lkZ2V0LiBUaGlzIHdpbGwgb25seSB3b3JrCisgICAgLy8gcHJvcGVybHkgaWYgdGhl IHBhcmVudCB3aWRnZXQgYXV0b21hdGljYWxseSBtYW5hZ2VzIGxheW91dCwKKyAgICAvLyBidXQg aXQncyBiZXR0ZXIgdGhhbiBub3QgYmVpbmcgYWJsZSB0byBwbHVnIGF0IGFsbC4KKyAgICAvLyBB bHNvLCBhbiB1Z2x5IHdheSB0byBmaW5kIHRoZSBuZXcgd2lkZ2V0IGlzIGJ5IGl0cyBuYW1lOgor ICAgIC8vIHRoZSB3aWRnZXQgaXMgY2FsbGVkICdhY3Rpb25fJyArIHRoZSBhY3Rpb24ncyBuYW1l CisKKyAgICBRUHVzaEJ1dHRvbiAqYnRuOworCisgICAgaWYgKCAhZC0+bV9waXhtYXAuaXNOdWxs KCkgKQorICAgIHsKKyAgICAgICAgYnRuID0gbmV3IFFQdXNoQnV0dG9uKCB3LCBRQ1N0cmluZygg ImFjdGlvbl8iICkgKyBuYW1lKCkgKTsKKyAgICAgICAgYnRuLT5zZXRQaXhtYXAoIGQtPm1fcGl4 bWFwICk7CisgICAgfQorICAgIGVsc2UgaWYgKCBkLT5tX2JJY29uU2V0ICkKKyAgICAgICAgYnRu ID0gbmV3IFFQdXNoQnV0dG9uKCBpY29uU2V0KCksIGQtPm1fdGV4dCwgdywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRQ1N0cmluZyggImFjdGlvbl8iICkgKyBuYW1lKCkgKTsKKyAg ICBlbHNlCisgICAgICAgIGJ0biA9IG5ldyBRUHVzaEJ1dHRvbiggZC0+bV90ZXh0LCB3LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDU3RyaW5nKCAiYWN0aW9uXyIgKSArIG5hbWUo KSApOworCisgICAgY29ubmVjdCggYnRuLCBTSUdOQUwoIGNsaWNrZWQoKSApLCB0aGlzLCBTTE9U KCBzbG90QWN0aXZhdGVkKCkgKSApOworCisgICAgaWYgKCAhZC0+bV9lbmFibGVkICkKKyAgICAg ICAgYnRuLT5zZXRFbmFibGVkKCBmYWxzZSApOworCisgICAgaWYgKCAhZC0+bV93aGF0c1RoaXMu aXNFbXB0eSgpICkKKyAgICAgICAgUVdoYXRzVGhpczo6YWRkKCBidG4sIGQtPm1fd2hhdHNUaGlz ICk7CisKKyAgICBhZGRDb250YWluZXIoIHcsIGJ0biApOworICAgIGNvbm5lY3QoIHcsIFNJR05B TCggZGVzdHJveWVkKCkgKSwgdGhpcywgU0xPVCggc2xvdERlc3Ryb3llZCgpICkgKTsKKworICAg IGlmICggbV9wYXJlbnRDb2xsZWN0aW9uICkKKyAgICAgICAgbV9wYXJlbnRDb2xsZWN0aW9uLT5j b25uZWN0SGlnaGxpZ2h0KCB3LCB0aGlzICk7CisKKyAgICByZXR1cm4gZC0+bV9jb250YWluZXJz LmNvdW50KCkgLSAxOworICB9CiAKICAgcmV0dXJuIC0xOwogfQpAQCAtOTUxLDEyICs5ODEsNiBA QCBLVG9nZ2xlQWN0aW9uOjp+S1RvZ2dsZUFjdGlvbigpCiAKIGludCBLVG9nZ2xlQWN0aW9uOjpw bHVnKCBRV2lkZ2V0KiB3aWRnZXQsIGludCBpbmRleCApCiB7Ci0gIGlmICggIXdpZGdldC0+aW5o ZXJpdHMoIlFQb3B1cE1lbnUiKSAmJiAhd2lkZ2V0LT5pbmhlcml0cygiS1Rvb2xCYXIiKSApCi0g IHsKLSAgICBrZFdhcm5pbmcoKSA8PCAiQ2FuIG5vdCBwbHVnIEtUb2dnbGVBY3Rpb24gaW4gIiA8 PCB3aWRnZXQtPmNsYXNzTmFtZSgpIDw8IGVuZGw7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KICAg aW50IF9pbmRleCA9IEtBY3Rpb246OnBsdWcoIHdpZGdldCwgaW5kZXggKTsKICAgaWYgKCBfaW5k ZXggPT0gLTEgKQogICAgIHJldHVybiBfaW5kZXg7CkBAIC05NzEsNiArOTk1LDE0IEBAIGludCBL VG9nZ2xlQWN0aW9uOjpwbHVnKCBRV2lkZ2V0KiB3aWRnZXQKIAogICAgIGJhci0+c2V0VG9nZ2xl KCBpdGVtSWQoIF9pbmRleCApLCBUUlVFICk7CiAgICAgYmFyLT5zZXRCdXR0b24oIGl0ZW1JZCgg X2luZGV4ICksIGlzQ2hlY2tlZCgpICk7CisgIH0KKyAgZWxzZQorICB7CisgICAgLy8gUGx1Z2dl ZCBpbnRvIHBsYWluIFFXaWRnZXQuIEFjdGlvbiBpcyBjcmVhdGVkIGFzIFFQdXNoQnV0dG9uLAor ICAgIC8vIG1ha2UgaXQgYSB0b2dnbGUgYnV0dG9uOgorICAgIFFQdXNoQnV0dG9uICpidG4gPSBz dGF0aWNfY2FzdDxRUHVzaEJ1dHRvbio+KCByZXByZXNlbnRhdGl2ZSggX2luZGV4ICkgKTsKKyAg ICBidG4tPnNldFRvZ2dsZUJ1dHRvbiggdHJ1ZSApOworICAgIGJ0bi0+c2V0T24oIGQtPm1fY2hl Y2tlZCApOwogICB9CiAKICAgcmV0dXJuIF9pbmRleDsK --------------Boundary-00=_14E7RE6D0K2R3BBMVHAF--