about summary refs log tree commit diff stats
path: root/client.c
Commit message (Expand)AuthorAgeFilesLines
* applied Jukka's sizeof K&R compliance patch, applied Manuels' last-line print...arg@mig292006-11-261-2/+2
* and another fixarg@mig292006-10-271-2/+2
* applied sanders try2 patcharg@mig292006-10-271-3/+3
* applied sanders max size fixarg@mig292006-10-271-1/+1
* reverting to originalarg@mig292006-10-261-1/+1
* some other changearg@mig292006-10-261-3/+3
* apply small fix to prevent apps like mplayer wandering when toggling fullscreenarg@mig292006-10-261-2/+2
* do* has no Arg arument anymore (never called directly) 1.9Anselm R. Garbe2006-10-061-2/+2
* code polishing, removed unnecessary newlinesAnselm R. Garbe2006-10-061-17/+1
* applied ality's hardcode-0 patchesAnselm R. Garbe2006-09-291-5/+5
* applied Jukkas patchAnselm R. Garbe2006-09-281-6/+6
* fixing the settags issue, preparing 1.7.1 1.7.1Anselm R. Garbe2006-09-271-15/+15
* added configure(), but this doesn't really fix those frking broken SDL appsarg@mmvi2006-09-261-0/+18
* fixed issue pointed out by Jukkaarg@mmvi2006-09-221-4/+0
* implemented the maximization as I described on the mailinglist, this feels be...arg@mmvi2006-09-221-37/+4
* reviewed client.carg@mmvi2006-09-201-0/+1
* offscreen client appearance fixesarg@mmvi2006-09-151-0/+10
* focus() enforces visibility of a client if not NULLarg@mmvi2006-09-151-1/+1
* removed a bunch of lines through making function signatures more consistent w...Anselm R. Garbe2006-09-121-34/+16
* small change to comments, renamed two set* functions in client.c into update*Anselm R. Garbe2006-09-111-4/+4
* added some commentsAnselm R. Garbe2006-09-111-3/+3
* applied sanders patch of not manipulating sel 1.5Anselm R. Garbe2006-09-081-2/+4
* hotfixAnselm R. Garbe2006-09-071-1/+1
* simplified unmanageAnselm R. Garbe2006-09-071-8/+2
* using a global stack for focus recovery on arrange() - seems to work greatAnselm R. Garbe2006-09-071-2/+14
* no this is betterAnselm R. Garbe2006-09-061-7/+0
* does this preserve z order for anthony?Anselm R. Garbe2006-09-061-2/+7
* maybe this might workAnselm R. Garbe2006-09-061-0/+2
* sanders solution is convincing and elegantAnselm R. Garbe2006-09-061-8/+0
* seems to preserve floating client z-layer order (even with reorder() calls)Anselm R. Garbe2006-09-061-0/+8
* moved transient_for tag inheritance to settagsAnselm R. Garbe2006-09-061-6/+2
* no, reodering floating clients definately breaks the manage() policy which at...Anselm R. Garbe2006-09-061-2/+0
* no, ordering floating clients at the end seems betterAnselm R. Garbe2006-09-051-0/+2
* simplified manageAnselm R. Garbe2006-09-041-5/+2
* hotfixing with sanders hintAnselm R. Garbe2006-09-041-1/+3
* fixing the issue that new clients appear loweredAnselm R. Garbe2006-09-041-0/+2
* applied Sanders max_and_focus.patchAnselm R. Garbe2006-09-041-21/+29
* still something wrong with reorder()Anselm R. Garbe2006-08-291-1/+4
* added attach/detach functions which don't attach at the begin of list, but at...Anselm R. Garbe2006-08-291-12/+4
* removed crappy variablesAnselm R. Garbe2006-08-281-3/+1
* applied sanders focus_ patchesAnselm R. Garbe2006-08-281-25/+48
* updated man pageAnselm R. Garbe2006-08-231-13/+9
* separated several functions into view.cAnselm R. Garbe2006-08-221-61/+0
* windows which have set transient_for hint inherit the transient_for window ta...arg@localhost.10kloc.org2006-08-211-1/+6
* after switching to OpenBSD again, I switched back to a saner color schemearg@localhost.10kloc.org2006-08-211-5/+7
* applied Sanders focus_* patches, removed the unnecessary clean-prefix from th...Anselm R.Garbe2006-08-211-28/+30
* applied Sanders patchAnselm R.Garbe2006-08-181-6/+2
* made a new client position strategy similiar to that one proposed by Sander, ...Anselm R.Garbe2006-08-181-7/+7
* fixed a bug reported by sanderAnselm R.Garbe2006-08-171-1/+1
* centering apps only if transient_for is not(!) setAnselm R.Garbe2006-08-171-9/+1
class="o"><< Trace_stream->callstack_depth << end(); assert(Trace_stream->callstack_depth < 9000); // 9998-101 plus cushion } calls.push_front(call(r)); // End routine Constructor } //:: now update routine's helpers :(replace{} "inline long long int& current_step_index()") inline long long int& current_step_index() { assert(!Current_routine->calls.empty()); return Current_routine->calls.front().running_step_index; } :(replace{} "inline const string& current_recipe_name()") inline const string& current_recipe_name() { assert(!Current_routine->calls.empty()); return Recipe[Current_routine->calls.front().running_recipe].name; } :(replace{} "inline const instruction& current_instruction()") inline const instruction& current_instruction() { assert(!Current_routine->calls.empty()); return Recipe[Current_routine->calls.front().running_recipe].steps.at(Current_routine->calls.front().running_step_index); } :(after "Defined Recipe Checks") // not a primitive; check that it's present in the book of recipes if (Recipe.find(inst.operation) == Recipe.end()) { raise_error << maybe(Recipe[r].name) << "undefined operation in '" << inst.to_string() << "'\n" << end(); break; } :(replace{} "default:" following "End Primitive Recipe Implementations") default: { if (Recipe.find(current_instruction().operation) == Recipe.end()) { // duplicate from Checks // stop running this instruction immediately ++current_step_index(); continue; } // not a primitive; look up the book of recipes if (Trace_stream) { ++Trace_stream->callstack_depth; trace("trace") << "incrementing callstack depth to " << Trace_stream->callstack_depth << end(); assert(Trace_stream->callstack_depth < 9000); // 9998-101 plus cushion } Current_routine->calls.push_front(call(current_instruction().operation)); call_housekeeping: continue; // not done with caller; don't increment current_step_index() } :(scenario calling_undefined_recipe_fails) % Hide_errors = true; recipe main [ foo ] +error: main: undefined operation in 'foo ' :(scenario calling_undefined_recipe_handles_missing_result) % Hide_errors = true; recipe main [ x:number <- foo ] +error: main: undefined operation in 'x:number <- foo ' //:: finally, we need to fix the termination conditions for the run loop :(replace{} "inline bool routine::completed() const") inline bool routine::completed() const { return calls.empty(); } inline const vector<instruction>& routine::steps() const { assert(!calls.empty()); return Recipe[calls.front().running_recipe].steps; } :(before "Running One Instruction") // when we reach the end of one call, we may reach the end of the one below // it, and the one below that, and so on while (current_step_index() >= SIZE(Current_routine->steps())) { // Falling Through End Of Recipe if (Trace_stream) { trace("trace") << "fall-through: exiting " << current_recipe_name() << "; decrementing callstack depth from " << Trace_stream->callstack_depth << end(); --Trace_stream->callstack_depth; assert(Trace_stream->callstack_depth >= 0); } Current_routine->calls.pop_front(); if (Current_routine->calls.empty()) return; // Complete Call Fallthrough // todo: fail if no products returned ++current_step_index(); } :(before "End Includes") #include <stack> using std::stack;