summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2008-12-19 16:44:00 -0300
committerJorge Arellano Cid <jcid@dillo.org>2008-12-19 16:44:00 -0300
commit88649e033a26be4ab3f337c856d6098e05adcd0d (patch)
tree4595192ffe427982b199213400b3cc8830afca8e
parent3322961a176a1c0933cf4d525a9ed8e03b7f2d5a (diff)
Moved clicked from ButtonResource to Resource.
-rw-r--r--ChangeLog2
-rw-r--r--dw/fltkcomplexbutton.cc2
-rw-r--r--dw/ui.cc29
-rw-r--r--dw/ui.hh59
-rw-r--r--src/form.cc80
-rw-r--r--test/form.cc2
-rw-r--r--test/form.hh4
7 files changed, 93 insertions, 85 deletions
diff --git a/ChangeLog b/ChangeLog
index 3ec9d5d4..483d3727 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -44,6 +44,8 @@ dillo-2.1
dw
++- Moved clicked from ButtonResource to Resource.
+ Patch: place (AKA corvid)
+- Cleaned up unused code in fltkviewbase.
Patch: Johannes Hofmann
diff --git a/dw/fltkcomplexbutton.cc b/dw/fltkcomplexbutton.cc
index 6c15cee3..9c73f97f 100644
--- a/dw/fltkcomplexbutton.cc
+++ b/dw/fltkcomplexbutton.cc
@@ -87,7 +87,7 @@ int ComplexButton::handle(int event, const Rectangle& rectangle) {
if (pushed()) return 1; // ignore extra pushes on currently-pushed button
initial_state = state();
clear_flag(PUSHED);
- do_callback();
+ /* do_callback(); */
case DRAG: {
bool inside = event_inside(rectangle);
if (inside) {
diff --git a/dw/ui.cc b/dw/ui.cc
index 6f9a692f..ef7298bf 100644
--- a/dw/ui.cc
+++ b/dw/ui.cc
@@ -69,6 +69,19 @@ void Embed::leaveNotifyImpl (core::EventCrossing *event)
resource->emitLeave();
}
+bool Embed::buttonPressImpl (core::EventButton *event)
+{
+ bool handled;
+
+ if (event->button == 3) {
+ resource->emitClicked(event);
+ handled = true;
+ } else {
+ handled = false;
+ }
+ return handled;
+}
+
void Embed::setWidth (int width)
{
resource->setWidth (width);
@@ -201,22 +214,18 @@ void Resource::emitLeave ()
activateEmitter.emitLeave(this);
}
-// ----------------------------------------------------------------------
-
-bool ButtonResource::ClickedEmitter::emitToReceiver (lout::signal::Receiver
- *receiver,
- int signalNo,
- int argc,
- Object **argv)
+bool Resource::ClickedEmitter::emitToReceiver(lout::signal::Receiver *receiver,
+ int signalNo, int argc,
+ Object **argv)
{
((ClickedReceiver*)receiver)
- ->clicked ((ButtonResource*)((Pointer*)argv[0])->getValue (),
+ ->clicked ((Resource*)((Pointer*)argv[0])->getValue (),
(EventButton*)((Pointer*)argv[1])->getValue());
return false;
}
-void ButtonResource::ClickedEmitter::emitClicked (ButtonResource *resource,
- EventButton *event)
+void Resource::ClickedEmitter::emitClicked (Resource *resource,
+ EventButton *event)
{
Pointer p1 (resource);
Pointer p2 (event);
diff --git a/dw/ui.hh b/dw/ui.hh
index 3449e8b7..ea8fd4c4 100644
--- a/dw/ui.hh
+++ b/dw/ui.hh
@@ -232,6 +232,7 @@ protected:
void sizeAllocateImpl (Allocation *allocation);
void enterNotifyImpl (core::EventCrossing *event);
void leaveNotifyImpl (core::EventCrossing *event);
+ bool buttonPressImpl (core::EventButton *event);
public:
static int CLASS_ID;
@@ -271,6 +272,14 @@ public:
virtual void enter (Resource *resource) = 0;
virtual void leave (Resource *resource) = 0;
};
+ /**
+ * \brief Receiver interface for the "clicked" signal.
+ */
+ class ClickedReceiver: public lout::signal::Receiver
+ {
+ public:
+ virtual void clicked (Resource *resource, EventButton *event) = 0;
+ };
private:
class ActivateEmitter: public lout::signal::Emitter
@@ -286,8 +295,20 @@ private:
void emitLeave (Resource *resource);
};
+ class ClickedEmitter: public lout::signal::Emitter
+ {
+ protected:
+ bool emitToReceiver (lout::signal::Receiver *receiver, int signalNo,
+ int argc, Object **argv);
+ public:
+ inline void connectClicked (ClickedReceiver *receiver) {
+ connect (receiver); }
+ void emitClicked (Resource *resource, EventButton *event);
+ };
+
Embed *embed;
ActivateEmitter activateEmitter;
+ ClickedEmitter clickedEmitter;
void emitEnter ();
void emitLeave ();
@@ -301,6 +322,8 @@ protected:
inline void emitActivate () {
return activateEmitter.emitActivate (this); }
+ inline void emitClicked (EventButton *event) {
+ clickedEmitter.emitClicked (this, event); }
public:
inline Resource () { embed = NULL; }
@@ -322,43 +345,13 @@ public:
inline void connectActivate (ActivateReceiver *receiver) {
activateEmitter.connectActivate (receiver); }
+ inline void connectClicked (ClickedReceiver *receiver) {
+ clickedEmitter.connectClicked (receiver); }
};
class ButtonResource: public Resource
-{
-public:
- /**
- * \brief Receiver interface for the "clicked" signal.
- */
- class ClickedReceiver: public lout::signal::Receiver
- {
- public:
- virtual void clicked (ButtonResource *resource, EventButton *event) = 0;
- };
-
-private:
- class ClickedEmitter: public lout::signal::Emitter
- {
- protected:
- bool emitToReceiver (lout::signal::Receiver *receiver, int signalNo,
- int argc, Object **argv);
- public:
- inline void connectClicked (ClickedReceiver *receiver) {
- connect (receiver); }
- void emitClicked (ButtonResource *resource, EventButton *event);
- };
-
- ClickedEmitter clickedEmitter;
-
-protected:
- inline void emitClicked (EventButton *event) {
- clickedEmitter.emitClicked (this, event); }
-
-public:
- inline void connectClicked (ClickedReceiver *receiver) {
- clickedEmitter.connectClicked (receiver); }
-};
+{};
/**
* \brief Interface for labelled buttons resources.
diff --git a/src/form.cc b/src/form.cc
index 63d4ff83..3f7bbaca 100644
--- a/src/form.cc
+++ b/src/form.cc
@@ -119,7 +119,7 @@ public:
class DilloHtmlReceiver:
public Resource::ActivateReceiver,
- public ButtonResource::ClickedReceiver
+ public Resource::ClickedReceiver
{
friend class DilloHtmlForm;
DilloHtmlForm* form;
@@ -128,7 +128,7 @@ class DilloHtmlReceiver:
void activate (Resource *resource);
void enter (Resource *resource);
void leave (Resource *resource);
- void clicked (ButtonResource *resource, EventButton *event);
+ void clicked (Resource *resource, EventButton *event);
};
class DilloHtmlInput {
@@ -950,11 +950,15 @@ DilloHtmlForm::~DilloHtmlForm ()
void DilloHtmlForm::eventHandler(Resource *resource, EventButton *event)
{
MSG("DilloHtmlForm::eventHandler\n");
- DilloHtmlInput *input = getInput(resource);
- if (input) {
- input->activate (this, num_entry_fields, event);
+ if (event && (event->button == 3)) {
+ MSG("Form menu\n");
} else {
- MSG("DilloHtmlForm::eventHandler: ERROR, input not found!\n");
+ DilloHtmlInput *input = getInput(resource);
+ if (input) {
+ input->activate (this, num_entry_fields, event);
+ } else {
+ MSG("DilloHtmlForm::eventHandler: ERROR, input not found!\n");
+ }
}
}
@@ -1522,7 +1526,7 @@ void DilloHtmlReceiver::leave (Resource *resource)
a_UIcmd_set_msg(html->bw, "");
}
-void DilloHtmlReceiver::clicked (ButtonResource *resource,
+void DilloHtmlReceiver::clicked (Resource *resource,
EventButton *event)
{
form->eventHandler(resource, event);
@@ -1576,30 +1580,17 @@ void DilloHtmlInput::connectTo(DilloHtmlReceiver *form_receiver)
{
Resource *resource;
if (embed && (resource = embed->getResource())) {
- switch (type) {
- case DILLO_HTML_INPUT_UNKNOWN:
- case DILLO_HTML_INPUT_HIDDEN:
- case DILLO_HTML_INPUT_CHECKBOX:
- case DILLO_HTML_INPUT_RADIO:
- case DILLO_HTML_INPUT_BUTTON:
- case DILLO_HTML_INPUT_TEXTAREA:
- case DILLO_HTML_INPUT_SELECT:
- case DILLO_HTML_INPUT_SEL_LIST:
- // do nothing
- break;
- case DILLO_HTML_INPUT_SUBMIT:
- case DILLO_HTML_INPUT_RESET:
- case DILLO_HTML_INPUT_BUTTON_SUBMIT:
- case DILLO_HTML_INPUT_BUTTON_RESET:
- case DILLO_HTML_INPUT_IMAGE:
- case DILLO_HTML_INPUT_FILE:
- ((ButtonResource *)resource)->connectClicked (form_receiver);
- case DILLO_HTML_INPUT_TEXT:
- case DILLO_HTML_INPUT_PASSWORD:
- case DILLO_HTML_INPUT_INDEX:
- resource->connectActivate (form_receiver);
- break;
- break;
+ resource->connectClicked (form_receiver);
+ if (type == DILLO_HTML_INPUT_SUBMIT ||
+ type == DILLO_HTML_INPUT_RESET ||
+ type == DILLO_HTML_INPUT_BUTTON_SUBMIT ||
+ type == DILLO_HTML_INPUT_BUTTON_RESET ||
+ type == DILLO_HTML_INPUT_IMAGE ||
+ type == DILLO_HTML_INPUT_FILE ||
+ type == DILLO_HTML_INPUT_TEXT ||
+ type == DILLO_HTML_INPUT_PASSWORD ||
+ type == DILLO_HTML_INPUT_INDEX) {
+ resource->connectActivate (form_receiver);
}
}
}
@@ -1610,16 +1601,29 @@ void DilloHtmlInput::connectTo(DilloHtmlReceiver *form_receiver)
void DilloHtmlInput::activate(DilloHtmlForm *form, int num_entry_fields,
EventButton *event)
{
- if (type == DILLO_HTML_INPUT_FILE) {
+ switch (type) {
+ case DILLO_HTML_INPUT_FILE:
readFile (form->html->bw);
- } else if (type == DILLO_HTML_INPUT_RESET ||
- type == DILLO_HTML_INPUT_BUTTON_RESET) {
+ break;
+ case DILLO_HTML_INPUT_RESET:
+ case DILLO_HTML_INPUT_BUTTON_RESET:
form->reset();
- } else if ((type != DILLO_HTML_INPUT_TEXT &&
- type != DILLO_HTML_INPUT_PASSWORD) ||
- prefs.enterpress_forces_submit ||
- num_entry_fields == 1) {
+ break;
+ case DILLO_HTML_INPUT_TEXT:
+ case DILLO_HTML_INPUT_PASSWORD:
+ if (!(prefs.enterpress_forces_submit || num_entry_fields == 1)) {
+ break;
+ } else {
+ /* fall through */
+ }
+ case DILLO_HTML_INPUT_SUBMIT:
+ case DILLO_HTML_INPUT_BUTTON_SUBMIT:
+ case DILLO_HTML_INPUT_IMAGE:
+ case DILLO_HTML_INPUT_INDEX:
form->submit(this, event);
+ break;
+ default:
+ break;
}
}
diff --git a/test/form.cc b/test/form.cc
index ab9994a9..d88030c3 100644
--- a/test/form.cc
+++ b/test/form.cc
@@ -164,7 +164,7 @@ Form::FormClickedReceiver::~FormClickedReceiver ()
delete[] value;
}
-void Form::FormClickedReceiver::clicked (ButtonResource *resource,
+void Form::FormClickedReceiver::clicked (Resource *resource,
dw::core::EventButton *event)
{
form->send (name, value, event->xCanvas, event->yCanvas);
diff --git a/test/form.hh b/test/form.hh
index 76eae9fe..4d0481c7 100644
--- a/test/form.hh
+++ b/test/form.hh
@@ -120,7 +120,7 @@ private:
};
class FormClickedReceiver:
- public dw::core::ui::ButtonResource::ClickedReceiver
+ public dw::core::ui::Resource::ClickedReceiver
{
private:
Form *form;
@@ -130,7 +130,7 @@ private:
FormClickedReceiver (Form *form, const char *name, const char *value);
~FormClickedReceiver ();
- void clicked(dw::core::ui::ButtonResource *resource,
+ void clicked(dw::core::ui::Resource *resource,
dw::core::EventButton *event);
};